ai-native-obsidian-vault
AI-native Obsidian vault template. Object-OS folders + _system/ AI memory layer + 5 subagents + 18 slash commands. Built for Claude Code.
AI-Native Obsidian Vault Template
A clonable starting point for an Obsidian vault designed to be used by an AI agent, not just by you. Object-OS folders + a two-namespace tag system + a
_system/AI memory layer + 5 specialized subagents + slash commands.
Read the full architecture breakdown before you clone, or jump in.
What this is
A skeleton vault for Obsidian wired up to work with Claude Code (or any Claude Code-compatible CLI). It gives you:
- A folder structure (Object-OS) that doesn't fight an AI agent
- A
_system/directory that gives the AI persistent memory across sessions - 5 specialized subagents (Memory Keeper, Inbox Triager, Knowledge Compiler, Vault Librarian, Research Analyst)
- Slash commands for daily/weekly rituals (
/triage,/weekly-review,/morning-brief,/health-check,/search, ...) - 3 path-scoped rules (daily-note format, frontmatter normalization, research protocol)
- A canonical tag system — 2 live namespaces, max 4 tags per note, and a written reason for why it's not 5
- Note templates (Daily, Project, Person, Company, Concept, Content)
- A handful of anonymized example notes showing a small, connected graph
Requirements
- Obsidian (free)
- Claude Code CLI (or a Claude Code-compatible client) — required for subagents and slash commands
- (Optional but recommended) MCP servers for richer research:
- Readwise MCP — search highlights from books, articles, podcasts
- Context7 MCP — up-to-date library/framework docs
- A personal bookmarks MCP (e.g. Raindrop) if you keep a curated bookmark library
Setup (~10 minutes)
1. Clone into your Obsidian vaults directory
cd ~/Documents/Obsidian # or wherever you keep your vaults
git clone https://github.com/mariomile/ai-native-obsidian-vault my-new-vault
cd my-new-vault
2. Open in Obsidian
File → Open vault → select my-new-vault. Trust the workspace when prompted.
3. Customize the system files
Open these files and replace the {{placeholders}}:
CLAUDE.md—{{user}},{{vault_name}}_system/vault-context.md— fill in who you are, active projects, current state_system/memory/preferences/preferences.md— fill in your communication style_system/_tags.md— add or rename#domain/*tags to match your lifeLICENSE— replace{{user}}with your name
You don't have to fill everything immediately — the AI will tolerate {{placeholders}} and prompt you when it needs them.
4. Run Claude Code from the vault root
claude
5. Run the health check
/health-check
This validates that everything is structurally OK — folders exist, frontmatter is canonical, no broken references.
6. Create your first daily note
Use Obsidian's Daily Note core plugin (configure it to use Resources/Templates/Daily.md and Journal/Daily/ with DD-MM-YYYY filename).
Start capturing. Run /triage weekly. Run /weekly-review Sundays. Run /morning-brief on Mondays.
That's the loop.
The mental model (90-second version)
Folders define what a file IS. Tags define what it's ABOUT.
| Folder | What lives here |
|---|---|
_system/ | The AI's memory layer — context, rules, decisions, indices, templates |
_inbox/ | Catch-all for untriaged stuff. Should trend toward zero. |
Input/ | Material you didn't author — Readwise, Books, Articles, Courses |
Knowledge/ | Permanent knowledge — organized by domain (Product/, AI and Agents/, ...) |
CRM/ | People and Companies you deal with |
Active/ | Projects in progress + Goals |
Output/ | Deliverables — _artifacts/ for agent-generated HTML; everything else stays in its project, tagged #type/output |
Journal/ | Daily / Weekly / Monthly / Yearly notes |
Resources/ | Reusable tools — Templates, attachments |
.archive/ | Inactive items (preferred over deletion) |
.claude/ | Claude Code configuration — rules, agents, commands |
One declared exception: Knowledge/ is organized by domain, not just tagged with one — because there, domain is intrinsic and permanent (a note about pricing strategy stays about pricing forever). Everywhere else, domain is a tag, resolved at query time.
Tags use 2 canonical namespaces. Max 4 per note.
tags:
- type/concept # what the file IS
- domain/product # what it's ABOUT — cross-folder
status: active # PROPERTY, not a tag — only for project/experiment/course
Why only 2 (not 5, like most PKM templates ship): #status/*, #stage/*, #scope/* all sounded useful and all turned out redundant with the folder path or with a single frontmatter property — each one is documented as an anti-pattern, with the reason, in _system/_tags.md. Read that file before you're tempted to add a third namespace; it's the fastest way to avoid rebuilding a mistake that's already been made and undone once.
The 5 subagents
Defined in .claude/agents/. The main AI dispatches to these via the Agent tool.
| Subagent | Owns |
|---|---|
| 🧠 Memory Keeper | Learnings, decisions, rule promotion, quality gate |
| 📥 Inbox Triager | Route captures into Object-OS folders (never moves without OK) |
| 📚 Knowledge Compiler | Promote notes into Knowledge/; create MOCs |
| 🏛️ Vault Librarian | Indices, broken links, staleness, tag audit |
| 🔍 Research Analyst | Multi-source research with citations |
Full guide: _system/agents-guide.md.
Slash commands
Defined in .claude/commands/. Type /command-name in Claude Code.
Daily / weekly rituals
/morning-brief— daily boot: yesterday, today, blockers/standup— quick status of active projects/weekly-review— pre-filled weekly digest/letswork— pull next-actionable tasks
Capture & triage
/triage— process_inbox/and daily-note captures/meeting— start a structured meeting note
Research
/search— multi-source deep search with citations/crm-lookup— surface everything the vault knows about a person/company
Maintenance
/health-check— full vault audit/find-orphans— surface unlinked, under-tagged notes/tag-audit— audit tags vs. canonical namespace/refactor-note— promote a note intoKnowledge//archive— move a completed project to.archive//update-context— refresh a project's context.md
Pipeline
/enrich-daily-notes— wikilink + summary enrichment for recent dailies/link-readwise— graph-additive linking of Readwise highlights/new-project— scaffold a fresh project/export— export to PDF / DOCX / HTML
The 8 Sacred Rules
Loaded at every session boot from CLAUDE.md:
- Respect
.claude/boundaries (CLI-managed vs user-authored) - Sync-owned folders (e.g.
Input/Readwise/) are graph-additive only — never touch synced content - Never create files or folders at vault root — and a folder that appears there is a signal of intrusion, not a mess to tidy
- Always tag new notes (1–4 canonical tags)
- Ask before overwriting (unless explicitly told to edit)
- Normalize frontmatter on touch
- Use wikilinks for vault-internal references
- Search before asking (don't interrupt for googlable things)
Full rationale: CLAUDE.md.
Customizing for your workflow
Add a domain
Edit _system/_tags.md under #domain/*. The point is to have a finite, stable, orthogonal set — don't add a domain you'll only ever use twice.
Add a type
Edit _system/_tags.md and _system/object-schema.md. Define the type's required and optional frontmatter properties.
Add a rule
Create .claude/rules/{name}.md and reference it from CLAUDE.md. Use path-scoping in the rule frontmatter if it should only apply to specific files.
Add a subagent
Create .claude/agents/{name}.md with proper frontmatter:
---
name: subagent-name
description: When to invoke this subagent.
tools: All tools
model: sonnet # or haiku, opus
---
Add it to _system/agents-guide.md and to the table in CLAUDE.md.
Add a slash command
Create .claude/commands/{name}.md. The file body is the instruction the AI executes when you type /name.
Thinking about a company/team vault instead of personal?
Same primitives, different governance — see the "Personal brain vs company brain" section of the architecture breakdown. Short version: one extra structural requirement — living documents (specs, playbooks, decision logs) need a declared owner and a review date in frontmatter. Everything else in this template stays the same.
What's intentionally NOT included
- Your notes. This is a skeleton, not a content library. A handful of anonymized examples ship to show formatting and the graph.
- Personal MCP tokens / API keys.
settings.example.jsonis the template; copy tosettings.local.jsonand add your own secrets (gitignored). - Specific community plugin configs. Configure Obsidian plugins (Daily Notes, Tasks, Bases, Templater) to your taste.
- A graph theme / CSS snippets. Use any Obsidian theme. The structure is theme-agnostic.
Credits & inspirations
This system stands on the work of many people:
- Tiago Forte — Building a Second Brain, PARA, CODE method
- Sönke Ahrens — How to Take Smart Notes, Zettelkasten / fleeting → literature → evergreen
- Andrej Karpathy — the "LLM as compiler" framing
- Steph Ango (kepano) — Obsidian skills, folders-as-types philosophy
- Anthropic — Claude Code, subagents protocol, skills protocol
- The Obsidian community
License
MIT. Fork it, remix it, ship it. If you build something better, I'd love to see it — open an issue or @ me with what you made.
Contributing / feedback
Found a bug in the skeleton? Want to propose a new subagent or command pattern? Open an issue.
This template will evolve. If you want to be notified, watch the repo or subscribe to the newsletter.
How to Install
- Download the ZIP or clone the repository
- Open the folder as a vault in Obsidian (File → Open Vault)
- Obsidian will prompt you to install required plugins
Stats
Stars
0
Forks
0
Last updated 18d ago