From mblode-agent-skills
Drives the full npm release flow for changesets-based packages: create changeset, fix quality, push, watch CI, merge Version Packages PR, verify npm publish.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mblode-agent-skills:autoshipThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Drive an npm release end to end: changeset, fix loop, push, CI watch, Version Packages PR merge, publish watch, npm verification.
Drive an npm release end to end: changeset, fix loop, push, CI watch, Version Packages PR merge, publish watch, npm verification.
pr-creator), monitoring a feature PR for reviews, conflicts, or CI (use pr-babysitter), general build/type fixes outside a release flow, or scaffolding a new package (use scaffold-cli, which hands off to autoship for the first release).One workflow, two successive runs. Misreading it as two workflows causes most autoship mistakes.
.changeset/*.md file to the default branch.changesets/action sees pending changesets, runs changeset version in CI, and opens or updates a PR titled "Version Packages" on branch changeset-release/main with the package.json bump and CHANGELOG.md updates.publish: script (changeset publish), pushing tags and publishing to npm.The local job ends at "push the changeset file". CI owns versioning and publishing; anything versioned locally breaks the loop (see Gotchas).
| File | Read when |
|---|---|
references/changeset-and-commit.md | Changeset, quality gates, commit and push (Steps 1-3) |
references/ci-polling.md | Monitor scripts, CI failures, Changeset Status check (Steps 4-5) |
references/version-pr-and-publish.md | Finding/merging the Version Packages PR, watching publish (Steps 4-5) |
| Intent | Steps | Notes |
|---|---|---|
| Full autoship (ship / release / publish) | 1-5 | Default entry point. End-to-end through publish, no intermediate prompts |
| Create changeset only | 1 | Stage a release without pushing |
| Fix quality and push | 1-2 | Changeset + fixes + commit, no CI watch |
| Watch CI only | 3-5 | Changes already pushed |
| Merge version PR only | 4-5 | CI already passed; auto-merges once preconditions are met |
| Fix compiler only | 2 | Inside an autoship/release flow only; no changeset needed |
If the user says "ship it" without explicit npm release context, route to pr-creator.
Invoking autoship is standing consent for the full release flow. Do not pause mid-flow to re-confirm; gate risky steps with objective preconditions instead.
gh run list, gh run view, gh pr list, gh pr checks, npm view, reading CI status, listing changesets, reading package.json scripts, git log, git status.git add/commit/push, starting Monitor background watches, and gh pr merge of the Version Packages PR once its identity is confirmed and all checks are green.Copy this checklist to track progress:
Autoship progress:
- [ ] Step 1: Create changeset (default patch)
- [ ] Step 2: Fix lint, types, tests, format
- [ ] Step 3: Commit + push changeset (do NOT run `changeset version`)
- [ ] Step 4: Monitor CI and find/merge the Version Packages PR
- [ ] Step 5: Watch the publish run, verify on npm
references/changeset-and-commit.md.ls .changeset/*.md 2>/dev/null | grep -v README.md. If any exist, ask the user whether to add another or skip.patch; use minor or major only on explicit user instruction.git log --oneline -10.references/changeset-and-commit.md (skip the changeset sections for the "Fix compiler only" intent).package.json scripts (build, typecheck, tsc, type-check, lint, test, format); in non-npm repos check Makefile, Cargo.toml, pyproject.toml, go.mod.lint --fix, format) to changed files where supported. After any fixer, check git status: broad scripts routinely reformat files outside your change (MDX is a frequent casualty). Revert unrelated churn with git restore <path> before continuing.git add <paths>, never git add -A. Sweep git status --porcelain for stray generated artifacts (e.g. a root schema.gql from a pre-commit hook) and unrelated fixer churn before committing.chore: add <type> changeset for <package>) and push.npx changeset version locally. The pushed commit must still contain the pending .changeset/*.md file so CI's "Changeset Status" check passes and the Version Packages PR opens.references/ci-polling.md and references/version-pr-and-publish.md.Monitor watch scoped to the pushed commit SHA, emitting state changes and a TERMINAL: line when every workflow run completes. Do not stop on an idle first poll; runs take time to queue.gh run view <id> --log-failed): flaky/infra failures get gh run rerun <id> --failed up to 3 times; real failures get a fix, commit, push, and a fresh Monitor.changeset-release/main. If absent, start a second Monitor that polls for it, capped at 10 minutes.changeset-release/main. Never merge any other PR.bucket: pass via gh pr checks <number> --json name,bucket.gh pr view <number> --json mergeable reports MERGEABLE (not CONFLICTING or UNKNOWN; on UNKNOWN, wait briefly and re-query).gh pr merge <number> --squash --delete-branch. No confirmation pause; invoking autoship is the consent.references/version-pr-and-publish.md and references/ci-polling.md..github/workflows/ (commonly release.yml, npm-publish.yml, publish.yml) and Monitor its latest run on the default branch.npm view <package> version against the merged package.json, stop all Monitors, report the version. The npm view output is the completion evidence; never report success without it.| Failure point | Response |
|---|---|
| Quality gate still failing after 5 iterations | Stop. Report the gate, remaining error count, last error output |
| CI fails after the changeset push | Classify per references/ci-polling.md: flaky/infra gets gh run rerun <id> --failed (max 3); real failures get fix + push + fresh Monitor |
| "Changeset Status" check fails | Missing changeset: add one (Step 1). Consumed (a local changeset version ran): revert the version bump and CHANGELOG.md edit, re-add the changeset file. Rerunning CI cannot fix consumed state |
| Version Packages PR absent after 10 minutes | Check pending changesets exist on the default branch, the workflow file exists, and the action ran (gh run list) |
| Merge precondition fails | Stop and report. Never override failing checks or resolve conflicts in the bot PR |
| Publish run fails | Never auto-retry. Report with logs; causes: npm auth, OIDC/provenance, tag conflict, registry outage |
npx changeset version locally. It consumes the .changeset/*.md file, so the pushed commit has no pending changeset, the "Changeset Status" check fails, and no Version Packages PR opens. Recovery means reverting the bump, not rerunning CI.npm publish directly. It bypasses changesets, skips the changelog and tags, and leaves the Version Packages PR describing an already-shipped version.CHANGELOG.md or package.json version. CI generates both in the Version Packages PR; local edits create conflicts that make the bot PR unmergeable.gh pr list --json headBranch and gh pr checks --json conclusion are invalid fields and error. Use headRefName and bucket.TERMINAL: line.sleep at 30s or more. Tighter polling burns GitHub API rate limit (gh api rate_limit) and can throttle the flow.format/fix script riding into the release commit ships unrelated reformatting. Scope fixers to changed files; git restore the rest first.git add -A silently commits pre-commit-hook artifacts (e.g. a root schema.gql). Stage explicit paths only.major without explicit user instruction signals breaking changes to every consumer. Default to patch.scaffold-cli: scaffolds a new TypeScript package, hands off to autoship for its first release.pr-creator: opens feature PRs. Autoship only merges the bot-opened Version Packages PR.pr-babysitter: watches feature PRs (reviews, conflicts, CI). Autoship watches release CI only.npx claudepluginhub mblode/agent-skillsConfigures Google's release-please for automated versioning, changelog generation, and publishing via GitHub Actions using Conventional Commits.
Generates SemVer-compliant version bumps and changelog entries from git diffs. Use when cutting releases, tagging, or publishing with precise change summaries.
Automates releases for projects using Keep a Changelog and GitHub: bump detection, CHANGELOG promotion, merge to main, tag, and GitHub Release with a single confirmation gate.