nacl-postmortem
SkillDev toolsPost-mortem of a project built end-to-end via nacl-* skills: for each post-"done" bug, find which skill gate let it through. Produces docs/retrospectives/<project>-postmortem.md. Use when: a finished nacl-built project with a git dev→fix boundary, "where did the skills break", post-mortem, deep skill-gap audit, or the user says "/nacl-postmortem". RARE / read-only / high-stakes.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the nacl-postmortem skill
What this skill tells your AI
The instructions your AI receives, as published by itsalt/nacl in nacl-postmortem/SKILL.md and read by ahel’s review.
Contract
Inputs this skill consumes:
- A project built end-to-end through
nacl-*skills, with a git dev→fix boundary (feature/FR commits stopped, a wave of fix/bugfix/test-debt commits started). - The project's
.tl/tasks/*specs (frozen at build time), its code, andgit log. nacl-tl-core/references/gate-fire-catalog.md(G1–G11) +project-gap-closure.md(the ten GAP categories) — the mapping authority (read-only).
Output this skill produces:
- A single retrospective at
docs/retrospectives/<project>-postmortem.md, sections in this exact order (so the workflow and the prose-recipe outputs are structurally interchangeable):- TL;DR — headline finding + bucket percentages.
- Table, one row per fix case:
SHA · description · bucket · owning skill · why missed. - Per-case sections with verbatim spec quotes (no paraphrase).
- Per-skill diagnosis — which cases hit it, the systemic gap, a recommendation (no skill edits in this deliverable — that is a separate user decision).
- Cross-cutting patterns.
- Recommended next steps — one bullet per proposed skill PR.
Two producers, one deliverable
This skill has two interchangeable producers. Pick by environment; the artifact structure is identical either way.
A. Workflow (preferred when available) — .claude/workflows/nacl-postmortem-panel.js
Five parallel auditors → an evidence verify stage → a deterministic GAP→owning-skill synthesis → one writer agent. Matches every condition that justifies a workflow's cost: rare, read-only, high-stakes, genuinely helped by independent specialist perspectives.
-
Requirements: Claude Code ≥ 2.1.154 (dynamic workflows). Spawns ~8–12 agents and costs meaningfully more tokens than the prose recipe — that is the trade for breadth + adversarial verification on a once-per-project audit. Watch
/workflowsfor per-phase totals. -
Invoke (the project path is the only required arg):
Run the nacl-postmortem-panel workflow with args: { "projectPath": "/abs/path/to/project", "project": "<name>", "boundaryHint": { "sha": "<sha>", "subject": "<subj>" }, // optional; else auto-resolved "artifactOut": "docs/retrospectives/<project>-postmortem.md", "modelOverrides": { "specdrill": "opus", "qaskip": "haiku" } } // optional (A5 cost tiering) -
The five auditors (
parallelbarrier — synthesis needs all five):- Project shape — stack,
.tl/tasks done/skipped, BA/SA artifact location (graph vs prose). - Fix-commit categorization — every fix-wave commit → buckets, counts + verbatim examples.
- Spec-artifact drill — locate the governing spec, quote it verbatim, classify each case
with the load-bearing trichotomy
SPEC_WRONG/SPEC_MISSING/SPEC_RIGHT_DEV_DRIFTED. - Cross-UC connectivity — "UC-X declares an entry but UC-Y has no button to reach it" (invisible to per-UC review).
nacl-tl-qaSKIPs — missing-provider-key skips are almost always a top-3 root cause.
- Project shape — stack,
-
Three fixes baked in (from the workflows experiment): (1) repo access — auditors read
.tl/, code, and git freely; (2) evidence, not paraphrase — a verify stage re-reads each quoted span and drops a case only on high-confidence positive counter-evidence, else keeps it and flagsneeds_context; (3) requirements traceability — each fixed defect maps to a requirement that should have been specified/reachable (whyMissed). -
Deterministic synthesis — the
GAP_TO_SKILLJS table maps each finding's GAP category to its owning skill(s) + gate IDs (G1–G11). No agent decides the mapping; an unmappable fix is reported asunmapped(an honest "no NaCl gate would have caught this"), not force-attributed.
B. Prose recipe (portable fallback) — memory skill-postmortem-algorithm
When workflows are unavailable, run the recipe by hand: three (→ five) sequential/parallel
Explore agents (same auditor responsibilities), then synthesis, then write the same artifact.
nacl-migrate's canary retrospective gate runs the 3-auditor core. The recipe is canonical;
the workflow is an opt-in alternative producer of the same deliverable.
Guardrails
- Verify quotes by reading actual files, not agent output — agents paraphrase. The workflow's verify stage enforces this; in the prose recipe, re-open the file.
- No skill edits in this deliverable. Recommendations only; editing a skill is a separate, user-approved step.
- no-private-info-in-public-repo — the artifact lives in this framework repo only when the
audited project is the user's own (e.g.
family-cinema); otherwise keep it in the project repo. Never include local/Users/paths or dump metadata in the artifact body.
References
.claude/workflows/nacl-postmortem-panel.js— the workflow producer..claude/workflows/README.md— workflow runtime requirements + theargs/scriptPathnote.nacl-tl-core/references/gate-fire-catalog.md,project-gap-closure.md— G1–G11 + ten GAP categories (mapping authority, read-only).
Signals
- GitHub stars
- 27
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
nacl-postmortem- Source
- github.com/itsalt/nacl