release
Skill3 starsChanged 35 days agoMITView on GitHub
Releases this plugin. Prepares a finished branch with the version bump, the CHANGELOG entry and any text the change made stale; runs the repo's own checks; has one independent reviewer clear anything users receive; opens the pull request; and publishes to every marketplace target once the user has merged. Merging to main publishes, because the marketplace installs from main HEAD. Use when a branch is finished and ready to become a release. Do NOT use for work staying off main. Do NOT use to merge: every hand stops at the open pull request, and the user merges.
- Commits and pushes
196 other projects use a version of this.
Adopted by
Most recently taken up by
- zxcvbn-ts/zxcvbntheir own version, first seen Nov 9, 2026
- TechbeeAT/jtxBoardtheir own version, first seen Nov 9, 2026
- ddnexus/pagytheir own version, first seen Nov 9, 2026
- zerx-lab/FluxDowntheir own version, first seen Nov 9, 2026
- orioledb/orioledbtheir own version, first seen Nov 9, 2026
- AmruthPillai/Reactive-Resumetheir own version, first seen Nov 8, 2026
Used with
Projects with it also use create-agent-adapter, changelog-style 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.
MicrosoftSkillcreate-agent-adapter
Technical guide for creating a new Paperclip agent adapter. Use when building a new adapter package, adding support for a new AI coding tool (e.g. a new CLI agent, API-based agent, or custom process), or when modifying the adapter system. Covers the required interfaces, module structure, registration points, and conventions derived from the existing claude-local and codex-local adapters.
Also in 5 projects that use this
GrinvSkillchangelog-style
Turn a commit range into CHANGELOG.md entries following common-changelog style. Use when finishing a PR or cutting a release, to write/fix the [Unreleased] section's entries — moving [Unreleased] under a new dated version heading is a separate, automated step (see the release skill / scripts/sync-version.ts), not this skill's job.
Also in 4 projects that use this
GrinvSkilldocs-consistency-check
Check README/manifest.json/server.json/CHANGELOG.md/AGENTS.md and docs/*.md for drift against the actual registered tools and source. Use after adding, renaming, or removing a tool, or as part of a live-audit pass.
Also in 4 projects that use this
Microsoft AzureSkillcomponent-release
Prepares a verifiable Agent Landing Zone UI release. Use for release branches, VERSION, changelog entries, tags, release notes, and compatibility evidence; never publish without explicit human approval.
Also in 4 projects that use this
Microsoft AzureSkilldocumentation-consistency
Keeps AI Landing Zone contributor, user, and operator documentation aligned with shipped Bicep behavior. Use for parameters, defaults, outputs, topology, deployment flow, operations, or releases.
Also in 8 projects that use this
rivet-devSkilllaunch-graphics
Generate agentOS marketing/launch graphics (launch & social heroes, code-snippet cards) from the committed generators in docs-internal/graphics. Use when asked to make, update, or render an agentOS launch image, social image, "agentOS Apps" graphic, or technical code-snippet image.
Also in 3 projects that use this
- +3 more from Grinv
Other versions196 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 196
- paperclipai/paperclip★ 112ksame name
- modelcontextprotocol/servers★ 92ksame name
- remotion-dev/remotion★ 72ksame name
- traefik/traefik★ 65ksame name
- usememos/memos★ 64ksame name
- tw93/Pake★ 63ksame name
- AmruthPillai/Reactive-Resume★ 45ksame name
- amruthpillai/reactive-resume★ 45ksame name
- reactive-resume/reactive-resume★ 45ksame name
- Yeachan-Heo/oh-my-claude-sisyphus★ 41ksame name
186 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 repository8 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- advisor-modeSkill
- efficient-mdSkill
- memory-refineSkill
- mine-sessionSkill
- plain-englishSkill
- product-engineeringSkill
- section-by-sectionSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 7 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 186 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 18
Start from a branch whose changes are finished.
- Very specific: line 21
Run git fetch origin and rebase the branch onto origin/main.
- Distinctive: line 22
Commit any README, manifest or docs text this change made stale.
- Very specific: line 31
Commit the version in .claude-plugin/plugin.json and the new CHANGELOG entry.
- Distinctive: line 36
Run checks 1 to 4 against the branch's committed tree and record each result.
- Very specific: line 38
Tests: Run git branch -f main origin/main, then run tests/.venv/bin/python tests/run.py --changed --runtime claude-code --record.
- Very specific: line 46
CI, locally: Run PYTHON=tests/.venv/bin/python .github/validate.sh, the script the validate job runs on every pull request.
- Very specific: line 57
If origin/main moved while you were working, rebase onto it and run these checks and the review again against the new head commit.
- Distinctive: line 73
When the table says a reviewer is required, dispatch one independent reviewer holding the diff, the check results from section 2, and the …
- Distinctive: line 81
Ask for one verdict: CLEAR or BLOCKED, with findings, naming the exact head commit it covers.
- Distinctive: line 95
Stop there. Never merge — the user merges, always.
- Very specific: line 126
When claude plugin tag --push refuses: a tag already on this commit is the end state you wanted, so record it and carry on.
- Distinctive: line 146
Add a step to this file without removing one.
“Common” is measured: kept by at least 6 in 10 of the 186 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
1. Prepare the branch
Start from a branch whose changes are finished. Every step below runs against that branch's committed tree, never against uncommitted edits.
- Run
git fetch originand rebase the branch ontoorigin/main. - Commit any README, manifest or docs text this change made stale.
- Decide whether the change reaches anyone who installs the plugin. A change
confined to
.claude/or to documentation does not, and carries no version: skip steps 4 to 6 and go to section 2. - Compute the bump against
origin/mainHEAD: a removal or rename is major, an addition is minor, a fix is patch. Show the user the computed bump; the user rules the actual one. - Confirm the ruled version is unused: it appears in no CHANGELOG heading on
origin/main, and no existing git tag matches it. - Commit the version in
.claude-plugin/plugin.jsonand the new CHANGELOG entry.
2. Run the checks
Run checks 1 to 4 against the branch's committed tree and record each result.
- Tests. Run
git branch -f main origin/main, then runtests/.venv/bin/python tests/run.py --changed --runtime claude-code --record. It runs the offline tests, then the model tests covering every changed file. When it writestests/releases/<version>/, commit that folder. Any failed case is a failed check: fix the cause, then record again; the attempt count it prints goes in the pull request. When it refuses because the version is unchanged, the change needs a version: return to step 4 of section 1. - CI, locally. Run
PYTHON=tests/.venv/bin/python .github/validate.sh, the script thevalidatejob runs on every pull request. It must exit 0. Its last step is the release gate: it fails when the recording from check 1 is missing, failed, or does not match a covered file's current content. - Manifests. List
agents/,skills/andworkflows/from disk and diff them against.claude-plugin/plugin.jsonand.claude-plugin/marketplace.json. Grep the repo for by-name references to anything added, renamed or removed in this release. - Changelog. Skip this when the change carries no version. Otherwise the new entry is present and follows the style of the entries above it.
- If
origin/mainmoved while you were working, rebase onto it and run these checks and the review again against the new head commit. Check 1 records again only when check 2's gate fails.
3. Get it cleared
| What the change touches | Reviewer |
agents/, skills/, workflows/, .claude-plugin/ — what users receive | required |
.github/, hooks/, scripts/ — what runs the checks and the guard | required |
.claude/ except this skill; README, CHANGELOG, CLAUDE.md, CONTRIBUTING.md, SECURITY.md, LICENSE, .gitignore, PHILOSOPHY.md, DESIGN.md, assets/, skills.sh.json | not required |
| any path not listed above | required — an unclassified path fails closed |
This skill sits in .claude/skills/release/ and counts as running the checks,
so a change to it needs a reviewer.
When the table says a reviewer is required, dispatch one independent
reviewer holding the diff, the check results from section 2, and the table
above. When check 1 wrote tests/releases/<version>/, the reviewer also
confirms its manifest.json matches the run report at the tests/results/
path the manifest names.
The reviewer must have no ability to edit the repository, and whoever
authored the release never clears it.
Ask for one verdict: CLEAR or BLOCKED, with findings, naming the exact head commit it covers. When the release changes a frontmatter description, the reviewer also rules on whether the new wording routes the way the change intends.
BLOCKED sends the work back. After a fix, the next verdict names the new head commit.
4. Open the pull request
- Push the branch to origin.
- Open or update the pull request against main. The body carries the
verdict and the commit it names, every check from section 2 with its
result, and the path to
tests/releases/<version>/when check 1 wrote one. - Stop there. Never merge — the user merges, always.
- Tell the user, when handing over: merge only while the verdict names the pull request's current head commit. A force-push replaces that commit and voids the verdict.
5. Publish
Runs after the user merges, never before: a tag belongs on a merge commit. Skip this section when the change carries no version — there is nothing to tag, and nothing new for anyone to install.
- Pin the merge commit. Read it with
gh pr view <number> --json mergeCommit. Check out main, pull, and confirm that commit is on it. Tag that SHA. Never tag local HEAD. - Tag it
vX.Y.Zand push the tag. - Publish to every target in the table below.
- Confirm the pull request's
validatecheck passed on the head commit that was merged, and that main's branch protection requires branches to be up to date (required_status_checks.strictis true). If it is not, the merged tree is untested: run.github/validate.shon the merge commit and report the result. - Comment on the merged pull request with the tag, each target's proof, and the CI result.
| Target | What publishes it | Proof it published |
The maddog marketplace (Harish-here/maddog) | The merge itself — marketplace.json points at the repo root, so main HEAD is what installs. | A fresh install reports the new version. |
| Plugins that depend on maddog | claude plugin tag --push, run on the pinned merge commit, creating maddog--vX.Y.Z. | Both output lines: Created tag maddog--vX.Y.Z and Pushed to origin. |
Adding a marketplace adds a row. No step above it changes.
When claude plugin tag --push refuses: a tag already on this commit is the
end state you wanted, so record it and carry on. A dirty tree gets committed
or stashed, never discarded, and if the changes are not yours, hand back to
the user. A version disagreement between the manifests is a failure — stop
and report it. A tag created but not pushed is not done: run the git push
it prints.
If a published release breaks users
Revert it on a fresh branch, then run this procedure again as a patch release. Never revert a revert — fix forward instead.
Never
- Report a release as done while a check is unrun and unmentioned. A check that cannot run here is named in the pull request, with the reason.
- Publish half of a multi-part change. Stage every part on one branch until the whole change is ready.
- Narrow
.github/workflows/validate.ymlto selected paths, or delete it while pull requests still require it. - Add a step to this file without removing one.
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.

