retro
Skill81 starsChanged 4 months agoApache-2.0View on GitHub
Close an initiative by learning from it - spawns the retrospective agent over the ledger, the notes and the agents' reports, records what changed and what was rejected, and writes durable repo facts into .tyran/knowledge/. Runs at the end of an initiative; also available as /tyran:retro.
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 repository15 other files it gives its agents.
- docs/agents.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- browser-checkSkill
- code-reviewSkill
- deslopSkill
- doctorSkill
- fidelity-gateSkill
- helloSkill
- pr-feedbackSkill
- prompt-tuningSkill
- root-causeSkill
- runSkill
- setupSkill
- skill-writingSkill
- statusSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 5 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 171 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
Do not do this work yourself in the conducting session.
- Distinctive: line 27
Every retro ends with a journal entry, whatever it concluded:
- Distinctive: line 61
Fold the counters from the agents' reports: Every handoff carried a knowledge brief with entry ids, and every report owes a verdict on them.
- Distinctive: line 69
Then consolidate — by APPENDING, never by editing: Read the audit:
- Very specific: line 95
Write what a competent newcomer would get wrong, not what the code already says.
- Distinctive: line 103
Not two spellings of one store: the first is delivered into every handoff by the knowledge brief, the second is the evidence that decides …
“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
The only loop through which Tyran gets better at this repo instead of repeating the same mistake every initiative.
You normally do not have to invoke this. The Stop gate refuses one turn
when an initiative has all its tickets merged and no retrospective recorded
since the last merge. This skill is what you run when it does — or when you
want one early.
1. Spawn the retrospector
Spawn tyran:retro at the tier node "${CLAUDE_PLUGIN_ROOT}/scripts/tiers.mjs"
--role retro resolves, over the initiative's PLAN.md, NOTES.md, the
agents' reports, and the initiative's git log.
Do not do this work yourself in the conducting session. The retrospector's value comes from reading the record cold; a conductor reviewing its own initiative rates its own decisions, and rates them well.
2. Record the outcome — including "nothing"
Every retro ends with a journal entry, whatever it concluded:
node "${CLAUDE_PLUGIN_ROOT}/scripts/journal.mjs" append "$J" retro.entry "$INIT" \
--actor retro --data '{"kind":"skill","target":"skills/run/SKILL.md","confidence":"medium"}'kind is skill, agent, script, doc, knowledge — or skipped
with the reason, when the judgement is that this initiative has nothing worth
changing. That is a correct outcome and it settles the gate exactly like any
other. A retro that always finds something is not learning, it is padding.
When kind is skill, follow skill-writing. New skills are AUTO class —
you may commit one without asking — and that is only safe against a standard.
It carries the admission test (a skill nothing already points at is a library
entry), the description budget you are spending on every future session, and
the activation test that proves the thing fires at all. A skill that never
triggers costs its description on every turn and returns nothing.
3. Write down what is true about THIS repo
Durable facts go to .tyran/knowledge/<topic>.yaml, which is AUTO class —
the retrospector may write it without asking:
node "${CLAUDE_PLUGIN_ROOT}/scripts/schema.mjs" validate knowledge .tyran/knowledge/<topic>.yamlAn entry is a fact, convention, gotcha, command or decision, with a
confidence, its provenance, and the paths it applies to. The counters
(used, helpful, outdated_reports) exist so a later retrospective can
retire an entry that stopped earning its keep — knowledge that only ever
grows is a context tax with a good story attached.
Fold the counters from the agents' reports. Every handoff carried a
knowledge brief with entry ids, and every report owes a verdict on them.
Increment used for each id that was handed off, helpful for the ids
reported as having helped, outdated_reports for the ids reported wrong —
here, at close, in the one place licensed to write these files. Keep entries
under the size doctor --state warns about (knowledge-entry-oversized,
4 000 codepoints); an oversized entry crowds every brief it matches.
Then consolidate — by APPENDING, never by editing. Read the audit:
node "${CLAUDE_PLUGIN_ROOT}/scripts/knowledge.mjs" audit --dir .tyran/knowledgeIt names the retirement candidates the counters have written off, and — if it says no entry carries counter evidence — that the fold above is not actually happening, which is the finding to act on first.
Deciding that two entries say the same thing is YOUR judgement; no script
scores it. Recording that decision is mechanical: write a new file,
.tyran/knowledge/<slug>-merged.yaml, whose entry states the fact once and
carries supersedes: naming every id it replaces, plus the union of their
provenance. Do not touch the files holding the originals. They keep
their bytes and the counters they earned over months, and stop reaching briefs
because supersedes retires them at read time. An entry the counters have
written off with nothing to replace it is a plain deletion — git holds the
bytes, and the counters are the argument.
Re-run the audit. Superseded should be up, live down, reachability up, and
dangling zero — a supersedes naming an id that is not in the store means
the retirement silently did not happen and the merge only made the store
bigger. Undo, if the merge was wrong, is deleting that one file: every entry
it retired comes back whole.
Write what a competent newcomer would get wrong, not what the code already says. "The test suite takes 9 minutes, so do not run it per file" is worth an entry. "This is a Next.js app" is not: the next agent can see that.
4. Fold what BROKE into MISTAKES.md, and promote what recurred
.tyran/knowledge/ holds what an agent should know before touching a path;
MISTAKES.md at the repo root holds what has gone wrong here and how often.
Not two spellings of one store: the first is delivered into every handoff by
the knowledge brief, the second is the evidence that decides what deserves
delivering at all.
One entry per breakage this initiative genuinely paid for — a wasted agent
cycle, a bad merge, a rework wave. Not per discovery, and not per finding
event: most findings are good news.
node "${CLAUDE_PLUGIN_ROOT}/scripts/mistakes.mjs" add \
--signature worktree-missing-deps \
--what '...' --cause '...' --consequence '...' --prevention '...' \
--initiative "$INIT" --actor impl-t3 --proof F-12The signature is the judgement, and the one part a script cannot do. Reuse the signature an earlier entry already used for the same failure; a near-synonym resets the count to one and the lesson never graduates. Search the file before you invent one. Then let the counting be mechanical:
node "${CLAUDE_PLUGIN_ROOT}/scripts/mistakes.mjs" repeatsIt prints one line per signature that has crossed a graduation threshold, ending in what that signature has earned. Act on that recommendation — the thresholds themselves, and why they are where they are, live in https://jjanczur.github.io/tyran/self-improvement/.
promote to .tyran/knowledge/— write the rule into.tyran/knowledge/<topic>.yaml, scoped withapplies_toso it reaches only the agents it helps:entries: - id: K-12 kind: gotcha text: 'Link the dependency directory into every new worktree before the handoff.' confidence: 0.8 provenance: - source: MISTAKES.md reference: 'worktree-missing-deps — the open entries that earned it' used: 0 helpful: 0 outdated_reports: 0 applies_to: - 'scripts/**'provenanceis a block sequence, never a flow mapping:yaml-literefuses[{...}], and a knowledge file it cannot parse reaches no handoff at all. Thenmistakes.mjs promote --signature <sig> --status knowledge:<id>. Grep.tyran/knowledge/for the signature first: an entry already carrying it means this was promoted before and the status trailers were hand-edited away.promote to CLAUDE.md law— it kept happening after the knowledge entry shipped. That is evidence the delivered rule was not enough, which is the strongest case for law there is. Write it:node "${CLAUDE_PLUGIN_ROOT}/scripts/mistakes.mjs" promote --signature <sig> \ --law --rule 'One imperative sentence.' --journal "$J" --init "$INIT"That edits the host
CLAUDE.mdbetween<!-- tyran:rules start -->and<!-- tyran:rules end -->and no byte outside it, appends adecisionevent naming the rule, the signature and the count, and refuses below the law threshold or on a fence it cannot parse.--dry-runprints the line and writes nothing. You do not wait for an approval: the operator meets the change in the journal, the board and the diff, and says no by deleting the line — a deleted rule does not come back.
Promotion never deletes an entry; it rewrites one status token. The entry is the evidence that earned the rule. Nothing to add is a correct outcome here too, and a common one: most initiatives break nothing that recurs.
5. Report
Five lines: candidates considered, implemented, rejected and why, what was deleted or merged, what is left for next time. Rejections are as valuable as changes — they stop the next retrospective relitigating the same idea.
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.

