Project Name
Vault template
First committed by asakin
Published in asakin/llm-context-base. Publisher page
74 GitHub stars
What it is
A git template for building your own LLM-powered personal wiki. Training period, metadata standard, lint system included. Clone and go.
AutoGineer overview, from the brain’s own files
llm-context-base is an opinionated template designed to turn a local git repository into an LLM-powered personal wiki. It implements a three-layer pattern consisting of raw source documents, an LLM-maintained wiki, and a schema configuration. The system is designed to adapt to a user's workflow over time, eliminating the need for upfront taxonomy design. It includes a metadata standard for queryable files, an inbox-first capture system with a 7-day TTL, and a linting system to maintain document health. It supports various AI tools including Claude Code, Cursor, and GitHub Copilot, providing a consistent interface for managing personal knowledge.
How it works
Memory model: LLM wiki
AutoGineer overview, from the brain’s own files
The system uses a specific folder structure including 1-Projects, 2-Knowledge, 3-Journal, and 4-Private, alongside configuration and metadata folders. Users capture information into an _inbox folder, which the AI then processes and files according to a metadata standard. The system is bootstrapped via configuration files in .claude, .cursor, and .github, which direct the AI to follow instructions located in _config and _meta. It uses a training period to learn user patterns and maintains documentation through a split README file that separates user-specific content from framework documentation.
| Folder | Role | Files |
|---|---|---|
| .claude | agent-config | 2 |
| .cursor | agent-config | 1 |
| .github | agent-config | 1 |
| .obsidian | obsidian-config | 7 |
| assets | attachments | 2 |
| docs | docs | 13 |
| examples | examples | 4 |
| 1-Projects | folder | 3 |
| 2-Knowledge | folder | 5 |
| 3-Journal | folder | 1 |
| 4-Private | folder | 1 |
| _config | folder | 4 |
| _inbox | folder | 1 |
| _meta | folder | 14 |
| _output | folder | 1 |
| _sources | folder | 2 |
The agent reads
- CONTRIBUTING.md evidence: .claude/CLAUDE.md
- _config/config.md evidence: README.md
The agent writes
- _config/config.md evidence: .claude/CLAUDE.md
- _config/context.md evidence: .claude/CLAUDE.md
- _inbox/ evidence: .claude/CLAUDE.md
- _output/ evidence: README.md
Requirements
Apps: Obsidian
Databases: MongoDB, PostgreSQL
Works with: Claude Code, GitHub Copilot, Cursor, Devin (ex-Windsurf)
Set it up
- Download the brain as a ZIP and unzip it where you keep your notes or project: https://mp-staging.autogineer.com/agent-brains/asakin/llm-context-base/download
In Obsidian, choose “Open folder as vault” and pick the folder.
Claude Code reads .claude/CLAUDE.md from this folder automatically.
cd llm-context-base && claude
AutoGineer scanned these files at commit 3c096ca.
First committed by asakin. Published in asakin/llm-context-base. Licence: Apache License 2.0.
Usage
AutoGineer overview, from the brain’s own files
- Capture unstructured notes into the inbox for later organization by the AI.
- Maintain decision records with context, options, and rationale.
- Query the wiki to synthesize information across multiple documents.
- Run linting commands to identify stale files or missing metadata.
- Manage project initiatives with briefs and timeline tracking.
- Generate reports or summaries from stored knowledge.
- “Capture this: here's how our onboarding process works...”
- Creates a file in the inbox and offers to file it in the appropriate location.
- “We decided to use PostgreSQL over MongoDB, let me document why”
- Generates a decision record with context, options, rationale, and an outcome section.
- “What do we know about our hiring process?”
- Scans file summaries and synthesizes an answer with source citations.
- “Lint the wiki”
- Surfaces stale files, missing metadata, and orphaned documents.
Documentation by asakin
[Project Name]
This README will be personalized during your first session.
<!-- llm-context-base:framework-readme -->
llm-context-base
An opinionated template for building your own LLM Wiki.
Use the template, point your AI assistant at it, and start talking. Over time, it learns how you work and adapts its structure to your needs without you having to design anything upfront.
How This Relates to Karpathy's LLM Wiki
Andrej Karpathy's LLM Wiki gist describes a three-layer pattern: raw source documents → an LLM-maintained wiki → a schema config file (like CLAUDE.md or AGENTS.md). The LLM reads sources, maintains structured wiki pages, and follows the schema config to stay consistent.
llm-context-base implements this pattern as a ready-to-use template — so you don't have to build it from scratch. What it adds on top of the base pattern:
Metadata standard — every file gets a queryable header (type, summary, tags, status, date). The LLM scans these instead of loading full files, which scales cleanly to hundreds of documents.
Inbox-first capture — a frictionless landing zone with a 7-day TTL. You capture without deciding where things go. The LLM files them later.
Training period — the system starts chatty (learning your patterns) and goes quiet as it adapts. You never design a taxonomy upfront.
Lint system — surfaces stale files, missing metadata, and orphaned docs on demand.
Multi-LLM support — bootstrap shims for Claude Code, Cursor, Copilot, Windsurf, and others. One config, any tool.
Full comparison with the Karpathy pattern →
Quick Start
1. Create your copy. Click "Use this template" on GitHub. Make it private. Clone it.
git clone https://github.com/YOUR-USERNAME/my-wiki.git
cd my-wiki2. Set up your workspace. Open the repo as an Obsidian vault on one side, your AI agent on the other. You talk to the AI — it builds the wiki. You watch it happen in Obsidian.
Full Obsidian setup → · No Obsidian? Any editor + any supported AI tool works fine.
3. Fill in your profile. Open _config/config.md, fill in the About You section, and set Training Start Date to today.
4. Start talking. Open in your AI tool of choice and go:
"Capture this: here's how our onboarding process works..."
"We decided to use PostgreSQL over MongoDB, let me document why"
"What do we know about our deployment process?"
"Lint the wiki, what needs attention?"
That's it. The system adapts to what you actually need.
Want to stay updated as the framework improves? The template approach gives you a clean start but disconnects you from upstream. If you want to pull future improvements (new protocols, better training behavior, bug fixes), use the Framework Track setup instead.
What Makes This Different
It learns how you work. The first 30 days are a training period. Your AI asks questions, suggests directories, and logs what it learns. By day 45, it's quiet and efficient. You never design a taxonomy upfront. Full details →
Capture first, organize later. Everything lands in _inbox/ with a 7-day TTL. You never hesitate to capture because you don't have to decide where it goes yet. Your AI files it later.
Your README stays yours. This file has two sections split by a marker. Above it: your personal project README, maintained by your AI as the wiki evolves. Below it: the framework docs, which track upstream cleanly. You get living documentation without merge conflicts.
Patterns are captured as they emerge. When your AI learns a new convention or preference during a conversation, it writes it down immediately, not at commit time. Nothing is lost if you commit from the command line without AI involvement.
Every file is queryable. A metadata standard on every document means your AI can scan summaries and tags without loading full files. This scales to hundreds of documents.
It maintains itself. Lint checks surface stale files, missing metadata, and orphaned docs. The system even reviews its own instruction efficiency to prevent context window bloat as your wiki grows.
What You Can Do
| Say this | What happens |
|---|---|
| "Capture this: here's how we set up monitoring..." | Creates a file in _inbox/, offers to file it |
| "We decided to use Terraform over Pulumi, document why" | Decision record with context, options, rationale, and an outcome section to fill in later |
| "What do we know about our hiring process?" | Scans summaries, synthesizes an answer with source citations |
| "Lint the wiki" | Surfaces stale files, missing metadata, orphaned docs |
| "Start a new initiative: migrate to Kubernetes" | Project workspace with brief, timeline, artifact tracking |
| "Create a slide deck summarizing Q1 decisions" | Generates output in _output/, dated and organized |
These form a cycle. Capture feeds queries, queries inform decisions, decisions get tracked, lint keeps it all healthy. The system compounds over time.
Go Deeper
| Topic | What's there |
|---|---|
| Training Phases | How the system adapts to you over 30 days |
| Directory Structure | What each folder is for, why there are only 4 |
| Journal Sync & Privacy | Syncing 3-Journal/ across devices — plaintext, git-crypt, or external |
| Metadata Standard | The format that makes everything queryable |
| Supported Tools | Claude Code, Cursor, Copilot, Windsurf, ChatGPT, and others |
| Obsidian Setup | Pre-configured vault, plugins, web clipper |
| Design Decisions | Why the system works the way it does |
| FAQ | Common questions |
| Linked Code Repos | Connect wiki project entries to real code repos — workspace files, context files, Obsidian plugin dev |
| Extending & Contributing | Customize locally vs. contribute upstream |
| Future Directions | Where this is headed |
| Philosophy | The deeper thinking behind the system |
The examples/ directory has four sample files showing the metadata standard in action. Read them, then delete them when you're comfortable.
Credits
Built on Andrej Karpathy's LLM Wiki Pattern. Implementation by Ariel Sakin, refined over several months of daily use managing business operations.
License
Apache 2.0. See LICENSE.
_meta/instructions/knowledge-lint.md
type: template summary: Health-check pass for the wiki — surfaces stale metadata, missing standard blocks, orphaned files, and stale inbox items. tags: [meta, maintenance] status: active updated: 2026-04-11
Knowledge Lint
Purpose
The lint pass is the wiki's health check. Run it when the system feels messy, when you want to know what's stale, or on a regular cadence (monthly recommended). It's the complement to knowledge capture — lint keeps existing knowledge fresh and consistent.
Load this module when user says:
"lint the wiki" / "wiki health check" / "health check"
"what's stale?" / "what needs cleanup?" / "what's orphaned?"
"wiki cleanup" / "audit the system"
Lint Checks (Run in Order)
Check 1: Stale Inbox Items
What: Files in _inbox/ older than 7 days.
How:
List all files in
_inbox/with their dates (from filenameYYYY-MM-DD-*orUpdated:field)Flag any older than 7 days
Output format:
📥 STALE INBOX (X items, >7 days old)
- _inbox/2026-03-28-security-observation.md — 10 days old
- _inbox/2026-03-30-vendor-note.md — 8 days old
→ Action: Triage now or discardCheck 2: Missing Standard Metadata
What: Files in content directories that lack a YAML frontmatter block.
Directories to scan:
2-Knowledge/HowTo/2-Knowledge/Decisions/2-Knowledge/References/1-Projects/(overview files only)
How: Read each file's first 20 lines. If no type: YAML frontmatter field found, flag it.
Output format:
🏷️ MISSING METADATA (X files)
- 2-Knowledge/HowTo/deployment-guide.md — no metadata block
- 2-Knowledge/Decisions/old-decision.md — no metadata block
→ Action: Add standard block at top of each fileCheck 3: Stale Active Files
What: Files with status: active but updated: date > 90 days ago.
Exemptions: Files with status: archived or status: superseded are exempt — terminal-status pages are intentionally frozen and should not be flagged as stale. Only flag active files.
Output format:
⏰ STALE ACTIVE FILES (X files, >90 days since update)
- 2-Knowledge/HowTo/onboarding-process.md — last updated 2025-10-15 (173 days ago)
→ Action: Review each — update, archive, or mark as stableCheck 4: Orphaned Files
What: Files with no inbound links from any other file.
How: Check if each scanned file appears in any other file as a markdown link [text](path).
Output format:
🔗 ORPHANED FILES (X files — no inbound links)
- 2-Knowledge/HowTo/old-tool-setup.md
→ Action: Link from a relevant doc or archiveCheck 5: Context Size & Optimization Review
What: Instruction files that are getting too large, and whether an optimization review is overdue.
Flag if:
Any instruction module > 300 lines → candidate for splitting
Core files (PHILOSOPHY.md, general.md) > 500 lines → review needed
.last-optimization-reviewdoesn't exist or is >30 days old → suggest full review
How:
wc -l _config/config.md _meta/instructions/general.md PHILOSOPHY.md
wc -l _meta/instructions/*.md | sort -rn | head -10
cat .last-optimization-review 2>/dev/null || echo "No review recorded"Output format:
🧠 CONTEXT SIZE & OPTIMIZATION
⚠️ general.md: 450 lines (approaching 500 — consider modularizing)
✓ PHILOSOPHY.md: 120 lines
⚠️ Last optimization review: 45 days ago (>30 — run full review)
→ Action: Load optimization-review.md and run full reviewIf optimization review is overdue, suggest loading _meta/instructions/optimization-review.md for the full protocol.
Check 6: Non-Timestamped Filenames
What: Files in content directories whose names don't start with YYYY-MM-DD-.
Scope: 0-Ideas/, 1-Projects/, 2-Knowledge/, 3-Journal/, 4-Private/, 5-Publishing/, _inbox/, _seeds/ (if present).
Exceptions (skip): Any file named README.md, PHILOSOPHY.md, WIKI-LOG.md, AGENTS.md, CLAUDE.md, or any file in _config/, _meta/.
How:
For each non-compliant file, get its first-commit date:
git log --diff-filter=A --follow --format="%ad" --date=short -- <file> | tail -1If the file has no git history (untracked), use today's date.
Propose rename:
YYYY-MM-DD-original-name.mdwhere the date is the first-commit date.
Output format:
📅 NON-TIMESTAMPED FILENAMES (X files)
- 2-Knowledge/some-concept.md → 2026-03-15-some-concept.md (first commit: 2026-03-15)
- 0-Ideas/startup-idea.md → 2026-04-10-startup-idea.md (first commit: 2026-04-10)
→ Action: Rename files — retroactive, uses git first-commit date as timestampThis check is retroactive by design. Run it periodically to catch files added before the rule was enforced.
Check 7: Raw File Paths (Not Wiki Links)
What: File paths written as plain text or backtick code spans in table cells or prose that should be wiki links. Catches two sub-cases:
Format issue — path exists but is written as
`path/to/file.md`orpath/to/file.mdinstead of[[path/to/file]]Broken link — an existing
[[wikilink]]where the target file does not exist
Scope: All .md files in content directories. Common in "Where" or "Source" table columns, and in files imported from external tools.
How to detect format issues:
grep -rn '`[^`]*/[^`]*\.md`' --include="*.md" <directories>How to detect broken links: grep for \[\[[^\]]+\]\], extract the path (before any |), strip extension, check if the file exists.
Conversion rule:
Strip the
.mdextensionWrap in
[[and]]Full vault-relative path preferred:
[[1-Projects/foo/bar]]
Output format:
🔗 RAW PATHS / BROKEN LINKS (X items)
FORMAT: 2-Knowledge/doc.md:12 — `1-Projects/foo/bar.md` → [[1-Projects/foo/bar]]
BROKEN: 2-Knowledge/doc.md:8 — [[1-Projects/old-name]] → target not found
→ Action: Convert format issues in-place; broken links need manual resolutionOutput: Lint Report
After running all checks, compile a summary:
📋 WIKI LINT REPORT — YYYY-MM-DD
- ✅ Checks run: 7
- ⚠️ Issues found: X
- 🔴 Requires action: X
[Each check's output]Append one line to WIKI-LOG.md:
## [YYYY-MM-DD] lint | X issues found — stale: X, missing metadata: X, orphaned: X, timestamps: X, paths: XCadence
Recommended: Monthly, or whenever the system feels messy.
During the training period, running lint is a good way to discover what conventions need to be established.
73 files
- .claude/CLAUDE.md
- .claude/settings.json
- .cursor/rules/bootstrap.mdc
- .cursorrules
- .github/copilot-instructions.md
- .gitignore
- .obsidian/app.json
- .obsidian/appearance.json
- .obsidian/core-plugins.json
- .obsidian/daily-notes.json
- .obsidian/graph.json
- .obsidian/snippets/llm-wiki.css
- .obsidian/templates.json
- .windsurfrules
- 1-Projects/README.md
- 1-Projects/_SHIPPED/.gitkeep
- 1-Projects/_parked/README.md
- 2-Knowledge/Decisions/.gitkeep
- 2-Knowledge/HowTo/.gitkeep
- 2-Knowledge/README.md
- 2-Knowledge/References/.gitkeep
- 2-Knowledge/log.md
- 3-Journal/README.md
- 4-Private/README.md
- ATTRIBUTION.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- LICENSE
- PHILOSOPHY.md
- README.md
- WIKI-LOG.md
- _config/config.md
- _config/context.md
- _config/standard.md
- _config/tools.md
- _inbox/README.md
- _meta/instructions/agent-write.md
- _meta/instructions/blog-posts/instructions.md
- _meta/instructions/definition-of-done.md
- _meta/instructions/general.md
- _meta/instructions/knowledge-lint.md
- _meta/instructions/knowledge-query.md
- _meta/instructions/optimization-review.md
- _meta/templates/blog-post.md
- _meta/templates/decision.md
- _meta/templates/inbox-capture.md
- _meta/templates/initiative.md
- _meta/templates/journal-entry.md
- _meta/templates/knowledge-article.md
- _meta/templates/meeting-notes.md
- _output/README.md
- _sources/.gitkeep
- _sources/README.md
- assets/.gitkeep
- assets/clipper-template.json
- docs/claude-code-setup.md
- docs/design-decisions.md
- docs/directory-structure.md
- docs/extending-and-contributing.md
- docs/faq.md
- docs/future-directions.md
- docs/journal-sync.md
- docs/linked-code-repos.md
- docs/llm-wiki-pattern.md
- docs/metadata-standard.md
- docs/obsidian-setup.md
- docs/supported-tools.md
- docs/training-phases.md
- examples/example-decision-record.md
- examples/example-inbox-capture.md
- examples/example-initiative.md
- examples/example-knowledge-article.md
- migrate-to-yaml-frontmatter.py
Advantages
- The system adapts to user patterns over a 30-day training period without requiring upfront taxonomy design. evidence: README.md
- Metadata standards on every document allow the AI to scan summaries and tags without loading full files, enabling scalability. evidence: README.md
- The inbox-first capture system allows for frictionless entry of information with a 7-day TTL for later filing. evidence: README.md
Limitations
- The template approach disconnects the user from upstream updates unless the Framework Track setup is used. evidence: README.md
Security
Risk level: No risk found
This brain runs
Agent instructions that run or fetch something (1)
.claude/CLAUDE.md:**Exception:** If the user's first message is a `/init` command or a meta question about the repo setup, complete that first — then run the Session Start Protocol on the next exchange.
Attribution and licence
- First committed by
asakin
- Publisher
- Ariel Sakin (Community)
- Source
- asakin/llm-context-base · commit 3c096ca
- Licence
- Apache License 2.0 (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- asakin, claude
AutoGineer is not affiliated with or endorsed by asakin.
Download
The ZIP holds the files AutoGineer serves, with ATTRIBUTION.md and the licence. Download llm-context-base.zip