#guide
Let’s be clear upfront: your space is your own, you can structure it however you like. That said, over the years a few “best practices” of how to structure your space have emerged.
If you don’t have strong preferences coming in, consider following them.
While SilverBullet will dynamically create Folders when you use slashes (/) in your page names, the typical SilverBullet user tends to use this feature lightly.
Organization is achieved through incrementally adding Frontmatter and Markdown/Hashtags, rather than investing in a very structured folder structure upfront. This is also why, by default, SilverBullet does not ship with the classic file tree — it would be very boring to look at.
The advantage of this approach is multi-fold:
As a result, this means that most content pages tend to live at the “top level” (see this space as an example).
A few exceptions:
Inbox/ for quick notesJournal/ for journal entriesLibrary/ for libraries and customizationsThese make sense to split out, and keep contained in their own folders, away from other areas of your space.
When adding a Frontmatter section to a page, it becomes cleaner to move any Markdown/Hashtags you previously put in your page to the tags attribute:
---
role: Data analyst
tags: sometag anothertag
---
Customer Persona, not customer-persona. See Names for additional rules and hard constraints.# H1.[Folder/Page](<Folder/Page>). This way, links stay valid no matter where the linking page lives or moves. See Link.SilverBullet's Object Index is the engine behind every live query:
index.contentPages() over tags.page for page lists and lint sweeps — it filters out Meta Pages (pages tagged meta or meta/*) so Library and configuration pages do not pollute your results. See Object Index.tagPage pattern instead of hand-maintained lists. See Guide/Aggregator Pages.aspiring-page tag. See Aspiring Pages.When developing on a space-lua based feature, follow the edit, reload, check (browser) logs, verify loop: edit a script, run System: Reload (Ctrl-Alt-r) to re-execute all definitions, then check the console logs. A successful reload does not mean the script is healthy, Lua errors surface in logs, not always as a visible reload failure. System: Reload runs API/system#system.reboot, which first merges any external edit to the open page and waits for indexing to finish; call it directly for a programmatic “reboot to ready”.