Skip to content

Repository files navigation

{{NAME}}'s Knowledge Base — Project Hub

A memory-first knowledge base for {{DOMAIN}}. Durable facts compiled into 05 concepts/ (relationships inline via [[wikilinks]]), sources in raw/, mapped by index.md. Built on the Karpathy "knowledge-base-as-compiler" method.

📌 Start here

  • [[SCHEMA]] — how this KB works (the method). Read first.
  • [[index]] — the map (start point after AGENTS).
  • [[Actions]] — the single live to-do dashboard (every open #action).

Setup flow (first time)

This KB is two tools working together:

  • Claude Code — the agent that maintains the base: it captures, compiles, links, and lints, reading AGENTS.md (via CLAUDE.md) + SYSTEM/SCHEMA.md every session and doing the bookkeeping for you.
  • Obsidian — how you read and navigate it. The vault is plain markdown (any editor works), but Obsidian is the intended "IDE": it renders [[wikilinks]], gives you a backlinks panel and graph view, and — with one plugin — turns Actions.md into a live to-do dashboard.

Karpathy's framing: "Obsidian is the IDE; the LLM is the programmer; the wiki is the codebase."

Steps:

  1. Install both tools — Claude Code (the agent) and Obsidian (free).
  2. Get the repo — two modes:
    • Clone mode (simplest): git clone this design repo and use it directly. Your personal content lives in the numbered content folders (00 daily/ … 05 concepts/, plus raw/, attachments/), which git ignores by default — nothing personal can be committed by accident, and git pull brings framework updates any time without conflicts.
    • Instance-repo mode (own history): copy the folder into your own private repo and add this repo as a fetch-only upstream (push URL disabled) — pull framework updates inward with the shipped skill Pull Framework Updates from CNTXT1. This is how the maintainer's own instance runs.
  3. Bootstrap with Claude Code. cd into the folder, run claude, and say follow setup.md. It interviews you (~10 min), fills the templated {{placeholders}}, and runs one full capture→compile loop so you see the method work once. (Prefer to do it by hand? setup.md has a manual path.)
  4. Open it as an Obsidian vault. Obsidian → Open folder as vault → pick your renamed folder. Then enable the Tasks community plugin (Settings → Community plugins → Browse → search "Tasks" → Install → Enable) — this is what makes Actions.md aggregate every #action into one live view. Without it, the tasks query blocks just render as code.
  5. Start the daily habit (below): drop notes at the root, and periodically ask Claude to "file the inbox" and "run the knowledge health check."

Full walkthrough — including the no-agent manual path and what you'll have when it's done — is in setup.md.


Layout (numbered GTD folders)

The vault uses a numbered GTD-shaped layout so the Obsidian file explorer sorts it by altitude — one folder per level of focus, chained by frontmatter up-links (area: / serves: / horizon:):

Folder What lives there
00 daily/ Day notes (not compiled truth)
01 Horizons/ Goals (H3) · vision (H4) · purpose & principles (H5)
02 Areas/ Ongoing responsibilities, reviewed on a cadence (H2) — physical things in Assets/
03 Projects/ Finite workstreams with an endpoint (H1) — done ones move to archive/
04 People/ One note per person or vendor (type: org)
05 concepts/ Compiled, evergreen knowledge
raw/ Append-only source captures

Plus Skills/ + Agents/ (generated mirrors of the canonical .claude/ skills and roles), attachments/, excalidraw/, and SYSTEM/ (schema, scripts, ledgers). Folder names live in one place, SYSTEM/bin/kb-folders.json. Coming from the older Knowledge/ layout? See MIGRATING.md.


Capture → inbox

The vault root is the inbox. Drop new notes/files anywhere at the root; they get triaged into raw/ and compiled into 05 concepts/. The only permanent root residents are README.md, index.md, Actions.md, CLAUDE.md, and AGENTS.md — if you see anything else loose at the root, it's waiting to be filed (ask Claude to "file the inbox" or "run the knowledge health check"). Full method in AGENTS.md.

Project memory

Doc Use it for
AGENTS.md · index.md The knowledge base, structured with the Karpathy compiler method. Read AGENTS.md (how it works) then index.md (the map). Concepts in 05 concepts/, sources in raw/.
Actions.md The single live to-do view — every open #action across the KB (needs the Obsidian Tasks plugin).

Agent machinery (.claude/)

.claude/ is the project-level agent surface — auto-discovered by Claude Code, Grok Build, and other SKILL.md-standard agents. Skills, agents, and commands are files in this folder. Hooks are not: /hooks is a slash-command UI over a "hooks" block in settings JSON, not a .claude/hooks/ markdown folder.

Path What
skills/ Canonical runbooks. Visible Skills/ notes are generated mirrors — edit here, never the mirror.
agents/ Named roles (research, compile, lint, project-worker). Visible Agents/*.md notes are generated mirrors.
commands/ Project slash commands (e.g. spawn).
settings.json Project hooks (committed, shared with the repo).
settings.local.json Local permissions / personal hooks — gitignored, not shared.

Project hooks (/hooks)

Where you put a "hooks" block decides its scope:

File Scope
.claude/settings.json This vault only — this is what the kit ships
.claude/settings.local.json This vault, you only
~/.claude/settings.json Every project on your machine

Claude Code and Grok both read the project file. First session: trust the folder when prompted (Grok: /hooks-trust). Until then, project hooks are skipped. Inspect what's loaded with /hooks.

Shipped registrations (scripts live in SYSTEM/optional/automation/; this file only points at them):

Event Script What it does
SessionStart sessionstart-hook.sh Emits the generated boot bundle (SYSTEM/bin/build_boot_bundle.sh): host + jobs, the index.md Quick map, the live inbox, #priority actions, today's calendar/plan, log tail. Falls back to an older inline loader if the script is absent.
Stop close-ritual-stop-hook.sh Once per dirty-tree session, reminds you to say "close". Never blocks.
PostToolUse + Stop catch-porting-candidates.sh Nudges when generic/team files look like they belong downstream. No-op until you set CNTXT1_CLONE / TEAMS_REPO in the script.

These are accelerants. AGENTS.md + index.md still orient a session without the loader; the Close a Session skill + the 6pm job still close one without the Stop reminder. Disable a single hook from /hooks, or set "disableAllHooks": true in a settings file.

The SessionStart script needs jq. Calendar in that payload is read-only from a cache — it stays empty until you install the optional gws job.

Not project hooks (still opt-in, still user-global / launchd): the 8am daily plan, 6pm summary, calendar fetch, Claude Desktop MCP. Those stay in SYSTEM/optional/automation/README.md. Copy the SessionStart script to ~/.claude/hooks/ only if you want the loader when you're not in this repo.


Staying in sync with the kit (your instance is not a fork)

Your KB is a private instance generated from this kit, with its own independent git history — deliberately not a GitHub fork. Forks of a public repo can't be made private, and shared history would put your personal content one mistyped git push (or one PR from the wrong branch) away from being published. With independent histories, no single command can leak.

The two sync directions have opposite risk profiles, so they use opposite tooling:

Kit → instance (safe — automate it). Everything in this repo is already public, so pulling it into your private vault can't leak anything. One-time setup, from your vault root:

git remote add upstream https://github.com/caseycapshaw/CNTXT1.git
git remote set-url --push upstream DISABLED   # git physically cannot push

Then adopt any kit improvement with git fetch upstream + git cherry-pick <sha>. Files that stay byte-identical across instances (SYSTEM/SCHEMA.md, SYSTEM/bin/*, most Skills/, templates) apply cleanly; files your instance has populated (index.md, AGENTS.md, the concept indexes) occasionally need a small manual merge. Step-by-step skill: Skills/DO/Pull Framework Updates from CNTXT1.md.

Instance → kit (dangerous — stays manual). Personal content never leaves your vault, so this direction is a deliberate, hand-operated path: re-template to {{placeholders}}, run the identifier grep gate, and go through this repo's CI (privacy gate + review). Skill: Skills/DO/Sync an Improvement to CNTXT1.md.

Rule of thumb: author upstream-first. When you're about to build something generic — a lint check, a runbook, a template improvement — build it here (PRs welcome, see Contributing) and pull it into your vault via the safe direction. That keeps every framework enhancement maintained in exactly one place; the manual outward sync is only for improvements you discover after they're already implemented privately.


Last updated: {{DATE}}.

License

The CNTXT1 starter kit (templates, schema, scripts) is MIT-licensed — free to use, copy, and adapt. Your own knowledge base built from it is yours; delete this section when you personalize the repo.

Contributing

Generic improvements to the framework are welcome — see .github/CONTRIBUTING.md. One rule dominates: this repo ships a framework, never personal content.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages