agentleFS
Harish-hereHarish-here/maddog/.claude/skills/release/SKILL.md

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

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.
  • MicrosoftSkill

    create-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

  • GrinvSkill

    changelog-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

  • GrinvSkill

    docs-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 AzureSkill

    component-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 AzureSkill

    documentation-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-devSkill

    launch-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

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
  1. Distinctive:

    Start from a branch whose changes are finished.

    line 18
  2. Very specific:

    Run git fetch origin and rebase the branch onto origin/main.

    line 21
  3. Distinctive:

    Commit any README, manifest or docs text this change made stale.

    line 22
  4. Very specific:

    Commit the version in .claude-plugin/plugin.json and the new CHANGELOG entry.

    line 31
  5. Distinctive:

    Run checks 1 to 4 against the branch's committed tree and record each result.

    line 36
  6. Very specific:

    Tests: Run git branch -f main origin/main, then run tests/.venv/bin/python tests/run.py --changed --runtime claude-code --record.

    line 38
  7. Very specific:

    CI, locally: Run PYTHON=tests/.venv/bin/python .github/validate.sh, the script the validate job runs on every pull request.

    line 46
  8. Very specific:

    If origin/main moved while you were working, rebase onto it and run these checks and the review again against the new head commit.

    line 57
  9. Distinctive:

    When the table says a reviewer is required, dispatch one independent reviewer holding the diff, the check results from section 2, and the …

    line 73
  10. Distinctive:

    Ask for one verdict: CLEAR or BLOCKED, with findings, naming the exact head commit it covers.

    line 81
  11. Distinctive:

    Stop there. Never merge — the user merges, always.

    line 95
  12. Very specific:

    When claude plugin tag --push refuses: a tag already on this commit is the end state you wanted, so record it and carry on.

    line 126
  13. Distinctive:

    Add a step to this file without removing one.

    line 146

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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.

  1. Run git fetch origin and rebase the branch onto origin/main.
  2. Commit any README, manifest or docs text this change made stale.
  3. 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.
  4. Compute the bump against origin/main HEAD: 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.
  5. Confirm the ruled version is unused: it appears in no CHANGELOG heading on origin/main, and no existing git tag matches it.
  6. Commit the version in .claude-plugin/plugin.json and the new CHANGELOG entry.

2. Run the checks

Run checks 1 to 4 against the branch's committed tree and record each result.

  1. Tests. Run git branch -f main origin/main, then run tests/.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 writes tests/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.
  2. CI, locally. Run PYTHON=tests/.venv/bin/python .github/validate.sh, the script the validate job 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.
  3. Manifests. List agents/, skills/ and workflows/ from disk and diff them against .claude-plugin/plugin.json and .claude-plugin/marketplace.json. Grep the repo for by-name references to anything added, renamed or removed in this release.
  4. Changelog. Skip this when the change carries no version. Otherwise the new entry is present and follows the style of the entries above it.
  5. If origin/main moved 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 touchesReviewer
agents/, skills/, workflows/, .claude-plugin/ — what users receiverequired
.github/, hooks/, scripts/ — what runs the checks and the guardrequired
.claude/ except this skill; README, CHANGELOG, CLAUDE.md, CONTRIBUTING.md, SECURITY.md, LICENSE, .gitignore, PHILOSOPHY.md, DESIGN.md, assets/, skills.sh.jsonnot required
any path not listed aboverequired — 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

  1. Push the branch to origin.
  2. 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.
  3. Stop there. Never merge — the user merges, always.
  4. 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.

  1. 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.
  2. Tag it vX.Y.Z and push the tag.
  3. Publish to every target in the table below.
  4. Confirm the pull request's validate check passed on the head commit that was merged, and that main's branch protection requires branches to be up to date (required_status_checks.strict is true). If it is not, the merged tree is untested: run .github/validate.sh on the merge commit and report the result.
  5. Comment on the merged pull request with the tag, each target's proof, and the CI result.
TargetWhat publishes itProof 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 maddogclaude 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.yml to selected paths, or delete it while pull requests still require it.
  • Add a step to this file without removing one.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.