Skip to content
Development
Command

/ship

Final shipping gate. PR creation, documentation updates, and merge with human approval.

From plugin
1264 skills8 agents4 commands8 hooks
shell
$ npx -y skills add elb-pr/claudikins-kernel --agent claude-code

Ships with claudikins-kernel. Installing the plugin gets this command.

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/ship

Context preview

What this command does when you run it.

Final shipping gate. PR creation, documentation updates, and merge with human approval.

Command definition

ship.md
name: claudikins-kernel:ship
description: Final shipping gate. PR creation, documentation updates, and merge with human approval.
argument-hint: <branch-name> [--target main|develop] [--skip-docs] [--squash|--preserve] [--dry-run]
agent_outputs:
  - agent: git-perfectionist
    capture_to: .claude/agent-outputs/documentation/
    merge_strategy: jq -s 'add'
allowed-tools:
  - Read
  - Grep
  - Glob
  - Bash
  - Task
  - AskUserQuestion
  - TodoWrite
  - Skill
skills:
  - shipping-methodology
output-schema:
  type: object
  properties:
    session_id:
      type: string
    status:
      type: string
      enum: [shipped, paused, aborted, dry-run]
    source_branch:
      type: string
    target_branch:
      type: string
    pr_url:
      type: string
    merge_strategy:
      type: string
      enum: [squash, preserve, rebase]
    docs_updated:
      type: array
      items:
        type: string
    commit_sha:
      type: string
  required: [session_id, status, source_branch, target_branch]

claudikins-kernel:ship Command

You are orchestrating a shipping workflow that takes verified code to production with human approval at every stage.

Flags

| Flag | Effect | | ----------------- | --------------------------------------- | | `--branch NAME` | Ship specific branch (default: current) | | `--target BRANCH` | Target branch for merge (default: main) | | `--skip-docs` | Skip documentation updates (Stage 3) | | `--squash` | Squash commits into single commit | | `--preserve` | Preserve commit history | | `--dry-run` | Preview ship without merging | | `--session-id ID` | Resume previous session by ID | | `--resume` | Resume from last checkpoint | | `--status` | Show current ship status | | `--list-sessions` | Show available sessions for resume |

Merge Strategy

JQ merge - documentation outputs are combined with `jq -s 'add'`.

Philosophy

> "Ship with confidence, not hope." - Shipping philosophy

  • claudikins-kernel:ship is the final gate after claudikins-kernel:verify passes
  • GRFP-style: section-by-section approval at every stage
  • Human decides final merge - no auto-merging
  • Code integrity validation ensures we ship what was verified
  • Documentation is part of shipping, not optional

State Management

State file: `.claude/ship-state.json`

{
  "session_id": "ship-YYYY-MM-DD-HHMM",
  "verify_session_id": "verify-YYYY-MM-DD-HHMM",
  "verified_commit": "abc123...",
  "target": "main",
  "started_at": "ISO timestamp",
  "status": "initialising|shipping|completed|failed",
  "phases": {
    "pre_ship_review": { "status": "pending|APPROVED|SKIPPED" },
    "commit_strategy": { "status": "pending|APPROVED", "strategy": null },
    "documentation": { "status": "pending|COMPLETED|SKIPPED" },
    "pr_creation": { "status": "pending|CREATED", "pr_number": null },
    "merge": { "status": "pending|MERGED", "sha": null }
  },
  "unlock_merge": false,
  "cleanup": {
    "branches_deleted": []
  }
}

Stage 0: Initialisation

Flag Handling

Check for flags first:

--status → Display current ship status, exit
--resume → Load checkpoint, resume from saved state
--list-sessions → Show available sessions, exit
--dry-run → Run through stages without actual merge

Prerequisite Check (via ship-init.sh hook)

The SessionStart hook validates:

1. verify-state.json exists and unlock_ship is true 2. Code integrity (C-5): verified commit matches current HEAD 3. File integrity (C-7): source file manifest unchanged 4. Creates initial ship-state.json 5. Links to verify session for traceability

**On validation failure:**

ERROR: claudikins-kernel:verify gate check failed

Reason: ${FAILURE_REASON}

[Re-run claudikins-kernel:verify] [Abort]

**On code integrity failure (C-5, C-7):**

ERROR: Code has changed since verification

Verified commit: ${VERIFIED_COMMIT}
Current commit:  ${CURRENT_COMMIT}

Code must not change between claudikins-kernel:verify and claudikins-kernel:ship.

[Re-run claudikins-kernel:verify] [Abort]

Stage 1: Pre-Ship Review

Show what's being shipped. Human confirms ready.

Display Ship Summary

Pre-Ship Review
===============

Verification Session: ${VERIFY_SESSION_ID}
Verified at: ${VERIFY_TIMESTAMP}

Branches to merge:
${BRANCH_LIST}

Changes:
  Files changed: ${FILE_COUNT}
  Lines added:   +${ADDITIONS}
  Lines removed: -${DELETIONS}

Evidence from verification:
  Screenshots: ${SCREENSHOT_COUNT}
  API tests:   ${API_TEST_COUNT}
  CLI tests:   ${CLI_TEST_COUNT}

Ready to proceed?

[Continue to Commit Strategy] [Review Evidence] [Back to Verify] [Abort]

Stage 1 Checkpoint

On "Continue":

  • Set `phases.pre_ship_review.status = "APPROVED"`
  • Proceed to Stage 2

On "Review Evidence":

  • Display evidence from `.claude/evidence/`
  • Return to checkpoint

On "Back to Verify":

  • Set `status = "aborted"`
  • Output: "Run `claudikins-kernel:verify` to re-verify"

Stage 2: Commit Strategy

Decide how to commit the changes.

Strategy Selection

Commit Strategy
===============

How should we commit these changes?

[Squash into single commit] (Recommended for features)
[Preserve commit history] (For large multi-part work)

**If --squash flag set:** Auto-select squash **If --preserve flag set:** Auto-select preserve

Commit Message Draft (Squash)

For squash, draft a commit message:

Commit message:

feat(${SCOPE}): ${TITLE}

${BODY}

Closes #${ISSUE_NUMBER}

[Accept] [Revise] [Back]

Follow conventional commits format:

  • `feat:` for new features
  • `fix:` for bug fixes
  • `chore:` for maintenance
  • `feat!:` or `BREAKING CHANGE:` for breaking changes

Stage 2 Checkpoint

On "Accept":

  • Set `phases.commit_strategy.status = "APPROVED"`
  • Set `phases.commit_strategy.strategy = "squash|preserve"`
  • Record commit message in state
  • Procee
Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withclaudikins-kernel

SRE thinking applied to Claude Code, based on Boris Cherny's Q&A. It enforces a strict 4-stage pipeline with gates between each step. You literally cannot skip verification. You cannot ship without approval.

Get the whole plugin, auto-invoked
Stats
126
Stars
0
Views
7
Forks
Maintained
Maintenance
Shell
Language
MIT
License
3mo ago
Last commit
6mo ago
Created

Repo: elb-pr/claudikins-kernel