From session-orchestrator
Runs a multi-persona expert review panel against a file, directory, or output range, dispatching domain-specific personas, consolidating results, and emitting a sidecar report with a verdict.
How this command is triggered — by the user, by Claude, or both
Slash command
/session-orchestrator:persona-panel <target> [--personas <names,...>] [--mode <voting|hard-gate|summary>] [--threshold <M-of-N|all|any>] [--dry-run]The summary Claude sees in its command listing — used to decide when to auto-load this command
# Persona Panel Dispatches N personas from the per-repo `.claude/personas/` catalog in parallel (one `Agent()` call per persona), consolidates their outputs, persists a sidecar to `.orchestrator/persona-panel/`, and reports the final verdict. Invoke the `persona-panel` skill with arguments: **$ARGUMENTS** ## Argument Validation Parse `$ARGUMENTS` before doing anything else. **Positional argument (required):** - `<target>` — file path, directory, or range to review. Must be resolvable via `validatePathInsideProject` against the current project root. Relative paths are resolved from the ...
Dispatches N personas from the per-repo .claude/personas/ catalog in parallel (one Agent() call per persona), consolidates their outputs, persists a sidecar to .orchestrator/persona-panel/, and reports the final verdict. Invoke the persona-panel skill with arguments: $ARGUMENTS
Parse $ARGUMENTS before doing anything else.
Positional argument (required):
<target> — file path, directory, or range to review. Must be resolvable via validatePathInsideProject against the current project root. Relative paths are resolved from the project root. Globs are accepted (e.g., src/app/api/*.ts).Recognized flags:
--personas <names,...> — comma-separated subset of catalog names to include (e.g., physicist,ai-expert). Default: all personas discovered in .claude/personas/. Names are matched case-insensitively against <name>.md catalog files.--mode <voting|hard-gate|summary> — consolidation mode. Default: voting.
voting — M-of-N quorum; deterministic. Requires --threshold M-of-N or defaults to all.hard-gate — all N personas must PASS; deterministic. --threshold all is the default; --threshold N-of-N is also accepted.summary — coordinator LLM-aggregate of heterogeneous outputs. Emits an explicit WARN that this mode adds one additional LLM call.--threshold <spec> — quorum spec. Accepted forms: M-of-N where M and N are integers 1..20, all, or any. Parsed by scripts/lib/persona-panel/threshold.mjs::parseThreshold(). Default: all.--dry-run — resolve catalog, print dispatch plan, do NOT call Agent(), do NOT write sidecar. Exit 0 on success.Validation errors (all exit 1):
<target>: missing required arg <target>.-- but not in the list above): unknown flag: --<name>. Valid: --personas, --mode, --threshold, --dry-run.--mode value not in enum: invalid --mode value: '<value>'. Valid: voting, hard-gate, summary.--threshold value fails parseThreshold(): echo the parser error verbatim, e.g., invalid threshold 'foo': expected M-of-N (M,N integers 1..20), 'all', or 'any'.<target> outside project root: target path outside project: <path>.If <target> is missing, print the usage line and exit 1 without invoking the skill.
Phase 1 — Catalog Discovery
The skill scans .claude/personas/*.md in the current repo. Each file must have YAML frontmatter with at minimum name, role, and tier. If --personas is given, only matching files are loaded; unmatched names produce a warning but do not abort (the remaining personas proceed). If zero personas are resolved after filtering, exit 1 with: no personas resolved — check .claude/personas/ or --personas filter.
Phase 2 — Target Resolution
<target> is validated via validatePathInsideProject. Globs are expanded; directories are passed as-is for the skill to recurse. The resolved target is attached to each persona's prompt context.
Phase 3 — Parallel Dispatch
One Agent() call per resolved persona. Agents run with the persona's model frontmatter field (default claude-opus-4-7). Each agent receives the persona body as its system prompt and the target file content (or directory listing) as context. Agent outputs are collected in an outputs[] array keyed by persona name.
Phase 4 — Consolidation
Mode determines the consolidation strategy:
voting — count PASS verdicts. Apply --threshold to determine final verdict. Dissenting personas (FAIL or UNCLEAR) are listed explicitly.hard-gate — all resolved personas must return PASS. Any single FAIL or UNCLEAR produces a final verdict of FAIL. Dissenting personas are listed.summary — coordinator LLM call aggregates heterogeneous outputs into a structured narrative. A WARN is emitted before dispatch: summary mode adds one additional LLM call.Phase 5 — Sidecar Persist + Report
Unless --dry-run, a sidecar is written to .orchestrator/persona-panel/<isoTs>-<run-id>.json matching the schema at agents/schemas/persona-panel-sidecar.schema.json. The sidecar includes run_id, target, personas_invoked[], outputs[], and consolidation (mode, final-verdict, dissenting-personas, audit-reason).
The command emits a summary line to stdout:
persona-panel: <final-verdict> (<M>/<N> PASS) — sidecar: .orchestrator/persona-panel/<filename>.json
Dissenting: <name1>, <name2> [omitted when none]
1. Default — all catalog personas, voting mode:
/persona-panel src/app/api/invoices.ts
Loads all .claude/personas/*.md, dispatches one agent per persona, applies voting with threshold all, writes sidecar.
2. Specific personas:
/persona-panel src/app/api/invoices.ts --personas physicist,ai-expert
Only the physicist and ai-expert catalog entries are dispatched. Others are skipped.
3. Hard-gate mode, unanimous threshold:
/persona-panel docs/research/wfk-2.1.5.md --mode hard-gate --threshold all
All resolved personas must return PASS. A single FAIL produces a final FAIL verdict.
4. Dry-run — inspect dispatch plan without executing:
/persona-panel src/ --dry-run
Resolves catalog and target, prints the planned dispatch list (persona names, models, target), exits 0 without calling Agent() or writing a sidecar.
skills/persona-panel/SKILL.md — skill spec: 6 phases, catalog format, dispatch mechanics, consolidation logic, sidecar schemaagents/schemas/persona-panel-sidecar.schema.json — AJV Draft 2020-12 sidecar schemanpx claudepluginhub kanevry/session-orchestrator --plugin session-orchestrator/reviewPerforms brutal multi-perspective code review on file or git diff from 5 agents (architecture, risk, quality, testability, requirements), with verdicts, summary table, Wall of Shame, and action items.
/reviewReviews documents or free-text topics with multiple AI models independently, then synthesizes and converges on a unified review.
/cc-councilRuns multi-agent council review on code targets (files, dirs, PRs, git diffs, architecture) with protocols, scoped scoring, voting, and orchestration. Produces findings, weighted scores, and optional auto-fixes.
/fire-7-reviewRuns multi-perspective code review using 16 specialized reviewer personas (security, quality, architecture, UX/DX) to catch issues a single reviewer would miss. Accepts a file, directory, PR number, or review phase as target.
/consensusRuns multi-agent consensus review on code changes, docs/specs, or launch decisions using git PR/diff context and parallel agents for fast pragmatic outcomes.
/sc-adversarial-reviewRuns multi-model adversarial review using Codex, Gemini, and Claude on files, directories, staged changes, branches, or PRs for diverse critiques.