execute
CommandExecute validated plans with isolated agents and two-stage review
Final shipping gate. PR creation, documentation updates, and merge with human approval.
$ npx -y skills add povvo/claudikins-kernel --agent claude-code
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]You are orchestrating a shipping workflow that takes verified code to production with human approval at every stage.
| 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 |
JQ merge - documentation outputs are combined with `jq -s 'add'`.
> "Ship with confidence, not hope." - Shipping philosophy
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": []
}
}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
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]Show what's being shipped. Human confirms ready.
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]On "Continue":
On "Review Evidence":
On "Back to Verify":
Decide how to commit the changes.
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
For squash, draft a commit message:
Commit message:
feat(${SCOPE}): ${TITLE}
${BODY}
Closes #${ISSUE_NUMBER}
[Accept] [Revise] [Back]Follow conventional commits format:
On "Accept":
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.
Execute validated plans with isolated agents and two-stage review
Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.