OBSIDIAN_CONVENTIONS.md
Language Markdown5.5 KB138 lines
# Obsidian Vault ConventionsReference for the vault structure conventions this skill enforces. Use this when generating projects, when explaining the structure to a user, or when iterating on the convention itself.## Why an Obsidian vault structure- **Bidirectional links** make project navigation discoverable. Wikilinks survive renames and feed graph view.- **Frontmatter** is queryable via Dataview. Even without Dataview, it's load-bearing for Obsidian search and tag-based navigation.- **Folder ordering by numeric prefix** is the only way to reliably control file explorer sort order in Obsidian.- **Numbered + named folders** map cleanly to mental models: 01- is "primary content," 02- is "in progress," 03- is "done."- **Underscored utility folders** (`_attachments/`, `_templates/`) sort to the bottom and stay out of the way.- **Maps of Content** (MOC files) are the established Obsidian pattern for navigation. Two MOCs in this convention: CLAUDE.md (agent-facing) and 00-Index.md (human-facing).## Folder naming| Prefix | Meaning | Sort order ||--------|---------|------------|| `00-` | Project MOC, sorts first | First || `01-` to `09-` | Primary content folders | Ordered || `10-` to `99-` | Less-frequent or archive | Late || `_` | Utility folders | Last || `.` | Hidden (`.obsidian/`, `.git/`) | Hidden |Default folder set:- `01-Knowledge/`: primary domain content- `02-Working/`: in-progress files, scratchpad- `03-Outputs/`: finished deliverables- `04-Archive/`: optional, project-dependent- `_attachments/`: images, PDFs, binaries- `_templates/`: Obsidian note templatesAdapt names to project. A research project might use `01-Sources/`, `02-Notes/`, `03-Drafts/`. A code project might use `01-Specs/`, `02-Code/`, `03-Reviews/`. Pattern stays.## File naming| File type | Pattern | Example ||-----------|---------|---------|| Root Claude reference | ALL CAPS | `CLAUDE.md`, `MEMORY.md` || Subdirectory Claude reference | `CLAUDE-[scope].md` | `CLAUDE-knowledge.md` || Project MOC | `00-Index.md` | `00-Index.md` || Sub-MOC | `[Folder]-Index.md` | `Clients-Index.md` || General notes | kebab-case | `client-onboarding.md` || Canonical references | Title-Case | `Project-Charter.md` || Templates | `[name]-template.md` | `brief-template.md` || Daily notes | `YYYY-MM-DD.md` | `2025-05-07.md` |## Frontmatter standardEvery `.md` file generated by this skill starts with:```yaml---type: [type-tag]scope: [project-root | subdirectory-name]tags:- [tag]- [tag]created: [YYYY-MM-DD]updated: [YYYY-MM-DD]aliases:- [optional]---```Required fields: `type`, `scope`, `created`, `updated`.Optional fields: `tags`, `aliases`, `status` (for HEARTBEAT and similar).## Wikilinks vs. Markdown links| Use case | Format ||----------|--------|| File-to-file in vault | `[[FILENAME]]` || With display text | `[[FILENAME\|display text]]` || Section anchor | `[[FILENAME#Section]]` || Block reference | `[[FILENAME#^block-id]]` || External web | `[text](https://url)` || Image (in vault) | `![[image.png]]` || Image (external) | `` |When piping display text inside a Markdown table cell, escape the pipe: `[[FILENAME\|display]]`.## Maps of Content**CLAUDE.md**: agent-facing MOC.- Custom instructions body (this is what gets pasted into Cowork)- Reference index of all Claude reference files in vault, including subdirectory CLAUDE-[scope].md files**00-Index.md**: human-facing MOC.- Project navigation- Key concepts with wikilinks into `01-Knowledge/`- Workflow shortcuts- Tag taxonomyThese do not merge. They serve different audiences.## Subdirectory CLAUDE filesWhen to generate `CLAUDE-[scope].md`:- Subdirectory has operational rules distinct from root- Granular instructions would clutter root CLAUDE.md- Specific data type or workflow lives in that folderWhen generated, it MUST be logged in root CLAUDE.md under "Subdirectory reference files" with:- Wikilink to the file- One-line description of scope- Trigger condition (when to read it)When NOT generated, root CLAUDE.md says explicitly: "None. Root CLAUDE.md covers everything in this vault." This prevents future ambiguity.## Tag taxonomyEvery project seeds a tag taxonomy in [[MEMORY]]. Tags should be:- Project-specific where possible (`#client-acme` not just `#client`)- Hierarchical when useful (`#status/draft`, `#status/final`, `#status/archived`)- Documented (every active tag has a one-line meaning in MEMORY.md)Avoid single-use tags. Avoid `#todo` as a tag; use Obsidian's checkbox syntax `- [ ]` instead, which is queryable.## Plugins assumedThis skill produces vaults that work with vanilla Obsidian. No plugins required. Optional plugins that enhance the experience:- **Templater:** for the `_templates/` folder- **Dataview:** to query frontmatter (turns MEMORY.md tag taxonomy into live views)- **Tasks:** better task tracking with checkboxes- **Tag Wrangler:** taxonomy maintenanceDon't generate Dataview queries by default. They only render if the plugin is installed and the user knows it. If the user asks for them, add them.## Anti-patterns- Folders without numeric prefixes (sort order becomes alphabetical, hard to control)- Spaces in filenames (works in Obsidian but breaks command-line tooling)- Markdown links instead of wikilinks for in-vault references- Skipping frontmatter to save lines- Subdirectory CLAUDE files that aren't logged in root CLAUDE.md- Merging the agent-facing and human-facing MOCs- Tags that duplicate folder structure (`#knowledge` for files in `01-Knowledge/`)