claude-obsidian
Self-organizing AI second brain for Obsidian + Claude Code. Drop any source and Claude reads, links, and files it into one connected knowledge graph of plain Markdown you own. AI note-taking, personal knowledge management (PKM), and an open-source Notion alternative.
Install / Use
npx skills add AgriciDaniel/claude-obsidianInstalls into whichever agent you are using.
CLAUDE.md
Claude Code project instructions
Quality Score
Category
AI & Machine LearningSupported Platforms
Skill content
View source on GitHubclaude-obsidian is a local-first knowledge system for Claude Code and compatible Agent Skills hosts. It turns source material into linked, source-cited Obsidian pages; answers from the evidence already in the vault; and provides explicit workflows for research, retrieval, maintenance, and visual mapping.
Your vault remains a normal directory of Markdown, JSON, and source files. It is not hidden in a plugin cache, locked in a cloud database, or silently uploaded to a model.
From source to living knowledge
Most AI note workflows stop after saving text. claude-obsidian is organized around a repeatable loop: retain the source, ground the claims, connect the knowledge, then put it back to work.
- Capture with context. Bring local sources through a visible inbox and preserve immutable, content-addressed copies before synthesis.
- Ground every important claim. Source and claim ledgers retain authority, freshness, support, contradiction, confidence, and review state.
- Connect what you learn. Build linked pages, indexes, Maps of Content, methodology-aware structures, and Obsidian Canvas views.
- Use the vault again. Query, research, retrieve, lint, and fold what is already known instead of starting every conversation from zero.
See the vault
The output is meant to remain useful with or without an agent: plain Markdown for portability, Obsidian for navigation and visual exploration.
<p align="center"> <img src="assets/screenshots/graph-view.png" alt="Example claude-obsidian vault in Obsidian Graph view" width="49%"> <img src="assets/screenshots/wiki-map-view.png" alt="Example claude-obsidian knowledge map in Obsidian Canvas" width="49%"> </p> <p align="center"> <sub>Linked knowledge in Graph view · A visual knowledge map in Obsidian Canvas</sub> </p>Why it feels different
- Local by default. The vault is user-owned and works as ordinary files. Network egress is a separate, explicit decision.
- Sources survive the summary. Notes point back to durable source evidence; unsupported and contradictory claims remain visible.
- Knowledge compounds deliberately. Ingestion, querying, linting, retrieval, research, and rollups share one provenance-aware model.
- Parallel agents cannot race the vault. Workers return drafts. One orchestrator inspects and applies one recoverable transaction.
- Capabilities are stated honestly. Optional tools are detected, maturity is declared, and missing adapters degrade clearly instead of being simulated.
This is not an automatic transcript recorder, a cloud sync service, a factual oracle, or a substitute for backups and source control.
Quick start
The safest first run uses a source checkout and a separate user vault. Every mutating setup command previews its exact operation before it can apply.
1. Get the product
git clone https://github.com/AgriciDaniel/claude-obsidian.git
cd claude-obsidian
The checkout contains the product. It is not your knowledge vault.
2. Initialize a separate vault
export GENERATED_AT="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
export OPERATION_ID="init-reviewed"
python3 scripts/claude-obsidian.py init "$HOME/Documents/MyKnowledgeVault" \
--generated-at "$GENERATED_AT" --operation-id "$OPERATION_ID"
Review the JSON plan and copy its approved_plan_sha256, then apply that exact
operation:
python3 scripts/claude-obsidian.py init "$HOME/Documents/MyKnowledgeVault" \
--generated-at "$GENERATED_AT" --operation-id "$OPERATION_ID" \
--approved-plan-sha256 "<sha256-from-the-plan>" --apply
For an existing Obsidian vault, use the non-destructive adopt workflow
described in the installation guide.
3. Start from the vault
Open the new directory in Obsidian, then run Claude Code from that directory with the local plugin:
cd "$HOME/Documents/MyKnowledgeVault"
claude --plugin-dir /absolute/path/to/claude-obsidian
Start with:
/claude-obsidian:wiki
Then place a source in inbox/ and invoke
/claude-obsidian:wiki-ingest. Save an answer explicitly with
/claude-obsidian:save; ask the vault with /claude-obsidian:wiki-query.
For Codex, OpenCode, or Gemini, preview and then apply the portable skill links from the product checkout:
bash bin/setup-multi-agent.sh --host codex
bash bin/setup-multi-agent.sh --host codex --apply
Cursor and Windsurf use workspace-local skill discovery. Marketplace setup, every supported host, vault adoption, upgrades, and uninstall steps are covered in the full installation guide.
15 skills, one system
The skills are small enough to invoke directly and coordinated enough to share the same evidence, vault-selection, and mutation rules.
Build and use the wiki
| Skill | What it does |
|---|---|
| wiki | Initializes or adopts a vault, diagnoses readiness, and routes work |
| save | Saves one scoped answer or insight—never an automatic transcript |
| wiki-ingest | Turns captured sources into linked pages and provenance records |
| wiki-query | Answers read-only from relevant vault evidence |
| wiki-lint | Reports dead links, orphans, metadata gaps, stale indexes, and empty sections |
Extend the workflow
| Skill | What it adds |
|---|---|
| autoresearch | Bounded web research with explicit egress and a separate canonical merge |
| canvas | Wiki-scoped Obsidian Canvas creation and maintenance |
| defuddle | Clean, readable web content before ingestion |
| wiki-fold | Extractive, traceable rollups of the operation log |
| wiki-mode | Generic, LYT, PARA, or Zettelkasten filing conventions |
| wiki-retrieve | Contextual prefixes, BM25, and optional cosine reranking |
| wiki-cli | Obsidian CLI reads and search with transaction-safe writes |
Reference skills
| Skill | What it provides |
|---|---|
| obsidian-markdown | Correct Obsidian Flavored Markdown, links, embeds, and callouts |
| obsidian-bases | Native .base tables, cards, filters, formulas, and summaries |
| think | A structured observe, listen, connect, create, and grow review loop |
Claude Code exposes namespaced invocations such as
/claude-obsidian:wiki-lint; other hosts use their native Agent Skills
invocation. Trigger phrases and exact contracts live in each
skills/<name>/SKILL.md.
Trust is part of the architecture
The product never treats a source checkout, plugin cache, or contributor state
as the default vault. A vault is selected explicitly, through
CLAUDE_OBSIDIAN_VAULT, by the nearest .claude-obsidian.json, or by one
unambiguous initialized ancestor. If selection is uncertain, the command exits
without writing.
One logical knowledge operation is one recoverable transaction:
- Read every target and record its expected SHA-256.
- Let parallel workers return drafts and evidence only.
- Merge the complete change into one operation bundle.
- Inspect the bundle, then apply it once.
- Report the operation ID and exact changed paths.
The core holds one process-lifetime vault lock, journals backups, uses atomic replacement, and restores the prior state if an apply cannot finish. A changed target is a conflict, never a silent overwrite. Git checkpoints, destructive repairs, network egress, and canonical research merges remain explicit operations.
Read the transaction contract, provenance contract, and Compound Vault architecture for the machine-facing detail.
Honest capability boundaries
| Input or capability | Current support | |---|---| | Local filesystem sources | Implemented bounded, content-addressed byte capture | | Images | Metadata, hash, size, and bounded dimensions when available | | PDF and EPUB | Metadata, hash, and size; no built-in semantic extraction | | URL and YouTube | Validated consent plans; a configured external runner is required | | OCR | Local-file consent plan; a configured external runner is required | | BM25 retrieval | Local and deterministic | | Contextual prefixes or remote models | Optional and gated by explicit egress consent | | Obsidian CLI | Optional for reads/search; filesystem transport remains available |
High-risk accepted claims require two independent sources. Unsupported or contradictory evidence stays visible, and a grounded refusal is preferred over an invented citation. Model-based retrieval falls back to deterministic BM25 when the embedding or reranking stage cannot be trusted.
Shape the vault to the way you think
wiki-mode can route new notes using four methodologies without bulk-moving
existing knowledge:
| Mode | Filing principle | |---|---| | Generic | Sources, concepts, entities, and sessions | | LYT | Maps of Content and linked atomic notes | | PARA | Projects, Areas, Resources, and Archives | | Zettelkasten | Stable identifiers, atomic notes, and dense links |
Generic is the default when no mode is configured. Switching modes changes how new notes are routed; it does not silently reorganize old ones. See the methodology modes guide.
Operator reference
<details> <summary><strong>Portable CLI</strong></summary>The wrapper is python3 scripts/claude-obsidian.py.
| Command | Effect |
|---|---|
| doctor --vault PATH | Show vault selection and readiness |
| init PATH [--approved-plan-sha256 HASH --apply] | Plan or create a separate vault |
| adopt PATH [--approved-plan-sha256 HASH --apply] | Plan or adopt an existing Obsidian vault |
| migrate --vault PATH [--approved-plan-sha256 HASH --apply] | Add v1 ledgers and configuration without rewriting legacy data |
| transaction inspect BUNDLE --vault PATH | Validate a write bundle without mutation |
| transaction apply BUNDLE --vault PATH --approved-plan-sha256 HASH | Apply one inspected, recoverable operation |
| transaction recover --vault PATH [--force-stale-lock] | Restore an interrupted operation |
| lint --vault PATH [--as-of YYYY-MM-DD] | Emit findings deterministic for the declared UTC date |
| contracts --verify --vault PATH | Execute capability readiness contracts |
| capture plan --vault PATH [SOURCE ...] | Run a local capture preflight without writes |
| capture apply --vault PATH [SOURCE ...] | Plan or create immutable content
Truncated for display — read the full file on GitHub.
Related Skills
caveman
107.1k🪨 why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.
claude-mem
94.4kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
84.2kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Understand-Anything
83.5kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
