Project wiki
SkillDocs & knowledgeBuild and keep a Karpathy-style LLM wiki inside a repo, as a project record or a research vault, with a schema, an index, a log, a lint, and a Quartz site on GitHub Pages.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Project wiki skill
What this skill tells your AI
The instructions your AI receives, as published by robertguss/claude-code-toolkit in skills/project-wiki/SKILL.md and read by ahel’s review.
A wiki is a persistent, compounding record: interlinked markdown pages the agent
writes and maintains and the human reads. Knowledge is compiled once and kept
current, so every page already carries its cross-references, its contradictions,
and its place in the whole. The pattern is Karpathy's
(references/karpathy-llm-wiki.md); this
skill is its shape for a repo.
Three layers, all inside the repo:
- Raw sources (
raw/): immutable. Read, never edited. Corrections go on wiki pages. - The wiki: the pages. Written by the agent only. In a project run by the
leadskill, the lead writes them and the worker never does. - The schema (
SCHEMA.md): the page types, frontmatter, tag taxonomy, and conventions. The agent and the human co-evolve it; a convention changes there first, then on the pages.
Two presets, chosen at init: project record (plans, sessions, decisions, a roadmap board, a standing synthesis, maps) for a repo being built, and research vault (sources, entities, concepts, comparisons, filed queries) for a topic being studied. Both share the operations below.
Start of session
Read, in order: SCHEMA.md whole, index.md, the last 20 entries of log.md
(grep "^## \[" log.md | tail -20 finds them). In a project record, also the
synthesis page and the roadmap board. Only then touch a page.
No SCHEMA.md in the repo means the wiki does not exist yet: follow
references/init.md.
Operations
Ingest
A source arrives (a URL, a file, a pasted transcript, a worker's report).
- Save it under
raw/<kind>/with frontmatter (source_url,ingested, andsha256of the body), named by what it is and when. - Find what already exists: search
index.mdand the pages for every entity, concept, or step the source names. This is the difference between a wiki and a pile of duplicates. - Write or update pages by the schema's thresholds: a page when a thing appears
in two sources or is central to one, an update when it is already covered,
nothing for a passing mention. Every page carries frontmatter from the
schema, two or more outbound
[[wikilinks]], and a## Relatedlist. New information that contradicts a page keeps both claims with dates, markscontested: trueandcontradictions:on both, and names the pair for the human. - Update
index.mdfor new pages and append onelog.mdentry naming every file touched.
Done when every page the source bears on has been read and either updated or left with a reason.
Query
A question about the domain.
- Read
index.mdto pick the pages; past a hundred pages, search the text too. - Read them, answer, and cite the pages.
- File an answer worth keeping (a comparison, a synthesis, a connection) as a page of the schema's type for it; leave a lookup unfiled.
- Append a
log.mdentry either way.
Checkpoint
The project-record preset's unit of work, run at every acceptance, every pause, and every closed topic.
- Edit the pages the event touches: the plan's status and Result, the decision rows, the session page, the changelog, the roadmap board.
- Bump
updated:on each, add new pages toindex.md, append onelog.mdentry. - At a pause, rewrite the synthesis page whole and the maps a landed page belongs on.
- Run the lint and commit by path (
git commit -m <msg> -- <paths>).
Done when the lint reports no broken links, no missing index entries, and no frontmatter faults, and the log's last entry is this checkpoint.
Lint
python3 <wiki>/tools/lint.py from the repo root: broken wikilinks, orphans,
index completeness, required frontmatter, tags outside the taxonomy, raw drift,
contested or low-confidence pages, pages over 200 lines, log size. Run it at
every checkpoint and at the end of every session, and record the count in
log.md. Issues the human owns stay listed and are named as theirs.
Publishing
The wiki reads as a site with Quartz and GitHub Pages, built on every push to
the default branch. Setup is one branch of init:
references/publish.md.
Conventions that hold in every preset
- File names lowercase with hyphens; a numbered page keeps its number forever.
created:never changes;updated:is bumped on every edit.raw/is immutable; thesha256in its frontmatter is how drift shows.index.mdlists every page with one line;log.mdis append-only with the prefix## [YYYY-MM-DD] action | subject.- Tags come from the taxonomy in
SCHEMA.md; add the tag there first. - Who said what stays visible: the human's words are quoted as theirs, the agent's recommendations are marked as recommendations.
- Prose the human reads comfortably: short paragraphs, narrow tables, snippets under 20 lines.
Signals
- GitHub stars
- 116
- Forks
- 21
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
project-wiki- Source
- github.com/robertguss/claude-code-toolkit