From awc
Use when delivering a single PR-scoped feature end-to-end with multi-critic review loops. Triggers on "/shipit", "ship this feature", or any request for full-cycle feature delivery from design through ship-ready PR with structured critique.
How this skill is triggered — by the user, by Claude, or both
Slash command
/awc:shipitThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Orchestrator. Main agent owns design, AC, planning, the ship gate, and arbitration. It spawns three named subagents per feature, each **once**, persisting for the whole run:
Orchestrator. Main agent owns design, AC, planning, the ship gate, and arbitration. It spawns three named subagents per feature, each once, persisting for the whole run:
Scout and Hawk run in parallel after Smith's submission is verified, feeding lean findings back to Smith in a bounded loop. Output: a ship-ready draft PR — never auto-merged.
verification_evidence / tests_passed: true is invalid at the boundary — not a thing to verify later.docs/specs/<date>-<slug>/. Survives compaction and resume.Smith's initial context ≤ ~60k tokens. If the diff likely exceeds ~800 LOC or touches >8 files, split the feature upstream at step 3 and stop.
| Step | Prefer | Else |
|---|---|---|
| Clarify | superpowers:brainstorming / grill-me | inline Q&A |
| Plan | superpowers:writing-plans | inline slice list |
| Smith impl | superpowers:test-driven-development + superpowers:verification-before-completion | inline TDD + verify |
| Workspace | superpowers:using-git-worktrees | git worktree add / git checkout -b |
| Hawk review | platform /review | c-simplify / inline |
| Cleanup | neat-freak | inline doc/memory update |
| Commit msg | caveman:caveman-commit | inline Conventional Commits |
State lives in docs/specs/<date>-<slug>/status.yaml:
slug: <feature-slug>
branch: <feature branch>
worktree: <abs path | null>
step: 1 # 1..8
smith_dispatches: 0 # cap 6
findings: [] # [{id, severity, status}]
pr_url: null
1. Setup. Determine workspace mode — honor a stated user choice; else ask [branch / worktree / abort]; never a silent default. On main/master, refuse and prompt. branch → git checkout -b <slug> from the repo's main ref. worktree → superpowers:using-git-worktrees if available, else git worktree add. Create docs/specs/<date>-<slug>/, write status.yaml, cd into the workspace.
2. Clarify + spec. Clarify intent (skill or inline) until problem / success / out-of-scope / constraints are answered. Write spec.md: problem, approach, scope (in / out), and the acceptance criteria. Each AC is observable and testable, has a stable id (AC1…), and declares branches_required (happy, plus empty/error where a negative path exists). At least one AC; no AC may read "works correctly".
3. Plan + size. Plan the work (skill or inline slice list). Estimate Smith's initial load and the diff size. If >~60k tokens, >~800 LOC, or >8 files, split into multiple PRs and stop here.
4. Dispatch Smith. Spawn Smith once (subagents/smith.md) with spec, AC, plan, and the status.yaml path. Bump smith_dispatches. Smith: write closing tests per AC branch → minimal implementation → sweep renamed/removed symbols → run $test_command → commit (subject per repo convention; the revision's last commit trailers Shipit-Revision: <N>) → submit the schema with verification_evidence.
5. Verify submission. Admission: verification_evidence absent, or tests_passed != true, or status: incomplete → invalid at the boundary; re-dispatch Smith incrementally with the gap. If admitted, re-run $test_command once independently:
submission.<N>.yaml; re-check the step-3 size heuristic against the real diff (escalate if exceeded).6. Scout ∥ Hawk. With Smith idle (not terminated), spawn Scout (subagents/scout.md) and Hawk (subagents/hawk.md) once each on the accepted commit. Pass each the verified diff and the status.yaml path; pass Scout the feature type; do not pass Scout design rationale. Record the reviewed SHA.
7. Critique loop. Collect findings. SendMessage blockers to the persisted Smith (cold respawn only if its handle is dead). Smith revises (≥1 new commit per revision). SendMessage Scout and Hawk to re-verify the new HEAD; update the reviewed SHA. Pushback ≤3 per finding id; then that finding escalates. Escalate also on a Scout↔Hawk conflict on the same code, or 2 consecutive revisions with no blocker-count decrease. On escalation, stop and ask the user with the finding + both sides + options (side with critic / override / revise AC / revise spec / accept-escalated / abort); record the decision on the finding.
8. Ship gate → handoff → cleanup → reflection.
Gate — passes only if every item holds, each an independent artifact, not main's assertion. Missing any → not ship-ready, loop back; main may not substitute its own judgment for a missing artifact.
verification_evidence was re-run clean by main at step 5 (record exists, exit 0).open blocker.git rev-parse --abbrev-ref HEAD ∉ {main, master}.escalated finding has a recorded user decision.On pass: git push -u <remote> <branch>, then gh pr create --draft (title per repo convention; body = Scout AC report + Hawk summary + finding log). Set pr_url.
Handoff: output the PR url, Scout report, Hawk summary, finding log, escalations, and branch / worktree path.
Cleanup (not gated): default on — neat-freak if available, else an inline doc/memory update. The user may skip with one word; no waiver file.
Reflection (not gated): one short main-written retro (what was done, honest misses), surfaced to the user. A separate session-reflection.md only if the user asks.
Forbidden in step 8: gh pr merge; un-drafting the PR; git push --force (except executing an explicit user-authorized escalation).
Every critic finding uses this shape. No prose reviews.
id: <critic>-<short-slug> # stable; reuse the exact id on re-raise
raised_by: scout | hawk
severity: blocker | advisory
issue: <=2 sentences
fix: <=2 sentences # optional for advisory
status: open | fixed | acked | escalated
pushback: 0 # increment on re-raise; 3 → escalate
blocker must be fixed, critic-accepted, or escalated→user-resolved before ship. advisory: Smith acks and decides, no loop. Severity follows behavior, not cost-of-fix or PR scope — silently dropped data, an AC unmet on a required branch, an adjacent regression, and a safety violation at a trust boundary are always blocker. fixed/acked are terminal; escalated is terminal only after the user decides.
The only unconditional rules.
npx claudepluginhub amoschenzixuan/agentic-working-contract --plugin awcGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.