ship-change
Skill8 starsChanged 10 days agoMITView on GitHub
The required workflow for any change to this repository, from issue to merged PR. Use it before you start a fix, feature, docs change or refactor here, and when asked to create an issue, a branch, a PR or a release. It keeps the release flow correct.
- Commits and pushes
5 other projects use a version of this.
Adopted by
Most recently taken up by
- davidscotttufts/hyvemindtheir own version, first seen Nov 1, 2026
- fnayou/dotfilestheir own version, first seen Oct 25, 2026
- LandonTomaine/LT-Agentstheir own version, first seen Oct 20, 2026
- tejastn10/workbenchtheir own version, first seen Oct 13, 2026
- YangFan-Code-Star/context-devtheir own version, first seen Aug 18, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- fnayou/dotfiles★ 2same name
- YangFan-Code-Star/context-dev★ 2same name
- tejastn10/workbench★ 1same name
- davidscotttufts/hyvemind★ 0same name
- LandonTomaine/LT-Agents★ 0same name
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 repository3 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- growthSkill
- publish-resultsSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
20 rules. 0 are common, 10 are distinctive, and 10 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
10
Distinctive
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
Search first, so you do not open a duplicate:
- Very specific: line 26
If none fits, create one. Use the fields of the matching template in .github/ISSUE_TEMPLATE/: bug_report, feature_request, benchmark_task …
- Distinctive: line 36
When you plan a task, write the plan as one branch and one PR with ordered commits.
- Very specific: line 38
Use <type>/<short-name>. The type is feature, fix, docs, chore, refactor, test or bench.
- Very specific: line 44
Always pass --name. Without it, the branch takes the whole issue title, and guard rejects it.
- Distinctive: line 48
Keep to one task, and keep all of it here.
- Distinctive: line 49
Add or update a test for each behavior change.
- Distinctive: line 50
Put the benchmark for the task on this branch, with the code it measures.
- Very specific: line 51
If you change a shipped path, add a line under [Unreleased] in CHANGELOG.md.
- Very specific: line 52
Put the line under the right heading, because the heading sets the next version.
- Very specific: line 53
Never change version in plugin.json.
- Distinctive: line 54
Never commit on main.
- Distinctive: line 72
Run it on the branch's final code.
- Distinctive: line 73
Commit the rows and the report to the branch.
- Very specific: line 74
If the run changes a number you publish, follow the publish-results skill on the same branch.
- Distinctive: line 84
Never change a pass rule after results exist.
- Distinctive: line 99
Write the title as a plain sentence.
- Very specific: line 102
If a change truly needs no changelog line, add the no-changelog label.
- Very specific: line 114
Before you merge a release PR, run the publish-results skill if any public number or promise changed since the last release.
- Very specific: line 130
Create tags, or move stable, by hand.
“Common” is measured: kept by at least 6 in 10 of the 4 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
Ship a change
Every task gets one issue, one branch and one PR. The branch holds the whole task: code, tests, benchmark and results. A task merges only when its evidence is on its branch. Nothing writes to main directly. CI enforces the branch and PR rules, so a shortcut fails in the guard job.
1. Sync
git status --short # stop if tracked files are changed, and ask
git switch main
git pull --ff-only2. Issue
Search first, so you do not open a duplicate:
gh issue list --state all --search "<words>"If none fits, create one. Use the fields of the matching template in .github/ISSUE_TEMPLATE/: bug_report, feature_request, benchmark_task or judge_case.
gh issue create --title "<short title>" --label <bug|enhancement> --body-file <file>3. Branch
Make one branch per task, not one per step. A task is one entity, even when its plan has phases, milestones or numbered parts. Those parts are commits on the task's branch and sections of its one PR. Never open a branch, issue or PR per phase, and never split a task so that its code lands first and its tests or benchmark follow.
When you plan a task, write the plan as one branch and one PR with ordered commits. Do not write it as "PR 1, PR 2, ...".
Use <type>/<short-name>. The type is feature, fix, docs, chore, refactor, test or bench. Keep the name to two or three words, in lowercase, with hyphens.
gh issue develop <N> --name feature/release-flow --base main --checkoutAlways pass --name. Without it, the branch takes the whole issue title, and guard rejects it. This command also links the branch to the issue.
4. Work
- Keep to one task, and keep all of it here. Commit each phase of the plan on this branch as it is done.
- Add or update a test for each behavior change.
- Put the benchmark for the task on this branch, with the code it measures.
- If you change a shipped path, add a line under
[Unreleased]inCHANGELOG.md. Shipped paths areagents/,commands/,hooks/,output-styles/,scripts/,types/,workflows/,config.jsonand.claude-plugin/plugin.json. - Put the line under the right heading, because the heading sets the next version.
FixedandSecuritygive a patch.Added,Changed,RemovedandDeprecatedgive a minor. - Never change
versioninplugin.json. The release PR does it. - Never commit on
main.
5. Check
npm run check
claude plugin validate . --strict
claude plugin test .Fix every failure before you go on.
6. Benchmark
A change to what a session does needs a benchmark on its branch. That covers routing, model calls, tool gates, agents, the workflow and the guardian. A docs change does not need one, and neither does a fix that a test proves. Say so in the PR when you skip it.
- Fix the pass rule before any result exists. Add the experiment to
bench/experiments/, add its arm tobench/arms.mtsif it needs one, write the veto rules inbench/experiments/CANARIES.md, and commit them. - State the expected spend. Ask the user before a run that spends usage or money. CI never runs a live benchmark, so this run happens here.
- Run it on the branch's final code. A run id hashes the plugin code, so a later code change starts new runs.
- Commit the rows and the report to the branch.
- If the run changes a number you publish, follow the
publish-resultsskill on the same branch. It updates the README, the docs, the comparison and the website together, andtests/claims.test.mtsblocks the merge until they agree.
node bench/run.mts --experiment <id> --dry-run
node bench/run.mts --experiment <id> --out bench/results/<id>.jsonl
node bench/grade.mts bench/results/<id>.jsonl --budget-usd <n>
node bench/report.mts --manifest bench/results/<id>.manifest.json bench/results/<id>.jsonl- A vetoed result blocks the merge. Fix the code and run again, or close the task.
- Never change a pass rule after results exist.
- A default of
offorshadowdoes not replace this step. - Under 30 tasks, a run is a pilot. It can veto a change, and it cannot prove a saving. See
bench/README.md.
7. Pull request
git push -u origin HEAD
gh pr create --base main --title "<what changed>" --body-file <file>
gh pr checks --watch- Fill in the template in
.github/PULL_REQUEST_TEMPLATE.md. - The body must contain
Closes #<N>. - Link the benchmark report, or say why the task needs none.
- Write the title as a plain sentence. A squash merge makes it the commit subject on
main. - Fix any failing check before you report the PR as ready.
If a change truly needs no changelog line, add the no-changelog label.
8. Merge
Merge only when the checks and the benchmark pass and the user asks:
gh pr merge <PR> --squashThen go back to step 1 for the next change.
Before you merge a release PR, run the publish-results skill if any public number or promise changed since the last release.
What happens next
- A merge that changes a shipped path makes the bot open or update the
Release x.y.zPR from branchrelease/next. - Merging that PR ships. It runs the gate on Linux and macOS, builds and attests the bundle, publishes the GitHub Release, and moves
stablelast. - Users install from
stable, somaincan hold unreleased work. - Docs-only merges start no release. Their changelog lines wait for the next one.
- To choose the version:
gh workflow run release.yml -f bump=major. - To test the release path and publish nothing:
gh workflow run release.yml -f dry_run=true.
Do not
- Push to
main, or merge with--admin. - Merge a task while its benchmark is pending.
- Edit
release/nextby hand. The bot force-pushes it. - Create tags, or move
stable, by hand. - Name a commit
Release x.y.z. That subject starts a release.
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.

