retro
Skill1 starsChanged 4 months agoMITView on GitHub
End-of-session self-improvement, run as gate's stage 13 or on demand. Reviews a work session for durable, general learnings and routes them in two halves: the SKILL half (gotchas about your own skills/pipeline -- crew strands, convention gaps, gate mechanics) folds back into the skill sources or files a proposal; the DOMAIN half (project knowledge -- house conventions, reviewer rulings, data patterns) always writes a per-project retro note and, only when your operator config matches the repo, additionally distills into that knowledge base. Generalized and project-agnostic: routing is config-driven, so it runs for any project without cross-contaminating any one KB. Invoke at the end of a session, after a gate run, or on "retro", "session retrospective", "what did we learn", "distill the session".
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 repository10 other files it gives its agents.
- anti-slopSkill
- gateSkill
- handoffSkill
- intentSkill
- rust-conventionsSkill
- scrub-ai-tellsSkill
- skill-distillSkill
- tixSkill
- tutorSkill
- typescript-conventionsSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 3 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 171 edited versions we read keep these.
3
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 93
Keep a candidate only if all hold.
- Distinctive: line 113
Verify each survivor against its source before writing (read the file, re-run the probe).
- Very specific: line 141
Filing a proposal: If [retro] proposal_cmd is set, run it (e.g.
- Distinctive: line 162
Never: write to a KB the slug did not match.
“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 closing ritual for a work session: turn what the session taught into durable updates, so the next session starts ahead of this one. The bar is durable and general, not "everything that happened." Most of a session is execution; only a little of it is a lesson.
Retro learnings split into two halves with different homes. Keeping them separate is the whole point -- it is what lets retro run on any project without a personal or employer-specific knowledge base ever receiving the wrong project's learnings.
- Skill half -- what the session taught about your own tooling: a review-crew strand, a gap in a conventions pack, a gate mechanic that bit, an SSM or fold/atomic hazard. Project-agnostic. Homes in your space (the skill sources, or your proposal tracker), never a project KB.
- Domain half -- what the session taught about this project: a house convention, a reviewer ruling, a data-model or design pattern, a lint gotcha. Homes in a per-project retro note always, plus a configured knowledge base when (and only when) your operator config maps this repo to one.
Phase 0: resolve routing (no hard project gate)
retro does not gate on any particular project -- it runs everywhere; routing is what changes. Resolve these first:
- Repo slug --
git remote get-url origin->owner/repo. - Operator routing -- read
~/.config/gate/config.toml(the operator layer; see gate'sreferences/config.md). Two things come from it, both optional:- KB routing -- match the slug against each
[[knowledge_base]]matchglob. A hit yields apath(an external KB) andpeer_reviewedflag; no hit (or no file) means the domain half stays project-local only. There is no default external destination. - Skill-half routing -- the
[retro]section'sskills_root(your authored- skills tree),skills_repo(where in-place edits get pushed), andproposal_cmd(how proposals are filed), all used in Phase 3. Absent means report-only for the skill half.
- KB routing -- match the slug against each
- Project retro note path -- resolve the
.handofflocation exactly ashandoff's SKILL.md does (so both skills agree no matter which writes first): if.handoffalready exists, use it; else readvault_rootfrom the[handoff]section of the operator config and, when set, create<vault_root>/<proj>/handoff/- the in-repo
.handoffsymlink, else a plain gitignored<repo-root>/.handoff/. The note lives in aretro/subdir so it never clutters the canonical cold-start docs:<.handoff>/retro/retro-<YYYY-MM-DD>.md.
- the in-repo
Phase 1: scan the session for candidates (greedy)
Collect candidates into the two halves. Be greedy here; Phase 2 is where things get
cut. If invoked detached from the session that did the work, reconstruct from the
git log, the PR thread, and any gate-run artifacts (review-crew's pr-comment.md,
the floor/mutation output).
Skill-half buckets (about your tooling):
- review-crew behavior -- a strand, a verdict quirk, an artifact location, a failure mode.
- conventions-pack gaps -- a language idiom the pack should state but didn't.
- gate mechanics -- a stage that mis-fired, a config fallback that was wrong, a loop that didn't converge, a worktree/cleanup snag.
- fold / atomic / SSM hazards -- a stacked-commit fold trap, an autosquash trap, a state-space insight that generalizes past this diff.
- floor / toolchain discoveries -- the real build/lint/test command for a toolchain gate didn't know.
Domain-half buckets (about this project):
- house conventions -- a rule about how this project's code is written, discovered or reaffirmed.
- reviewer rulings -- a decision by a named reviewer, especially one overriding a prior position. Attribute it.
- lint / CI gotchas -- a project lint that cost a round-trip and the fix.
- data-model / design patterns -- a schema or architecture decision worth keeping.
User preferences about how the operator wants work done go to auto-memory
(type: feedback or user), not to either half's files.
Phase 2: filter to what is worth keeping
Keep a candidate only if all hold; else drop it.
- Durable -- still true next month, not a fact about today's diff.
- General -- applies beyond the one PR. A one-off name is project trivia (the handoff), not a convention.
- Novel -- not already captured. Grep the target (the skill source, the KB, the
project note) first. If it recurred, bump a
Seen: Nxcounter and add the new source rather than duplicating. - Non-obvious -- would not be guessed from reading the code or existing docs. Terse is the house style; do not pad a skill or a KB with a weak finding.
- Sourced (conventions only) -- a candidate that states a convention (a
conventions-pack gap in the skill half, a house convention in the domain half) must
trace to direct feedback from a named human reviewer: a PR comment, a review
ruling, an in-session correction. Your own inference from reading the code is not a
convention source -- patterns you merely observed get downgraded, not written as
conventions. If the operator config names
trusted_reviewers([retro]section), feedback from them clears this bar outright; feedback from anyone else still counts but warrants a proposal rather than an in-place pack edit. Downgrade target: proposal (skill half) or project note only (domain half).
Verify each survivor against its source before writing (read the file, re-run the probe). A retro that adds a wrong "convention" is worse than one that adds nothing.
Phase 3: route and apply
Apply directly -- git history and the Phase 5 report are the reversibility. The one hard rule: when a survivor conflicts with an existing entry, flag the conflict for the operator; never silently overwrite.
Skill half
For each survivor, find the skill it belongs to and route by who owns it -- decided
by one rule, not a hardcoded list: is the skill's source under your skills_root?
([retro] skills_root in the operator config, e.g. ~/src/my-skills.)
- A skill you author (source under
skills_root): if the finding is high-confidence and clearly general, edit the skill source in place, commit in the repo'satomic-changesform, and push toskills_reposo it propagates. Otherwise -- lower confidence, or plausibly a one-project quirk -- file a proposal instead (see below) rather than editing. For a conventions pack, high-confidence additionally requires the Phase 2 source bar: a pack states rules reviewers actually enforce, so an entry without direct feedback from atrusted_reviewersreviewer is a proposal, not an edit. - A skill you do not own (source anywhere else, another author's repo): never edit it. File a proposal only; it is upstream and theirs to change.
- A self-tracking skill (one that delta-tracks its own findings, e.g. review-crew): do not churn it. File a proposal for anything about its wiring.
Filing a proposal. If [retro] proposal_cmd is set, run it (e.g. cd ~/.agents &&
tix add "<skill>: <change>" -p 3 -b "<finding + evidence + why general>"). If it is
unset, or skills_root is unset so editing in place is impossible, do not invent a
tracker: record the proposed change in the Phase 4 report instead, with enough detail
to act on later. The report is always a valid destination.
Domain half
- Always append the survivor to the per-project note
<.handoff>/retro/retro-<date>.md, in a simple dated, sourced form. This is the project-local trail and happens for every project, matched or not. - If Phase 0 matched a
knowledge_base, additionally distill the survivor into that KB at itspath, in the KB's own entry format (Rule / Why / Example / Source / Seen: Nx), in the matching section.peer_reviewed = trueraises the value of these learnings (reviewed by peers) -- include readily; for an unreviewed source, hold a higher novelty/durability bar. A house convention additionally needs the Phase 2 source bar to enter the KB: named reviewer in Source, strongest when fromtrusted_reviewers. An observed-only pattern stays in the project note until a reviewer ratifies it. BumpSeencounters on recurrence; flag genuine reversals (Settled:/⚠ Tension:) rather than overwriting. - Never write to a KB the slug did not match. No match means project-local only.
Commit form and hygiene
Skill edits and KB/note writes are internal tooling, so em dashes are fine here; do not spend effort scrubbing them (the no-em-dash rule is for content presented to others as the operator's own). Keep every edit in its target's existing voice and density; do not balloon a skill or a KB with a weak finding.
Phase 4: report
One short summary, grouped by destination: what landed where (skill edits committed, proposals filed, project-note appends, KB entries), and what was considered and dropped (so the operator can override a drop). Flag any conflicts surfaced. Then stop -- do not re-run the gate or any other skill.
Notes
- No project is special. Any project-specific destination is just a
knowledge_basematch in your operator config; a repo that matches nothing routes domain learnings to its own project note only.handoffandgatestage 13 both invoke this skill. - This is the bookend to
gate: gate spends a session doing the work; retro banks the lessons. Invoked as gate's stage 13, or directly at a session's end.
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.

