π°π· νκ΅μ΄ | πΊπΈ English
A team knowledge base built on Andrej Karpathy's LLM Wiki pattern.
A local-first markdown knowledge base that overcomes RAG's "session amnesia" through ingest-time compilation. Whenever a new document arrives, Claude Code automatically structures and stores it under wiki/.
# Verify Claude Code CLI is installed
claude --version
# Open this folder as an Obsidian Vault
# β Install and enable the following Community Plugins:
# - Obsidian Git
# - Dataview
# - Templater./scripts/ingest.sh --init
./scripts/setup-hooks.sh # install commit-msg validator (see CLAUDE.md Β§8)# Add from a file
./scripts/ingest.sh raw/articles/my-article.md
# Add from a URL
./scripts/ingest.sh --url https://example.com/paper
# Batch process everything in inbox/
./scripts/ingest.sh --all-inbox./scripts/query.sh "What is the Transformer attention mechanism?"
# Save the answer as a wiki page
./scripts/query.sh --save "How does RAG differ from LLM Wiki?"./scripts/lint.sh # Full audit
./scripts/lint.sh --fix # Auto-repair
./scripts/freshness.sh # SHA consistency checkLLM-wiki/
βββ CLAUDE.md # Agent constitution (AI behavior rules)
βββ AGENTS.md # Agent role specification
βββ CONTRIBUTING.md # Contribution guide
β
βββ raw/ # β οΈ Immutable source of truth (do not modify)
β βββ articles/ # Web clippings, blog posts
β βββ papers/ # Paper PDF summaries
β βββ videos/ # YouTube/lecture transcripts
β βββ meetings/ # Meeting notes
β
βββ wiki/ # π€ AI-only maintained (humans browse read-only)
β βββ index.md # Master index (for agent routing)
β βββ log.md # Transaction audit ledger
β βββ *.md # Compiled wiki pages
β
βββ _templates/ # Document templates
β βββ concept.md
β βββ decision.md
β βββ meeting.md
β
βββ inbox/ # Drop-box for pending files
β
βββ scripts/ # Automation scripts
β βββ ingest.sh # Ingest Agent
β βββ query.sh # Query Agent
β βββ lint.sh # Lint Agent
β βββ freshness.sh # SHA consistency verifier
β βββ async_ingest.sh # Async ingest for git hooks
β
βββ .obsidian/ # Obsidian settings
Committing a file under raw/ triggers a post-commit hook that starts wiki compilation automatically.
# Add a raw source β commit and it's processed automatically
git add raw/articles/new-article.md
git commit -m "raw: add new-article.md"
# β wiki/ is compiled in the background
# β Log: /tmp/llm-wiki-async-ingest.logCore principle: validate knowledge on a personal branch first, and only promote what is genuinely valuable to the team into
main.
main β Team-shared knowledge (protected, verified content only)
βββ personal/addie β Personal knowledge (experiment freely)
βββ feature/redis-research β Topic-specific investigation
Promote β content the whole team will need repeatedly:
- Architecture decisions (ADRs), technology choice rationale
- Troubleshooting records, production incident retrospectives
- Onboarding essentials (deployment procedures, environment setup)
- Technical research results (benchmarks, library comparisons)
Keep on personal branch β context unrelated to the team:
- Personal learning notes, book summaries
- Temporary notes during a specific PR
- Unverified drafts
β Add raw/ on a personal branch β commit
β (automatic)
β‘ wiki/ compilation completes
β’ Verify lint passes
./scripts/lint.sh
β£ Open a PR: personal/<name> β main
(fill in the checklist)
β€ One teammate reviews β Squash Merge
β₯ Accessible to the entire team β
# When starting for the first time
git checkout -b personal/your-name
git push -u origin personal/your-nameβ Scenario example: wiki/promotion-example.md β Promotion policy details: decisions/ADR-001-knowledge-promotion-policy.md
The compiled wiki/ is published to a dedicated dist branch so other product repos can embed it as a read-only git submodule. See decisions/ADR-002-wiki-distribution-submodule.md.
Every push to main that touches wiki/** triggers the Publish Wiki Release workflow, which:
- Runs
scripts/publish.shto rebuild thedistbranch and tagwiki-vX.Y.Z. - Creates a corresponding GitHub Release (notes auto-generated from commits since the previous tag).
- The README badge updates automatically (shields.io reads the latest release tag).
Bump level is inferred from the commit message:
| Marker in commit message | Bump | Use when |
|---|---|---|
| (none) | patch |
Default β content edits, additions |
[bump:minor] |
minor |
New pages added (back-compatible) |
[bump:major] |
major |
Existing page slugs removed/renamed (breaks consumers) |
[bump:skip] |
none | Doc-only / non-content change |
You can also trigger a manual release via Actions β Publish Wiki Release β Run workflow (choose bump level).
./scripts/publish.sh patch # 1.0.0 β 1.0.1
./scripts/publish.sh minor --push # 1.0.1 β 1.1.0 + push
./scripts/publish.sh major --push # bump + push branch & tag to origin# Initial embed, pinned to a tag
git submodule add -b dist <wiki-repo-url> docs/wiki
git -C docs/wiki checkout wiki-v1.0.0
git add .gitmodules docs/wiki
git commit -m "docs: embed LLM wiki @ v1.0.0"
# Later, bump the pinned version
git -C docs/wiki fetch --tags
git -C docs/wiki checkout wiki-v1.1.0
git add docs/wiki && git commit -m "docs: bump LLM wiki to v1.1.0"Consumers receive only wiki/ and manifest.json β raw/, scripts/, and workspace metadata are excluded.
See CONTRIBUTING.md for details.
- Wiki pattern details: wiki/llm-wiki-pattern.md
- Agent rules: CLAUDE.md
- Agent specification: AGENTS.md