Skip to content
Back to skills

Ship

ASecurity

Ships Kaizen work as a reviewable PR — green checks, size under the limit (otherwise split into stacked PRs), conventional commits with Jira, branch push (never the default branch), PR with a description from the plan (goal, covered requirements, evidence, constitution check, rollout and rollback) and a reviewer guide; then offers /kaizen:watch-pr. Can also only draft or refresh a PR description. Use when the user says "open the PR", "ship it", "push and create the PR", "update the PR descrip...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 19, 2026
ai-agentsgobashnodegit

Works with

  • mcp

Security analysis

A100/100

Scanned October 19, 2026

npx -y skills add Lingelo/dojo --skill ship --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ship?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ship
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lingelo-ship/badge)](https://www.skillsdirectory.com/skills/lingelo-ship)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ship
description: Ships Kaizen work as a reviewable PR — green checks, size under the limit (otherwise split into stacked PRs), conventional commits with Jira, branch push (never the default branch), PR with a description from the plan (goal, covered requirements, evidence, constitution check, rollout and rollback) and a reviewer guide; then offers /kaizen:watch-pr. Can also only draft or refresh a PR description. Use when the user says "open the PR", "ship it", "push and create the PR", "update the PR description", /kaizen:ship.
allowed-tools: Bash(node:*), Bash(git:*), Bash(gh:*), Read, Write, Edit, Glob, Grep, AskUserQuestion
argument-hint: "[plan path] [description-only | refresh-description] [draft] [mode:auto]"
---

# Ship — a PR reviewers want to review

DORA 2025: with AI, PRs grow and **human review becomes the bottleneck**. A Kaizen PR is small, tells its
own story, and tells the reviewer where to look.

Read `${CLAUDE_PLUGIN_ROOT}/references/conventions.md`.
`K="${CLAUDE_PLUGIN_ROOT}/scripts/kaizen.mjs"`

**`mode:auto`** (set by `/kaizen:work`, `/kaizen:autopilot`, `/kaizen:watch-pr`): no questions; returns
`{ status: shipped|local-only|blocked, pr_url, branch, commits, size, notes }`.

## Modes

- **description-only** — draft the description (step 4) and show it; only publish if asked.
- **refresh-description** — the PR exists: rewrite its description if it no longer matches the diff
  (behavior added/removed, approach changed, concerns lifted) and apply it with
  `gh pr edit <n> --body-file`. If it is still accurate, touch nothing and say so.
- **default** — steps 1 to 6.

## 1. Preconditions

- `git status --short`: uncommitted files? Those of the work in progress are committed per unit; the
  user's never leave without their approval (question interactively, `blocked` in auto).
- Current branch ≠ default branch (otherwise create `<type>/<topic>` and move the unpushed local
  commits with the user's approval). Never a push to the default branch.
- Empty `git remote` → **local only**: commits made, nothing else; say so in one line.

## 2. Barriers

1. `node "$K" verify` green (red → stop: `/kaizen:work` or `/kaizen:debug`).
2. Review done: a `/kaizen:review` report from this session on this diff, or an explicit instruction
   to skip it. Otherwise, run it (`mode:agent` in auto) and handle the P0/P1.
3. `node "$K" size` under `pr.max_lines`. Above it:
   - **interactive** — propose **splitting** into stacked PRs: one branch per plan slice (or per
     coherent group of units), each based on the previous one, `gh pr create --base <previous
     branch>`. Or shipping as one block with a justification in the PR;
   - **auto** — ship as one block, with the "Size" section explaining why.
4. Constitution: if the plan declares exceptions, they go into the PR.

## 3. Commits and push

Remaining commits in conventional format (`<type>(<JIRA>): …`, key read from the branch), files named
explicitly. Check the review: `node "$K" review check` — refused → `kaizen:review` (`mode:agent` in
`mode:auto`), P0/P1 fixes, then resume; a waiver is only possible at the user's request, confirmed by
them (`review waive --reason`, then they type `kaizen waive <code>`) — never in `mode:auto`. Then
`git push -u origin <branch>` (never `--force`; `--force-with-lease` only on a branch this session
created and rewrote, with approval).

## 4. Description

Title: conventional, ≤ 72 characters (`feat(SHOP-412): export filtered orders as CSV`). Body, from the
plan (`plan:` or the plan cited in the commits) and the real diff — **never** from the plan alone if the
code diverged. Written in the configured language (`config.language`, `auto` = the conversation's);
the section titles below are translated with it:

```markdown
## Why
<capsule goal, 1 to 2 sentences; link to the plan and the ticket>

## What changes
- <visible behavior, one bullet per covered requirement: R1, R2…>

## How to review (reviewer guide)
1. Start with `<file>`: <the heart of the change>
2. Then `<file>`: <…>
- Look closely at: <the decision or risk where a human eye matters most>
- Can be skimmed: <generated tests, renames, mechanical files>

## Evidence
- `<verification command>` ✅ · acceptance examples AE1–AE3 covered by <tests>
- Kaizen review: <verdict, remaining findings>

## Rollout and rollback
<summary of kaizen:rollout: exposure, order, rollback, signal>

## Constitution
<only if there are exceptions: article, reason>

## Review waived
<only if `node "$K" review status` shows `verdict: waived`: reason given by the user, confirmation
date, and what was therefore not reviewed — mandatory section, never removed>

## Open points
<findings not applied, decisions left to the human — or delete the section>

🤖 Prepared with Kaizen
```

Add the `<!-- kaizen -->` marker as the last line (it keeps PR watching from taking this text for
feedback to handle).

## 5. Open

A PR already exists for the branch (`gh pr view --json url`) → update it (`gh pr edit`) instead of
opening a second one. Otherwise `gh pr create --title … --body-file … [--draft] [--base <base>]`.
Without `gh`, use the GitHub MCP tools if available; otherwise give the creation URL and the body.

## 6. Follow-up

Give the URL. Propose `/kaizen:watch-pr <url>` (Recommended) to drive it to "ready to merge" —
comments handled, CI repaired — without ever merging in the human's place.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.