mcpbeat Sign in

Release Agent Skill

Release gentle-pi through GitHub and npm. Trigger: release, publish, npm publish, GitHub release, version bump.

1k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
828
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/Gentleman-Programming/gentle-pi --skill release

The instruction itself

5 sections, as written by the author

When to Use

Use this skill when preparing, publishing, or verifying a gentle-pi release.

Hard Rules

  • Do not publish gentle-pi to npm from a local machine.
  • npm publishing MUST go through the GitHub Actions workflow .github/workflows/publish.yml so provenance, environment protection, and registry credentials are controlled by GitHub.
  • Dispatch the trusted workflow definition from protected default main, never from a release tag. Its only caller input is the exact annotated version tag.
  • Use a clean worktree for release commits. Do not package unrelated local files or scratch artifacts.
  • Review outcomes are informational. Release delivery follows ordinary repository policy and must not be blocked, authorized, or rewritten by RDD.
  • Never infer the release tag target from local HEAD; use the freshly fetched origin/main commit and the repository's normal release safeguards.
  • Never skip package verification. The publish workflow runs verification again, but local validation should still pass before tagging.

Release Procedure

  • Inspect state
   git status --short
   git fetch origin main --tags
   git log --oneline --decorate --max-count=5 origin/main
  • Prepare the release commit
  • Apply only intended changes.
  • Bump package.json to the next semver version.
  • Keep lockfile changes out unless dependency resolution actually changed.
  • Verify locally
   pnpm test
   node scripts/verify-package-files.mjs
   npm pack --dry-run

npm pack --dry-run verifies package contents and lifecycle scripts without entering a publish path.

  • Commit and push
   git add <intended-files>
   git commit -m "<type(scope): release-ready change>"
   git push origin HEAD:main
   git fetch origin main --tags
  • Create and verify the exact version tag
   version="$(node -p "require('./package.json').version")"
   tag="v${version}"
   release_sha="$(git rev-parse 'origin/main^{commit}')"

   test "$(git rev-parse 'HEAD^{commit}')" = "${release_sha}"
   test -z "$(git ls-remote --tags origin "refs/tags/${tag}")"

   git tag -a "${tag}" "${release_sha}" -m "gentle-pi ${tag}"
   test "$(git rev-parse "${tag}^{commit}")" = "${release_sha}"

   git fetch origin main
   test "$(git rev-parse 'origin/main^{commit}')" = "${release_sha}"
   git push origin "refs/tags/${tag}"

   git fetch --no-tags origin "refs/tags/${tag}"
   test "$(git rev-parse 'FETCH_HEAD^{commit}')" = "${release_sha}"

   gh release create "${tag}" \
     --repo Gentleman-Programming/gentle-pi \
     --verify-tag \
     --title "gentle-pi ${tag}" \
     --notes "<release notes>"

Do not retag or overwrite an existing version. The tag target comes from the freshly fetched immutable origin/main commit, not an ambient local branch.

  • Publish npm through GitHub Actions
   version="$(node -p "require('./package.json').version")"
   tag="v${version}"
   gh workflow run publish.yml \
     --repo Gentleman-Programming/gentle-pi \
     --ref main \
     -f tag="${tag}"

The workflow definition always comes from protected default main. It accepts only one exact vSemVer tag, fetches the remote annotated tag and current remote main, and requires the peeled tag commit, dispatch/main workflow commit, checkout, and package.json version to match. It re-queries remote tag and main immediately before npm publication, derives the dist-tag internally, and uses trusted OIDC with provenance.

Watch the run and fail the release if it fails:

   gh run list --repo Gentleman-Programming/gentle-pi --workflow publish.yml --limit 3
   gh run watch <run-id> --repo Gentleman-Programming/gentle-pi --exit-status
  • Verify npm
   npm view gentle-pi@<version> version --registry=https://registry.npmjs.org/
   npm dist-tag ls gentle-pi --registry=https://registry.npmjs.org/

Failure Handling

  • A publication failure is handled through ordinary repository policy. It does not reopen or alter a review lineage.
  • Never attempt or retry npm publish locally. Re-dispatch from trusted main only when the same tag still targets the current remote main and the failure was publication-only.
  • If remote main advances, do not move or recreate the existing tag. Prepare a new release commit/version and create a new annotated version tag.
  • If the workflow fails, inspect logs with:
  gh run view <run-id> --repo Gentleman-Programming/gentle-pi --log
  • If npm verification is briefly stale after a successful workflow, check the exact version first (npm view gentle-pi@<version> version) before assuming publish failed.

Output Contract

Report:

  • Commit SHA pushed to main.
  • Exact version tag and its peeled commit SHA.
  • GitHub release URL.
  • Publish workflow run URL and conclusion.
  • npm exact version and the workflow-derived dist-tag (latest, beta, or next).
  • Any remaining follow-up or warnings.

How to use it

Copy the folder

Take gentleman-programming/release from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.