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/rasputinkaiser/self-improvement-plugin/fan-outgit clone --depth 1 https://github.com/RasputinKaiser/Self-Improvement-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/rasputinkaiser/self-improvement-plugin/fan-out)<a href="https://agentmods.dev/commands/rasputinkaiser/self-improvement-plugin/fan-out"><img src="https://agentmods.dev/badge/commands/rasputinkaiser/self-improvement-plugin/fan-out.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.00057 | $0.00874 |
| Opus 5 | $0.00028 | $0.00437 |
| Sonnet 5 | $0.00011 | $0.00175 |
| Haiku 4.5 | $0.00006 | $0.00087 |
Grade A, and why
fan-out 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 — 78 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/fan-out — multi-agent fan-out coordinator
Fan-out outputs can be displayed as board cards when attached to a runtime
campaign. Preserve the role boundary in each card (Scout, Judge, Worker,
or PM) and keep SLICE, DIFF, and LESSON as separate receipt fields.
LESSON is a candidate memory record until it passes the existing
verify-before-use path; a progress card is not evidence of execution.
When the host creates child tasks or conversations, attach the returned handles to the campaign spine explicitly rather than guessing them:
python3 scripts/sips_campaign_fleet.py attach <campaign_id> \
--child-id <slice_id> --title "<slice objective>" \
--role Worker --thread-id <host_thread_id> --task-id <runtime_task_id>
Archive a finished child in the projection with archive <campaign_id> <child_id>; use reopen when the work returns to the foreground. Reopen
creates a new child incarnation, so attach a new thread/task handle when one
exists. This keeps archived chat receipts searchable while leaving the host
conversation store untouched.
Parse user arguments:
/fan-out "<parent objective>"
- Split the objective from the slices. The user's input format:
<parent objective> | slice 1; slice 2; slice 3 - Call:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/fan_out.py prepare \ --parent "<parent objective>" \ --slices "<slice 1>" "<slice 2>" "<slice 3>" \ --campaign-id "<campaign_id>" - Read the resulting JSON. It contains a
runIdand per-slicecwdpaths. - For each slice, dispatch a
fan-outagent in parallel:- subagent_type:
fan-out - cwd: the slice's directory (from
cwdin the run state) - prompt: "Read HANDOFF.md in your cwd. Do your slice. End with SLICE/DIFF/LESSON or BLOCKED as the format requires."
- subagent_type:
- Wait for all agents to return. Collect each agent's
resultfield as theresponsefor that slice. - Replay results back into the run state:
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/fan_out.py ingest --run-id <runId> \ --outputs '[{"sliceId":"slice_1","response":"..."},{"sliceId":"slice_2","response":"..."}]' - Read the resulting summary. Surface disagreements and lessons to the user.
--campaign-idonly adds the explicit campaign reference to the fan-out projection; child host/thread handles are still attached after dispatch.
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 · 78 lines · 57 tokens per session scan A 86153fd54be7
fan-out is a command published in the GitHub repository RasputinKaiser/Self-Improvement-Plugin (6 stars, last pushed 7d ago), licensed MIT. It adds 57 tokens to every session and 874 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-31.
Other commands, from other repositories
prp-plan
Create comprehensive feature implementation plan with codebase analysis and pattern extraction.
santa-loop
Adversarial dual-review convergence loop — two independent model reviewers must both approve before code ships.
gan-design
Run a generator/evaluator design loop for frontend or visual work with bounded iterations and scoring.
feature
Orchestrate a complete feature through discovery, spec, implementation, and review.
test
Design or run focused test validation for a task, bug, or diff.
research
Research a technical or product question.