Skip to content
Back to skills

Project Wiki

ASecurity

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`](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. C...

  • 117 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 22, 2026
ai-agentspythongogit

Security analysis

A100/100

Pro scans all 12 files and shows the line behind each finding

Scanned September 22, 2026

npx -y skills add robertguss/claude-code-toolkit --skill project-wiki --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Project Wiki?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Project Wiki
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/robertguss-project-wiki/badge)](https://www.skillsdirectory.com/skills/robertguss-project-wiki)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: project-wiki
description:
  Build 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.
disable-model-invocation: true
---

# Project wiki

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`](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
  `lead` skill, 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`](references/init.md).

## Operations

### Ingest

A source arrives (a URL, a file, a pasted transcript, a worker's report).

1. Save it under `raw/<kind>/` with frontmatter (`source_url`, `ingested`, and
   `sha256` of the body), named by what it is and when.
2. Find what already exists: search `index.md` and the pages for every entity,
   concept, or step the source names. This is the difference between a wiki and
   a pile of duplicates.
3. 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 `## Related` list. New
   information that contradicts a page keeps both claims with dates, marks
   `contested: true` and `contradictions:` on both, and names the pair for the
   human.
4. Update `index.md` for new pages and append one `log.md` entry 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.

1. Read `index.md` to pick the pages; past a hundred pages, search the text too.
2. Read them, answer, and cite the pages.
3. 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.
4. Append a `log.md` entry either way.

### Checkpoint

The project-record preset's unit of work, run at every acceptance, every pause,
and every closed topic.

1. Edit the pages the event touches: the plan's status and Result, the decision
   rows, the session page, the changelog, the roadmap board.
2. Bump `updated:` on each, add new pages to `index.md`, append one `log.md`
   entry.
3. At a pause, rewrite the synthesis page whole and the maps a landed page
   belongs on.
4. 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`](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; the `sha256` in its frontmatter is how drift shows.
- `index.md` lists every page with one line; `log.md` is 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.

Files in this skill

  • README.md3.2 KB
  • SKILL.md5 KB
  • assets/SCHEMA-project-record.md7.4 KB
  • assets/SCHEMA-research-vault.md4.7 KB
  • assets/index.md552 B
  • assets/lint.py5.2 KB
  • assets/log.md417 B
  • assets/publish-wiki.yml1.1 KB
  • assets/quartz.config.yaml6.5 KB
  • references/init.md2.1 KB
  • references/karpathy-llm-wiki.md11.7 KB
  • references/publish.md1.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.