From expert-panel
Run a structured expert panel to turn an open question into a defensible recommendation with explicit trade-offs. Use when user faces an open decision (X vs Y), brainstorming need, or wants multi-perspective analysis.
How this skill is triggered — by the user, by Claude, or both
Slash command
/expert-panel:ideate [--mode quick|standard|thorough|max] [flags] "<problem>"[--mode quick|standard|thorough|max] [flags] "<problem>"This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You orchestrate a structured multi-agent ideation panel. You do not generate ideas yourself; you spawn agents with defined roles and synthesize their outputs.
You orchestrate a structured multi-agent ideation panel. You do not generate ideas yourself; you spawn agents with defined roles and synthesize their outputs.
Announce at start: "Running expert-panel ideation (/ideate)."
1. Parse arguments (flags + problem text)
2. Pre-flight: check problem substance, ask clarifying questions if thin
3. Estimate tokens (always, for display; cap if --max-tokens set)
4. If --estimate: print plan and exit
5. Create run-id and working directory
6. Generate personas (meta-prompt to Claude, parse JSON)
7. [Optional --step-back] Spawn ep-abstracter
8. Spawn Round 1 ep-persona agents (parallel, N instances)
9. Diversity check (when rounds >= 2): score 1-10. Adaptive Break skips R2 if score >= 8 (unless --no-adaptive-break). Retry R1 once if score < 6 and --monitor-diversity set.
10. [Optional --interactive] Show Round 1 outputs, ask user for direction
11. Spawn Round 2 ep-persona agents (parallel, N instances) — if rounds >= 2 AND not skipped by Adaptive Break
12. Spawn ep-critic (default steelman, or CoVe if --verify)
13. Spawn ep-synthesizer (default one-shot, or Elo if --elo)
14. [Optional --evolve] Spawn ep-evolver, then re-spawn synthesizer
15. [Optional --plan] Spawn ep-planner
16. Write persistent report to ~/.claude/ideate/<run-id>.md
17. Print terminal summary
18. Post-run rating (AskUserQuestion: quality_rating 1-5 + accepted)
19. (Stop hook appends to metrics.jsonl automatically)
Load references/persona-heuristics.md before step 6.
Load references/prompt-templates.md before any agent spawn.
Load references/output-format.md before step 16.
Load references/cost-estimator.md before step 3.
$ARGUMENTS is the full command string. Extract:
--)Flags you must recognize:
--mode {quick|standard|thorough|max} — preset (default: standard)--step-back, --interactive, --verify, --monitor-diversity, --elo, --evolve, --plan, --debate--no-adaptive-break — disable the diversity-driven R2 skip (R2 then always runs when rounds >= 2)--rounds N (default 2, range 1-3)--agents N (default 4, range 3-5)--estimate (dry-run, no execution)--max-tokens N (hard cap)Mode presets expand to flag sets:
quick: agents=3, rounds=1standard: (default, no changes)thorough: --step-back, --verify, --monitor-diversitymax: --step-back, --verify, --monitor-diversity, --elo, --evolveIndividual flags always override presets.
If no problem text provided: ask AskUserQuestion "Was ist das Problem, zu dem du eine Expertenrunde willst?"
Heuristic: problem is thin if
If thin: use AskUserQuestion with up to 3 questions combined:
If user answers all three: continue. If user gives 3 "weiss nicht" in any combination: abort cleanly.
Load references/cost-estimator.md. Apply the formula using active flags.
Build a breakdown:
When showing the total, also show "with Adaptive Break (-{agents × 6}k tokens if R1 highly diverse)" as a possible reduction. The actual R2-skip only triggers post-R1.
Sum totals. Print:
Estimated agent calls and tokens for this run:
{breakdown per line}
---
Total: {N} agent calls, ~{X}k tokens (+/- 30%)
If --estimate: print this and exit. Do NOT spawn any agents.
If --max-tokens N set AND estimate > N: warn the user before proceeding.
Run-id format: YYYY-MM-DD-HHmm-<slug> per references/output-format.md. Use Bash date +%Y-%m-%d-%H%M and derive slug from first 3-5 problem words.
Create /tmp/expert-panel/<run-id>/ via Bash mkdir -p.
Write initial run-meta.json with this schema (schema_version 2):
{
"schema_version": 2,
"run_id": "<run-id>",
"problem_short": "<first 200 chars of problem>",
"mode": "<quick|standard|thorough|max>",
"flags": ["--mode thorough", "--plan", ...],
"agents": 4,
"rounds": 2,
"step_back": false,
"verify": false,
"monitor_diversity": false,
"elo": false,
"evolve": false,
"plan": false,
"interactive": false,
"started_at": "<ISO 8601>",
"started_at_unix": <epoch seconds from `date +%s`>
}
Outcome fields (ended_at, ended_at_unix, wall_clock_seconds, quality_rating, accepted, rating_note, top_recommendation, diversity_score_r1, r2_skipped, agent_calls) are added in step 17 and intermediate steps. Always overwrite the same file, never append.
Prompt Claude (as the orchestrator, NOT via Agent tool) with the meta-prompt from references/persona-heuristics.md. Parse the JSON response. Validate that:
On parse failure: retry once with a more explicit prompt. On second failure: abort with error.
Save to /tmp/expert-panel/<run-id>/personas.json.
If --step-back: Agent tool spawn:
Agent(
subagent_type: "ep-abstracter",
model: "opus",
prompt: <from prompt-templates.md, filled with problem and context>
)
Expect return DONE|/tmp/expert-panel/<run-id>/abstract.md.
Read abstract.md and keep its contents for inclusion in Round 1 persona prompts.
Spawn N agents in parallel in a SINGLE message with N Agent tool calls:
Agent 1: subagent_type: "ep-persona", prompt: <round-1 template filled for persona 1>
Agent 2: subagent_type: "ep-persona", prompt: <round-1 template filled for persona 2>
...
Agent N: subagent_type: "ep-persona", prompt: <round-1 template filled for persona N>
Each returns DONE|<path>. Verify all N files exist.
Always run this check when rounds >= 2 (cost: ~3k tokens, 1 sonnet call). The check feeds two decisions: optional R1-retry (controlled by --monitor-diversity) and Adaptive Break of R2 (controlled by --no-adaptive-break).
Prompt Claude (as orchestrator, not via Agent tool) with:
"Bewerte die semantische Diversitaet dieser {N} Outputs auf Skala 1-10. Skala: 1 = alle Outputs sagen praktisch dasselbe, 10 = jeder Output deckt einen eigenen, nicht-ueberlappenden Ideenraum ab.
{round-1 outputs concatenated with separators}
Gib nur eine Zahl 1-10 und einen Satz Begruendung zurueck, nichts anderes."
Parse the first integer (diversity_score_r1). Write it to run-meta.json. Then apply the decision tree:
Branch A — Score >= 8 (high diversity, R1 covers the space):
--no-adaptive-break is NOT set → skip Round 2 entirely (Adaptive Break). Write r2_skipped: true, r2_skip_reason: "adaptive_break_high_diversity" to run-meta.json. Jump to step 11 (critic).--no-adaptive-break IS set → proceed to R2 anyway.Branch B — Score < 6 (too homogeneous):
--monitor-diversity AND retry count == 0 → increment retry, re-run Round 1 with appended instruction: "Vorige Runde war zu homogen. Weiche bewusst von anderen Perspektiven ab, finde Ansaetze die keiner anderen Persona einfallen wuerden." After re-run, do NOT re-check diversity. Proceed to R2.--monitor-diversity AND retry count > 0 → log warning (diversity_warning: <score>), proceed to R2.--monitor-diversity NOT set → log warning, proceed to R2.Branch C — Score 6-7 (moderate diversity):
Skip the entire check (and Adaptive Break) when rounds < 2 — there is no R2 to break out of.
If --interactive:
Print to user a compact summary of Round 1 (per persona: 1 sentence distilling their core position, plus a numbered list of their ideas 1 line each).
Then call AskUserQuestion with:
Act on the answer:
Note: this checkpoint is a no-op on token cost; it just restructures the remaining pipeline.
Only if rounds >= 2 AND step 8 did not trigger Adaptive Break. Spawn N agents in parallel, each receives their own Round 1 output AND all other Round 1 outputs as context.
Agent 1: subagent_type: "ep-persona", prompt: <round-2 template filled for persona 1>
...
Agent N: subagent_type: "ep-persona", prompt: <round-2 template filled for persona N>
Each returns DONE|<path>.
Spawn single ep-critic agent (model opus, with tools). Prompt from prompt-templates.md, default steelman variant or CoVe variant depending on --verify.
Agent: subagent_type: "ep-critic", prompt: <critic template with all rounds concatenated>
Spawn single ep-synthesizer. One-shot by default, Elo if --elo. Use the corresponding template from prompt-templates.md.
Agent: subagent_type: "ep-synthesizer", prompt: <synth template with all proposer outputs + critique>
If --evolve:
synthesis.md.If --plan: spawn ep-planner with the final recommendation as the input. Output goes to /tmp/expert-panel/<run-id>/plan.md and is included in the persistent report in section "Optional: Grober Plan".
Read all per-run files. Assemble the report per the schema in references/output-format.md. Write to ~/.claude/ideate/<run-id>.md.
Also write/append ~/.claude/ideate/metrics.jsonl (the stop hook does this automatically from run-meta.json, but ensure run-meta.json is complete).
Print the Terminal Kurzform from references/output-format.md. Keep under 30 lines for readability.
Right after the terminal output, capture user feedback for the metrics file. Use AskUserQuestion with TWO questions:
Question 1: "Wie nuetzlich war dieser Run?"
Question 2: "Was passiert mit der Empfehlung?"
After both answers received, update run-meta.json (overwrite, do NOT append):
ended_at: ISO 8601 timestamp nowended_at_unix: date +%swall_clock_seconds: ended_at_unix - started_at_unixquality_rating: integer 1-5 parsed from question 1accepted: one of "yes", "modified", "no", "pending" mapped from question 2If the user picks "Other" or aborts the rating, write quality_rating: null and accepted: null — do not block the run completion.
The Stop hook will then pick up the final run-meta.json and append to metrics.jsonl. With the idempotency fix, it will only append once per run_id.
Keep a running accumulated_tokens counter. After each agent call:
file_char_count / 4.Note: this is a best-effort estimate. The actual token count in Claude Code is not exposed to the skill. We err on the side of aborting slightly too early rather than overshooting.
When the cap triggers: mark the report as "truncated" and list which steps were skipped.
--debate used but CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS not set: print warning, fall back to subagent mode.--max-tokens exceeded mid-run: stop further agent calls, synthesize with what we have, mark report as "truncated".Only enters if $CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1. Otherwise: print warning "Teams mode requires CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1. Falling back to subagent mode." and proceed as default.
When active:
ep-persona with the persona-specific prompt, BUT use the teammate-spawning mechanism (team_name parameter).Known risks (per Anthropic docs):
Print at start of debate mode: "Debate mode is experimental. Proceed with caution."
~/.claude/ideate/<run-id>.md~/.claude/ideate/metrics.jsonl (via stop hook)Always print the path to the persistent report in the terminal output.
Offers UI/UX design guidance for web and mobile with 50+ styles, 161 color palettes, 57 font pairings, and 99 UX guidelines across 10 stacks. Use for designing pages, components, color systems, or reviewing UI code.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub phyr97/phyr97-marketplace --plugin expert-panel