skills/ship-workflow/SKILL.md
Automated release pipeline: merges main, runs tests, pre-landing review, version bump, changelog, bisectable commits, and PR creation. Triggers on: "ship it", "release this", "prepare for release", "open a PR", "push and PR", "land this", "/ship-workflow".
npx skillsauth add mathews-tom/armory ship-workflowInstall 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.
Automated release pipeline that takes a feature branch from working state to merged PR. Executes a deterministic sequence of pre-flight checks, testing, review, versioning, and PR creation — stopping immediately on any failure with specific remediation instructions.
pre-flight → merge main → test → review → version bump → changelog → bisectable commits → push → PR
Each step has explicit stop conditions. The pipeline never auto-resolves ambiguity.
Run all three checks before proceeding:
Not on default branch — detect the default branch dynamically:
git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'
If the current branch matches: STOP. Instruct the user to create a feature branch.
Clean working tree — git status --porcelain must produce no output.
If dirty: STOP. List the uncommitted files and instruct the user to commit or stash.
Up-to-date with remote — git fetch origin then compare local HEAD with
origin/<current-branch>. If the remote is ahead: STOP. Instruct the user to
pull or rebase.
If any check fails, STOP with the specific remediation instruction. Do not proceed.
git fetch origin
git merge origin/<default-branch>
Detect the test command from project configuration using references/project-detection.md:
| Indicator | Test Command |
| ----------------------------------- | ------------------------------------ |
| Makefile with test target | make test |
| package.json with test script | <detected-pkg-manager> run test |
| pyproject.toml with pytest config | uv run pytest (or detected runner) |
| Cargo.toml | cargo test |
| go.mod | go test ./... |
| Gemfile + Rakefile | bundle exec rake test |
Detection order: check each indicator top-to-bottom; use the first match.
Invoke the pre-landing-review skill if available. Otherwise, perform a lightweight
diff review against the default branch:
git diff origin/<default-branch>...HEAD
Review the diff for:
Classification:
Detect the version strategy from project configuration using references/project-detection.md:
| Indicator | Version Location |
| -------------------------------- | ----------------------------- |
| VERSION file | Update file contents directly |
| package.json version field | Update the field |
| pyproject.toml version field | Update the field |
| Cargo.toml version field | Update the field |
| Git tags only | Create tag at push time |
Default bump level: PATCH.
CHANGELOG.md exists: prepend an entry in Keep a Changelog format.Auto-generate the entry from commit messages since the last tag or release. Group entries by conventional commit type:
## [<new-version>] - <date>
### Added
- feat: ...
### Fixed
- fix: ...
### Changed
- refactor: ...
Organize staged changes into logical, bisectable commit groups in this order:
Each commit uses a descriptive conventional commit message. Each commit should pass tests independently when possible (verify if CI turnaround allows it; otherwise trust the ordering).
If all changes are already committed in a reasonable structure, skip reorganization.
git push -u origin <current-branch>
Create the PR:
gh pr create \
--title "<conventional-format-title>" \
--body "<generated-body>"
PR body includes:
Output the PR URL as the final result.
The pipeline halts immediately and reports when any of these occur:
| Condition | Step | Action | | ------------------------ | ---- | ------------------------------------------ | | On default branch | 1 | Stop, instruct to create feature branch | | Dirty working tree | 1 | Stop, list files, instruct to commit/stash | | Behind remote | 1 | Stop, instruct to pull/rebase | | Merge conflicts | 2 | Stop, report conflicting files | | Test failures | 3 | Stop, report failure output | | Critical review findings | 4 | Stop, resolve before proceeding | | MINOR/MAJOR version bump | 5 | Stop, confirm with user |
pre-landing-review skill is not available, the review step degrades to a
lightweight diff scan rather than skipping entirely.testing
Manages dependent branch stacks and stacked pull requests using safe Git topology rules. Triggers on: "create stacked PRs", "publish this stack", "sync my PR stack", "rebase this stack", "merge the stack", "retarget child PRs", "split this branch into stacked PRs", "validate this stack", "cleanup stacked branches". Use when local branches or one source branch need to become a dependency-ordered PR stack with correct parent bases, validation, synchronization, merge order, and cleanup.
development
Scaffolds per-repository agent context so coding agents share the same issue tracker rules, triage label vocabulary, domain glossary, ADR layout, and handoff conventions. Triggers on: "set up project context", "configure agent docs", "create CONTEXT.md", "setup agent workflow", "agent issue tracker setup", "triage labels", "domain glossary for agents". Use when a repo needs durable context files before planning, triage, debugging, TDD, architecture review, or multi-agent implementation.
testing
Produces phased task boards from feature requests: dependency-mapped work items, parallelization flags, risk flags, edge cases, test matrices. Triggers on: "decompose this feature", "task breakdown with dependencies", "phased implementation plan", "work breakdown structure". NOT for effort estimates, use estimate-calibrator.
development
Hypothesis-driven debugging with ranked hypotheses, git bisect strategy, instrumentation planning, and minimal reproduction design. Triggers on: "debug this systematically", "root cause analysis", "bisect this bug", "rank hypotheses", "isolate this issue", "minimal reproduction". NOT for general reasoning.