arch-design
System-design thinking before any doc or code: goals/non-goals, back-of-envelope numbers, components and contracts, failure modes, operability, security,…
Ship completed work: verify locally, commit related changes, push, create or update the PR, watch CI/reviews, and fix until merge-ready or escalated. Use for "ship it", "create PR", "handoff", or finished code needing delivery.
$ npx -y skills add heliohq/ship --skill handoff --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/handoffContext preview
The summary Claude sees to decide when to auto-load this skill.
Ship completed work: verify locally, commit related changes, push, create or update the PR, watch CI/reviews, and fix until merge-ready or escalated. Use for "ship it", "create PR", "handoff", or finished code needing delivery.
name: handoff version: 0.5.0 description: > Ship completed work: verify locally, commit related changes, push, create or update the PR, watch CI/reviews, and fix until merge-ready or escalated. Use for "ship it", "create PR", "handoff", or finished code needing delivery. allowed-tools: - Bash - Read - Write - Edit - Grep - Glob - Agent - AskUserQuestion - Monitor - TaskStop - mcp__codex__codex - mcp__codex__codex-reply
Do not stop when the PR is created. Do not stop while any GitHub check is pending. If any GitHub check fails, fix the problem, push again, and wait again. If the PR is not merge-ready, sync with base or resolve conflicts inside the same fix loop.
This is a goal-directed loop, not a counted one. Keep looping while each round makes progress toward the completion conditions; escalate on evidence, never on a round counter — the specific evidence classes are in [Loop Governance](#loop-governance). Done means every condition in [Completion](#completion) is satisfied.
Phase index — the phases below own the detail:
1. Pre-flight (resolve branch, base, and scope) 2. Verify locally 3. Update changelog / directly affected docs 4. Push and create/update the PR 5. Wait for GitHub checks 6. Fix loop — governed by the round ledger, not a counter
**Never:**
approval, or shared-branch signals
judgment exists only for the comment decline classes
aimed at it — the second identical outcome is evidence the approach is wrong; escalate with the ledger instead of iterating on hope
blockers are the only reasons to stop looping
---
Modern harnesses run goal-directed loops natively — a fixed retry cap abandons hard-but-progressing PRs while adding no safety that progress detection doesn't provide better. The loop is governed by three things:
**1. Progress detection (the round ledger).** Every fix round appends one block to `<task_dir>/handoff.md` (or tracks inline when no task dir):
Round <i>: trigger=<check name + error class, or "conflict"/"review"> action=<what was changed, one line> result=<next terminal state: new signature | same signature | green>
Before starting a round, compare the current failure to the ledger:
differently) → progress; loop.
Escalate with the ledger as evidence — do not iterate on hope.
over recollection.
**2. Judgment boundaries.** Product/security/architecture review comments, conflicts you cannot resolve confidently, and rebase-policy dead ends escalate immediately regardless of progress. A fix that would change the shipped behavior (not just repair its delivery) is scope drift — escalate; the fix loop repairs delivery, it does not redesign.
**3. The harness's own goal net.** Under `/ship:auto`, the stop gate already blocks session exit until the PR is merge-ready. In a standalone run on a harness with a native goal condition (e.g. Claude Code's `/goal`), suggest the user arm one at the start — `PR checks green and merge-ready, or stop after 25 turns` — as the outer bound; the harness's turn bound replaces any hand-rolled cap.
Track your progress with the harness's task/todo list. Create the items at the start based on what the repo actually needs. Not every repo has a CHANGELOG, CI, or docs to update — only include items for work that will actually happen.
**Principle**: one item per phase the user would wait on. Fix rounds are dynamic — add them only when a check fails.
---
Resolve only the context needed to ship the PR:
1. Determine the current branch.
2. Determine the base branch:
3. If the current branch is the base branch, create a feature branch before continuing. 4. Inspect the current scope with `git status --short`, `git diff <base>...HEAD --stat`, `git diff --cached --stat`, and `git diff --stat`. 5. Decide which local changes belong to this handoff. 6. Do not use `git add -A` unless every dirty file belongs to this handoff. 7. If unrelated local changes cannot be separated safely, stop and escalate instead of guessing. 8. If the caller already provides `task_dir`, use it. Otherwise do not guess one here; resolve it only if a later phase needs to write artifacts.
Output a short start summary with the branch, base branch, and scope being shipped.
Before the first push in handoff, run the most relevant local verificatio
An agentic development harness for Claude Code & Codex: agent-routed workflows from raw requirement to green PR.
System-design thinking before any doc or code: goals/non-goals, back-of-envelope numbers, components and contracts, failure modes, operability, security,…
Run Ship's full production workflow from raw requirement to PR: design, dev, E2E, review, QA, refactor, and handoff. Use only for explicit /ship:auto, auto…
Plan implementation before coding: investigate the repo, write spec and plan, and validate with a peer. Use for "plan", "design approach", "scope", or any…
Implement from a spec or plan: extract stories, build in safe waves, test, commit, and get peer review per story. Use for "implement", "build/code this plan",…
Add durable end-to-end tests for user/API-visible behavior. Detect or scaffold the E2E framework, write tests, run the app, and store evidence. Use for E2E,…