persona-catalog.md
66 lines · skills/ce-code-review/references/persona-catalog.md at 3449230
Most marks come from matching words in the file, so treat them as pointers.
Persona Catalog
Reviewer personas are organized into a small core plus generic, cross-cutting, and stack-specific conditionals. You (the orchestrator) use this catalog to select only reviewers whose domain is present in the diff.
Raw lines 1 to 4Core and standards gate
Correctness is spawned on every multi-agent review. Project-standards is spawned only when Stage 3b (Discover project standards paths) finds at least one applicable standards file, or when standards discovery fails and the review must run the persona rather than silently skip it.
Structured persona prompt assets:
| Persona | Prompt asset | Focus |
|---|---|---|
correctness | correctness-reviewer | Logic errors, edge cases, state bugs, error propagation, intent compliance |
project-standards | project-standards-reviewer | Compliance with the project's designated criteria files, cited rule by rule |
Generic conditional
These reviewers are broadly applicable but not automatically useful. Spawn one only when the concrete surface it reviews is present in the diff.
| Persona / asset | Prompt asset | Select when diff touches... |
|---|---|---|
testing | testing-reviewer | Test files, test infrastructure, fixtures, mocks, or harness behavior; or meaningful runtime behavior changed without corresponding test work. Behavioral triggers include new or changed branches, state mutation, API/control-flow behavior, and error handling. Production-file presence alone and non-behavioral edits do not select it. |
maintainability | maintainability-reviewer | Large or structural work: substantial refactors, new abstractions, file moves, coupling/type-boundary changes, or at least 200 executable changed lines. |
agent-native | agent-native-reviewer | Agent-facing features or surfaces: skills, agents, prompts, commands, tools, MCP, or a product capability expected to be agent-accessible. |
learnings | learnings-researcher | The change has institutional knowledge to be checked against: an existing <root>/solutions/ corpus has a plausible path/title match for the changed modules or patterns (run a cheap search first; corpus existence alone does not select it), or, in local scope, the repo's CE config declares Compound Packs (Stage 1b declared_packs, semantics in references/scope.md). Declared packs select it without a pre-search; the persona matches every rule's applies_when itself. |
Conditional (7 personas)
Spawn one of these when you identify relevant patterns in the diff. Read the full diff and reason about selection -- this is agent judgment, not keyword matching.
| Persona | Agent | Select when diff touches... |
|---|---|---|
security | security-reviewer | Auth middleware, public endpoints, user input handling, permission checks (including feature-flag or entitlement gates that control whether functionality is reachable), secrets management |
performance | performance-reviewer | Concrete performance-sensitive behavior: database/ORM query shape, algorithmic complexity, large loop-heavy transforms, batching/fan-out, or cache policy with material resource impact. Async/concurrent code or a cache data structure alone does not select it when correctness/reliability already own the changed semantics. |
api-contract | api-contract-reviewer | An externally consumed boundary changes: route/request/response definitions, serializers, published event schemas, API versioning, or a public package signature with evidenced downstream callers. A new or changed exported symbol inside one module is insufficient by itself. |
data-migration | data-migration-reviewer | Migration files, schema dumps (db/schema.rb, structure.sql), backfill scripts, data transformations — not model/query-only changes without migration artifacts |
reliability | reliability-reviewer | Error handling, retry logic, circuit breakers, timeouts, background jobs, async handlers, health checks |
adversarial | adversarial-reviewer fallback | >=50 changed code lines; auth/payments; persistence writes or event publication; retry/partial-failure or concurrency/ordering semantics; external APIs; or a silent-pass verification mechanism. The lens runs through the independent cross-model peer when a sanctioned peer starts. Spawn this in-process persona when the peer cannot start, when fold-in runs the did-not-run fallback, or when fold-in restores local after a failed same-route rate-limit retry. A started peer that produced a review artifact and the fallback are mutually exclusive. |
previous-comments | previous-comments-reviewer | PR-only AND comment-gated. Reviewing a PR that has existing review comments or review threads from prior review rounds. Skip entirely when no PR metadata was gathered in Stage 1, OR when Stage 1's hasPriorComments flag is false (no reviews and no comments on the PR). |
Stack-Specific Conditional (2 personas)
These reviewers cover specialized runtime behavior. Structural and maintainability concerns belong to the conditional maintainability persona — do not spawn extra stack reviewers for philosophy or convention-only passes.
| Persona | Agent | Select when diff touches... |
|---|---|---|
julik-frontend-races | julik-frontend-races-reviewer | Stimulus/Turbo controllers, DOM event wiring, timers, async UI flows, animations, or frontend state transitions with race potential |
swift-ios | swift-ios-reviewer | Swift files, SwiftUI views, UIKit controllers, .entitlements, PrivacyInfo.xcprivacy, .xcdatamodeld, Package.swift, Package.resolved, storyboards, XIBs, or semantic build-setting / target-membership / code-signing changes in .pbxproj |
CE Conditional Local Prompt Assets (migration-specific)
Use deployment-verification-agent when the migration-artifact condition (selection rule 5 below) applies and the change is risky (destructive DDL, backfills, NOT NULL without default, column renames/drops). Schema drift and migration safety belong to the data-migration persona — not a separate typed agent.
| Prompt asset | Focus |
|---|---|
deployment-verification-agent | Go/No-Go deployment checklist with SQL verification queries and rollback procedures |
Selection rules
- Always spawn correctness. Spawn project-standards only for a non-empty applicable standards path list; skip it on a successful empty search, and spawn it when discovery is uncertain so an error never becomes a silent skip.
- For each generic conditional, require its explicit surface. For
testing, that surface is changed tests/harnesses or concrete meaningful runtime behavior with no corresponding test work; production-file presence alone is insufficient. Absence means skip, not "run just in case." - For each cross-cutting conditional persona, read the diff and decide whether its domain is relevant. This is a judgment call, not a keyword match.
- For each stack-specific conditional persona, use file types and changed patterns as a starting point, then decide whether the diff actually introduces meaningful work for that reviewer. Do not spawn language-specific reviewers just because one config or generated file happens to match the extension.
- **For
data-migration**, spawn only when the diff includes migration or schema artifacts (db/migrate/*,db/schema.rb,db/structure.sql, Alembic/Flyway/Liquibase paths, or explicit backfill/data-transform scripts). Do not spawn for model-only or query-only changes without those files. - For CE conditional prompt assets, use
deployment-verification-agentwhen the migration-artifact condition applies and the change is risky (see above). - Announce the team before spawning with a one-line justification per conditional reviewer selected.