Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/nguyenvanphituoc/shapeup-sdlc-plugin/shipgit clone --depth 1 https://github.com/nguyenvanphituoc/shapeup-sdlc-pluginWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/nguyenvanphituoc/shapeup-sdlc-plugin/ship)<a href="https://agentmods.dev/commands/nguyenvanphituoc/shapeup-sdlc-plugin/ship"><img src="https://agentmods.dev/badge/commands/nguyenvanphituoc/shapeup-sdlc-plugin/ship.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00016 | $0.01714 |
| Opus 5 | $0.00008 | $0.00857 |
| Sonnet 5 | $0.00003 | $0.00343 |
| Haiku 4.5 | $0.00002 | $0.00171 |
Grade A, and why
ship scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 100 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Use the tech-lead skill to run the full harness on $ARGUMENTS.
Default to interactive (auto_level = interactive): pause at every ⏸ gate and require PO
sign-off — especially the Ship gate (L4). The harness's safety depends on the human being in the
loop; do not skip gates by default.
Before anything else, dispatch tech-lead and let it open the run — its first action is
harness init run, which writes the run receipt. Do not summarise what the harness will do;
a session that dispatches the orchestrator and leaves no receipt is blocked at Stop by
hooks/gate-zerowork.mjs.
How the run actually executes
On a spec with committed scopes/*.md — the common case — tech-lead holds the L0 intake
conversation, writes project-profile.md, then hands the whole pipeline to a single background
launch and does not drive it turn by turn:
Workflow({
scriptPath: "${CLAUDE_PLUGIN_ROOT}/skills/tech-lead/workflows/shapeup-run.js",
args: <the RunArgs object>
})
ORIENT → L1a → ANALYZE → WIRE → L1a.5 → MAP SCOPES → L1b → rounds of BUILD/L2/EVAL → QA → GATE H all run inside it. Three things follow, and they are the point of the cutover rather than trivia:
- A gate pause is a return value, not a stop. The launch returns
{status: "paused", paused_at, block}; emitblockverbatim, get the PO's decision, write it to.shapeup/<slug>/gate-answers.json, and relaunch the same call with the same args. The fast-forward re-derives position from disk and re-dispatches nothing already finished. - A killed session loses nothing. Resume state comes off disk, never from context, so a fresh session picks the run up where it died — the property the whole launch shape exists to buy.
- The launch is the
Workflowtool, which is what gives the run resume-from-journal, worktree isolation, and sub-agents that share the session's prompt cache instead of paying a cold start each.npx shapeup-sdlc initwrites the"Workflow"grant it needs. That grant is unscoped — it authorises every dynamic workflow script in the project — so an install may decline it with--no-native-workflow, in which case the launch asks for approval once per session and the unattended lane is unavailable.
--tiny, and any spec with no committed scopes/*.md yet, take the unchanged prose lane in
skills/tech-lead/references/protocol.md instead — non-regression, by design.
Only run headless/auto if the user explicitly asks for it in their message:
-
--auto→ advance low-risk gates automatically, still pause at L4 (Ship sign-off). Implies--gate-answers guardedunless a set is named. -
--unattended→ fully headless,max_rounds 3. Intended for CI, not day-to-day local runs. Implies--gate-answers ciunless a set is named. In aclaude -pinvocation, setCLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS=0first. Print mode terminates a session's background tasks after 600 s, and the entire pipeline is one background launch, so without it the run is killed roughly ten minutes in — mid-phase, with no error beyond the CLI's own "background tasks still running; terminating". Resume state is on disk, so a relaunch fast-forwards past whatever finished; the cost is a relaunch, not the run. Typing the flag IS the confirmation — do not stop to ask for another one. Emit the warning that no human will review the verdict before ship as the run's first line, then proceed straight into GATE L0 in the same turn.Why this is spelled out: asking for confirmation here made
--unattendedunusable for the only job it has. In a non-interactive invocation (claude -p …, a CI step) there is no second turn in which to answer, so the run spent its turn requesting permission and exited having written nothing. A headless flag that cannot complete a headless run is a defect, not a safety feature — and the warning, which is the part that carries the safety value, is still printed.--autoremains the middle setting that pauses at L4.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 100 lines · 16 tokens per session scan A f32a3ebf8f74
ship is a command published in the GitHub repository nguyenvanphituoc/shapeup-sdlc-plugin (2 stars, last pushed 14d ago), licensed MIT. It adds 16 tokens to every session and 1,714 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
portfolio
Show a read-only hub-wide portfolio of canonical Ideas and active Projects without duplicating topic-owned records.
cycle-design
Design a cycle — create new cycles with planned stories, detail existing planning cycles, or quick-sketch a roadmap. Detects planning docs in .craft/planning/ and sources the cycle from them when relevant.
cycle-start
Activate a cycle and start implementing its stories.
story-archive
Move a story from a cycle back to the backlog.
project
Manage projects inside a topic wiki. Projects are folders under output/projects/ that group related outputs (playbooks, images, code, data) with a goal captured in WHY.md.
story-delete
Permanently delete a story.