Add /ship skill — complete shipping workflow#46
Conversation
Single command that orchestrates: branch check → merge main → run tests → multi-review with fix-first → commit → push → create PR. Non-interactive by design — only stops for genuine blockers (merge conflicts, test failures, ASK items from review). Replaces the simpler /commit-push-pr with a full pipeline. Optional version bump + changelog when those files exist in the project. Inspired by gstack's ship workflow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Code ReviewOverall this is a solid, well-structured skill. The non-interactive philosophy is clearly articulated and the Gates section is excellent. A few things worth addressing: Issues1. Missing Per the skills CLAUDE.md, 2. Over-prescription (violates skill-creator conventions) The
The current skill is structured as 8 numbered sequential steps — exactly the pattern to avoid. The token budget guidance also says skills should be under 500 words; this is substantially over. Consider restructuring to describe goals and constraints per step rather than procedures. 3. Inaccurate multi-review terminology Step 3 says multi-review will "AUTO-FIX obvious issues" and "Present ASK items" — but multi-review's actual output categories are Fixed / Wontfix / Deferred. The ASK/AUTO-FIX vocabulary doesn't match the actual command behavior, which could cause the LLM to wait for signals that never come. 4. Broad trigger may cause false positives
5. No handling for existing PR
6. Hardcoded model in Co-Authored-By This hardcodes Opus 4.6 regardless of the actual running model. Either make this generic ( Minor
What's working well
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 23226fc11b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
plugins/core/skills/ship/SKILL.md
Outdated
| version: 1.0.0 | ||
| triggers: |
There was a problem hiding this comment.
Add required skill category metadata
The skill frontmatter is missing a category field, but this repository’s validator requires every skill to include it (scripts/validate-frontmatter.py → validate_skill checks name, description, triggers, and category). Leaving it out causes frontmatter validation/pre-commit to fail and makes this skill non-compliant with the project schema.
Useful? React with 👍 / 👎.
| ``` | ||
| git fetch origin <base> | ||
| git merge origin/<base> | ||
| ``` |
There was a problem hiding this comment.
Stash or commit dirty changes before merging base
This step merges origin/<base> directly even though the workflow explicitly allows unstaged/staged changes to exist until later, which can cause Git to abort with local-overwrite errors and halt /ship before tests/review/commit. I verified CLI semantics via git merge -h, which shows --autostash is optional (not default), so dirty working trees are not automatically protected during merge.
Useful? React with 👍 / 👎.
- Add category: workflow to frontmatter - Remove overly broad "create a PR" trigger - Fix multi-review terminology to use Fixed/Wontfix/Deferred - Add skip instruction for --skip-tests/--quick in Step 2 - Add existing PR check before gh pr create, add --base flag - Use generic Co-Authored-By: Claude <noreply@anthropic.com> - Use fast local git rev-parse for base branch detection - Stash uncommitted changes before merge if needed Co-Authored-By: Claude <noreply@anthropic.com>
Code ReviewThis is a well-conceived skill with a clear philosophy. A few observations, including some corrections to the prior review: Corrections to prior reviewThe previous review flags several issues that are not actually present in the diff:
Real issues1. Format divergence from the skills corpus Every other skill in this repo uses XML-style semantic tags ( 2. Over-prescription (valid point from prior review) The 3. Token budget The 500-word guideline ( 4. Pre-existing test failure detection is underspecified
How should the LLM actually verify a failure is pre-existing? Running tests on the base branch doubles the test time and adds complexity. This is a genuinely hard edge case — worth either specifying the mechanism (e.g., 5. Stash/unstash path is underspecified
What if Minor
What's working well
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| first. Do not create branches for them — that's a decision about naming and scope. | ||
|
|
||
| 2. **Detect base branch**: Check `git remote show origin` or common names (main, master, | ||
| develop). This is the merge target. |
There was a problem hiding this comment.
Contradictory base branch detection methods cause ambiguity
Medium Severity
The Pre-flight step 2 instructs the agent to detect the base branch using git remote show origin (a network call), while Step 1 instructs it to use git rev-parse --abbrev-ref origin/HEAD (a local operation). These two commands can return different results — e.g., if origin/HEAD isn't set or points somewhere different than what git remote show origin reports. Since this skill targets an AI agent that follows instructions literally, the contradictory guidance could lead to detecting different base branches at each step, potentially merging from or targeting the wrong branch for the PR.
Additional Locations (1)
| ## Pre-flight | ||
|
|
||
| 1. **Branch check**: If on main/master, STOP. Tell the user to create a feature branch | ||
| first. Do not create branches for them — that's a decision about naming and scope. |
There was a problem hiding this comment.
Branch guard only checks main/master, not detected base branch
Medium Severity
The Pre-flight branch check (step 1) only stops the workflow if on main/master, but step 2 can detect develop (or other branches) as the base branch. If a user is on develop and develop is the detected base, the guard doesn't fire, and the skill proceeds through the entire pipeline — merging develop into itself, running tests, review, committing, pushing — only to fail confusingly at PR creation (creating a PR from develop to develop). The branch check needs to guard against being on any detected base branch, not just main/master.


Summary
/shipskill that orchestrates the full shipping pipeline in one commandChanges
plugins/core/skills/ship/SKILL.md— new skill (180 lines)--skip-tests,--skip-review,--quick/commit-push-prfrom external pluginTest plan
/shipon a feature branch with changes--quickflag skips tests and review🤖 Generated with Claude Code