release-prep
Skill4 starsChanged 6 months agoApache-2.0View on GitHub
Prepare a release on the develop branch. Verifies that user-visible changes in ## Development have matching docs updates since the last tag, then drives the version-bump skill. Use before opening the release PR from develop into main.
- Commits and pushes
23 other projects use a version of this.
Adopted by
Most recently taken up by
- colonyops/hivetheir own version, first seen Nov 7, 2026
- microsoft/durabletask-pythontheir own version, first seen Nov 2, 2026
- Terryc21/sitreptheir own version, first seen Nov 1, 2026
- kala-project/acp-kittheir own version, first seen Oct 20, 2026
- finch-xu/cc-routertheir own version, first seen Oct 15, 2026
- barlevalon/skillstheir own version, first seen Oct 13, 2026
Other versions23 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 23
- dathere/qsv★ 3.8ksame name
- Devolutions/IronRDP★ 3.3ksame name
- johnhuang316/code-index-mcp★ 1ksame name
- Trampoline-AI/predict-rlm★ 436same name
- Fu-Jie/awesome-openwebui★ 326same name
- Fu-Jie/openwebui-extensions★ 326same name
- finch-xu/cc-router★ 293same name
- ten9876/AetherSDR★ 259same name
- ayutaz/piper-plus★ 240same name
- opencrvs/opencrvs-core★ 122same name
13 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.
- AGENTS.mdAGENTS.md
- .claude/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- .cursor/rules/codegraph.mdcCursor rule
- changelogSkill
- check-licensesSkill
- verificationSkill
- version-bumpSkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 4 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 21 edited versions we read keep these.
4
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
- Very specific: line 11
NOT replace verification (make verify) - it focuses on whether each user-visible bullet in ## Development is documented in the right place.
- Very specific: line 24
If not develop, ask the user whether to switch or abort.
- Distinctive: line 32
If there are uncommitted changes, list them and ask whether to continue.
- Very specific: line 41
If there is no prior tag (first release), set LAST_TAG to the first commit.
- Very specific: line 49
If entries is empty: tell the user "no development changes recorded since $LAST_TAG.
- Very specific: line 53
If entries has fewer than 2 bullets: warn "release contains only N change(s).
- Very specific: line 76
When a bullet matches keywords from multiple rows (e.g.
- Distinctive: line 81
If a bullet matches no area, ask the user to classify it before proceeding.
- Distinctive: line 127
Do not proceed past Step 4 while any RED row is unresolved.
- Distinctive: line 131
When all rows are GREEN, SKIP, or internal:
“Common” is measured: kept by at least 6 in 10 of the 21 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
Instructions
Announce at start: "I'm using the release-prep skill."
This skill is the docs-aware gate before cutting a release. It does
NOT replace verification (make verify) - it focuses on whether
each user-visible bullet in ## Development is documented in the
right place. Run it on develop after all feature branches have
merged.
Step 0 - Sanity checks
Confirm the current branch is
develop:git rev-parse --abbrev-ref HEADIf not
develop, ask the user whether to switch or abort.Confirm the working tree is clean:
git status --shortIf there are uncommitted changes, list them and ask whether to continue.
Find the last release tag:
LAST_TAG=$(git describe --tags --abbrev=0 --match='v*' 2>/dev/null)If there is no prior tag (first release), set
LAST_TAGto the first commit. Tell the user which baseline is being used.
Step 1 - Read ## Development
Extract every bullet under ## Development in CHANGES.md into a
list entries.
If entries is empty: tell the user "no development changes recorded
since $LAST_TAG; release would be empty. Abort?" and stop unless
the user explicitly wants to proceed.
If entries has fewer than 2 bullets: warn "release contains only
N change(s); confirm before proceeding."
Step 2 - Classify each entry by area
For each bullet, infer the area it touches by keyword matching against the bullet text (case-insensitive). Use the table below; the first match wins.
| Keywords in bullet | Area | Expected docs |
mcp, proxy, transport, jsonrpc, sse, streamable, grpcfetcher, lazy fetch, session refresh | mcp | docs/architecture.md, docs/configuration.md |
init, wizard, auto, detect, vault selection | init | docs/configuration.md, README.md |
plugin, gopass, keychain, pinentry | plugins | plugins/<name>/README.md, docs/plugins/*.md, PLUGINS.md |
daemon, session, socket, grpc, reload, sighup | daemon | docs/architecture.md, docs/configuration.md |
cli, flag, subcommand, command, argument | cli | README.md, docs/configuration.md |
sdk, provider, proto/ | sdk | docs/plugins/authoring.md, docs/plugins/compatibility.md |
agent, claude code, cursor, gemini, codex, hook | agent | docs/agent-integration.md |
config, yaml, mcp.servers, logging. | config | docs/configuration.md |
install, release, tag, version, binary | install | README.md, docs/install.md, docs/release.md, docs/verification.md |
debug logging, mask, redact, security, gpg verify | security | docs/security/debug-logging.md, docs/verification.md |
lint, test, coverage, refactor (internal) | internal | (none expected) |
When a bullet matches keywords from multiple rows (e.g. an MCP
config change), the first match in the table wins. The mcp row is
listed first so MCP-flavoured session/grpc bullets do not get
misrouted to the daemon row.
If a bullet matches no area, ask the user to classify it before proceeding.
Step 3 - Check docs were updated for each area
For each non-internal area, run:
git diff --name-only "$LAST_TAG"..HEAD -- <expected docs path(s)>Record the result per entry: GREEN if at least one expected doc was touched in the range, RED if none were touched.
Print the table:
Area | Entry | Docs touched | Verdict
----------|------------------------------------------|--------------|--------
mcp | locksmith mcp run --url retries on ... | docs/arch... | GREEN
init | locksmith init no longer offers ... | (none) | RED
plugins | gopass: handle GPG agent timeout | plug/gop... | GREEN
internal | refactor: extract helper | n/a | SKIPStep 4 - Resolve RED rows
For every RED row, prompt the user with the bullet and three options:
RED: <bullet text>
Expected docs (untouched since $LAST_TAG): <paths>
Choose:
[d] add/update docs now (you will edit before continuing)
[i] mark as internal (rewrite the bullet or drop it during changelog compression)
[s] skip - I will handle docs separatelyd: pause and let the user edit; when they saydone, re-check the diff for that area and update the verdict.i: note the entry as internal; it will be classified as drop duringchangelogcompression.s: record the override and proceed. Note: this is escape-hatch; the release will still flag the gap in the final summary.
Do not proceed past Step 4 while any RED row is unresolved.
Step 5 - Drive the release
When all rows are GREEN, SKIP, or internal:
- Print the final docs verdict table for the record.
- Invoke the
version-bumpskill via theSkilltool. It will bumpsdk/version/VERSION, optionally invokecheck-licenses, sync the README install pin, and invokechangelogto compress## Development. version-bumpprints its own "next steps" block when it finishes; do not duplicate it.
Step 6 - Reminder
HARD RULE. This skill never runs
git push,git tag, or opens a PR. The commandsversion-bumpprinted in Step 5 are for the user to execute. Stop after printing the reminder below.
End with:
Release prepared on develop. Verification (lint/race/coverage/docs)
is NOT part of this skill; run `make verify` or the `verification`
skill before opening the PR.
Direct push to main is forbidden - the release lands via PR review.
Push develop, open the PR, merge it, and tag the merge commit
yourself using the commands version-bump printed above.Notes
- This skill is for the integration step on
develop, not for hotfixes targetingmaindirectly. For hotfix flow seeCONTRIBUTING.md. - The keyword classification is heuristic; ambiguous bullets always fall through to user prompts.
- The
internalbucket here mirrors thedropbucket in thechangelogskill - both indicate "do not surface to release notes."
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.

