From armory
Automated release pipeline that merges main, runs tests, performs pre-landing review, bumps version, generates changelog, creates bisectable commits, and opens a PR. Stops on failure with remediation instructions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/armory:ship-workflowThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Automated release pipeline that takes a feature branch from working state to
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.npx claudepluginhub mathews-tom/armory --plugin armoryAutomates end-to-end branch shipping: merge base, run tests with failure triage, audit coverage, review diffs, bump version, commit, push, create PR. Use for 'ship', 'push to main', or 'create PR' requests.
End-to-end ship workflow — merge base, run tests, review diff, bump version, commit, push, create PR. Use when asked to "ship", "push to main", "create a PR", "get this merged", or "deploy this branch".
Automates code shipping: merges base branch, runs detected tests, performs multi-review with auto-fixes, commits, pushes, creates PR. Use /ship or say 'ship it'.