/dev
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", or targeted fix findings. If no plan exists, use /ship:design first.
$ npx -y skills add heliohq/ship --skill dev --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/dev
Context preview
The summary Claude sees to decide when to auto-load this skill.
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", or targeted fix findings. If no plan exists, use /ship:design first.
SKILL.md
dev.SKILL.mdname: dev
version: 0.7.0
description: >
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", or targeted fix findings. If no plan exists, use /ship:design first.
allowed-tools:
- Bash
- Read
- Write
- Edit
- Glob
- Grep
- Agent
- AskUserQuestion
- mcp__codex__codex
- mcp__codex__codex-reply
Ship: Implement
HOST IMPLEMENTS. PEER CROSS-VALIDATES.
EVERY FINDING NEEDS FILE:LINE + EVIDENCE.
Runtime Resolution
_Path note: `../shared/*.md` references resolve against this skill's base directory (announced as "Base directory for this skill" when the skill loaded), not your working directory._
See `../shared/runtime-resolution.md` for the host/peer concept and dispatch commands. In /ship:dev, the **host is the primary implementer** and the **peer is the independent reviewer** — the reviewer MUST differ from whoever implemented the story. Prefer a non-host provider for cross-model validation; if unavailable, use a fresh same-provider session and record the weaker independence in the report.
Two wave shapes, different dispatch patterns (fix routing — **whoever implemented, fixes** — is specified in Step C):
| Wave shape | Implementer | Reviewer | |---|---|---| | **Single-story** (most common) | Host (you), on current branch | Peer agent | | **Multi-story parallel** | Fresh Agent subagents per story, all on the current branch (dependency analysis guarantees their file scopes don't overlap — no worktrees needed) | Peer per story | | **Fix mode** (/ship:auto review_fix/qa_fix/e2e_fix dispatch) | Host — you | (next phase re-runs its own verification) |
Quality Gates
| Gate | Condition | Fail action | |------|-----------|-------------| | Spec + plan read | Acceptance criteria extracted, TEST_CMD found | AskUserQuestion | | Implement → Review | Story produced at least one commit (from subagent report, or HEAD moved since WAVE_BASE_SHA for single-story waves) | BLOCKED | | Review → Next story | Verdict is PASS or PASS_WITH_CONCERNS | Targeted fix (progress-governed — see Step C) | | All stories → Done | Full test suite passes | Targeted fix for regression |
Red Flag
**Never:**
- Skip the peer review — every story goes through peer review (or fallback)
before the wave merges. This is the only cross-validation in the pipeline until /ship:review runs.
- Parallelize stories that share files without dependency analysis
- Re-implement a full story on FAIL — make targeted surgical fixes
- Advance to next story without getting a reviewer verdict
- Soften a test assertion to make it pass instead of fixing the code
- Reuse a reviewer dispatch across stories — fresh peer call each time
- Let the peer reviewer become your coder — if the reviewer suggests a
fix, YOU apply it; don't ask the reviewer to write patches
- Tell a reviewer what not to flag, or pre-rate a finding's severity.
Tripwire: if the dispatch you are composing contains "do not flag", "don't treat X as a defect", or "at most minor" — stop; you are pre-judging, usually to spare yourself a review round. Let the reviewer raise it and adjudicate the verdict yourself.
- Re-implement a story the dev ledger already marks complete — after a
compaction or resume, trust `dev-ledger.md` and `git log` over your own recollection
---
Progress Tracking
Track your progress with the harness's task/todo list. Build the list after Phase 1 (setup), once you know the actual wave/story structure. The items should reflect the real work — don't use a canned template.
**Principle**: one item per wave (not per story) to keep the list short. Set the item's in-progress label to show which story within a wave is active. Always end with a regression test item when there are multiple stories.
**Example** (3-wave normal run):
[in_progress] Wave 1: "Add User model", "Add Product model" (implementing Story 1)
[pending] Wave 2: "User API", "Product API"
[pending] Wave 3: "Auth middleware"
[pending] Cross-story regression test
**Adaptations** (not exhaustive — use judgment):
- Fix mode (invoked with findings) → single item: `"Fix <review/QA> findings"`
- Targeted fix within a wave → update that wave's in-progress label:
`"Fixing Story N (round R)"`
---
Phase 1: Setup
0. **Check for a ledger.** If `<task_dir>/dev-ledger.md` exists, stories listed there as complete are DONE — do not re-implement or re-review them; resume at the first story not marked complete. The commits the ledger names exist in git even when your context no longer remembers creating them. 1. Read **acceptance criteria** (from spec file, or derived from user request). 2. Read **implementation stories** (from plan file, or single story for small tasks). Accept any heading format: `## Story N`, `## Step N`, `## N. Title`, or numbered/bulleted lists. Normalize as ordered stories. Note the plan's `## Global Constraints` section if present — copy it verbatim into every implementer and reviewer dispatch; it is the reviewer's attention lens for what this project's spec demands. 3. Detect the repo's test command by inspecting project root (`Makefile`, `package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`, CI configs, `CLAUDE.md`/`AGENTS.md`). If none found, AskUserQuestion. Record as `TEST_CMD`. 4. Extract code conduct from `CLAUDE.md`, `AGENTS.md`, lint/formatter configs, and existing code patterns. Record as `CODE_CONDUCT`. 5. **Build pattern references.** For each story, find the closest analogous implementation before anyone writes code:
- Search adjacent directories, feature folders, test folders, and
shared component/module areas for similar files. Read the full files, not just matching snippets.
- Record 1-3 references in `<task_dir>/dev-context.md` with:
file path, why it is analogous, patterns to mirror, and intentional deviatio
Read more
name: dev version: 0.7.0 description: > 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", or targeted fix findings. If no plan exists, use /ship:design first. allowed-tools: - Bash - Read - Write - Edit - Glob - Grep - Agent - AskUserQuestion - mcp__codex__codex - mcp__codex__codex-reply
Ship: Implement
HOST IMPLEMENTS. PEER CROSS-VALIDATES. EVERY FINDING NEEDS FILE:LINE + EVIDENCE.
Runtime Resolution
_Path note: `../shared/*.md` references resolve against this skill's base directory (announced as "Base directory for this skill" when the skill loaded), not your working directory._
See `../shared/runtime-resolution.md` for the host/peer concept and dispatch commands. In /ship:dev, the **host is the primary implementer** and the **peer is the independent reviewer** — the reviewer MUST differ from whoever implemented the story. Prefer a non-host provider for cross-model validation; if unavailable, use a fresh same-provider session and record the weaker independence in the report.
Two wave shapes, different dispatch patterns (fix routing — **whoever implemented, fixes** — is specified in Step C):
| Wave shape | Implementer | Reviewer | |---|---|---| | **Single-story** (most common) | Host (you), on current branch | Peer agent | | **Multi-story parallel** | Fresh Agent subagents per story, all on the current branch (dependency analysis guarantees their file scopes don't overlap — no worktrees needed) | Peer per story | | **Fix mode** (/ship:auto review_fix/qa_fix/e2e_fix dispatch) | Host — you | (next phase re-runs its own verification) |
Quality Gates
| Gate | Condition | Fail action | |------|-----------|-------------| | Spec + plan read | Acceptance criteria extracted, TEST_CMD found | AskUserQuestion | | Implement → Review | Story produced at least one commit (from subagent report, or HEAD moved since WAVE_BASE_SHA for single-story waves) | BLOCKED | | Review → Next story | Verdict is PASS or PASS_WITH_CONCERNS | Targeted fix (progress-governed — see Step C) | | All stories → Done | Full test suite passes | Targeted fix for regression |
Red Flag
**Never:**
- Skip the peer review — every story goes through peer review (or fallback)
before the wave merges. This is the only cross-validation in the pipeline until /ship:review runs.
- Parallelize stories that share files without dependency analysis
- Re-implement a full story on FAIL — make targeted surgical fixes
- Advance to next story without getting a reviewer verdict
- Soften a test assertion to make it pass instead of fixing the code
- Reuse a reviewer dispatch across stories — fresh peer call each time
- Let the peer reviewer become your coder — if the reviewer suggests a
fix, YOU apply it; don't ask the reviewer to write patches
- Tell a reviewer what not to flag, or pre-rate a finding's severity.
Tripwire: if the dispatch you are composing contains "do not flag", "don't treat X as a defect", or "at most minor" — stop; you are pre-judging, usually to spare yourself a review round. Let the reviewer raise it and adjudicate the verdict yourself.
- Re-implement a story the dev ledger already marks complete — after a
compaction or resume, trust `dev-ledger.md` and `git log` over your own recollection
---
Progress Tracking
Track your progress with the harness's task/todo list. Build the list after Phase 1 (setup), once you know the actual wave/story structure. The items should reflect the real work — don't use a canned template.
**Principle**: one item per wave (not per story) to keep the list short. Set the item's in-progress label to show which story within a wave is active. Always end with a regression test item when there are multiple stories.
**Example** (3-wave normal run):
[in_progress] Wave 1: "Add User model", "Add Product model" (implementing Story 1) [pending] Wave 2: "User API", "Product API" [pending] Wave 3: "Auth middleware" [pending] Cross-story regression test
**Adaptations** (not exhaustive — use judgment):
- Fix mode (invoked with findings) → single item: `"Fix <review/QA> findings"`
- Targeted fix within a wave → update that wave's in-progress label:
`"Fixing Story N (round R)"`
---
Phase 1: Setup
0. **Check for a ledger.** If `<task_dir>/dev-ledger.md` exists, stories listed there as complete are DONE — do not re-implement or re-review them; resume at the first story not marked complete. The commits the ledger names exist in git even when your context no longer remembers creating them. 1. Read **acceptance criteria** (from spec file, or derived from user request). 2. Read **implementation stories** (from plan file, or single story for small tasks). Accept any heading format: `## Story N`, `## Step N`, `## N. Title`, or numbered/bulleted lists. Normalize as ordered stories. Note the plan's `## Global Constraints` section if present — copy it verbatim into every implementer and reviewer dispatch; it is the reviewer's attention lens for what this project's spec demands. 3. Detect the repo's test command by inspecting project root (`Makefile`, `package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml`, CI configs, `CLAUDE.md`/`AGENTS.md`). If none found, AskUserQuestion. Record as `TEST_CMD`. 4. Extract code conduct from `CLAUDE.md`, `AGENTS.md`, lint/formatter configs, and existing code patterns. Record as `CODE_CONDUCT`. 5. **Build pattern references.** For each story, find the closest analogous implementation before anyone writes code:
- Search adjacent directories, feature folders, test folders, and
shared component/module areas for similar files. Read the full files, not just matching snippets.
- Record 1-3 references in `<task_dir>/dev-context.md` with:
file path, why it is analogous, patterns to mirror, and intentional deviatio
Showing the first part of this file.
An agentic development harness for Claude Code & Codex: agent-routed workflows from raw requirement to green PR.
Repo: heliohq/ship
Other skills on ship.
- /arch-design
System-design thinking before any doc or code: goals/non-goals, back-of-envelope numbers, components and contracts, failure modes, operability, security, trade-offs. Use for "design this system", "architecture for X", "trade-offs for X", "how should we architect", "API design",
Open skill - /auto
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 pipeline requests, or end-to-end delivery.
Open skill - /design
Plan implementation before coding: investigate the repo, write spec and plan, and validate with a peer. Use for "plan", "design approach", "scope", or any coding task needing a plan. Not system-design thinking (/ship:arch-design) or full /ship:auto.
Open skill - /e2e
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, Playwright/Cypress, regression tests, or quality gates. Not exploratory QA.
Open skill - /handoff
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.
Open skill - /qa
Runtime QA of a change: start the app, test acceptance criteria and edge cases, and report evidence. Use for "test this", "QA", "does it work", exploratory checks, or post-review runtime verification. Not static code review.
Open skill

