retro
Skill0 starsChanged 4 months agoMITView on GitHub
Session retrospective — retrospects the CURRENT session (what was attempted, what went wrong, what generalizes) through multi-persona review (Dorothy/Quine/Eiko/Occam), then writes an entry to your retro log. SKIPPABLE for small, low-complexity, low-risk sessions — skipping is a legitimate outcome, not a failure. The retro-of-retros corpus review lives in retro-consolidation.
193 other projects use a version of this.
Adopted by
Most recently taken up by
- rodeyseijkens/skillstheir own version, first seen Nov 8, 2026
- Yesterday-AI/ytstacktheir own version, first seen Nov 8, 2026
- gaoyu06/harnesstheir own version, first seen Nov 8, 2026
- Schepetkov/claude-skills-game-UEtheir own version, first seen Nov 8, 2026
- tornikegomareli/Skillstheir own version, first seen Nov 8, 2026
- devjiwonchoi/skillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use plan-tune, ios-clean and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
ShreyRaviSkillplan-tune
Self-tuning question sensitivity + developer psychographic for gstack (v1: observational). Review which AskUserQuestion prompts fire across gstack skills, set per-question preferences (never-ask / always-ask / ask-only-for-one-way), inspect the dual-track profile (what you declared vs what your behavior suggests), and enable/disable question tuning. Conversational interface — no CLI syntax required.
Also in 9 projects that use this
Saqlain-811Skillios-clean
Remove the DebugBridge SPM package and all #if DEBUG wiring from an iOS app. (gstack)
Also in 5 projects that use this
Saqlain-811Skillios-fix
Autonomous iOS bug fixer. (gstack)
Also in 5 projects that use this
seek888Skillpair-agent
Pair a remote AI agent with your browser. One command generates a setup key and prints instructions the other agent can follow to connect. Works with OpenClaw, Hermes, Codex, Cursor, or any agent that can make HTTP requests. The remote agent gets its own tab with scoped access (read+write by default, admin on request). Use when asked to "pair agent", "connect agent", "share browser", "remote browser", "let another agent use my browser", or "give browser access". (gstack) Voice triggers (speech-to-text aliases): "pair agent", "connect agent", "share my browser", "remote browser access".
Also in 11 projects that use this
ShreyRaviSkilllanding-report
Read-only queue dashboard for workspace-aware ship. Shows which VERSION slots are currently claimed by open PRs, which sibling Conductor workspaces have WIP work likely to ship soon, and what slot /ship would pick next. No mutations — just a snapshot. Use when asked to "landing report", "what's in the queue", "show me open PRs", or "which version do I claim next". (gstack)
Also in 8 projects that use this
timurgaleevSkilldocument-generate
Generate missing docs for a feature, module or project as tutorials, how-tos, reference and explanation.
Also in 7 projects that use this
- +1 more from Saqlain-811
- +2 more from ShreyRavi
Other versions193 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 193
- mattpocock/skills★ 309ksame name
- garrytan/gstack★ 141ksame name
- formbricks/formbricks★ 13ksame name
- ArcReel/ArcReel★ 6.3ksame name
- vinvcn/mattpocock-skills-zh-CN★ 5.5ksame name
- withcoral/coral★ 4.9ksame name
- bergside/awesome-design-skills★ 2.9ksame name
- MiniMax-AI/minimax-code★ 2.2ksame name
- DenchHQ/DenchClaw★ 1.7ksame name
- DenchHQ/ironclaw★ 1.7ksame name
183 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository11 other files it gives its agents.
- aristotleSkill
- dorothySkill
- eikoSkill
- harness-adoptSkill
- occamSkill
- perlmanSkill
- propose-issueSkill
- quineSkill
- tdd-implementationSkill
- tdd-test-writerSkill
- zahaSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
37 rules. 0 are common, 28 are distinctive, and 9 are very specific to this project.
0
Common
Most of the 171 edited versions we read keep these.
28
Distinctive
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 10
Use this skill to run a structured, multi-persona retrospective review of the current session — what was attempted, what went wrong, and …
- Distinctive: line 18
Not every session earns a retro.
- Very specific: line 52
Before reading any retro data or planning any work, acquire the daily retro write lock.
- Distinctive: line 81
Run Phases 1–4 normally. Read retros, synthesize findings, rank impact.
- Distinctive: line 82
Replace Phase 5 with soft-path routing: Instead of asking the user to apply changes, file each actionable finding as a skill-change …
- Very specific: line 97
Write to .claude/skills/, AGENTS.md, or any workspace policy file.
- Very specific: line 100
Create new branches in $WORKSPACE intended to land skill changes.
- Distinctive: line 105
Write raw retro-entry files under your retro log — that directory is append-only and outside the lock's scope.
- Distinctive: line 110
Before Phase 1, determine whether a human is available to confirm actions.
- Distinctive: line 114
Autonomous: if any of the following is true:
- Very specific: line 146
If $ARGUMENTS specifies a feature arc or focus (e.g., "QueuePool exhaustion fix"), scope the review to that part of the session rather than …
- Distinctive: line 162
Read them against what was intended (the task as given, or the plan stated earlier in the session) and note where real behavior diverged …
- Distinctive: line 167
Keep this qualitative: no scores, no thresholds, no pass/fail.
- Distinctive: line 174
When the direct evidence is on disk, prefer it — the same principle that killed the branch-tip and aggregate proxies in earlier reasoning …
- Distinctive: line 217
Wait for it to return: before dispatching the next.
- Distinctive: line 252
Should any recommendations become workspace policies in AGENTS.md?
- Distinctive: line 256
If any sub-agent dispatch fails or returns no usable findings, note the gap explicitly in Phase 4 rather than filling it in yourself from …
- Distinctive: line 263
After all four independent sub-agent reviews return:
- Distinctive: line 288
Read the target file (or grep for the key phrase, symbol, or rule the recommendation would introduce).
- Distinctive: line 293
If an action targets a policy location that does not yet exist (e.g., "add a new section to file X"), verify file X exists and grep for any …
- Distinctive: line 307
If all recommended actions turn out to be already applied, say so explicitly — the retro review still has value as a confirmation loop, and …
- Distinctive: line 314
When Phase 4 synthesis surfaces a rule that generalizes past the repo it was learned in — the qualification test — propose it to the scoped …
- Very specific: line 335
Add --dry-run to preview. The proposal is validated (schema + duplicate id) and refused if malformed.
- Very specific: line 349
Check the finding for repo-specific signals: file paths (e.g.
- Very specific: line 352
If the finding targets code, tests, or config in a specific repo, file the issue in that repo (e.g.
- Very specific: line 354
If the finding targets workspace-level governance, skills, or orchestration policy (files under .claude/skills/, AGENTS.md, docs/), file in …
- Distinctive: line 357
If ambiguous, file in the repo whose codebase the fix would touch.
- Distinctive: line 358
When a finding spans multiple repos, file one issue per repo with cross-references.
- Very specific: line 368
Should we draft the recommended policy/template/checklist changes?
- Distinctive: line 372
After the user confirms, apply the approved changes directly (you hold the write lock), then write the session's retro entry (see "Producer …
- Distinctive: line 392
Write the session's retro entry to your retro log (see "Producer output" below), summarizing what you found, which issues you filed, and …
- Distinctive: line 398
Do not file a skill-change proposal in this cell — you have the lock, so write access is not the constraint.
- Distinctive: line 411
Ask the user which of the Phase 4 Missing actions they endorse filing as proposals.
- Distinctive: line 423
No lock release call — degraded sessions never acquired it.
- Distinctive: line 444
No lock release call.
- Distinctive: line 477
Run the preempt check before filing: is this defect active (recurred, or could immediately recur, in this or the most recent session) and
- Distinctive: line 493
If Phase 1 concluded the session should be skipped (see "Skippable" above), do not write a full entry — a skipped session is not corpus …
“Common” is measured: kept by at least 6 in 10 of the 171 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
retro
(Session Retrospective)
Use this skill to run a structured, multi-persona retrospective review of the current session — what was attempted, what went wrong, and what generalizes — and to write the result as a new entry in the retro corpus.
Purpose
Orchestrate a retrospective review where multiple agent personas analyze the same session evidence from different angles, cross-reference findings, and produce a ranked list of actionable improvements. This is a producer for the retro corpus, not a reader of it: the output is a written entry under your retro log that a later retro-consolidation pass will review alongside every other session's entry. Individual sessions become systemic insights only once enough of them have been captured and cross-referenced — this skill's job is to capture this one well.
Skippable — this is a legitimate outcome
Not every session earns a retro. For a small doc change, a low-complexity fix, or a low-risk session with no surprises, skip the retro and say so — do not force a synthesis where there is no signal, and do not treat skipping as a failure to be apologized for. Run the retro when the session had friction, rework, a surprising failure, a near-miss, or a decision worth generalizing. A skipped session writes nothing to the corpus (see "Producer output" below) — there is no obligation to manufacture an entry just to have one.
Retrospective skeleton
This skill is a retro: it walks the shared read -> compare -> propose -> route skeleton described below. It is an agent-driven consumer — its three pieces are procedures you perform, not a JS engine:
| Phase | Piece | Where |
| read | LOADER — gather evidence from the current session (transcript/journal of what was attempted) and ground it against real artifacts | Phase 1 / 1b |
| compare | ANALYZER — multi-persona review + cross-reference synthesis + applicability check | Phases 2-4 + 4.5 |
| propose / route | ROUTER / gate — the Phase 5 2×2 matrix on lock state and autonomy, plus writing the session's own entry to the corpus | Phase 5 |
Never auto-commit. This skill already enforces that boundary structurally via the daily write lock (Phase 0) and the autonomy check (Phase 0.5) — Cells B, C, and D route findings to GitHub issues or skill-change proposals instead of applying skill edits without a human decision, and only Cell A (lock held + interactive human) applies changes, and only after explicit user confirmation. The skeleton is deliberately generic; the lock, autonomy matrix, and routing destinations below are unchanged by this wiring.
Workflow
Phase 0: Acquire or Degrade
Before reading any retro data or planning any work, acquire the daily retro
write lock. This prevents two concurrent retro sessions from stomping on
each other's branches and working trees in $WORKSPACE — see
the tracking epic for this gate.
Run:
scripts/retro-lock.sh acquireIf exit code is 0 (acquired or stole-stale): you hold the lock for
the rest of the session. Proceed to Phase 1. Before exit (on any path —
normal completion, user abort, error), release the lock:
scripts/retro-lock.sh releaseYou may want to register a shell trap so the lock is released even if the
session ends abnormally. TTL-based recovery (120 min default) will reclaim
orphaned locks, but explicit release is tidier and avoids the next retro
seeing a dangling owner.
If exit code is 1 (held-by: + owner JSON): another retro session is
already running in this workspace. You must not write to .claude/,
AGENTS.md, or any skill files — that is the whole point of the lock.
Degrade to the soft path and proceed with a read-only review:
- Run Phases 1–4 normally. Read retros, synthesize findings, rank impact.
- Replace Phase 5 with soft-path routing. Instead of asking the user
to apply changes, file each actionable finding as a skill-change proposal.
Use batch mode:
- Pick a human-readable
session_contextthat identifies this retro, e.g."Retro 2026-04-14 QueuePool arc (degraded)". - Set
source: retro-degradedon every proposal. - One file per finding. Slug-dedup handles repeats across sessions.
- Pick a human-readable
- Tell the user up-front that the retro is running in degraded mode, name the session that holds the lock (from the owner JSON), and explain that findings will land in your followups location for the lock-holder (or the next retro) to action. Do not present a "Synthesis: Top N Actions" list as if the user should act on it — in degraded mode the actions route to the followups file, not the user.
Degraded-mode retros never:
- Write to
.claude/skills/,AGENTS.md, or any workspace policy file. - Open PRs that modify skill files.
- Create new branches in
$WORKSPACEintended to land skill changes.
They may still:
- Open GitHub issues capturing findings (issues are metadata, not workspace state).
- Write raw retro-entry files under your retro log — that directory is append-only and outside the lock's scope.
Phase 0.5: Autonomy Check
Before Phase 1, determine whether a human is available to confirm actions. This is independent of lock state — autonomy changes what Phase 5 is allowed to do:
- Autonomous if any of the following is true:
<BUILD_CONTAINER>=1in the environment (container session — no human at this terminal)CLAUDE_AUTONOMOUS=1in the environment- The session was invoked via
/loop, cron, or a scheduled trigger without an attached operator - You have no way to call
AskUserQuestionand get a real answer
- Interactive otherwise (a human is watching and can approve).
Record which mode you're in. Phase 5 branches on both the lock state (from Phase 0) and this autonomy signal — see the matrix below. The default bias is conservative: if in doubt, treat the session as autonomous and route findings to durable surfaces (GitHub issues, raw retro entries, soft-path proposals) instead of applying changes silently.
Phase 1: Load Data
- Gather evidence from the current session: what was attempted, the sequence of tool calls and decisions, what failed or required rework, what the user pushed back on or corrected, and where the outcome diverged from the initial plan. The source is the session's own transcript/journal — not the historical corpus.
- Optionally check for historical consolidation artifacts (read-only archive)
for context on recurring themes already tracked:
$WORKSPACE/.tmp/consolidations/retrospectives/review-*.json - Display a summary: what was attempted, repo(s)/feature-ref touched, duration/complexity signal, and whether anything looks retro-worthy at all (see "Skippable" above — if nothing does, say so now and stop here).
If $ARGUMENTS specifies a feature arc or focus (e.g., "QueuePool exhaustion
fix"), scope the review to that part of the session rather than the whole
thing.
Phase 1b: Ground in Real Artifacts (Required)
A session's self-narrative is a self-report — it says what the agent thought happened. Before running the persona review, ground the highest-signal moments in real artifacts from this session, so the review reasons from evidence rather than from the agent's own account of itself.
- Identify the 2–3 moments in the session most likely to generalize (friction, rework, a surprising failure, a near-miss, a decision that could have gone either way).
- For each, pull the actual evidence — the real diffs, command output, error messages, or file states involved — not a paraphrase from memory.
- Read them against what was intended (the task as given, or the plan stated earlier in the session) and note where real behavior diverged from stated intent. Those divergences are first-class inputs to Phase 3 — attach each to the persona best placed to judge it.
Keep this qualitative: no scores, no thresholds, no pass/fail. The output is "here is where reality diverged from the contract," not a number. If a moment can't be grounded in a real artifact, say so and fall back to the narrated account — do not fabricate evidence.
Why this rule exists: reasoning about a session from its own narration is an evidence proxy; the actual diffs/output/errors are the direct evidence. When the direct evidence is on disk, prefer it — the same principle that killed the branch-tip and aggregate proxies in earlier reasoning loops.
Phase 2: Pattern Analysis
Present the session's candidate findings from Phase 1/1b. For each:
- Quote the grounding evidence (the diff, output, or error that anchors it — not just the narrated account)
- Show the recommended action, if any generalizes past this one session
- Note whether scope is
global(workspace-wide),local(repo-specific), or purelysession(worth recording but not actionable beyond this entry)
Phase 3: Multi-Persona Review
Dispatch each reviewer as an independent sub-agent. None may see another's output. Running all four personas by sequential self-adoption in one context was the original design and it is wrong: the second adoption has already read the first's findings, so any apparent agreement is contamination, not corroboration. Every multi-reviewer panel worth running enforces this isolation deliberately — reviewers who can see each other's findings converge on the first one stated, which is the opposite of what a panel is for.
Reviewer roster and dispatch order (fixed, for reproducibility):
dorothy → quine → eiko → occam. These are the registered agent
stubs at .claude/agents/<name>.md — each is dispatchable today via the
Agent tool's subagent_type parameter, no new machinery required.
For each of the four, in order:
Build the brief. The sub-agent's prompt must contain only:
- The reviewer's own role-skill contract: the full text of
.claude/skills/<name>/SKILL.md. - The Phase 2 pattern set (the detected patterns, evidence counts, recommended actions, and global/local scope from Phase 2) — verbatim, not summarized.
- The reviewer's focus questions (below).
- A directive to reply with a short, structured finding list (2-3 items), not prose commentary on the process.
It must not contain: the other three personas' findings, this skill's own text beyond what's needed to describe the task, or any framing that presupposes what another reviewer will say.
- The reviewer's own role-skill contract: the full text of
- Spawn the sub-agent via the
Agenttool withsubagent_type: "<name>"(i.e."dorothy","quine","eiko","occam"). - Wait for it to return before dispatching the next. Sequential dispatch (not parallel) keeps token/cost accounting per-reviewer legible and matches the workspace convention (a resume-review panel Stage 5, an OSS-release panel Stage 2).
- Record the reviewer's findings verbatim for Phase 4. Do not edit or summarize them into your own words before aggregation — synthesis happens in Phase 4, not here.
Dorothy (Developer Perspective)
Focus on:
- What architectural patterns should be codified from these fixes?
- Where did implementation friction come from? (tooling gaps, missing abstractions, unclear contracts)
- What would have made the fixes faster or prevented the need for sequential patches?
- Are there code-level rules or lint checks that would catch these issues earlier?
Quine (QA Perspective)
Focus on:
- What test coverage gaps allowed the issue to recur across multiple PRs?
- Were there cumulative breakage patterns (tests passing individually but failing in aggregate)?
- What testing patterns would have caught the systemic issue earlier?
- Are there test health practices that should become standard?
Eiko (Design Perspective)
Focus on:
- Were there user-facing failure modes that failed silently? (e.g., SSE streams hanging)
- What UX error feedback patterns should be standardized?
- How should reliability fixes incorporate UX considerations?
- Are there design system components needed for error states?
Occam (Process Perspective)
Focus on:
- What governance rules emerged? (e.g., "3+ sequential fixes should trigger architectural review")
- Should any recommendations become workspace policies in AGENTS.md?
- How should the retrospective system itself evolve?
- Are there process templates or checklists that would prevent recurrence?
If any sub-agent dispatch fails or returns no usable findings, note the gap explicitly in Phase 4 rather than filling it in yourself from the pattern set — a persona's slot with no independent finding is honestly "no signal from this lens," not a stand-in written by the orchestrator.
Phase 4: Cross-Reference Synthesis
After all four independent sub-agent reviews return:
- Identify convergence — where did multiple personas, dispatched independently and blind to each other, flag the same underlying issue? This convergence is now independent agreement, not sequential contamination — as of an internal issue, each persona reasoned from the Phase 2 pattern set alone, with no visibility into the other three personas' findings. Read it accordingly: two or more personas converging on the same issue from isolated contexts is real corroborating signal and should be weighted higher than any single persona's finding. (Before this fix, convergence across sequential self-adoptions in one context could not support that reading — the second-through-fourth personas had already seen prior output, so agreement could just as easily be anchoring as independent corroboration.)
- Rank by impact — which changes would prevent the most future rework?
- Produce a top 3 actionable changes list:
- For each: what to change, where (file path or policy), who benefits, and expected impact
- Flag divergence — where did personas disagree? These are decision points for the human.
Phase 4.5: Verify Applicability (Required)
Before presenting the top-N list to the user, every action that proposes editing a specific file must be verified against the current state of that file. Retrospective recommendations have a natural latency — an earlier session in the same day (or a parallel lane) may have already applied the same change. Surfacing already-applied items as "pending" wastes the user's attention and produces phantom work.
For each action in the top-N list that names a concrete file path:
- Read the target file (or grep for the key phrase, symbol, or rule the recommendation would introduce).
- Classify the action as one of:
- Missing — the recommended change is not present; keep on the list.
- Already applied — the change (or an equivalent) is already in the file. Move to a separate "Already applied" subsection with a file:line pointer as evidence.
- Partially applied — some sub-bullets are present, others are not. Split: keep only the missing sub-bullets on the active list.
- If an action targets a policy location that does not yet exist (e.g., "add a new section to file X"), verify file X exists and grep for any near-neighbor wording that would make the proposed section redundant.
Output format change: the Phase 4 synthesis section must now include two lists:
### Synthesis: Top N Actions (Missing)
1. [Action] — [Where] — [Impact]
...
### Already Applied (verified)
- [Action description] — [file:line evidence]
...If all recommended actions turn out to be already applied, say so explicitly — the retro review still has value as a confirmation loop, and "nothing to do, all three recommendations were already landed" is a perfectly good Phase 5 outcome.
Why this rule exists: verified 2026-04-10 during the first end-to-end retro run. The synthesis presented three recommended skill edits as pending. After human approval to apply all three, the agent checked the files and found that 2 of 3 were already applied earlier the same day by closeout flows from other retros (occam step-7 origin-in-sync gate, TDD regression-gate prove-it rule in both tdd-test-writer and tdd-implementation). Only the container venv hygiene subsection was genuinely new work. Without a verification step, the agent would have wasted a PR round-trip on redundant edits and eroded the human's trust in the synthesis output.
Phase 4.6: Propose engineering principles
A retro's whole point is that individual entries become systemic insight.
When Phase 4 synthesis surfaces a rule that generalizes past the repo it was
learned in — the qualification test — propose it to the scoped principles
registry (your engineering-principles file) rather than letting it age out as
one more incident note. This is the harvest feed engineering-flow.md §8
specifies (Gate 8 retro → principles harvest).
- Test each candidate: does it generalize past its origin repo? The
provenance (PR/incident numbers) belongs in the record's
learned:field, not in the rule. If it does not generalize, it is a repo-specific finding — file it as an issue (Phase 5 routing), not a principle. Propose with
scope: repo:<name>by default — a new principle starts narrow; a human/Occam widens it (repo:→family:→global) later as an attribute edit, never a file move:node "scripts/propose-principle.mjs" \ --id <kebab-slug> --repo <repo-shortname> --consumer <product|architecture|implementation|test|delivery> \ --rule "The generalized imperative (no double-quotes)." \ --learned "<incident/PR refs; source file:line>"Add
--dry-runto preview. The proposal is validated (schema + duplicate id) and refused if malformed. Once merged, theprinciplespayload of the AGENTS.md sync renders it into every repo whose scope it matches.
Phase 5: Offer Next Steps
Phase 5 is a 2×2 matrix on lock state (from Phase 0) and autonomy (from Phase 0.5). In all four quadrants, Phases 1–4 run unchanged — Phase 5 only governs what happens to the findings afterward.
Repo routing (required before filing any issue): retro findings often span multiple repos — do not default to filing everything in the config repo. Before creating a GitHub issue for a finding, resolve the target repo:
- Check the finding for repo-specific signals: file paths (e.g.
tests/test_actionable_errors.py→ a product repo), PR/issue cross-references (e.g.an internal issue), or explicit repo mentions in the evidence. - If the finding targets code, tests, or config in a specific repo, file
the issue in that repo (e.g.
<owner>/<repo>). - If the finding targets workspace-level governance, skills, or
orchestration policy (files under
.claude/skills/,AGENTS.md,docs/), file in your workspace-config repo. - If ambiguous, file in the repo whose codebase the fix would touch. When a finding spans multiple repos, file one issue per repo with cross-references.
This prevents the failure mode from the 2026-04-16 retro where a a product repo-specific test finding was filed in the config repo because the retro ran from the config-repo workspace. See an internal issue.
Cell A — Lock acquired + interactive human:
Normal, present-day retro flow. Ask the user:
- Should we draft the recommended policy/template/checklist changes?
- Confirm the session entry (below) before it's written — anything to add or cut?
After the user confirms, apply the approved changes directly (you hold the write lock), then write the session's retro entry (see "Producer output" below). Then release the lock:
scripts/retro-lock.sh releaseCell B — Lock acquired + autonomous (no human):
You hold the lock, but you must not apply skill edits on your own authority — skill changes deserve a human decision. Instead:
- For each Missing action from Phase 4, open a GitHub issue in the
target repo (see repo-routing rule above) with:
- Title:
[retro] <one-line summary of the finding> - Body: the synthesis evidence, the proposed change, the affected file path, and an explicit Decision needed section listing the open questions for the human.
- Labels:
retro,awaiting-human-decision
- Title:
- Write the session's retro entry to your retro log (see "Producer output" below), summarizing what you found, which issues you filed, and why no changes were applied in this session.
- Release the lock so the next session (possibly with a human) can pick up the filed issues and apply changes.
Do not file a skill-change proposal in this cell — you have the lock, so write access is not the constraint; the missing thing is a human decision, which an issue captures better than a soft-path proposal.
Cell C — Lock held by another session + interactive human:
Degraded mode, human present. Do not apply changes in this workspace (the other session may be editing the same files). Instead:
- Explain to the user that a parallel retro session holds the lock (name the session from the owner JSON in Phase 0) and that findings will route through the soft path.
- Ask the user which of the Phase 4 Missing actions they endorse filing as proposals. Skip the ones they reject.
- For each endorsed finding, call your skill-change proposal process
with a shared
session_context(e.g."Retro 2026-04-14 QueuePool arc (degraded)") andsource: retro-degradedin batch mode. - Write the session's retro entry to your retro log (see "Producer output" below) — writing raw entries is outside the lock's scope even in degraded mode.
- Report back: list the proposal file paths and the session_context that groups them. The lock-holder (or the next drain run) picks them up.
No lock release call — degraded sessions never acquired it.
Cell D — Lock held by another session + autonomous (no human):
Strictest cell. No human to confirm, no lock to write with. For each Missing action from Phase 4:
- File a skill-change proposal with shared
session_contextandsource: retro-degraded, same as Cell C but without the human triage step — you file every actionable finding. - Additionally, for any finding where the synthesis raised a question
the human must answer (e.g. "should this rule apply to skill X too?",
"is this policy too strict?"), open a GitHub issue in the target
repo (see repo-routing rule above) with labels
retroandawaiting-human-decision, and reference the proposal slug in the issue body so the reviewer can cross-check. - Write the session's retro entry to your retro log (see "Producer output" below), noting that this was a Cell-D run (autonomous + degraded), which proposals were filed, and which issues were opened.
No lock release call.
Producer output: write the session entry
Regardless of which Phase 5 cell ran, the session retro's terminal step is
writing an entry to your retro log — this skill is a producer
for the corpus, not just a reader of it. Write a hand-written markdown file
with YAML frontmatter matching the corpus convention so retro-consolidation
can parse it later alongside every other session's entry. The entry should
capture: what was attempted, the grounded findings from Phase 1b, the
per-persona findings from Phase 3, the synthesis from Phase 4, and what (if
anything) was routed where in Phase 5.
Every finding written to the corpus entry must be typed prose | wrapper |
gate, per the inspectability test in your completion-and-retro policy
("Retro Finding Classification" — apply that test here, it is not redefined
in this skill). Do not write an untyped finding.
Hand-written markdown is the only mechanism today that can satisfy this: the
per-finding type field, and the guard-class identified-at/landed-at
timestamp pair below, have no equivalent in your ledger-logging script
— that script writes one fixed-shape entry (worked/didnt/recommendation)
with a document-level type: retrospective key that is a naming collision with
the per-finding type this section requires, not a match. Do not use
log_feature_retrospective.sh to satisfy the typed-finding requirement.
Guard-class findings (gate or wrapper) carry extra obligations before
they're filed:
- Record
identified-atin the corpus entry now, at the moment the finding is first surfaced by this session. Leavelanded-atunset — it gets filled in later, when the guard actually merges (see your completion-and-retro policy → "Retro Entry Format — Time-to-Guard"). - Run the preempt check before filing: is this defect active (recurred,
or could immediately recur, in this or the most recent session) and
recurring (a prior retro entry or prior issue already covers the same
failure mode)? If both hold, do not leave the finding for the next
planning pass — apply two separate, sequential label steps to its
tracking issue immediately, per your completion-and-retro policy →
"Preempt Signal for Active, Recurring Defects":
readyviascripts/gh-issue-ready.sh --repo <owner/repo> --issue <n>— which also requires--buildable-settings/--buildable-perms/--buildable-authority, or--operatorin their place — thenmoscow:mustviagh issue edit <n> -R <owner/repo> --add-label moscow:mustas a separate step (orchestrator/Occam role only — an implementer lane reports the finding upward instead, per your label-governance-gate hook). This is the existing lifecycle run early, not a separate mechanism.
If Phase 1 concluded the session should be skipped (see "Skippable" above), do not write a full entry — a skipped session is not corpus evidence of anything. It is fine to not write anything at all in that case.
Output Format
## Session Retrospective: [Session Topic / Feature Arc]
### Session Summary
- Repo(s): [list]
- What was attempted: [1-2 lines]
- Grounded moments reviewed: N
- Patterns detected: N
### Dorothy (Developer)
[2-3 key findings with evidence references]
### Quine (QA)
[2-3 key findings with evidence references]
### Eiko (Design)
[2-3 key findings with evidence references]
### Occam (Process)
[2-3 key findings with evidence references]
### Synthesis: Top N Actions (Missing — verified against current files)
1. [Action] — [Where] — [Impact] — type: prose|wrapper|gate
(guard-class only: identified-at: [timestamp], landed-at: TBD)
2. [Action] — [Where] — [Impact] — type: prose|wrapper|gate
(guard-class only: identified-at: [timestamp], landed-at: TBD)
...
### Already Applied (verified)
- [Action description] — [file:line evidence]
...
### Divergence Points
[Where personas disagreed — needs human decision]Interaction Rules
- Present findings, not process descriptions. Lead with insights.
- Quote specific ledger entries as evidence (by repo + feature-ref).
- Each persona section should be 2-3 focused findings, not exhaustive lists.
- The synthesis must produce concrete file paths or policy locations, not abstract advice.
- One question at a time to the user in Phase 5.
Part of kromatic-dev-stack by Kromatic. Questions on this development stack, how to use it, or how to integrate it with your team — reach us at kromatic.com/contact-us.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

