Panel
Precondition
Must be run from main thread (reason: subagents can't spawn other subagents)
Usage
/at:panel <prompt>
Prompt is mandatory — if missing, fail loudly; don't infer.
Goal
Get independent perspectives on a topic from multiple models. Default line-up: the strongest available Claude model + Codex. Callers (or project config, e.g. auto-task's config) may specify different panelists.
Step 1: Expand Skill References
If the prompt invokes a skill (explicit /name only — not bare names in prose/diagrams), inline its SKILL.md, clearly fenced, after the instruction. Recurse into /name invocations found inside, but inline each skill at most once — never re-expand one already present (terminates; prevents cycles and bloat).
Example: /at:panel please /at:plan-task 054 but don't write to the task file.
Expanded prompt:
""" Please /at:plan-task 054 but don't write to the task file.
Skill references: === BEGIN plan-task SKILL.md === [full content of the plan-task skill's SKILL.md — resolve the skill wherever it is installed, e.g. the plugin cache under ~/.claude/plugins/cache/ or the project's .claude/skills/] === END plan-task SKILL.md === """
Step 2: Append Anti-Sycophancy Block
Append the block below to the prompt:
Answer directly and honestly. Do not hedge or soften to be agreeable. If your honest answer differs substantively from what the prompt seems to expect, give that one.
Step 3: Dispatch
Spawn one subagent per panelist in parallel and pass through the prompt — by default a Codex panelist (via codex:codex-rescue) and a Claude panelist (strongest available model).
If a requested panelist is unavailable (e.g. usage limit), fail loudly — do not substitute or skip.
Write the responses to /tmp/panel-<timestamp>-<slot>.md.
Step 4: Deliver
Present all responses verbatim, each directly attributed to its model (e.g. Codex / Claude), including the paths to the raw responses.
Do not synthesise, reconcile, or edit.