land
Skill9 starsChanged 29 days agoMITView on GitHub
Get an already-decided change into the repo on the right surface — which of the three routes it takes, and the ratifying turn it needs first. Use when a change has been agreed and has to become a commit here, a tracker ticket, or a proposal to the owner, or when the question is which surface it belongs on and what the commit must carry. It decides nothing about whether the change is correct — that argument belongs earlier, not here.
27 other projects use a version of this.
Adopted by
Most recently taken up by
- zed-industries/delta-claudetheir own version, first seen Nov 15, 2026
- bengous/claude-code-pluginstheir own version, first seen Nov 8, 2026
- rccsousa/skillstheir own version, first seen Nov 8, 2026
- frontman-ai/frontmantheir own version, first seen Nov 1, 2026
- TheAxeC/ordotheir own version, first seen Nov 1, 2026
- ian-pascoe/skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use drift-audit, ship and 1 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.
mr-fumanchuSkilldrift-audit
Audit a project's CLAUDE.md against its memory files to find duplicated or drifting rules, then consolidate them into a single source of truth. Use when Tony says "drift audit", "check for drift", "audit memory vs CLAUDE.md", "find duplicated rules", "clean up memory duplication", or wants to reconcile CLAUDE.md and memory so a rule never lives in two places. Read-only by default; never edits or deletes anything without explicit approval.
Also in 3 projects that use this
AWSSkillship
Finalize dev work on an issue branch — update docs, push, and open a PR.
Also in 5 projects that use this
SentrySkillreview
Fixture review skill.
Also in 3 projects that use this
Other versions27 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 27
- openai/symphony★ 27ksame name
- BigDawnGhost/wenyi★ 2.9ksame name
- Xinrea/bili-shadowreplay★ 1.1ksame name
- frontman-ai/frontman★ 722same name
- team-mirai-volunteer/mirai-gikai★ 214same name
- HamedMP/matrix-os★ 86same name
- aniketpanjwani/skills★ 52same name
- sledtools/pika★ 45same name
- zed-industries/delta-claude★ 40same name
- jamie8johnson/cqs★ 15same name
17 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 repository36 other files it gives its agents.
- AGENTS.mdAGENTS.md
- scripts/AGENTS.mdAGENTS.md
- tests/AGENTS.mdAGENTS.md
- scripts/CLAUDE.mdCLAUDE.md
- tests/CLAUDE.mdCLAUDE.md
- ask-mattSkill
- codebase-designSkill
- code-reviewSkill
- diagnosing-bugsSkill
- domain-modelingSkill
- grillingSkill
- grill-meSkill
- grill-with-docsSkill
- handoffSkill
- implementSkill
- improve-codebase-architectureSkill
- prototypeSkill
- researchSkill
- resolving-merge-conflictsSkill
- setup-matt-pocock-skillsSkill
- tddSkill
- teachSkill
- to-questionnaireSkill
- to-specSkill
- to-ticketsSkill
- triageSkill
- wait-whatSkill
- wayfinderSkill
- wizardSkill
- writing-for-agentsSkill
- adjudicateSkill
- evidenceSkill
- replaySkill
- setupSkill
- surveySkill
- selfimproveSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. 0 are common, 7 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 26 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Not inferred from them reading your verdict.
- Distinctive: line 24
It is void at session end: After a compaction, a day rollover, or a restart, a previous yes is history, not permission.
- Very specific: line 91
If a ratified reseed *is* what the owner asked for, the ratification is recorded the way the machinery already does it: …
- Very specific: line 117
Write the ticket on the issue tracker at /tracker, as actor companion, under the concurrency protocol (/tracker-docs/issue-tracker.md).
- Distinctive: line 182
Never say a change is live because you committed it, and never press the deploy tab's button on your own judgment — that verb is their …
- Distinctive: line 187
Never commit without a ratifying turn in the current session, for that specific change.
- Distinctive: line 189
Never treat a prior session's approval, a general instruction, or your own confidence as one.
- Very specific: line 191
Never edit inside a RATIFIED fence, or delete a fence marker.
- Distinctive: line 192
Never touch a frozen seed without a ratification recorded in the same commit.
- Distinctive: line 193
Never batch two purposes into one commit, and never commit with a red suite.
- Very specific: line 194
Never call GitHub — no gh, no API, no token, no branch, no PR, no issue.
- Very specific: line 196
Never run deploy.sh, never write to the VM, never hold a VM credential.
- Very specific: line 197
Never push anything anywhere: the sandbox has no remote, and the reviewed repo is mounted :ro.
- Very specific: line 199
Never land a change you have not argued for.
“Common” is measured: kept by at least 6 in 10 of the 26 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
Landing a change
This file is the doctrine: the routes and the authority they run under were decided with the owner. If the doctrine changes, it changes here.
The gate before any route: the ratifying turn
Nothing below fires until this passes. It is not a formality — the entire authority to commit rests on it, because the boundary that used to stop you is now prose plus this turn and nothing else.
- Commit only after the owner approves THAT change, in this session, in words. Not inferred from them reading your verdict. Not from "they asked me to look at the feedback". Not from a standing instruction to improve the reviewer. Not from their silence.
- The approval is per batch. One "yes, all three" covers the three changes just discussed and nothing else. A fourth change you noticed while committing the third is not covered — ask.
- It is void at session end. After a compaction, a day rollover, or a restart, a previous yes is history, not permission. Ask again. If you cannot point at their approving words in the conversation you are currently in, you do not have one.
- Ambiguous is not approved. "Sounds right" about an argument is not approval of a diff. If you are constructing an argument for why it counts, it does not.
The load-bearing sentence, and the first thing to check if this ever goes wrong: if a change ever lands without a ratifying turn — implicitly, by inference, or from a prior session — the widening is void, not merely violated.
Which route: three surfaces, three answers
Decide the surface first. It is almost always obvious, and picking wrong is the one way to turn a good change into a bad one.
1. Review-side — how the reviewer judges (prompts/, agents/)
Round templates, lens bodies, the addendum registry's effect on what a pass
says. This is yours now, through the conversation, under the ratifying turn.
The old producer — the EOD curator writing state/rubric/<slug>/ on the VM —
is retired: the curator flags candidates in the digest and
authors nothing, and never ask the overseer to draft one. The proposal
surface lives on, and you are its producer now: when a review-side
change needs the owner's ratification rather than a ratifying turn, you author
a proposal directory and their accept click in the TUI ratifies it.
Authoring a rubric proposal (the TUI-accept route)
- Where:
state/rubric/<lens>-<topic>-<YYYY-MM-DD>/under/workspace— the LOCAL repo's state dir, the same tree the TUI's[7] feedbacktab reads (src/tui/proposals.tslists it from the repo root; there is no VM path in this loop). Slug charset[A-Za-z0-9._-], no leading dot, or the TUI never lists it. - What it contains, exactly two files:
PROPOSAL.md— the pitch: rationale, evidence PRs, expected effect on false-positive/miss rates. First three non-blank lines are the card the TUI shows; make them carry the argument.changes.patch— ONE unified diff against the currentagents//prompts/files, paths repo-relative witha/b/prefixes (git diffoutput is the right shape).
- Targets:
agents/andprompts/only. The TUI refuses anything else — both diff sides plus rename/copy headers are checked, so a deletion or rename cannot smuggle a path in. It equally refuses a patch that touches lines inside a<!-- RATIFIED … -->fence or adds a fence marker of its own: a proposal can argue against a ratified passage, never carry one in. - You NEVER apply the patch yourself. the owner's accept click in the TUI
IS the ratification (accept = apply + auto-ratify + local commit; the
divergence fixture and seed manifest are re-pinned by that path, not by
you). Reject removes the dir and records a
#rejected-proposalmemory entry — never re-propose one of those. Until they click, the directory is inert prose; writing it needs no ratifying turn, precisely because it changes nothing.
Two things travel with a review-side commit:
tests/seed-integrity.test.tsis the map of what is frozen. Seeded content (pass-common.md,conversation-system.md,eod-sweep.md, the seededagents/pass-*.md) is frozen (docs/ownership.md) — a reseed is the owner's ratification, not yours. Ours to edit: the round templates,companion.md,companion-day-open.md, the Slack appendix. The test's ownNON_SEEDEDlist is the authority; check it, do not remember it.- Pass behaviour changes go through
PASS_ADDENDAinsrc/include.ts, composed onto BUILT bodies — never through a seed edit. That is a system-side commit that happens to change review behaviour, and it is the sanctioned path. - If a ratified reseed is what the owner asked for, the ratification is recorded
the way the machinery already does it:
recordRatification()insrc/tui/proposals.tsappends totests/fixtures/ratified-divergence.jsonand re-pinstests/fixtures/seed-manifest.json. Same commit as the edit, or the suite is red. Do not hand-edit either fixture around it.
2. System-side — daemon behaviour (src/, tests/, scripts/, docs/)
Severity mapping, dispatch, webhook routing, the TUI, yourself. One rule for all of it: after a ratifying turn, you edit it and commit it. There is deliberately no carve-out — not for the mutation gate, not for the posting guards, not for "anything structural". The owner rejected both carve-outs explicitly, and the recorded consequence is that the safety story for a gate edit is the ratifying turn plus a one-key revert, with no second structural barrier. Weigh that when you ask.
What does not move: the gate's shape. Every GitHub mutation still goes through
the one MutationGate; you may edit the gate, you may never add a path around
it, and dry_run is the owner's alone in either direction.
3. Author-side — how the code gets written in the first place
The highest-yield surface in the corpus, and the one you touch least directly. It becomes a tracker ticket, and the owner acts on it. Nothing reaches the reviewed repo until they move.
- Write the ticket on the issue tracker at
/tracker, as actorcompanion, under the concurrency protocol (/tracker-docs/issue-tracker.md). - Carry the argument: the episode, the verdict, the counter-case, and what a change to the team's practice would be.
- The daemon's improvement-PR machinery (caps ≤50 lines / ≤3 files, 1/day, 3/week, enforced in daemon code) remains the only path to a bot-filed PR and is untouched — you do not feed it, and you never file one yourself. This is a deliberate narrowing: changes from feedback are never automatic, and a human step is the accepted price.
Ratified invariants: propose only, never edit
Some passages are the owner's, wherever they live. In the files we own they are fenced:
<!-- RATIFIED ci-gate — do not edit; owner only -->
…the ratified text, byte for byte…
<!-- /RATIFIED ci-gate -->Edit freely around a fence; never inside one. tests/invariant-fences.test.ts
hashes each fence's contents and fails just as loudly when a marker goes missing
— deleting the fence is not a way around the pin. The same holds for the
invariants living in src/ that have no fence yet (the CI gate in
cigate.ts, reachability in severity.ts, the one-way transition in
recheck.ts, validatorTier in dispatch.ts, the migration COMMENT rule):
their being unfenced is a gap, not permission.
Arguing for a change to one is allowed and welcome. Making it is not. A verdict that requires changing a ratified invariant lands as an argument in the column and, where the invariant lives in a prompt or lens, as a rubric proposal directory (route 1 above — PROPOSAL.md making the case, and a patch the TUI will accept only for the unfenced text around it; the fence itself stays theirs) — never as a commit you write first and mention after.
The commit
- One purpose per commit. Touch only what this change justified. If you notice something else while you are in the file, note it and leave it.
masterin the real checkout, never a worktree. That is yours alone and it is deliberate: the owner is watching the TUI you are editing, and the hot reload watches the main checkout'sdist/. The tree is shared with worktree agents who are under orders never to stash your work — so commit coherent work promptly rather than sitting on a wide diff.- Green before committing, always:
timeout 900 npm testwith zero failures, thennpm run buildclean. Never commit with a red suite. The build is also how the change reaches the running TUI — say what you are about to rebuild before you do it, so a screen blink is never a surprise. - Message:
[companion]prefix and a plain body that says what changed and why. No trailers (noFeedback-PR:,Adjudication:orRatified-in-session:line), no quote of the owner's words, no session or ticket id: the history is public, and the approval lives in the session. - Tell them what you changed, in one line, naming the surface.
Did it actually reach the reviewer?
A committed review-side or system-side change is not live until the VM has it,
and you may never deploy — deploy.sh in any mode is outside the boundary,
in every direction, permanently.
The answer is already on the owner's screen: the deploy tab shows the VM's
BUILD_SHA, local HEAD, the pending commit list with diffstat, and
deploy.sh --dry-run's plan verbatim. So the honest report is: "committed; it
shows as pending on the deploy tab; it reaches the reviewer when you deploy."
Never say a change is live because you committed it, and never press the deploy
tab's button on your own judgment — that verb is their finger, not yours.
Never
- Never commit without a ratifying turn in the current session, for that specific change.
- Never treat a prior session's approval, a general instruction, or your own confidence as one.
- Never edit inside a
RATIFIEDfence, or delete a fence marker. - Never touch a frozen seed without a ratification recorded in the same commit.
- Never batch two purposes into one commit, and never commit with a red suite.
- Never call GitHub — no
gh, no API, no token, no branch, no PR, no issue. Author-side is a tracker ticket, and that is the whole of it. - Never run
deploy.sh, never write to the VM, never hold a VM credential. - Never push anything anywhere: the sandbox has no remote, and the reviewed repo
is mounted
:ro. - Never land a change you have not argued for. Deciding is
adjudicate; understanding isevidence; trying it against the past isreplay.
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.

