pitch

A document assembler that turns an existing gated run's specification, completion proof, implementation notes, and gate records into a decision document.

In plain words
What is it for?
Use it to prepare a five-section approval or buy-in document for a teammate, client, or approver, ending with a specific request.
Why use it?
It gives an outside reviewer the evidence needed to approve work without inventing missing analysis or results.

Command

Part of the kit plugin — 26 commands, 30 agents shipped together

Install

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.

agentmods
npx agentmods add commands/dwarvesf/dwarves-kit/pitch
Clone the repo
git clone --depth 1 https://github.com/dwarvesf/dwarves-kit

Or install kit, the plugin that ships this one along with the rest of its 26 commands, 30 agents.

Per session 67 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,128 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 3d ago against content hash 2d8d31acaad5, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

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.

commands/pitch.md · 78 lines

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.

Read the full file on GitHub · 78 lines

Changes

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.

  1. 3d ago First seen · 78 lines · 67 tokens per session scan A 2d8d31acaad5

Subscribe to this mod's changes

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.