mcpField
S
ship

ship

github.com/raphaelsalajaCloud & DevOps6294 installsUpdated 4d ago
Repository

About ship

ship is a skill for taking finished changes from a working tree through commit, push, and deployment checks. It guides developers through small Conventional Commits, pull requests, CI monitoring, and confirming the live result.

Key features

  1. 01Checks changed files and scans for secrets
  2. 02Creates a commit per logical change
  3. 03Uses Conventional Commit messages
  4. 04Pushes and manages merges and branches
  5. 05Monitors CI checks
  6. 06Verifies the live deployment

Use cases

  1. 01Shipping a finished feature or fix
  2. 02Preparing separate pull requests for changes
  3. 03Confirming CI and production status

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/raphaelsalaja/skills --skill ship

After installing, type/shipin Claude Code to confirm it loaded.

Bundled filesagents/openai.yaml

Details

From the project README

Ship

This skill takes finished work from the working tree to production. It commits in small pieces, pushes, merges, watches checks and confirms the result is live.

Push means push

When the user says push, ship or merge, do every step to the end. Handing a command back to the user is a finding unless it needs their credentials or their approval. A secret in a commit is always HIGH.

Checking the change itself runs in verify before this skill starts.

1. Check the tree

Run git status and read every changed file. Name any file you did not change in this task and ask before committing it. Committing a stray file is ship-flag-stray-files. Scan the diff for keys, tokens, passwords and .env files. A committed secret is ship-no-secrets.

2. Commit per change

Make one commit per logical change. One commit for a feature, a fix and a rename is ship-commit-per-change. Write every message as a Conventional Commit: type(scope): summary in the imperative, lowercase and with no full stop. Use feat, fix, docs, refactor, chore or another standard type, and mark a breaking change with ! after the type. A message like "Remove the archive." is ship-conventional-commits. In a package that publishes releases, add the changeset with the change. A release-bound change with no changeset is ship-changeset-for-packages.

3. Push, merge and tidy

Push the branch. When asked to merge, merge it, delete the branch and switch back to the default branch. A merged branch left behind is ship-merge-and-tidy. Open one pull request per bug or feature. A pull request bundling three fixes is ship-one-pr-per-bug. A pull request that changes UI carries a screenshot. That is ship-screenshot-ui-prs.

4. Watch the checks

Wait for CI and fix what fails. Reporting "pushed" while checks are red or still running is ship-watch-checks.

5. Close the loop

When the change fixes an issue, link it, close it and reply where it was raised. A fixed bug with its issue left open is ship-close-the-loop. When the change deploys, open the live URL or the published version and check it. "Deployed" with no look at production is ship-confirm-live.

6. Hand back only what needs the user

Do every step you can run yourself. Ask only for a login, a two-factor code or an approval. Say exactly which. A list of commands for the user to run is ship-do-the-steps.

The pair

Every check is a pair. The broken line sits beside the line that replaces it.

RuleBrokenReplacement
ship-flag-stray-filesgit add -A with someone else's file in the treeThe file named, then a question
ship-no-secrets.env.local committed.env.local ignored, the secret flagged for rotation
ship-commit-per-changeOne commit for a feature, a fix and a renameThree commits, one per change
ship-conventional-commitsRemove the archive.chore: remove the archive
ship-changeset-for-packagesA package fix with no changesetThe changeset in the same commit
ship-merge-and-tidyMerged, the branch still checked outMerged, deleted, back on main
ship-one-pr-per-bugOne pull request for three bugsThree pull requests
ship-screenshot-ui-prsA UI pull request with no imageA screenshot in the description
ship-watch-checks"Pushed" while CI runs"Pushed, all checks pass"
ship-close-the-loopThe fix merged, the issue openThe issue linked, closed and answered
ship-confirm-live"Deployed""Live at the production URL, checked"
ship-do-the-steps"Run npm publish when ready"Published, or "needs your two-factor code"

Reporting

Severity. HIGH is a committed secret, a stray file committed or a release with failing checks. MEDIUM is a bundled commit or pull request, an open issue after the fix or steps handed back that could have run. LOW is a message that is not a Conventional Commit, a missing screenshot or a branch left after merge.

Format. One finding per root cause, citing the step when no file applies:

file:line - [rule-id] what is wrong
step 3 - [rule-id] what is wrong

Then a Rule | Count | Severity summary. Block when any HIGH remains, Approve otherwise. Mark every check you could not watch to the end as Not verified.

Comments

Markdown supported