Generated banner for 🧠 claude-obsidian-kit
Generated logo for 🧠 claude-obsidian-kit

🧠 claude-obsidian-kit

LLM wiki kit

First committed by selmakcby

Published in selmakcby/claude-obsidian-kit. Publisher page

26 GitHub stars

What it is

Give your Claude Code agents a shared, persistent brain — an Obsidian vault that survives sessions. Includes a retrofit guide for folders you already have, and a runnable vault linter.
— the description by selmakcby

AutoGineer overview, from the brain’s own files

claude-obsidian-kit transforms ephemeral Claude Code sessions into a persistent knowledge base. By introducing specialized agents—the archivist for reading and linting, and the scribe for writing—it enables agents to maintain context across sessions. The kit provides a structured vault template, a schema-driven constitution, and a linter to ensure the integrity of the knowledge graph, effectively turning a project's reasoning into a searchable, long-term asset.

How it works

Memory model: LLM wiki

AutoGineer overview, from the brain’s own files

The kit installs two specialized agents into your project: an archivist that handles queries and vault health, and a scribe that performs efficient writes. It uses a structured Obsidian vault layout with predefined folders for architecture, decisions, design, entities, and concepts. Agents follow a specific llm-wiki skill protocol for ingesting information, querying the vault, and linting for issues like broken links or orphans. A provided Python script allows for command-line linting of the vault's health.

Folders
FolderRoleFiles
agentsagent-instructions2
scriptsscripts2
skillsagent-instructions4
obsidianfolder3
vault-templatefolder10

Requirements

Databases: PostgreSQL

Set it up

  1. This brain runs code automatically: 1 script. Review scripts/install.sh before opening the folder in Claude Code. No step below turns a hook on for you.

    • scripts/install.sh: sh scripts/install.sh
  2. Download the brain as a ZIP and unzip it where you keep your notes or project: https://mp-staging.autogineer.com/agent-brains/selmakcby/claude-obsidian-kit/download
  3. cd claude-obsidian-kit && claude

  4. AutoGineer scanned these files at commit 2826401.

  5. Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/selmakcby/claude-obsidian-kit/blob/282640137e4761c5a6b0aa75aa509cf39199d6c4/README.md#install
  6. First committed by selmakcby. Published in selmakcby/claude-obsidian-kit. Licence: MIT License.

Usage

AutoGineer overview, from the brain’s own files

  • Automating the ingestion of project decisions into a persistent vault.
  • Querying past architectural decisions to inform current development.
  • Running automated health checks on the knowledge base to identify stale notes or broken links.
  • Maintaining a shared knowledge graph that survives individual agent sessions.
“Why did we choose Stripe webhooks for the payment integration?”
The archivist agent reads the relevant decision note from the vault and synthesizes the rationale in seconds.
“Check vault health.”
The archivist scans the vault for orphans, broken links, and contradictions, returning a severity-sorted report.

Documentation by selmakcby

<div align="center">

🧠 claude-obsidian-kit

Give your Claude Code agents a shared, persistent brain.

Turn ephemeral sessions into accumulating knowledge — stored in an Obsidian vault. Built for efficiency: right model for each job, cheap writes, index-first reads.

   ┌─ planner (opus) ─┐
   │ ui-agent (sonnet)│      QUERY / LINT
   │ builder  (sonnet)│ ─────▶ archivist (sonnet · read-only)
   │ reviewer (sonnet)│             │
   └──────────────────┘             â–Œ
            │                     VAULT
            └────── INGEST ──▶ scribe (haiku · writes)
                                     â–Č
                                     │
                               Main Claude
                               (orchestrator)

Install · Retrofit · Lint · Efficiency · FAQ · Prompts đŸ‡čđŸ‡·

</div>


What this is

A drop-in kit that extends Claude Code with:

  • Two agents:

    • archivist — vault reader + health guardian (QUERY, LINT)

    • scribe — dedicated vault writer (INGEST, runs on haiku for efficiency)

  • One skill — llm-wiki — the INGEST · QUERY · LINT protocols

  • One constitution — vault-template/CLAUDE.md — the schema every agent reads before touching the vault (đŸ‡čđŸ‡· TĂŒrkçe)

  • One vault template — pre-structured Obsidian vault with conventions

  • One linter — vault-lint.py, the LINT protocol as a runnable command (no dependencies)

  • One retrofit guide — RETROFIT.md, for when you already have months of material

  • Obsidian config — graph colours by layer, and the [!conflict] callout the skill needs

After install, your agents read from and write to a shared markdown knowledge graph that survives sessions. Yesterday's decisions are tomorrow's context.


The problem this solves

Default Claude Code agents are stateless:

Monday:  agents plan a feature, build it → close session
Tuesday: new session — "why did we use Stripe webhooks?"
Claude:  "I don't know. Let me re-analyze from scratch..."

Every session starts from zero. Context dies with the conversation. The project's reasoning evaporates even when the code persists.

With this kit:

Monday:  agents plan → scribe files to vault/decisions/
Tuesday: "why Stripe webhooks?"
archivist → reads vault/decisions/2026-04-21-stripe-webhooks.md → answers in 1 second with full rationale

Install

Quick
git clone https://github.com/selmakcby/claude-obsidian-kit ~/claude-obsidian-kit

cd ~/claude-obsidian-kit
./scripts/install.sh ~/my-project

Installs:

  • ~/my-project/.claude/agents/archivist.md

  • ~/my-project/.claude/agents/scribe.md

  • ~/my-project/.claude/skills/llm-wiki/

  • ~/my-project/vault/ (if doesn't exist)

Final step

Update your project's CLAUDE.md with vault permissions:

{
  "permissions": {
    "allow": [
      "Write(vault/**)",
      "Edit(vault/**)",
      "Read(vault/**)"
    ]
  }
}

How it works

The 6-agent team

After this kit, your full team:

AgentRoleModelWhy this model
plannerArchitecture + planningopusDeep reasoning
ui-agentDesign + componentssonnetBalanced
builderBackend implementationsonnetCoding quality
reviewerQuality + securitysonnetThorough analysis
archivistVault reads (QUERY, LINT)sonnetSynthesis + audit
scribeVault writes (INGEST)haikuCheap + fast

The scribe / archivist split is token-efficient by design — see EFFICIENCY.md.

Three operations
🟱 INGEST (scribe)

Other agents produce findings. Main Claude passes findings to scribe. Scribe formats into proper note + writes to correct folder + updates index.

planner: "We should use monthly/annual pricing toggle"
  ↓
main Claude: Task(scribe, finding="...", type=decision)
  ↓
scribe: writes vault/decisions/2026-04-23-pricing-toggle.md
đŸ”” QUERY (archivist)
you: "Why did we choose monthly/annual toggle?"
  ↓
archivist: reads index.md → greps "toggle" → reads 2-3 notes → synthesizes answer
🟡 LINT (archivist)
you: "Check vault health"
  ↓
archivist: scans for orphans, broken links, stale notes, contradictions
archivist: returns severity-sorted report with fix suggestions

Retrofit — you already have a folder

vault-template/ assumes you are starting clean. Almost nobody is. The realistic situation is months of accumulated material — transcripts, drafts, half-finished projects, and often an older vault somewhere inside that already works.

RETROFIT.md is the guide for that case. It covers the two decisions you make before writing anything (the vault root is the folder you already have; an existing vault inside it is canonical and read-only), and the parallel-ingest design that keeps agents from writing the same entity page twice:

Phase 1  domain agents ──▶ project + decision pages only
                           (reference [[entities]], write none)
              │
              ▌  union + dedupe + deterministic split, in code
Phase 2  node agents  ──▶ disjoint slices of the entity/concept list
              │
              ▌
Phase 3  index + lint ──▶ one owner for index.md, one audit

Splitting by page type rather than only by domain makes collisions impossible by construction rather than by instruction. Reference run: 1.9 GB, ~1,000 text files, 226 pages, 3,484 links, zero broken links, zero fabricated source citations.


Lint, as a command

skills/llm-wiki/lint.md specifies the checks and a health-score formula. vault-lint.py implements that spec so the result is measured rather than asserted. Single file, standard library only, read-only:

python3 scripts/vault-lint.py path/to/vault

# retrofit case: audit the wiki layer, resolve links against the whole folder
python3 scripts/vault-lint.py . --notes 'wiki/*' --notes 'index.md'

# non-English frontmatter
python3 scripts/vault-lint.py . --fields tur,durum,guncelleme --date-field guncelleme

# CI
python3 scripts/vault-lint.py . --fail-under 85
CheckWhy it earns its place
Broken linksCode spans are stripped first — an [[example]] inside backticks is not a broken link
OrphansEntry points (index, log, README) are exempt
Unverifiable sourcesEvery path a note cites in source: is checked against disk. This is how you catch a citation the agent invented
Ambiguous targetsTwo files sharing a basename means [[name]] resolves by proximity — possibly not the file you meant
Missing concept pagesA link referenced 3+ times with no page behind it
Frontmatter, stale notesPer the schema; stale = old date still in draft

Flagged > [!conflict] callouts are reported but not scored. A marked contradiction is the protocol working; the dangerous one is unmarked, and no linter can see that. Pass --score-conflicts for the strict formula.


Obsidian config

The skill tells the agent to flag contradictions with > [!conflict] — and Obsidian has no such callout type, so they render as anonymous grey notes. obsidian/ fixes that and colours the graph by layer. Copy it into your vault's .obsidian/.


Efficiency

This kit is intentionally designed for low token cost. See EFFICIENCY.md for all 10 patterns.

Highlights:

  • Separate thinking from writing — opus plans, haiku files (80% cost reduction on writes)

  • Index-first reads — never grep the whole vault

  • Model tiering — haiku for scribe, sonnet for reads, opus for architecture

  • Least-privilege tools — smaller system prompts, fewer wasted calls

  • Parallel when independent — wall-clock savings

Rough cost per full feature (plan + design + build + review + 2 ingests): ~$0.18 Naive "opus everywhere" alternative: ~$0.90 → 5× cheaper with proper model routing.


FAQ

Common questions about INGEST, QUERY, LINT, PII, versioning, RAG comparison, and more — see FAQ.md.


Vault layout

vault/
├── index.md              ← entry point, read first
├── _schema/
│   ├── template.md       ← required frontmatter for all notes
│   └── conventions.md    ← naming, linking, tagging rules
│
├── architecture/         ← how the system is built
├── decisions/            ← why we chose X over Y (dated)
├── design/               ← UI/UX decisions
├── entities/             ← tools, services (stripe, supabase)
├── concepts/             ← cross-cutting ideas
└── sessions/             ← dated session summaries

Every note has frontmatter. Every note links to others. Orphans are tech debt.


File structure

claude-obsidian-kit/
├── README.md                 ← you are here
├── RETROFIT.md               ← pointing the kit at a folder you already have
├── EFFICIENCY.md             ← token patterns (10 of them)
├── FAQ.md                    ← common questions
├── LICENSE                   ← MIT
├── agents/
│   ├── archivist.md          ← reader/guardian (QUERY + LINT)
│   └── scribe.md             ← dedicated writer (INGEST)
├── skills/
│   └── llm-wiki/
│       ├── SKILL.md          ← main skill manifest
│       ├── ingest.md         ← INGEST protocol detail
│       ├── query.md          ← QUERY protocol detail
│       └── lint.md           ← LINT protocol detail
├── vault-template/
│   ├── index.md              ← vault entry point
│   ├── _schema/
│   │   ├── template.md       ← note template
│   │   └── conventions.md    ← full rulebook
│   ├── architecture/
│   ├── decisions/
│   ├── design/
│   ├── entities/example-service.md
│   ├── concepts/example-concept.md
│   └── sessions/
├── obsidian/
│   ├── graph.json            ← graph coloured by vault layer
│   ├── snippets/
│   │   └── vault-layers.css  ← [!conflict] callout + folder colours
│   └── README.md
└── scripts/
    ├── install.sh            ← one-command setup
    └── vault-lint.py         ← runs the LINT protocol for real (no deps)

Works well with

  • Claude Code — the primary target

  • Obsidian — the vault viewer/editor (optional — vault is plain markdown)

  • VS Code, Typora, Bear — any markdown editor works

  • Previous kit: knowledge-pipeline — this extends it with the multi-agent efficiency layer


License

MIT


Credits

Built on Claude Code's agent + skill system.

Inspired by:

PROMPTS.md

Videodaki Promptlar · Prompts from the video

đŸ‡čđŸ‡· "Sıfırdan Ajan Hafızası" videosunda ekranda kullandığım promptların temiz, genelleßtirilmiß hĂąli. Kendi klasörĂŒne uyarlaman için kißisel kısımlar çıkarıldı. 🇬🇧 The exact prompts used in the (Turkish) video, cleaned up and generalized.

Hepsi Claude Code'da, vault klasörĂŒnĂŒn içinden çalıßtırılır (cd vault-klasorun && claude). Vault yapısının kendisi için: vault-template/ · mevcut klasörĂŒnĂŒ dönĂŒĆŸtĂŒrmek için: RETROFIT.md


1 · Arßivini gerçekten okuyor mu? (test sorusu)

Kurulumdan sonra sistemin çalıßtığını kanıtlamak için. Obsidian kapalıyken sor — eklenti yok, köprĂŒ yok, MCP yok; ajan sadece klasöre bakıyor:

Bu klasördeki arßivimde en çok linklenen ĂŒĂ§ sayfa hangisi ve neden merkezde duruyorlar?
Cevabını dosyalara bakarak ver.

2 · GranĂŒlerlik deneyi — tek dosya vs bölĂŒnmĂŒĆŸ yapı

Aynı veriyi bir kere tek dev dosya, bir kere konu-baßına-dosya olarak koy; birebir aynı promptu iki kuruluma da ver. Deneyin tek değißkeni dosya yapısı olmalı:

raw/ klasörĂŒndeki kaynakları oku. En çok tekrar eden ĂŒĂ§ talep ne,
her birini kaç farklı yerde gördĂŒn, ve hangileri hiç cevaplanmamıß?
Cevabında her iddia için hangi dosyadan geldiğini yaz.

Tek dosyada cevap genelleßir ve atıf zayıflar; bölĂŒnmĂŒĆŸ yapıda ajan doğru dosyayı açar, sayılar ve isimler doğru gelir.


3 · Sıfırdan vault iskeleti kurdurma

Bu klasörĂŒ bir LLM wiki olarak kur. ƞunları yap:

1. CLAUDE.md yaz — ĂŒĂ§ cĂŒmle: bu klasör ne, içinde ne var, ne zaman buraya bakılmalı.
2. index.md yaz — ßimdilik boß bir katalog, kategori baßlıkları hazır olsun.
3. log.md yaz — append-only, tarih damgalı kayıt dosyası.
4. ƞu klasörleri aç: raw/ (ham kaynaklar, sen asla yazmayacaksın), sources/ (her ham
   kaynak için bir özet sayfası), konular/ (kavram sayfaları).

Kurallar: tek konu tek dosya. Dosya adları kĂŒĂ§ĂŒk harf, tire ile ayrılmıß, TĂŒrkçe karakter yok.
Bağlantılar dosyanın içinde [[kĂ¶ĆŸeli-çift-parantez]] biçiminde. En fazla iki seviye derinlik.

Yazmadan önce ne yapacağını tek paragrafta söyle.

Son satır önemli: kurulumu sen denetliyorsun, ajan tek baßına karar vermiyor.


4 · Mevcut dağınık notları wiki'ye dönĂŒĆŸtĂŒrme

Boß klasöre değil, yıllardır biriken notların ĂŒstĂŒne kuruyorsan:

Bu klasörde dağınık notlarım var. Bunları bir LLM wiki'ye dönĂŒĆŸtĂŒr.

1. CLAUDE.md yaz — ĂŒĂ§ cĂŒmle: bu klasör ne, içinde ne var, ne zaman buraya bakılmalı.
2. index.md yaz — her sayfa için bir satır: [[bağlantı]] + tek cĂŒmle özet.
3. Mevcut notları dĂŒzenle: her dosyanın baßına frontmatter koy (title, tags, date,
   status), gövdedeki ilgili kavramları [[kĂ¶ĆŸeli-çift-parantez]] ile birbirine bağla.
4. Notların içinde çelißki varsa sessizce birini seçme — sayfada ißaretle ve hangisinin
   geçerli olduğunu gerekçesiyle yaz.
5. raw/ klasörĂŒne ASLA yazma. Orası dokunulmaz.

Dosya adları kĂŒĂ§ĂŒk harf, tire ile ayrılmıß, TĂŒrkçe karakter yok.

Yazmadan önce ne yapacağını tek paragrafta söyle.

5 · INGEST — yeni kaynak ißleme

Yeni ham malzemeyi raw/ içine koyduktan sonra:

raw/ klasörĂŒne yeni kaynaklar koydum.

Bunları ißle:
1. Oku, önce bana en önemli çıkarımları söyle.
2. Her kaynak için sources/ altına bir özet sayfası yaz.
3. Konu sayfalarını aç ya da gĂŒncelle — tekrar eden talepleri kendi sayfası olacak
   ßekilde ayır.
4. index.md'yi gĂŒncelle, yeni sayfaları kataloğa ekle.
5. log.md'ye tarih damgalı bir satır dĂŒĆŸ.
6. Sayfalar arasında çapraz bağlantı kur.

Bir kaynakta iddia edilen bir Ɵey baƟka bir kaynakla çeliƟiyorsa sayfada iƟaretle,
sessizce birini seçme.

6 · QUERY — asıl numara son cĂŒmlede

Arßive soruyorum: [sorunu buraya yaz]

Cevabında her iddia için kaynak sayfayı göster.
Cevabı ĂŒrettikten sonra bunu bir sentez sayfası olarak wiki'ye yaz ve index.md'ye ekle —
bir dahaki sefere sıfırdan çalıßma, ĂŒstĂŒne koy.

Son cĂŒmle RAG ile aradaki farkın tamamı: RAG'da cevap ĂŒretilir ve uçar gider; burada cevap arßivin kalıcı parçası olur.


7 · LINT — sağlık kontrolĂŒ

DĂŒzenli bakım (haftalık yeterli — her gĂŒn aynı dosyaları yeniden okutmak token israfı):

Bu wiki'nin sağlık kontrolĂŒnĂŒ yap:
- Kırık [[bağlantı]] var mı?
- Hiçbir yerden link almayan yetim sayfa var mı?
- index.md'de listelenmeyen sayfa var mı?
- Sayfalar arasında çelißen iddia var mı?
- Bir sayfada geçen ama kendi sayfası olmayan kavram var mı?

Bulduklarını önce liste hĂąlinde göster. Ben onaylamadan dĂŒzeltme yapma.

Uzun sĂŒre bakımsız kalmıß arßiv için daha hedefli sĂŒrĂŒm:

Bu vault uzun sĂŒredir bakımsız. Sağlık kontrolĂŒ yap:

1. index.md'de hiç geçmeyen sayfaları listele.
2. Kırık [[bağlantı]]ları bul. Her biri için sebebini de yaz — dosya adı mı farklı,
   sayfa mı silinmiß?
3. Yetim sayfaları bul.

ĂœĂ§ĂŒnĂŒ de liste hĂąlinde göster, ben onayladıktan sonra index.md'yi yeniden yaz ve
kırık bağlantıları dĂŒzelt. Sayfa içeriklerine dokunma.

8 · GĂŒvenlik testi — hafızaya yerleßen prompt injection

raw/ içindeki bir kaynağa bilerek sahte bir "gerçek" ekle, ingest ettir, yeni oturumda o bilgiyi sor. Ajan uydurmayı kendi hafızasından, emin bir tonla verecektir — okuduğu her ßey kalıcı gerçeğe dönĂŒĆŸĂŒr. Temizliği için:

raw/ içindeki sahte notu sil, bu iddiadan tĂŒreyen tĂŒm wiki sayfalarını bul ve
temizle, log.md'ye ne temizlediğini yaz.

Ders: raw/ klasörĂŒne ne girdiğini bil; vault'a giren her iddia, sonraki her cevabın zemini olur.

31 files

Advantages

  • Reduces token costs by using specialized models for different tasks, such as using Haiku for writes and Sonnet for reads. evidence: README.md
  • Ensures knowledge persists across sessions, preventing the loss of project reasoning. evidence: README.md
  • Provides a robust linting protocol to maintain vault health and catch fabricated citations. evidence: README.md

Limitations

  • Requires manual setup and integration into existing project structures. evidence: README.md
  • Relies on specific agent roles which must be correctly configured within the Claude Code environment. evidence: README.md

Security

Risk level: Low risk

This brain runs

Install scripts (1)

  • scripts/install.sh: sh scripts/install.sh
  • Low risk: scripts-present (scripts/install.sh)

Attribution and licence

First committed by
GitHub avatar of selmakcbyselmakcby
Publisher
selma (Community)
Source
selmakcby/claude-obsidian-kit · commit 2826401
Licence
MIT License (files served here)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Contributors
selmakcby

AutoGineer is not affiliated with or endorsed by selmakcby.

Download

The ZIP holds the files AutoGineer serves, with ATTRIBUTION.md and the licence. Download claude-obsidian-kit.zip