spar

spar is a command for coding agents from robconery/champion. It costs 44 tokens per session (1,141 once invoked), scanned A, original, MIT.

A negotiation practice command that models the other side of an offer or situation and argues against you over several rounds. It uses research and the real email conversation when available.

In plain words
What is it for?
Use it to rehearse a job offer, contract, sale, or other negotiation and receive the exact next message to send in your own voice.
Why use it?
It lets you test your position against likely objections before replying to the other party. This helps expose where you might give in under pressure.

Command

Part of the champion plugin — 15 commands, 21 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/robconery/champion/spar
Clone the repo
git clone --depth 1 https://github.com/robconery/champion

Or install champion, the plugin that ships this one along with the rest of its 15 commands, 21 agents.

Wrote 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.

agentmods badge for spar

README.md
[![agentmods](https://agentmods.dev/badge/commands/robconery/champion/spar.svg)](https://agentmods.dev/commands/robconery/champion/spar)
Your own site
<a href="https://agentmods.dev/commands/robconery/champion/spar"><img src="https://agentmods.dev/badge/commands/robconery/champion/spar.svg" alt="Measured on agentmods" height="20"></a>
Per session 44 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,141 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.00044 $0.01141
Opus 5 $0.00022 $0.00571
Sonnet 5 $0.00009 $0.00228
Haiku 4.5 $0.00004 $0.00114

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

Security

Grade A, and why

spar 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.

champion/commands/spar.md · 69 lines

How it starts

The opening of the file, as written. The whole thing — 69 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Plugin note: this command ships in the champion plugin, so every council agent it names is a plugin agent. When spawning any agent mentioned below, use the champion: prefix for the agent type (e.g. champion:historian, champion:north-star, champion:viewer).

Setup gate: before doing anything else, check that ~/.champion/dossier/PROFILE.md exists. If it does not, stop immediately and tell the user, politely, that the council cannot work without knowing who it fights for: run /champion:setup first (a 20–30 minute interview). Do not proceed in any form until setup is complete.

/spar, the champion negotiates the offer

The offer / situation: $ARGUMENTS

The war-game. Where /negotiate hands you a plan, this puts the champion in the ring against a live opponent: a model of the actual counterparty, built from research and the real thread, and fights the negotiation round by round.

The whole reason this exists: the fold, recorded in ~/.champion/dossier/PROFILE.md, is what makes the user concede, and an offer in hand is exactly where folding costs the most. The champion holds the line for them.

If the user ran this company through the gauntlet, read the decisions log at ~/.champion/records/decisions-log.md (location per ~/.champion/dossier/context/records.md) for the research and angle already on file.

1, Read the user's side

  • ~/.champion/dossier/PROFILE.md: the money numbers, the fold, the sabotage pattern, what they'll drift toward vs. what they actually want
  • ~/.champion/dossier/CAREER.md: the truth under each résumé line. Their leverage; most people undersell theirs. Price them correctly.
  • ~/.champion/dossier/VALUES.md: the non-negotiables. Never let them trade what they'd die on the hill for, for money.

2, Get the thread

  • If the thread is pasted in $ARGUMENTS, use it
  • If the user named the company/recruiter, pull the thread via the Gmail MCP (search_threadsget_thread) and confirm you've got the right one before modeling from it
  • If there's no thread yet (just an offer), model from research alone, say so upfront

Read the full file on GitHub · 69 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 · 69 lines · 44 tokens per session scan A 0cfdf94ccafc

Subscribe to this mod's changes

spar is a command published in the GitHub repository robconery/champion (5 stars, last pushed 1mo ago), licensed MIT. It adds 44 tokens to every session and 1,141 once invoked, about $0.0002 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.