skills/autoship/SKILL.md
Runs the npm release flow for an existing changesets package: create a changeset, fix lint/type/test/format failures, push, watch CI, merge the Version Packages PR, watch publish, and verify npm. Use when asked to "release this", "publish this package", "autoship", "cut a release", or fix build failures inside a release flow. For feature PRs use pr-creator; for PR monitoring use pr-babysitter; for new packages use scaffold-cli.
npx skillsauth add mblode/agent-skills autoshipInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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 | Writing the changeset file and running each quality gate non-interactively (Steps 1-2) |
| 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.
npm view, pending changesets, package.json scripts, and git history or 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.development
Fans out four concurrent review agents over the current diff, then APPLIES fixes directly to the working tree and verifies the build. Mutates code; it does not produce a report. Covers reuse (duplicate logic, hand-rolled stdlib, reinvented platform features), quality (hacky patterns, React/TypeScript hygiene, over-memoisation, exhaustive-deps, `any`, dead code, `CLAUDE.md`/`AGENTS.md` violations), efficiency (unnecessary work, missed concurrency, hot-path bloat), and test discipline (bug fixes without a repro test, useless tests to delete, missing tests only when they prevent a named failure). Use when the user says "tidy this up", "simplify", "clean up this diff", "polish my changes", "check for duplication", or "any reuse opportunities?", i.e. when the intent is to have the changes made automatically. For a read-only report that lists findings without touching files, use `pr-reviewer` instead. This skill edits code; for the PR's title, description, or commit history, use `pr-creator`.
development
Decides what an interface should do before UI is built or audited: interaction choice, action scope and consequence, reachable states, resilience, and accessibility as task completion. Works from a brief, spec, mockup, intent, or existing UI. Use when asked "is this the right interaction", "design the flow", "what control should this use", "what should this action affect", "which states should this have", "make this resilient", or "what breaks here". For building or styling use ui-design; for built-code audits use ui-audit; for copy wording use copywriting.
development
Builds and stress-tests implementation plans in two modes. Create mode scans code and docs, asks one question at a time with a recommended answer, runs a blindspot pass when the user is new to the area, then writes a plan file. Review mode scores completeness, feasibility, scope, testability, risk, and assumptions, verifies checkable claims, and writes resolutions back until every dimension reaches 5/5. Use when asked to "create a plan", "plan this feature", "I want to build X", "grill me", "think this through", "blindspot pass", "unknown unknowns", "this is new to me", "review my plan", "rubber duck this", "stress test this plan", "is this plan ready", "get this plan to 5/5", "what am I missing", "verify this claim", "prove this plan", "fact-check this plan", or when the user explicitly wants a plan artifact before implementation. For code review use pr-reviewer; for architecture briefs use define-architecture.
tools
Audits the smallest relevant developer-facing surface of a library, CLI, SDK, or npm package across API contracts, errors, CLI behavior, public types, onboarding, and config. Uses candidate-first rule loading, bounded local evidence, and compact root-cause findings. Use when asked to "audit my CLI", "make this CLI agent-friendly", "is this API ergonomic", "review the developer experience", "improve these errors", "simplify first run", or "review my SDK". For end-user UI use ui-audit, for agentic-app trust use ax-audit, for docs prose use docs-writing, for README work use readme-creator, and for repo architecture use define-architecture. Inside a product that also ships a UI, this is the skill for the developer-facing half, so pick it when the complaint is about an import, command, error string, exported type, or config rather than a screen.