# STRUCTURE.md ## Purpose This document defines the vault layout, note taxonomy, naming conventions, and frontmatter templates for a memory storage vault designed for Claude Code today and future CoWork plugin access through the Obsidian Local REST API. ## Recommended Vault Layout ```text vault/ ├── CLAUDE.md ├── STRUCTURE.md ├── BOOTSTRAP.md ├── index.md ├── README.md ├── inbox/ ├── journal/ ├── projects/ ├── areas/ ├── resources/ ├── decisions/ ├── reviews/ ├── _agent/ └── archive/ ``` ## Note Types - daily-note - weekly-note - monthly-note - project - project-update - area - concept - reference - person - meeting - decision - review - session-log - working-memory - episodic-memory - semantic-memory - context-bundle - skill - draft - inbox-item ## Project Lifecycle Project notes live in one of four subfolders by state, and `frontmatter.status` MUST match the folder: - `projects/active/` — `status: active` (current work) - `projects/incubating/` — `status: incubating` (idea stage) - `projects/on-hold/` — `status: on-hold` (paused but kept) - `projects/archived/` — `status: archived` (done/abandoned) Promotion between states = move the file **and** update `status`. Before creating a new project note, search all four subfolders for the slug (the echo-memory skill's mandatory search-first rule) — a duplicate in a non-active folder is the most common drift bug. ## Decisions Decision notes live in `decisions/by-date/YYYY-MM-DD-.md`. `decisions/by-project/` is **deprecated** — instead, mirror a project-relevant decision as a `[[wikilink]]` under that project's `## Key Decisions` heading. ## Core Frontmatter ```yaml --- type: status: created: updated: tags: [] agent_written: false source_notes: [] # plain relative paths as strings — NEVER [[wikilinks]] --- ``` > **No `[[wikilinks]]` in frontmatter.** YAML parses `[[...]]` as nested lists, so wiki > links placed in frontmatter (e.g. an old `related:` field) silently break and do not > render as clickable links. All cross-references go in a **`## Related`** section in the > note **body**, as a bulleted list of `[[links]]`. Keep frontmatter to scalar/string > metadata only. `source_notes`, when used, holds plain relative path strings, not links.