Install
$ agentstack add skill-titusz-skills-retro ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Run a retrospective on the loop itself — not on the code. The loop's roles review every code increment; nobody reviews the harness unless you do. Your output is diagnosis + proposals; with apply, also one bounded change. If .cid/journal.md does not exist or has fewer than ~5 rows, say there is not enough track record yet and stop.
Step 1 — Measure
Run uv run .cid/bin/metrics.py --window 20 --all for the deterministic journal numbers — verdict mix and NEEDS_WORK rate, Advances tally, streaks, same-step bounces, phase trajectory (script or uv unavailable → derive them from journal.md + journal-archive.md by hand). Then add what the script cannot see, from git history (git log --oneline, the cid(): cadence), learnings.md + learnings/, issues.md, and policy.md, for the last ~20 iterations:
- NEEDS_WORK clustering — do the script's failures cluster on a phase, an area, or a role's
handoff?
- Convergence — is the script's polish share drift (criteria open and reachable) or
legitimate (hardening in stable)?
- Step sizing — steps that blew the phase budget or bounced (blocker handoffs)
- Escalation health — STOP/IDLE signals: were they real, or should the loop have handled them?
- Ledger health —
learnings.mdindex and detail files vs. thereviewrole's rotation
budgets (that role is the single source for the numbers); journal.md past the archive threshold its own header states; stale issues
Step 2 — Diagnose
Name the top 1–3 loop-level problems with evidence (iteration numbers, journal rows, commit hashes). Distinguish harness problems (bad policy knob, missing learning, vague Verify criteria in target.md) from project problems (hard code — not yours to fix). No problems found is a valid finding — say so and stop; do not invent tuning for its own sake.
Step 3 — Propose
For each diagnosis, one concrete proposal:
- Policy tuning — a specific edit to a tunable section of
policy.md(phase knob, a role
adjustment for define-next/advance; update-state and review adjustments go to the human as proposals)
- Target sharpening — a
target.mdVerify criterion that proved vague or unverifiable →
propose the runnable form (human applies it; the loop never edits target.md)
- Ratchet — a recurring failure that should become an executable check in the gate
- Hygiene — ledger rotation, journal archiving, stale-issue sweep
File each proposal as an issues.md entry (Source: [retro], priority low for human-directed ones, normal for ones the loop should pick up), and summarize them in your report.
Step 4 — Apply (only if $ARGUMENTS contains apply)
Apply at most one proposal per retro, and only within these guardrails:
- Only tunable
policy.mdsections — within the phase table, only theStep budgetand
Allowed work rows — plus the define-next/advance role adjustments and hygiene (ledger rotation, journal archiving).
- Never the quality gate, the branch model, the
update-stateorreviewrole adjustments,
the rigor rows of the phase table (Tests required, Review depth, Debt tolerance), target.md, or any source file. The reviewer and the assessor are the loop's quality gate — a self-tuning loop that can soften its own reviewer or gates will Goodhart itself (a softened reviewer improves the NEEDS_WORK metric, so the rollback test would ratify the move instead of reverting it), and a softened assessor is the symmetric case (update-state computes the phase that selects the binding rigor column and judges when a Verify criterion counts as met, so biasing it improves the Convergence metric the revert test also keys on); those changes go to the human as proposals.
- Record the change in
journal.mdas a row:
| - | | - | retro: | - | - | - | so the next retro can evaluate it against the metrics — and revert it if the NEEDSWORK rate, the step-bounce rate, or the Convergence rate (Step 1) got worse since. Convergence is in the revert test because the tunable Allowed work row steers what work gets picked: widening it toward easy polish work improves the NEEDSWORK rate while Verify criteria stall — only the journal's Advances column catches that.
- Commit as
cid(retro):.
These guardrails are prose, not mechanism. Unlike the runner-enforced harnesses this skill distills (which auto-revert guardrail-breaking meta commits and own the re-evaluation schedule), nothing here mechanically reverts a bad retro commit, no role checks a cid(retro): commit against these guardrails (review's integrity scan pattern-matches gate circumvention in the commits since the last review — that includes a retro commit, so it can catch a gate-weakening retro edit, but not an off-limits tuning such as a rigor-row change), and an applied tuning is re-evaluated only when a human runs the next retro. Granting apply means trusting the retro to obey the list above — review cid(retro): commits yourself until that trust is earned.
Without apply, touch nothing except the issues.md proposal entries (commit them as cid(retro): file proposals).
Step 5 — Report
Metrics summary → diagnoses with evidence → proposals (and the one applied change, if any) → the follow-up: when to run the next retro (default: every ~10 iterations, or after a NEEDS_WORK streak).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: titusz
- Source: titusz/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.