Über
Die ax-narrate-Fähigkeit erzeugt eine strukturierte Sitzungsnarration, wenn sie durch Ausdrücke wie "narrate this session" oder "summarize what changed" ausgelöst wird. Sie erfasst die vollständige Entwicklungsgeschichte einschließlich Korrekturen, verworfenen Versuchen und Tool-Fehlern, die nicht in finalen PRs erscheinen. Die Ausgabe wird als JSON-Datei in `.ax/narrations/` gespeichert und kann in ax studio überprüft werden.
Schnellinstallation
Claude Code
Empfohlennpx skills add Necmttn/ax -a claude-code/plugin add https://github.com/Necmttn/axgit clone https://github.com/Necmttn/ax.git ~/.claude/skills/ax-narrateKopieren Sie diesen Befehl und fügen Sie ihn in Claude Code ein, um diese Fähigkeit zu installieren
Dokumentation
ax:narrate - write the session's story as a structured narration
You were there. This skill turns YOUR OWN memory of the session into a reviewable artifact: 3-7 stops in reading-flow order, each anchored to real evidence - code hunks, turn numbers, user quotes, failures. The point is to capture what a PR diff never shows: the corrections, the dead ends, the recoveries.
The artifact validates against SessionNarration in
apps/studio/src/routes/narration-types.ts and renders in ax studio.
Step 1 - identify the session
- Preferred:
ax sessions here --days=1 --jsonand pick the current session's id (the one matching this conversation). Use the short id. - If
axis unavailable or the session isn't ingested yet, derive a slug:<repo>-<YYYYMMDD-HHmm>. Note inmetathat turn seqs are best-effort ordinals in that case. - If available,
ax sessions show <id> --jsongives you the real turn seqs to anchor against. Prefer real seqs over guesses.
Step 2 - reconstruct the story from your own context
Re-read the conversation in your head before writing anything:
- What did the user originally ask for? (intent)
- What existed before, what exists now? (before/after)
- Where did the user redirect or correct you? EVERY one of these
becomes a
correctionanchor. No exceptions. - Which tool failures actually mattered (changed your approach, cost
real time, forced a workaround)? Each becomes a
tool_failureanchor. Skip trivial retries that changed nothing. - Which attempts were abandoned? They get a stop or at least a
turnanchor - abandonment is part of the story.
Step 3 - choose 3-7 stops, in reading-flow order
A stop is a LOGICAL unit of change, not a file. If three files changed for one reason, that is ONE stop with several anchors. Order rules (stolen from the code-tour playbook because they work):
- Entry point first: the change that, understood alone, unlocks the rest.
- Cause before effect: the correction comes before the code it caused.
- Definitions before consumers: types/schema stops before usage stops.
- Verification last: tests, typecheck, and the failures hit on the way.
- Combine trivial housekeeping into one final stop, or omit it.
Step 4 - write each stop
- title: short and friendly. "Call counts become a char diffstat", not "Changes to files-touched.ts".
- gist: ONE sentence. Not two. A reader who reads nothing else must get the stop from the gist. Conversational, the way you'd say it to a colleague.
- detail: 2-4 sentences of markdown (paragraphs,
inline code, bold). Say WHY the change looks the way it does; "we did X instead of Y because Z" is exactly what the reader wants. - transition: a short connective phrase to the next stop; empty
string
""for the last stop. - anchors: MUST be non-empty. An unanchored stop is an unsupported claim. Anchor kinds:
| kind | required fields | use for |
|---|---|---|
file_hunk | file, old_text, new_text, label, opt turn_seq | a real code change |
code_state | artifact, label, lang, code, opt turn_seq | the evolving architecture snapshot |
turn | turn_seq, label | a plain moment in the transcript |
user_direction | turn_seq, quote | user steering (not correcting) |
correction | turn_seq, quote, outcome | user correcting course |
tool_failure | turn_seq, tool, error_excerpt, recovery | consequential failure |
term | name, definition | a domain term the story leans on |
Hard anchor rules
file_hunkcarries VERBATIM old/new fragments from the actual edits you made - copy the real text, never paraphrase code. Keep hunks short (5-15 lines per side); pick the most telling fragment, not the whole edit.old_text: nullfor pure insertions,new_text: nullfor pure deletions. Never both null.- Every user correction/redirect in the session gets a
correctionanchor with a verbatim (trimmed)quoteand a concreteoutcome- what actually changed because of it. - Every consequential tool failure gets a
tool_failureanchor with a realerror_excerptand how you recovered (or"abandoned"). - Never fabricate turn seqs. Use
ax sessions showseqs when you have them; otherwise count user turns from the start of the conversation and say so in the detail. code_stateis the architecture spine of the narration: pick ONE stableartifactid (e.g."review-architecture") and restate the FULL snapshot at each stop where the design moved - pseudo-code of types/interfaces, how they compose, and the call stack (plan-style:Caller -> Callee // note). Consecutive snapshots of the same artifact animate token-by-token in studio, so KEEP shared lines byte-identical between stops and let only the real delta differ - a new method, a renamed shape, an added edge case. Usecode_statefor the evolving design; usefile_hunkfor one-off code jumps (those render as static before/after diffs, not motion).
Step 5 - emit the artifact
Write .ax/narrations/<session-id>.json (create the directory if
needed) with exactly this top-level shape:
{
"schema_version": 1,
"kind": "narration",
"meta": {
"session_id": "<id>",
"generated_at": "<ISO-8601 now>",
"generator": "skill",
"model": "<your model id>"
},
"title": "...",
"intent": "...",
"before": "...",
"after": "...",
"stops": [ { "title": "...", "gist": "...", "detail": "...", "transition": "...", "anchors": [ ... ] } ]
}
Before finishing, self-check against the validator's rules:
stopsnon-empty (3-7), every stop'sanchorsnon-empty.- Every gist is one sentence; every
correctionhas anoutcome; everytool_failurehas arecovery; nofile_hunkwith both sides null or empty. - Strings are plain JSON strings (escape newlines in hunks as
\n).
Then tell the user where the file landed and give a 2-line summary of the story you wrote. Do not paste the whole JSON into chat.
GitHub Repository
Häufig gestellte Fragen
Was ist der Skill ax-narrate?
ax-narrate ist ein Claude Skill von Necmttn. Skills bündeln Anweisungen und Ressourcen, die Claude bei Bedarf lädt, um Aufgaben rund um ax-narrate ohne zusätzliche Eingaben auszuführen.
Wie installiere ich ax-narrate?
Verwende die Installationsbefehle auf dieser Seite: Füge ax-narrate als Plugin zu Claude Code hinzu oder klone das Repository in dein Skills-Verzeichnis. Starte Claude danach neu, damit der Skill geladen wird.
Zu welcher Kategorie gehört ax-narrate?
ax-narrate gehört zur Kategorie Meta.
Kann ich ax-narrate kostenlos nutzen?
Ja. ax-narrate ist auf AIMCP gelistet und kann kostenlos installiert werden.
Verwandte Skills
Diese Skill bietet eine produktionsgetestete Einrichtung für Content Collections – ein TypeScript-first-Tool, das Markdown/MDX-Dateien in typsichere Datensammlungen mit Zod-Validierung umwandelt. Verwenden Sie ihn beim Erstellen von Blogs, Dokumentationsseiten oder inhaltsstarken Vite + React-Anwendungen, um Typsicherheit und automatische Inhaltsvalidierung zu gewährleisten. Er behandelt alles von der Vite-Plugin-Konfiguration und MDX-Kompilierung bis hin zur Deployment-Optimierung und Schema-Validierung.
Diese Fähigkeit ermöglicht es Entwicklern, Anwendungen mit der Polymarket-Prognosemärkte-Plattform zu erstellen, einschließlich API-Integration für Handel und Marktdaten. Sie bietet außerdem Echtzeit-Datenstreaming über WebSocket, um Live-Trades und Marktaktivitäten zu überwachen. Nutzen Sie sie zur Implementierung von Handelsstrategien oder zur Erstellung von Tools, die Live-Marktaktualisierungen verarbeiten.
Diese Fähigkeit unterstützt Entwickler dabei, OpenCode-Plugins zu erstellen, die in über 25 Ereignistypen wie Befehle, Dateien und LSP-Operationen eingreifen. Sie bietet die Plugin-Struktur, Event-API-Spezifikationen und Implementierungsmuster für JavaScript/TypeScript-Module. Nutzen Sie sie, wenn Sie den Lebenszyklus des OpenCode KI-Assistenten mit benutzerdefinierter ereignisgesteuerter Logik abfangen, überwachen oder erweitern müssen.
SGLang ist ein hochperformantes LLM-Serving-Framework, das sich auf schnelle, strukturierte Generierung für JSON, Regex und agentenbasierte Workflows unter Verwendung seines RadixAttention-Prefix-Cachings spezialisiert. Es bietet deutlich schnellere Inferenz, insbesondere für Aufgaben mit wiederholten Präfixen, was es ideal für komplexe, strukturierte Ausgaben und Mehrfachdialoge macht. Wählen Sie SGLang gegenüber Alternativen wie vLLM, wenn Sie constrained decoding benötigen oder Anwendungen mit umfangreicher Präfix-Weitergabe entwickeln.
