9thlevelsoftware/legion/review-panel

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Assembles a review panel of specialist agents matched to the code or artifact being reviewed, each evaluating against domain-specific rubrics, then synthesizes findings into a consolidated report. Called by review-loop for /legion:review. Use when the user needs multi-reviewer feedback, peer review simulation, rubric-based code evaluation, or expert critique from multiple perspectives.

Install

npx vskill@latest install 9thlevelsoftware/legion/review-panel

SKILL.md

Review Panel

Composes context-aware multi-perspective review teams from the 48-agent pool (roster defined in CLAUDE.md Division table; count computed at runtime from agents/ directory). Each reviewer evaluates through domain-specific weighted rubrics with non-overlapping criteria. Produces a synthesized consolidated report.

Used by /legion:review when panel mode is selected. Replaces the static phase-type-to-agent mapping with dynamic selection via agent-registry recommendation algorithm.

Quick Start

Three phases: Compose (Section 1) → Review (agents evaluate independently against rubrics from Section 2) → Synthesize (Section 3 deduplicates, filters, and produces consolidated report). Intent filtering narrows scope when flags like --just-security are passed.


Section 1: Panel Composition Algorithm

How to assemble a review panel dynamically based on what's being reviewed.

1.2 Intent-Based Panel Filtering

When review command specifies intent (e.g., --just-security):

  1. Load Intent Domains
  • From intent-teams.yaml security-only template
  • Domains: security, owasp, stride, authentication, authorization
  1. Filter Agents by Domain
  • For each candidate agent:
  • Check agent's primary domains in authority-matrix.yaml
  • Include only if domains overlap with intent domains
  • Example: engineering-security-engineer (security domain) → INCLUDE
  • Example: engineering-frontend-developer (ui domain) → EXCLUDE
  1. Override Recommendations
  • If intent mode: Use intent template agents, skip registry recommendation
  • If full mode: Use existing recommendation algorithm
  1. Domain-Only Review Scope
  • Agents review ONLY their intent-matching domains
  • Non-security findings deferred or excluded
  • Prevents out-of-domain opinions (already filtered by authority in Phase 37)
Input: Phase CONTEXT.md content, SUMMARY.md content, files_modified list
Output: Ordered list of 2-4 reviewer agents with assigned rubrics
Step 1: Extract review signals from phase artifacts
Read the phase CONTEXT.md and all SUMMARY.md files. Extract:
- Primary domains touched (engineering, design, marketing, testing, product, infrastructure)
- File types produced (.md, .ts, .js, .css, .py, config files, etc.)
- Keywords from phase goal and task descriptions
- Combine into a composite task description for the recommendation algorithm
Step 1.0: Preconditions Verification (MANDATORY before composition)
Before running the scoring and filtering steps below, verify all preconditions. Missing
preconditions trigger documented degraded behavior, not silent success.
a) **agent-registry.md Section 3 structure** — read `skills/agent-registry/SKILL.md`.
Verify Sections 1 through 6 exist as named headings. If Section 6 (Memory Boost) is
absent: **skip the memory boost step below** and log WARN:
`"agent-registry Section 6 not found. Skipping memory-based agent score boost."`
Do not fail the review — proceed without the boost.
b) **OUTCOMES.md schema** — if `.planning/memory/OUTCOMES.md` exists, verify it conforms
to the memory-manager schema (required front-matter keys: `task_type`, `outcome`,
`agent_id`). If malformed: skip memory boost with WARN; do not fail.
c) **Agent frontmatter — `division` field** — every candidate agent .md file must have a
`division` key in its frontmatter. If absent on any candidate: log WARN and exclude
that candidate from the panel. Do not guess the division from the filename prefix.
d) **Review-capability declaration** — an agent is eligible for the panel iff its
frontmatter has a non-empty `review_strengths` array. This is the canonical marker;
do NOT infer eligibility from specialty substring matches. See Step 3 below.
Step 2: Score agents using agent-registry Section 3
Pass the composite task description to the agent-registry recommendation algorithm:
- Step 1: Parse extracted keywords as task terms
- Step 2: Match agents — exact (3 pts), partial (1 pt), division (2 pts)
- Step 3: Rank by score, break ties by specificity
- Step 6 (optional, per precondition 1.0.a): Apply memory boost if OUTCOMES.md exists
AND agent-registry Section 6 is present AND OUTCOMES.md is schema-conformant.
Step 3: Filter to review-capable agents
From the ranked list, keep only agents whose frontmatter declares a non-empty
`review_strengths` array (the declarative eligibility marker established in Step 1.0.d).
**Reference roster — current review-capable agents** (verify against agents/ directory
at runtime; this list is informational, not authoritative):
Testing division (6 agents — verified against CLAUDE.md):
- testing-qa-verification-specialist, testing-api-tester
- testing-workflow-optimizer, testing-performance-benchmarker
- testing-test-results-analyzer, testing-tool-evaluator
Design division (review-capable):
- design-brand-guardian, design-ux-architect, design-ux-researcher
Engineering division (review-capable):
- engineering-senior-developer, engineering-backend-architect
- engineering-frontend-developer, engineering-infrastructure-devops
Product division (review-capable):
- product-sprint-prioritizer, product-feedback-synthesizer
Project Management (review-capable):
- project-manager-senior, project-management-project-shepherd
**Note:** `testing-evidence-collector`, `engineering-devops-automator`, and
`marketing-content-creator` do NOT exist in the Legion 48-agent roster. They MUST NOT
appear in this list. If found in a prior version of this skill file, treat as a doc bug
and verify removal. Canonical agent IDs are in CLAUDE.md Division table.
If an agent from a non-review-capable role (e.g., a marketing-platform specialist without
review_strengths, or an XR-immersive role) scores highly, skip it and take the next
eligible agent.
Step 4: Cap panel size and enforce diversity
- 2 reviewers: single-domain phase (only one division touched)
- 3 reviewers: standard phase (2 divisions involved)
- 4 reviewers: cross-domain phase (3+ divisions involved)
Diversity rule: no more than 2 reviewers from the same division.
If 3+ agents from Testing score highest, keep the top 2 and pull the
next-highest from a different division.
Mandatory: at least one Testing division agent on every panel.
This inherits from agent-registry Step 5 (Mandatory Roles) and from
the existing review-loop principle that testing-qa-verification-specialist is
always included.
Step 5: Assign rubrics
For each selected reviewer, look up their domain rubric from Section 2.
The rubric is keyed by agent ID. If no specific rubric exists for an agent,
use the division default rubric.
Step 6: Present panel to user for confirmation
Display the composed panel via AskUserQuestion:
## Phase {N}: {phase_name} — Review Panel
**Panel Size**: {count} reviewers (based on {domain_count} domain(s) detected)
**Domains Detected**: {comma-separated domains}
| # | Agent | Division | Rubric Focus | Score |
|---|-------|----------|--------------|-------|
| 1 | {agent-id} | {division} | {rubric_name} | {score} pts |
| 2 | {agent-id} | {division} | {rubric_name} | {score} pts |
**Why this panel**: {1-sentence rationale linking detected domains to selected agents}
Options:
- "Use this panel" (Recommended)
- "Add a reviewer" — add one more agent from the ranked list (up to max 4)
- "Replace a reviewer" — swap one reviewer for an alternative
- "Other" — enter custom agent IDs
If user selects "Add a reviewer": show next-ranked eligible agent, confirm
If user selects "Replace a reviewer": show which reviewer to replace and alternatives
If user selects "Other": accept custom agent IDs, validate each exists, assign default rubric
Panel Output Contract (consumed by review-loop dispatch)

review-panel does NOT spawn agents. It emits a composition artifact that review-loop Section 2 consumes and review-loop Section 3/4 dispatches. The contract below is the ONLY surface review-loop reads.

Emitted artifact: in-memory object with shape:

yaml
panel:
reviewers: # ordered list, length 2-4 per Step 4
- agent_id: {string — must match filename in agents/}
division: {string}
rubric_name: {string — matches Section 2 rubric key}
score: {integer}
rationale: {string}
domains_detected: [{string}, ...]
mode: "full" | "security-only" | "design-only" | "marketing-only"
confirmed_by_user: true

Dispatch handoff to review-loop:

FieldValue
WhenAFTER Step 6 user confirmation succeeds (confirmed_by_user: true). If user declines all options: emit <escalation severity=warning type=scope> and return empty panel — do NOT fabricate a panel.
Why no dispatch herereview-panel is pure composition. Spawning is the responsibility of review-loop Section 3 Step 4 (review agents) and Section 5 Step 4 (fix agents). Separation prevents double-dispatch bugs when panel is reused across cycles.
How many reviewersExactly the count emitted in panel.reviewers (2-4 per Step 4 cap). review-loop must not add, drop, or reorder reviewers without re-invoking review-panel.
MechanismReturn value to review-loop caller. review-loop reads panel.reviewers[*].agent_id and treats each as input to Section 3 prompt construction, then Section 3 Step 4 dispatch spec.

Preconditions (verify before emitting artifact):

  1. Step 1.0 preconditions passed.
  2. Step 3 review-capability filter produced ≥ 1 eligible agent.
  3. Step 4 cap produced count(reviewers) ∈ {2, 3, 4}.
  4. Step 5 rubric assignment succeeded for every reviewer (no silent default).
  5. Step 6 user confirmation returned a closed-set option (never free text without validation).

If any precondition fails: emit <escalation severity=blocker type=quality> and return empty panel. Do NOT return partial panel.


Review Conduct Rules

These rules are injected into every review agent's prompt to ensure rigorous, actionable feedback.

Mandatory Conduct
  1. Verify before implementing — Confirm feedback is technically correct for THIS codebase before acting on it. Grep for the function, read the file, check the dependency.
  2. Pushback is expected — Reviewers MUST challenge when: suggestion would break existing functionality, reviewer lacks context for the change, recommendation violates YAGNI, feedback is technically incorrect for the runtime/framework in use, or suggestion conflicts with prior architectural decisions.
  3. No performative agreement — Do NOT use phrases like "great point!", "you're absolutely right!", "excellent suggestion!". State agreement factually: "Confirmed: the null check is missing."
  4. Specificity required — Every finding MUST include: file path and line number, what is wrong, why it matters, and how to fix it. Findings without all four elements are rejected.
  5. Severity accuracy — Do NOT mark nitpicks (formatting, naming preferences) as BLOCKER. BLOCKER is reserved for: crashes, data loss, security vulnerabilities, broken builds. WARNING is for logic errors, missing edge cases, performance issues. INFO is for style, conventions, suggestions.
  6. Clear verdict mandatory — Every review MUST end with an explicit verdict: "Ready to merge? Yes / No / With fixes". No ambiguous conclusions.

Section 2: Domain Rubric Registry

Non-overlapping evaluation criteria for each reviewer specialty. Each rubric defines what that reviewer checks — and implicitly, what they do NOT check (that's another reviewer's rubric).

How Rubrics Work

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
62
Repository forks
7
7-day trend score
21

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/9thlevelsoftware/legion/review-panel/badge)](https://verified-skill.com/skills/9thlevelsoftware/legion/review-panel)

Something wrong with this skill or its page? Tell us.