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 life
  • LICENSE — 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.

FolderWhat 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.

SubagentOwns
🧠 Memory KeeperLearnings, decisions, rule promotion, quality gate
📥 Inbox TriagerRoute captures into Object-OS folders (never moves without OK)
📚 Knowledge CompilerPromote notes into Knowledge/; create MOCs
🏛️ Vault LibrarianIndices, broken links, staleness, tag audit
🔍 Research AnalystMulti-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 into Knowledge/
  • /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:

  1. Respect .claude/ boundaries (CLI-managed vs user-authored)
  2. Sync-owned folders (e.g. Input/Readwise/) are graph-additive only — never touch synced content
  3. Never create files or folders at vault root — and a folder that appears there is a signal of intrusion, not a mess to tidy
  4. Always tag new notes (1–4 canonical tags)
  5. Ask before overwriting (unless explicitly told to edit)
  6. Normalize frontmatter on touch
  7. Use wikilinks for vault-internal references
  8. 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.json is the template; copy to settings.local.json and 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 ForteBuilding a Second Brain, PARA, CODE method
  • Sönke AhrensHow 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

  1. Download the ZIP or clone the repository
  2. Open the folder as a vault in Obsidian (File → Open Vault)
  3. Obsidian will prompt you to install required plugins

Stats

Stars

0

Forks

0

Last updated 18d ago