Skill Tracer
Skills › Compound Engineering › ce-code-review › persona-catalog.md

persona-catalog.md

66 lines · skills/ce-code-review/references/persona-catalog.md at 3449230

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Persona Catalog
2
3Reviewer 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.
4

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 4
5## Core and standards gate
6
7Correctness 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.
8
9**Structured persona prompt assets:**
11| Persona | Prompt asset | Focus |
12|---------|-------|-------|
13| `correctness` | `correctness-reviewer` | Logic errors, edge cases, state bugs, error propagation, intent compliance |
14| `project-standards` | `project-standards-reviewer` | Compliance with the project's designated criteria files, cited rule by rule |

Core 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:

PersonaPrompt assetFocus
correctnesscorrectness-reviewerLogic errors, edge cases, state bugs, error propagation, intent compliance
project-standardsproject-standards-reviewerCompliance with the project's designated criteria files, cited rule by rule
Raw lines 5 to 15
Starts an agent spawned :7
16## Generic conditional
18These reviewers are broadly applicable but not automatically useful. Spawn one only when the concrete surface it reviews is present in the diff.
20| Persona / asset | Prompt asset | Select when diff touches... |
21|---------|-------|-------|
22| `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. |
23| `maintainability` | `maintainability-reviewer` | Large or structural work: substantial refactors, new abstractions, file moves, coupling/type-boundary changes, or at least 200 executable changed lines. |
24| `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. |
25| `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. |

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 / assetPrompt assetSelect when diff touches...
testingtesting-reviewerTest 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.
maintainabilitymaintainability-reviewerLarge or structural work: substantial refactors, new abstractions, file moves, coupling/type-boundary changes, or at least 200 executable changed lines.
agent-nativeagent-native-reviewerAgent-facing features or surfaces: skills, agents, prompts, commands, tools, MCP, or a product capability expected to be agent-accessible.
learningslearnings-researcherThe 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.
Raw lines 16 to 26
Starts an agent Spawn :18
Uses an outside tool MCP :24
27## Conditional (7 personas)
29Spawn 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.
31| Persona | Agent | Select when diff touches... |
32|---------|-------|---------------------------|
33| `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 |
34| `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. |
35| `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. |
36| `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 |
37| `reliability` | `reliability-reviewer` | Error handling, retry logic, circuit breakers, timeouts, background jobs, async handlers, health checks |
38| `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. |
39| `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). |

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.

PersonaAgentSelect when diff touches...
securitysecurity-reviewerAuth middleware, public endpoints, user input handling, permission checks (including feature-flag or entitlement gates that control whether functionality is reachable), secrets management
performanceperformance-reviewerConcrete 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-contractapi-contract-reviewerAn 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-migrationdata-migration-reviewerMigration files, schema dumps (db/schema.rb, structure.sql), backfill scripts, data transformations — not model/query-only changes without migration artifacts
reliabilityreliability-reviewerError handling, retry logic, circuit breakers, timeouts, background jobs, async handlers, health checks
adversarialadversarial-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-commentsprevious-comments-reviewerPR-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).
Raw lines 27 to 40
Starts an agent Spawn :29
41## Stack-Specific Conditional (2 personas)
43These 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.
45| Persona | Agent | Select when diff touches... |
46|---------|-------|---------------------------|
47| `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 |
48| `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` |

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.

PersonaAgentSelect when diff touches...
julik-frontend-racesjulik-frontend-races-reviewerStimulus/Turbo controllers, DOM event wiring, timers, async UI flows, animations, or frontend state transitions with race potential
swift-iosswift-ios-reviewerSwift 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
Raw lines 41 to 49
Starts an agent spawn :43
50## CE Conditional Local Prompt Assets (migration-specific)
52Use `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.
54| Prompt asset | Focus |
55|-------|-------|
56| `deployment-verification-agent` | Go/No-Go deployment checklist with SQL verification queries and rollback procedures |

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 assetFocus
deployment-verification-agentGo/No-Go deployment checklist with SQL verification queries and rollback procedures
Raw lines 50 to 57
58## Selection rules
601. **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.
612. **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."
623. **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.
634. **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.
645. **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.
656. **For CE conditional prompt assets**, use `deployment-verification-agent` when the migration-artifact condition applies and the change is risky (see above).
667. **Announce the team** before spawning with a one-line justification per conditional reviewer selected.

Selection rules

  1. 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.
  2. 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."
  3. 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.
  4. 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.
  5. **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.
  6. For CE conditional prompt assets, use deployment-verification-agent when the migration-artifact condition applies and the change is risky (see above).
  7. Announce the team before spawning with a one-line justification per conditional reviewer selected.
Raw lines 58 to 66
Starts an agent spawn :60
Starts an agent Spawn :60
Starts an agent spawning :66