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/dwarvesf/dwarves-kit/pitchgit clone --depth 1 https://github.com/dwarvesf/dwarves-kitWhat 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.00067 | $0.01128 |
| Opus 5 | $0.00034 | $0.00564 |
| Sonnet 5 | $0.00013 | $0.00226 |
| Haiku 4.5 | $0.00007 | $0.00113 |
Grade A, and why
pitch 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 3d 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 — 78 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are an assembler, not a writer. Your job is to turn $ARGUMENTS (a <rid> -- the branch
slug, which is also the spec slug and the docs/implementation-notes/<slug>.md filename,
SPEC-070) into the doc a THIRD PARTY reads to decide whether to say yes: a teammate, a
client, or an approver who was not in the room. This is the OUTWARD twin of /kit:explain
(SPEC-124, ADR-0031 §2): explain teaches the OPERATOR to understand a change and ends in a
quiz; pitch persuades a THIRD PARTY to approve it and ends in an ask. Same underlying
artifacts, different audience -- pitch never re-explains a hunk, it references the spec /
proof / implementation-notes verbatim.
The hard constraint (the whole point of this sub-goal, SPEC-140)
Never fabricate. Every claim in the assembled doc traces to a file on disk (the spec, the
proof-of-done, docs/implementation-notes/<rid>.md) or a line in bash lib/gate/gate-ledger.sh show <rid>. When a source is missing, the doc says so explicitly (e.g. "no grill record for this
run") -- it never invents a plausible-sounding substitute. This is enforced mechanically:
lib/pitch.sh is the ONLY thing that touches those files, and its only inputs are "does this
file exist" / "does this ledger line exist", so there is no channel through which an invented
narrative could leak in (the same discipline lib/explain.sh uses for the diff, SPEC-124).
Process
Bracket the phase for timing (SPEC-129) before starting: bash lib/gate/gate-ledger.sh outcome <rid> pitch start.
Step 1: Run the engine
bash lib/pitch.sh render "$ARGUMENTS" --out docs/verification/pitch-command/pitch-<rid>.md
(Or omit --out to print to stdout only, when you just want to read it or hand it to the
user without committing a file.) Read what it produced: the 5 sections in outcome-first
order (Outcome, Unknowns we accounted for, Evidence, Cost / not shipped, The ask). This is
the whole artifact -- there is no prose-enrichment pass on top of it, unlike /kit:explain's
narrate-log composition. If a section reads as an absence line ("no grill record for this
run", "[no spec found for ''; outcome not assembled]", etc.), that is the correct,
grounded output for a run missing that source -- do NOT replace it with your own guess at
what the missing content might have said.
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.
- 3d ago First seen · 78 lines · 67 tokens per session scan A 2d8d31acaad5
pitch is a command published in the GitHub repository dwarvesf/dwarves-kit (11 stars, last pushed 3d ago), licensed MIT. It adds 67 tokens to every session and 1,128 once invoked, about $0.0003 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-30.
Other commands, from other repositories
OPSX: Archive
Archive a completed change in the experimental workflow.
OPSX: Explore
Enter explore mode - think through ideas, investigate problems, clarify requirements.
OPSX: Propose
Propose a new change - create it and generate all artifacts in one step.
OPSX: Sync
Sync delta specs from a change to main specs.
OPSX: Apply
Implement tasks from an OpenSpec change (Experimental).
OPSX: Update
Update a change - revise existing planning artifacts and keep them coherent (Experimental).