Für Ihren Agenten paketieren
Ein gerendertes Handbooks in ein SKILL-Paket mit Drift-Erkennung verwandeln und in einen Coding-Agenten einbinden.
handbook skill --handbook <rendered-dir> --out <skill-dir> --name <slug> [options]
handbook validate --skill <skill-dir> --source <repo>Beide sind deterministisch. Kein LLM.
Bauen
handbook skill \
--handbook work/api/handbook \
--out skills/api \
--name api \
--project "Payments API" \
--work work/api \
--source ~/code/api \
--agent-dir work/api/handbook/agent| Flag | Warum Sie es wollen |
|---|---|
--work + --source | Erzeugt coverage.json mit einem Inhalts-Hash pro Datei — dem Drift-Signal |
--agent-dir | Liefert den Agenten-Index und seine Faktentabellen mit und gibt dem Routing-Protokoll seine grep-Rezepte |
--project | Der menschenlesbare Name in der Prosa. Standard ist --name |
--lang zh | Chinesischer Textkörper. Das Frontmatter bleibt Englisch — siehe unten |
Was Sie bekommen
skills/api/
SKILL.md the routing guide
corrections.jsonl agent-written feedback (created by the agent, never the build)
references/
overview.md the system's shape
index.md every subsystem → its files
registers.md cross-stage state
stages/<id>.md one page per stage
agent/index.md lookup recipes, stage table, registers, coverage
agent/symbols.tsv name → path:startLine-endLine
agent/files.tsv path → stage, role, purpose
agent/calls.tsv call edges (callee located, or boundary:<specifier>)
agent/stages/<id>.md second hop per stage
coverage.json file → stage + sha256Das Paket ist in sich geschlossen und teilbar, und es bettet niemals Quellcode ein. Es liefert die Landkarte, nicht das Gelände.
Zwei Zielgruppen, ein Paket. references/ ist das Handbuch für Menschen — es erklärt.
references/agent/ verortet: Es beantwortet mit einem einzigen grep, wo sendPayment
definiert ist, was keine Menge Prosa schafft. Es sind nicht zwei Darstellungen desselben
Textes, und die Agentenseite kopiert die Prosaseite nicht mehr; wo ein Agent die Erklärung
braucht, verlinkt die Etappenseite sie. Bevor es --agent-dir als Auslieferungsweg gab,
wurde der ganze Index erzeugt und dann nie ausgeliefert — jetzt geht er durch den primären
Kanal des Produkts.
Der SKILL.md-Vertrag
---
name: api-handbook
description: Navigate the Payments API codebase by behavior and source location. Use when
planning, implementing, debugging, or reviewing Payments API work that is unfamiliar,
spans multiple files, or may affect cross-cutting state. Do not use for tasks unrelated
to Payments API or isolated edits where the exact file is already known and no
cross-cutting impact is plausible.
---Das Frontmatter bleibt auch mit --lang zh Englisch
Agent-Laufzeiten wählen Skills durch Abgleich mit dem Beschreibungstext aus, und der validierte Vertrag "Use when … / Do not use …" ist Teil dieser Routing-Oberfläche. Ihn zu übersetzen würde die Auswahl stillschweigend brechen. Der Textkörper wird übersetzt; die Routing-Oberfläche nicht.
Der Textkörper ist ein nummeriertes Protokoll:
- Lesen Sie
references/overview.mdfür die Gestalt des Systems. - Routen Sie über
references/index.md— der Etappenindex bildet jedes Subsystem auf seine Dateien ab. - Öffnen Sie nur die relevanten
references/stages/<id>.md-Seiten. - Prüfen Sie
references/registers.mdauf Querschnitts-Zustand — unbezahlbar bei Fan-out-Änderungen. - (mit
--agent-dir) Greppen Sie die Faktentabellen, statt zu raten:symbols.tsvmacht aus einem Namenpath:startLine-endLine,calls.tsvmacht daraus seine Aufrufer — auch die in anderen Paketen, die alsboundary:<specifier>-Zeilen erscheinen.references/agent/index.mdlistet jedes Rezept auf. - Lesen Sie mit
read_filedie tatsächliche Quelle an jedem zitierten Pfad, bevor Sie Änderungen vorschlagen oder vornehmen.
Und seine erste Zeile sagt das Wichtigste:
Dieses Handbook ist ein Ortsindex für die Codebasis, keine Codebeschreibung.
Drift-Erkennung
{
"schemaVersion": 1,
"summary": { "eligibleFiles": 412, "stages": { "stage-1": 37, "stage-2": 54 } },
"files": [{ "path": "src/upload.py", "stage": "stage-3", "sha256": "9f2c…" }]
}handbook validate --skill skills/api --source ~/code/apihasht die lebende Quelle erneut und warnt bei jeder Datei, deren Inhalt sich bewegt hat.
Exit-Code 2 bei Fehlschlag, damit fällt das direkt in die CI:
- run: handbook validate --skill skills/api --source .
continue-on-error: true # a warning, not a build break — then schedule a resyncDie Korrekturschleife
Wenn eine Behauptung des Handbook der echten Quelle widerspricht, hängt der Agent eine
Zeile an corrections.jsonl in der Skill-Wurzel an:
{
"file": "src/engine.py",
"page": "references/stages/stage-2.md",
"claim": "spin() is defined in src/main.py",
"actual": "spin() is defined in src/engine.py",
"notedAt": "2026-08-08T12:00:00Z"
}Nur file ist erforderlich. Die Datei liegt in der Wurzel, nie unter references/, weil
Planer diesen Baum schreibgeschützt einhängen.
handbook resync --case cases/x --work work/api --corrections skills/api/corrections.jsonlDie genannten Dateien kommen in die Refresh-Menge, selbst wenn sich ihre Bytes nie geändert haben — eine Behauptung, der die Quelle widerspricht, ist Grund genug, diese Datei neu zu beschreiben. Die verbrauchte Datei wird anschließend mit Zeitstempel archiviert, sodass dieselbe Korrektur nicht zweimal angewendet werden kann.
Ein Rebuild bewahrt ausstehende Korrekturen über das Aufräumen hinweg.
Einbindung in einen Agenten
Claude Code
mkdir -p .claude/skills
cp -R skills/api .claude/skills/api-handbookDer Agent findet den Skill über die Beschreibung im Frontmatter.
Jeder Agent mit einem Dateisystem
Zeigen Sie ihn auf das Verzeichnis und weisen Sie ihn an, zuerst SKILL.md zu lesen. Das
Protokoll darin ist selbstbeschreibend und hängt an keiner bestimmten Laufzeitumgebung.
Der Planer
handbook plan --source ~/code/api --handbook skills/api/references \
--request "Retry failed uploads three times" --out plan.md--handbook nimmt das Verzeichnis references/ entgegen, das schreibgeschützt unter
__handbook__/ in der Sandbox des Planers eingehängt wird.
Verweigerungen, die der Build erzwingt
--outdarf nicht das Handbook-Verzeichnis sein, und auch kein Vorfahre davon. Der Build beginnt damit,--outzu leeren; das würde genau das löschen, was paketiert werden soll, und dann stillschweigend einen leeren Skill erzeugen.- Der Agenten-Index und seine Faktentabellen werden als Satz ausgeliefert oder gar
nicht.
SKILL.mddarf niemals zu einer Datei routen, die nicht da ist — einreferences/agent/, demindex.md,symbols.tsv,files.tsvodercalls.tsvfehlt, wird deshalb abgelehnt statt halb fertig ausgeliefert. - Die Register-Seite existiert immer, selbst für ein Handbook mit null Registern, weil ein stabiles Referenzlayout Teil des Vertrags ist.
Frisch halten
handbook resync --case cases/latest --work work/api # roll the handbook forward
handbook skill --handbook work/api/handbook --out skills/api --name api \
--work work/api --source ~/code/api --agent-dir work/api/handbook/agent
handbook validate --skill skills/api --source ~/code/apiResync ist inkrementell, und skill + validate sind kostenlos. Diese gesamte Sequenz
ist billig genug, um sie nach Zeitplan laufen zu lassen.
Ausgaben rendern
Markdown, eine HTML-Site, eine einzelne in sich geschlossene Seite, der Agent-Locator-Index und llms.txt — alles deterministisch, alles kostenlos wiederholbar.
Eine Änderung planen
Geben Sie dem Planner eine Anfrage und ein Handbook; zurück kommt ein byte-genauer Bearbeitungsplan samt maschinenlesbarer Deklaration dessen, was er anfasst.