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 skills/lestrrat-ai/claude-code-plugins/campaignnpx skills add lestrrat-ai/claude-code-plugins --skill campaigngit clone --depth 1 https://github.com/lestrrat-ai/claude-code-pluginsWhat 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.00183 | $0.09860 |
| Opus 5 | $0.00092 | $0.04930 |
| Sonnet 5 | $0.00037 | $0.01972 |
| Haiku 4.5 | $0.00018 | $0.00986 |
Grade C, and why
campaign scanned grade C with 1 finding 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 2d 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.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
- NEVER `rm -rf .gauntlet/`; only `.gauntlet/tmp/**` is disposable — **everything else under How it starts
The opening of the file, as written. The whole thing — 426 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Campaign
Self-looping, reactive PR-review-to-merge pipeline. The active host is orchestrator + gatekeeper:
reviews, CI watches, and fixes run as background tasks — and the heartbeat reconcile in a fresh
synchronous worker where the host provides one; gates and merges stay centralized. Campaign
gates existing PRs — adopted, never generated — and never writes a fix from scratch. To find issues
first, use gauntlet:review; after its report it can open one PR per confirmed fix and hand them here
(/gauntlet:campaign #PRs in Claude Code, $gauntlet:campaign #PRs in Codex).
Invoke once: the skill drives its own loop through the active host's heartbeat or bounded-wait
mechanism. In Claude Code, do not wrap it in /loop; in Codex, keep the invocation alive when no
heartbeat scheduler is available.
At every entry/resume, before any other work:
- Read
references/runtime-adapter.md. Resolve the supplied checkout through its typedRepositoryContextowner exactly once per invocation/resume, and carry that record for every repository path and Git cwd. The adapter owns every host mapping — invocation forms, model classes (session/economy), the heartbeat mechanism — and the typed process/data boundary: dynamic values cross as argv, byte-file, or native-message data, and each review attempt's record assigns exactly one final-report producer. - Read
references/run-identity-and-lease.mdandreferences/files-and-ledger.mdbefore touching run state. - Read
references/startup.mdbefore starting or resuming a run whosepending_adoptioncheckpoint is still set. Its command protocol owns fresh-run setup.
The adversarial reviewer is a selectable role: by default the cross-engine route (Claude Code
reviews with codex exec, Codex reviews with claude -p), launched at native-limitation level
whenever the paired CLI is present, falling back to a fresh native worker only when it is absent or the
reviewer is genuinely unusable.
An explicit invocation or a TRUSTED saved preference (the orchestrator's own out-of-checkout user
memory / global user instructions — NEVER a file inside the candidate checkout, including
.gauntlet/history/ carryover) overrides the default. references/reviewer.md owns selection and
fallback; references/runtime-adapter.md owns the isolation contract. Every route guarantees fresh
conversational context and launches on that alone; installed campaign rules remain the stage-0 gate
authority.
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- README.md 21 KB
- references/bailout-and-final-report.md 20 KB
- references/carryover.md 7.0 KB
- references/ci-derivation-spec.md 75 KB
- references/critical-rules.md 48 KB
- references/cross-agent-reviewers.md 11 KB
- references/files-and-ledger.md 85 KB
- references/finding-audit.md 22 KB
- references/fix-subagent-contract.md 8.1 KB
- references/followups.md 45 KB
- references/loop-control.md 71 KB
- references/pr-adoption.md 42 KB
- references/repair-pass.md 21 KB
- references/review-dispatch.md 13 KB
- references/reviewer.md 17 KB
- references/root-cause-pass.md 5.8 KB
- references/run-identity-and-lease.md 16 KB
- references/runtime-adapter.md 40 KB
- references/scope-and-constraints.md 3.3 KB
- references/stage-2-ci.md 81 KB
- references/stage-2-review-gate.md 99 KB
- references/stage-3-merge.md 23 KB
- references/startup.md 5.8 KB
- scripts/_gauntlet/__init__.py 67 B runs code
- scripts/_gauntlet/argv.py 1.0 KB runs code
- scripts/_gauntlet/atomic.py 1.9 KB runs code
- scripts/_gauntlet/clock.py 960 B runs code
- scripts/_gauntlet/gh.py 7.4 KB runs code
- scripts/_gauntlet/git_refs.py 2.6 KB runs code
- scripts/_gauntlet/gitfixture.py 5.8 KB runs code
- scripts/_gauntlet/jsonl.py 888 B runs code
- scripts/_gauntlet/labels.py 8.0 KB runs code
- scripts/_gauntlet/modules.py 2.4 KB runs code
- scripts/_gauntlet/mutation.py 4.2 KB runs code
- scripts/_gauntlet/repository.py 1.7 KB runs code
- scripts/_gauntlet/review_door.py 3.4 KB runs code
- scripts/_gauntlet/table.py 6.6 KB runs code
- scripts/_gauntlet/testing.py 20 KB runs code
- scripts/_gauntlet/view.py 2.3 KB runs code
- scripts/base-preflight-test.py 70 KB runs code
- scripts/base-preflight.py 26 KB runs code
- scripts/base-retarget-test.py 55 KB runs code
- scripts/base-retarget.py 48 KB runs code
- scripts/campaign-start-test.py 16 KB runs code
- scripts/campaign-start.py 38 KB runs code
- scripts/carryover-test.py 20 KB runs code
- scripts/carryover.py 16 KB runs code
- scripts/ci-snapshot.py 94 KB runs code
- scripts/ci-status-test.py 158 KB runs code
- scripts/ci-status.py 219 KB runs code
- scripts/clean-rebase-test.py 50 KB runs code
- scripts/clean-rebase.py 24 KB runs code
- scripts/emit-amendment.py 3.0 KB runs code
- scripts/emit-finding.py 6.3 KB runs code
- scripts/emit-progress.py 6.8 KB runs code
- scripts/emit-report.py 4.6 KB runs code
- scripts/finding-audit-test.py 28 KB runs code
- scripts/finding-audit.py 34 KB runs code
- scripts/fixtures/ci-snapshot/blank-line.jsonl 709 B
- scripts/fixtures/ci-snapshot/checkruns-marker-no-sha.jsonl 1.0 KB
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.
- 2d ago First seen · 426 lines · 183 tokens per session scan C dd0ab3e976df
campaign is a skill published in the GitHub repository lestrrat-ai/claude-code-plugins (18 stars, last pushed 3d ago), licensed MIT. It adds 183 tokens to every session and 9,860 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…
agent-host-chat-contributions
Build and review cross-cutting agent-host chat behavior through lifecycle contributions. Use when adding turn lifecycle side effects, prompt or context injection, restored-history transformation, protocol-action observation, or when reviewing changes that add code to AgentSideEffects or AgentService.
auto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.