architecture
Use when the user asks to improve architecture, find refactoring opportunities, surface deepening opportunities, consolidate tightly-coupled modules, or make a…
Use this skill when you need multi-persona parallel content review — domain experts, buyer personas, compliance reviewers, or custom catalog entries reviewing a target file or output. Dispatches N persona agents in parallel, consolidates verdicts via a configurable mode
$ npx -y skills add Kanevry/session-orchestrator --skill persona-panel --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/persona-panelContext preview
The summary Claude sees to decide when to auto-load this skill.
Use this skill when you need multi-persona parallel content review — domain experts, buyer personas, compliance reviewers, or custom catalog entries reviewing a target file or output. Dispatches N persona agents in parallel, consolidates verdicts via a configurable mode
name: persona-panel user-invocable: true tags: [review, personas, content, quality, multi-agent] model: inherit description: > Use this skill when you need multi-persona parallel content review — domain experts, buyer personas, compliance reviewers, or custom catalog entries reviewing a target file or output. Dispatches N persona agents in parallel, consolidates verdicts via a configurable mode (voting-quorum, hard-gate-threshold, or coordinator-summary), and writes a timestamped sidecar to .orchestrator/persona-panel/. Invoked via /persona-panel <target-path>.
Persona Panel runs any number of catalog-defined personas in parallel against a single target (file, document, or output range). Each persona agent produces a structured verdict. The coordinator consolidates the verdicts into a final result using one of three configurable modes and persists a sidecar record for audit and trend-tracking.
The catalog lives in `.claude/personas/*.md` — per-repo, never plugin-central. This is intentional: climate-research repos need physicists; SaaS repos need buyer personas; compliance repos need auditors. Plugin-central catalogs block that diversity.
The plugin ships one ready-made preset alongside the general `templates/personas/` catalog: a 3-lens PM/Designer/Engineer panel at `skills/persona-panel/presets/` (`pm-lens.md`, `designer-lens.md`, `engineer-lens.md`; tier `domain-expert`). Each lens audits one assumption dimension — value (PM), usability (Designer), feasibility (Engineer) — as three parallel domain-expert personas rather than one reviewer working all three serially.
Reach for it on feature/PRD/design reviews in a repo whose `.claude/personas/` is empty or missing and no domain-specific catalog exists yet. It is a starting point, not a substitute — the per-repo catalog philosophy above still holds; copy and adapt into the project's own catalog rather than referencing the plugin copy in place.
Install:
mkdir -p .claude/personas # Claude Code has no `plugin dir` subcommand — resolve the install path from the cache. SO_DIR="$(dirname "$(find ~/.claude/plugins/cache -path '*session-orchestrator*' -name package.json 2>/dev/null | head -1)")" cp "$SO_DIR/skills/persona-panel/presets/"*.md .claude/personas/
Read `skills/_shared/bootstrap-gate.md` and execute the gate check. If the gate is CLOSED, invoke `skills/bootstrap/SKILL.md` and wait for completion before proceeding. If the gate is OPEN, continue to Phase 1.
<HARD-GATE> Do NOT proceed past Phase 0 if GATE_CLOSED. There is no bypass. Refer to `skills/_shared/bootstrap-gate.md` for the full HARD-GATE constraints. </HARD-GATE>
Load the per-repo persona catalog via `loadCatalog()` from `scripts/lib/persona-panel/catalog-loader.mjs`.
**Failure modes — all are hard stops:**
**(a) `.claude/personas/` directory missing:**
Error (exit 2): .claude/personas/ directory not found in this repo. Create persona files there to use /persona-panel. See templates/personas/ for starter templates (issue #458).
**(b) `.claude/personas/` present but empty (no `.md` files):**
Error (exit 2): .claude/personas/ exists but contains no persona files (*.md). Add at least one persona file to use /persona-panel. See templates/personas/ for starter templates (issue #458).
**(c) `--personas <name>` arg specified but `name` not found in catalog:**
Error (exit 1): Persona "<name>" not found in .claude/personas/. Available personas: <list of names from catalog>.
**(d) Malformed YAML frontmatter in a catalog file:**
Error (exit 1): Malformed YAML in .claude/personas/<filename>.md at line <N>: <error>. Fix the frontmatter before running /persona-panel.
**Model validation (H2 security guard):** The catalog loader validates each persona's `model:` field against `MODEL_ID_RE` + `ALLOWED_MODEL_ALIASES` from `scripts/lib/agent-frontmatter.mjs` at load time. A persona with an invalid model string triggers failure mode (d) with an informative message: "invalid model '<value>' — must be a Claude model ID or alias (inherit|sonnet|opus|haiku)".
**`output_contract` structural pre-check (H3 security guard):** After YAML parse and before AJV compile, the loader inspects each persona's `output_contract` object for forbidden keys: `$ref`, `$defs`, `allOf`, `anyOf`. Any occurrence triggers failure mode (d). This structural pre-check runs BEFORE `ajv.compile()`. The AJV compile call wraps in a 2-second AbortSignal timeout to guard against pathological schema inputs.
After successful load, emit a one-line status banner:
Catalog: [N] personas loaded from .claude/personas/. Tier breakdown: domain-expert [N], buyer-persona [N], compliance [N], custom [N].
If `--personas <names>` was passed, filter to the named subset. Report the active set.
Resolve the `<target-path>` argument against the project root.
1. Expand to absolute path (relative inputs are resolved from `git rev-parse --show-toplevel`). 2. Call `validatePathInsideProject(absolutePath, projectRoot)` from `scripts/lib/path-utils.mjs`. This function performs a two-phase lexical + realpath guard.
"Target path escapes project root — /persona-panel only reviews files inside the repo." 3. Confirm the file exists and is readable. If not: exit 1 with "Target file not found: <path>". 4. If a range was specified (`--lines <start>-<end>`), validate that start ≤ end and both are positive integers.
Store the resolved absolute path as `$TARGET`.
Dispatch one Agent per persona from the active catalog set.
**Model selection per persona:**
Give your agents a working rhythm. You type three commands: /session reads your repository, your open issues and the last session, proposes what to work on, and waits for your correction.
Repo: Kanevry/session-orchestrator
Use when the user asks to improve architecture, find refactoring opportunities, surface deepening opportunities, consolidate tightly-coupled modules, or make a…
Use this skill when running an autonomous session-orchestration loop. Chains session-start → session-plan → wave-executor → session-end for N iterations with…
Use this skill when scaffolding the minimum repository structure required by session-orchestrator. Invoked automatically by the Bootstrap Gate when CLAUDE.md,…
Use when you have a feature idea but the scope or UX is still ambiguous — runs a lightweight Socratic design dialogue (3-5 AUQ rounds) and writes a spec…
Use when detecting drift between CLAUDE.md (or AGENTS.md, the Codex CLI alias) / _meta narrative and live repository state. Ten checks: absolute-path…
Monitor iterative improvement loops for convergence. Three signals — shrinking diff, pass-rate plateau, velocity — drive a Stop/Continue/Investigate decision…