Source: GitHub README + arscontexta.org + skillsllm.com listing + @arscontexta tweet origin (ai-research/arscontexta-plugin-2026-05-09.md)
Ars Contexta is a Claude Code plugin (agenticnotetaking/arscontexta, MIT, ~3,300 stars at v0.8.0) that derives a complete personalized knowledge management system from a 6-phase conversational setup — generating a self/ notes/ ops/ three-space vault, 16+ tailored commands (the “6 Rs”), four automation hooks, and 249 research claims grounding every architectural decision. It is the canonical implementation of Heinrich’s (@arscontexta on X) “skill graph” thesis: skills as networks of interconnected markdown files with wikilinks, YAML descriptions, and progressive disclosure — not single SKILL.md files.
This article is also a calibration mirror for this very wiki: the karpathy-style LLM-maintained vault is structurally a skill graph, ahead of arscontexta on real-world content density (270+ articles vs. a derived starter), behind on plugin packaging.
Key Takeaways
- Conversational derivation, not templates. Run
/arscontexta:setup, answer 2-4 domain questions, get a vault tailored to how you actually think — folder structure, processing pipelines, hooks, navigation maps, note templates, all generated. - Three-space architecture.
self/(agent persistent mind — slow growth, tens of files) +notes/(knowledge graph — 10-50/week steady) +ops/(operational coordination — fluctuating queue/session state). - The 6 Rs processing pipeline.
/reduceextracts insights,/reflectfinds connections,/reweaveupdates older notes with new context,/verifyquality-checks,/rethinkchallenges system assumptions,/refactorrestructures. - Bidirectional hooks enforce discipline. SessionStart injects workspace tree + identity. PostToolUse on Write enforces schema and async-commits to git. Stop persists session state. Quality is enforced by the harness, not memory.
- 249 interconnected research claims synthesizing Zettelkasten, Cornell, Evergreen Notes, PARA, GTD, Memory Palaces, extended-mind cognitive science, network theory, and agent architecture patterns. Every config decision is traceable via
/arscontexta:ask. - Three pre-validated presets — Research (atomic claims + citation tracking), Personal (reflective + goal tracking), Experimental (lightweight, minimal ceremony) — for users who want a derivation shortcut.
- MIT license + clean dependencies. Claude Code v1.0.33+,
tree,ripgrep. Optionalqmdfor semantic search.
Why this matters for the karpathy wiki specifically
The karpathy LLM-wiki pattern this user maintains is a hand-rolled skill graph at 270+ articles. Ars Contexta packages the same shape as a generated starter: a Claude-Code-native vault with self-coordinating hooks, a curated research foundation, and a queryable rationale. Five concrete points of contact:
| Karpathy wiki (this vault) | Ars Contexta v0.8.0 |
|---|---|
| Hand-curated 19-topic taxonomy | Domain derived conversationally from 2-4 questions |
| Wikilinks + YAML frontmatter + Quartz publishing | Wikilinks + YAML frontmatter + plain markdown (no publishing primitive) |
wiki/log.md append-only operation log | ops/sessions/ + auto-commit on every write |
Manual /compile ingest, /lint, /cross-link operations | /seed + /pipeline + /reflect + /reweave automated |
| QMD MCP for retrieval (also listed as arscontexta optional) | Same — both vaults can share the QMD index layer |
| 249 research claims live in the vault as sources | 249 research claims ship as methodology/ inside the plugin |
The thesis Heinrich is selling — index → descriptions → links → sections → full content progressive disclosure — is operating in this vault already. The lesson to pull back: arscontexta’s pipeline-as-commands model (/seed, /pipeline, /ralph for queue-orchestration with fresh context per phase) is a more disciplined version of this wiki’s /inbox-refresh → /compile → /lint cadence. Promoting our scripts (bin/post-ingest, bin/refresh, bin/lint-stale-sources) into Claude Code commands would close the gap.
Plugin-level commands (always available)
| Command | Purpose |
|---|---|
/arscontexta:setup | 6-phase conversational onboarding |
/arscontexta:help | Contextual guidance |
/arscontexta:tutorial | Interactive walkthrough |
/arscontexta:ask | Query the 249-claim research graph |
/arscontexta:health | Vault diagnostics |
/arscontexta:recommend | Architecture advice |
/arscontexta:architect | Evolution guidance for the vault structure |
/arscontexta:add-domain | Multi-domain extension |
/arscontexta:reseed | Re-derive from first principles |
/arscontexta:upgrade | Apply knowledge base updates |
Generated commands (post-setup) — orchestration shape
Beyond the 6 Rs, Ars Contexta generates a queue-managed pipeline:
/seed— Create extraction tasks with duplicate detection/pipeline— End-to-end source processing/ralph— Queue-based orchestration with fresh context per phase (the canonical Ralph Wiggum pattern: dispatch a subagent for every task to keep context windows disciplined)/tasks— Queue management/stats— Vault metrics/graph— Graph analysis/next— Next-action recommendations/learn— Research and grow capabilities/remember— Mine session learnings
The fresh-context-per-phase model in /ralph is the same architectural principle used in Anthropic’s official agent workflow patterns (agent-workflow-patterns) — discipline against context-window contamination across long-running multi-phase work.
Hooks — quality enforcement at the harness boundary
| Hook | Event | Function |
|---|---|---|
| Session Orient | SessionStart | Injects workspace tree, loads identity, surfaces maintenance items |
| Write Validate | PostToolUse (Write) | Enforces schema on every note write |
| Auto Commit | PostToolUse (Write, async) | Git auto-commit, non-blocking |
| Session Capture | Stop | Persists session state to ops/sessions/ |
This is materially different from a typical SKILL.md plugin: a SKILL.md plugin defines what to do when invoked. Ars Contexta defines what to enforce on every interaction via the hooks layer — quality is a property of the harness, not of the prompt. Compare with Claude Code Hooks for the underlying primitive.
Origin tweet (Heinrich, @arscontexta)
Skills should be networks of interconnected markdown files with wikilinks, YAML frontmatter, and MOCs (maps of content) implementing progressive disclosure:
index → descriptions → links → sections → full content. Not single SKILL.md files. — @arscontexta, Feb 17 2026 (4M views; the framing that named “skill graphs”)
The plugin is the artifact behind the tweet — same author, same thesis, fully realized.
Implementation
Tool/Service: Claude Code plugin (agenticnotetaking/arscontexta v0.8.0, MIT)
Setup:
/plugin marketplace add agenticnotetaking/arscontexta
/plugin install arscontexta@agenticnotetaking
# Restart Claude Code
/arscontexta:setup
# Answer 2-4 domain questions (~20 minutes — token-intensive but one-time)
# Restart Claude Code again to activate generated hooks and skills
/arscontexta:helpCost: Plugin is free under MIT. Setup costs ~20 min of token-heavy conversation (one-time). Steady-state cost is whatever Claude Code costs you anyway — the plugin doesn’t add a token surcharge. Integration notes:
- Requires
treeandripgrepin PATH. Optional QMD for semantic/concept search inside the vault. - The auto-commit hook lands every write as its own git commit — high-volume note writers will end up with very chatty histories. Squash regularly or pipe through your own pre-commit hook.
- Three pre-validated presets (Research / Personal / Experimental) skip the derivation phase if you want a faster start.
- The 249 research claims are queryable via
/arscontexta:ask— useful for “why did the engine choose this folder structure” questions.
Open Questions
- Vault-on-vault interactions. Can
/arscontexta:setupderive into an existing markdown vault (this karpathy wiki, an Obsidian vault) without overwriting? Docs imply a clean-slate generation; behavior on a populated directory not specified. - Schema migration. When v0.9.0 ships a different schema, what is the migration story?
/arscontexta:upgradeexists but its semantics aren’t documented. - Multi-domain vault scaling.
/arscontexta:add-domainextends to multiple domains, but the docs don’t enumerate the scaling threshold — at what point does a multi-domain vault need to split? - Hooks vs Claude Code’s native hooks system. Ars Contexta hooks plug into Claude Code’s hook surface (per hooks), but it isn’t clear whether two plugins both registering on PostToolUse(Write) compose cleanly or fight.
- Comparable scale. What’s the largest reported user vault — does the architecture survive at 500+ notes / 1000+ notes? This wiki has a clear data point at 270+; arscontexta’s published examples are smaller.
- Companion app. arscontexta.org lists a hosted “agentic knowledge work” app coming soon. Pricing, lock-in implications, whether vault stays portable — not yet announced.
Try It
- Install on a side project, not this vault. Set up a sandbox repo first —
/arscontexta:setupregenerates the directory tree and that conflicts with the karpathy-vault layout. Get a feel for the derivation conversation, then decide whether to integrate patterns back here. - Read the research graph. After install, run
/arscontexta:ask "why three spaces (self/notes/ops) instead of one". The 249-claim foundation is the most teachable artifact in the plugin. - Compare hooks discipline. Open
~/.claude/plugins/.../hooks/and compare with this wiki’sbin/post-ingestscript. Where does the plugin enforce quality that we currently rely on the librarian to remember? - Promote our scripts to commands. Wrap
bin/post-ingest,bin/refresh,bin/lint-stale-sourcesas akarpathy-wikiClaude Code plugin with the same shape (/karpathy:compile,/karpathy:lint,/karpathy:refresh). Closes the operational-discipline gap with arscontexta without forcing a vault rewrite. - Adopt
/ralph-style fresh-context-per-phase for/compile. Today’s/compileruns in a single conversation that contaminates context across 5+ ingests. Dispatching a subagent per source (true Ralph pattern) keeps each ingest’s context window clean — same discipline arscontexta enforces by default. - Cross-reference the sister skill. Knowledge Graph Analysis (also
agenticnotetaking, 2,813 stars) does the lint side: orphan detection, dangling-link surfacing, bridge notes, synthesis opportunities via triadic closure. Equivalent to this wiki’s lint operation.
Related
- Karpathy Pattern — community implementations of the LLM-maintained wiki idea. Ars Contexta is the most plugin-packaged version of the same pattern.
- Synthadoc — Python-engine cousin (axoviq-ai/synthadoc, 231★, AGPL-3.0). Different stack, similar status-frontmatter / SQLite-audit-DB / query-decomposition discipline.
- Stride starter (joshpocock) — the minimal Obsidian-template version of the same pattern.
- QMD — local hybrid-search MCP, listed as an optional dep for arscontexta. Same retrieval substrate.
- Claude Code Hooks — the underlying primitive arscontexta builds bidirectional quality enforcement on.
- Agent Skills Overview — the SKILL.md primitive arscontexta argues against (in favor of skill graphs).
- Skill Design Patterns — Anthropic’s prescribed shape; contrast with the conversationally-derived shape here.
- Karpathy techniques for Claude Code — the wikilink-vs-RAG framing that the skill-graph thesis sits inside.
- oh-my-claudecode — different agent-shaped Claude Code plugin (cousin in the marketplace).
- Superpowers — different skills-framework approach.
- skills repo — Anthropic’s own SKILL.md exemplar set; arscontexta is the explicit alternative.