Skip to main content
skill CX Codex

fan-out — Claude Code skill: parallel solution exploration

Spawns several subagents on one problem, then folds their findings into a single pick. Useful when two or more solutions compete and you need evidence, not a guess.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add haabe/mycelium --skill fan-out -a claude-code
Open on GitHub

What fan-out does

The skill reads candidate solutions from .claude/canvas/opportunities.yml, finds the riskiest assumption behind each one, and gives every worker its own isolated worktree. Workers report evidence with sources attached rather than a bare verdict. The lead agent then merges the results, refreshes ICE scores in the canvas, runs /mycelium:bias-check over the combined findings, and writes the decision into .claude/harness/decision-log.md.

A bakeoff mode compares competing leaves for the same opportunity using structured scorecards and winner-selection rules. Losing leaves land in .claude/canvas/archived-solutions.yml with a full evidence snapshot. The limits are firm: at least 2 workers, no more than 3 leaves per bakeoff, and workers never write to the canvas or advance diamonds. On Claude the guard-state gate blocks a subagent's write to .claude/canvas/ or .claude/diamonds/.

The skill assumes it runs inside the Mycelium framework. Installed on its own, it skips the canvas state, theory gates and harness behaviour it relies on. Tests marked human — surveys, fake doors, interviews, paid pilots — are off limits to workers: register them through /mycelium:handoff and log the verdict with /mycelium:log-evidence. A subagent can only imitate what people might do, and an imitation is not a test result.

What it helps with

  • fan out several subagents across one opportunity and merge their output
  • compare competing solutions on evidence instead of ICE score
  • keep parallel experiments isolated in separate worktrees
  • record the winning pick and archive the losers
  • run a bias check over combined findings before deciding

Example prompts for the agent

  • Fan out workers on the two solutions in opportunities.yml and merge the results
  • Run a bakeoff across the leaves for this opportunity and show me the scorecards
  • Collect the workers' evidence, update ICE and run /mycelium:bias-check

How to install fan-out

1Skills CLI (Vercel)

npx skills add haabe/mycelium --skill fan-out -a claude-code

2Manually: put the files in place

~/.claude/skills/fan-out/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/fan-out/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about fan-out

How do I install fan-out in Claude Code?

Run npx skills add haabe/mycelium --skill fan-out -a claude-code. The skill file then sits at ~/.claude/skills/fan-out/SKILL.md.

What does fan-out do?

It spawns workers to explore solutions in parallel, gathers their evidence, and helps pick a winner. Losing leaves are archived with an evidence snapshot.

Can I use fan-out without Mycelium?

The skill is built to run inside the Mycelium framework. Standalone use skips the canvas state, theory gates and harness behaviour it assumes.

Source text

SKILL.md · MIT
---
name: fan-out
description: "Parallel agent orchestration for OST exploration. Fan-out multiple solution explorations, fan-in results to compare and select winners."
metadata:
  instruction_budget: "22"
  framework_dependency: "mycelium"
  framework_dependency_note: "This skill is designed to run within the Mycelium framework (https://github.com/haabe/mycelium). Standalone use will skip the canvas state, theory gates, and harness behavior the skill assumes. Install: /plugin install mycelium@haabe-mycelium."
---

# Fan-Out / Fan-In Orchestration

## When to Use
- OST has 2+ solutions for the same opportunity that need parallel exploration
- Independent delivery work items that can be parallelized
- Multiple research streams needed simultaneously

## Workflow

### 1. Prepare (Lead Agent)
- Read .claude/canvas/opportunities.yml
- Identify solutions needing parallel work
- For each: identify riskiest assumption, design test, and write its `runs_on` (disk | network | human, as in `/mycelium:assumption-test`)
- Register each `human` test (survey, fake door, interviews, paid pilot) through `/mycelium:handoff`. No subagent runs it: a subagent can only simulate what people would do, and a simulated verdict is not a test result (v0.330.0)

### 2. Fan-Out (Spawn Workers, disk and network tests only)
For each solution with a disk or network test:
- Spawn subagent or Agent Team member
- Provide: clear task, read-only canvas context, worktree isolation, and a turn cap where the runtime has one (`maxTurns` in an agent definition). A time bound in the brief is advice: Claude Code has no time limit for a subagent
- Each worker runs independently and reports its evidence with its source, not only a verdict

### 3. Fan-In (Collect Results)
- Collect all worker results, and the `human` tests' verdicts once logged through `/mycelium:log-evidence`
- Update ICE scores in canvas
- Run `/mycelium:bias-check` on combined findings
- Select winner(s) based on evidence
- Log decision in .claude/harness/decision-log.md

### Leaf Bakeoff Mode

When comparing competing OST leaves for the same opportunity (two or more leaves that each have an untested riskiest assumption; no ICE gap is consulted):
- Each worker returns a structured **scorecard** (Four Risks + ICE from the leaf's record, the result of its disk or network test, segment fit); a leaf whose test is `human` gets its scorecard from the lead once the verdict is logged
- Lead agent applies **winner selection rules**, which read the assumption-test verdicts: clear winner (one passes, the others fail), several pass in the same segment (tiebreaker), several pass in different segments (segment split, both advance), both fail (archive and re-evaluate). A leaf whose riskiest assumption failed is archived.
- The ICE total only orders which assumption is tested first. It never decides when to compare or which leaf wins (until 0.320.0 a "clear winner" was a leaf more than 20% ahead on ICE).
- Losers are archived to `.claude/canvas/archived-solutions.yml` with full evidence snapshot

See `${CLAUDE_PLUGIN_ROOT}/orchestration/leaf-bakeoff.md` for the complete bakeoff protocol.

## Rules
- Workers NEVER write to canvas (lead agent does). On Claude Code the guard-state gate refuses a subagent's write to `.claude/canvas/` or `.claude/diamonds/` (v0.330.0); the other rules below are the lead's discipline and no hook checks them
- Workers NEVER progress diamonds
- Workers NEVER run a `human` test
- Lead agent ALWAYS runs bias check on combined results
- Minimum 2 workers for meaningful comparison
- Maximum 3 leaves per bakeoff (respects L3 WIP ceiling)
- Inside an L3 (v0.301.0), the leaves are its set under the L2's target, and a clear winner is the candidate for its `front_runner`; recording it is the human's choice

See `${CLAUDE_PLUGIN_ROOT}/orchestration/agent-teams.md` for full orchestration patterns.

© haabe · MIT · haabe/mycelium

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set14

mocked-persona-interview For solo and hobby projects where real user interviews are off the table: the skill runs interviews with invented personas and keeps them from becoming a rubber stamp for your own assumptions. CX Codex +1 ★ 47repo stars metrics-detect Scans the repo and sets up adapters for the metric sources your product actually uses, from GitHub to Stripe. Handy when the project predates this setup. CX Codex +1 ★ 47repo stars jtbd-map Splits customer work into functional, emotional and social jobs, then saves the map to a canvas file. CX Codex +1 ★ 47repo stars friction-log Drafts an honest write-up of where working with Mycelium felt confusing or slow. You edit it and decide whether it goes anywhere. CX Codex +1 ★ 47repo stars diamond-render Turns .claude/diamonds/active.yml into a picture of the decisions recorded so far, in order, plus the ones still ahead. Useful at the end of an assessment. CX Codex +1 ★ 47repo stars define-done Sets a measurable Definition of Done for a diamond: a change in behaviour that creates value, not a build list. Useful when work gets signed off on shipping alone. CX Codex +1 ★ 47repo stars count Reads your repository and prints one line: when the first source file landed, how many decisions came before it, how many sessions there were. Sends nothing anywhere. CX Codex +1 ★ 47repo stars canvas-sync Pulls and commits canvas state through git so every teammate works from the same product knowledge. Meant for the first and last minutes of a session. CX Codex +1 ★ 47repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor