Skip to content

How-To: Customize the Multi-Agent Reviewer Roster & Impeccable Gate ​

When you invoke the /setup-repo skill (and subsequently during /epure plan), EPURE dynamically composes and adapts the reviewer roster in the reviewer roster directory (reviewers_dir in .github/agents.yml, default .agents/reviewers/*.md, configurable via setup-repo --reviewers-dir <path>) along with the Impeccable (pbakaus/impeccable) UI quality gate (DESIGN.md + impeccable-gate), building on the specification and review workflows from Matt Pocock's mattpocock/skills. This guide explains how the roster is assembled for your project and how to tailor it while preserving prompt-injection immunity.


1. Always-On Core vs. Dynamic Specialists in reviewers_dir ​

The roster generated by /setup-repo is not static: it combines an always-on cross-cutting core with conditional specialists tailored to your stack and sub-domains (such as the 10-agent example generated for the craft-calculator React web app, or custom specialists added via --domain-reviewers realtime,game-systems and --no-frontend-reviewers for headless repositories):

Reviewer FileCategoryGeneration & Selection Condition
architecture-reviewer.mdAlways-On Cross-CuttingChecks deep module boundaries, ADR compliance, and GLOSSARY.md ubiquity.
security-reviewer.mdAlways-On Cross-CuttingAudits secret hygiene, injection surfaces, and privilege boundaries.
spec-parity-reviewer.mdAlways-On Cross-CuttingRuns on every PR (task/* -> feature/* and feature/* -> dev) to verify 1-to-1 parity with the approved spec.
standards-reviewer.mdAlways-On Cross-Cutting (Stack-Aware)Adapted to the detected stack (TypeScript it.each, Python pytest.mark.parametrize, Rust, or Go).
user-advocate.mdAlways-On Persona GateOperates in design-gate mode (on plan/* before /epure approve) and implementation-review mode (on PRs).
domain-backend-reviewer.md (+ <domain>-reviewer.md)Dynamic Domain SpecialistTailored to the repo's domain (and extendable via --domain-reviewers <slug>); selected when domain logic or APIs change.
infra-reviewer.mdDynamic Infra SpecialistSelected when CI workflows, build scripts, or dependency manifests change.
frontend-reviewer.mdConditional UI SpecialistGenerated when the repo includes a UI; selected when .vue, .tsx, .jsx, or client state hooks are modified.
accessibility-reviewer.mdConditional UI / ImpeccableGenerated when the repo includes a UI; audits WCAG 2.1 AA contrast, semantic HTML, ARIA attributes, and :focus-visible.
design-reviewer.mdConditional UI / ImpeccableGenerated when the repo includes a UI; verifies adherence to DESIGN.md tokens, responsive layout, and interaction states.

2. How the Agent Creates & Customizes Reviewer Prompts Safely ​

Because the reviewer roster directory (<reviewers_dir>/**, default .agents/reviewers/**) is a trusted sensitive path (Q92):

  1. Tailored Reviewer Creation during /setup-repo (and manual additions on dev): During initial setup, the agent inspects your codebase and can design new specialist files in <reviewers_dir>/<slug>-reviewer.md with a paths: attribute in the YAML frontmatter (e.g., paths: src/realtime, src/ws). Whenever a PR touches a file matching paths: (or <slug>), selectReviewersForDiff automatically selects that specialist.
  2. Always commit changes to dev: At runtime, the EPURE orchestrator loads <reviewers_dir>/*.md exclusively from the trusted dev branch (falling back to EPURE's embedded templates)—never from an unmerged task/* branch.
  3. Automatic Domain Enrichment during /epure plan: When /epure plan runs on a new feature, EPURE enriches the domain reviewers and <reviewers_dir>/user-advocate.md on the plan/<issue>-<slug> branch with new domain invariants and personas. When you run /epure approve, those updates merge into dev before any task/* ticket starts.

3. Dogfooding & Customizing DESIGN.md (Impeccable Gate) ​

Whenever a repository or PR includes frontend files (.vue, .tsx, .jsx, .css, .html), the impeccable-gate check (evaluateImpeccableFrontendPr) validates the diff against DESIGN.md.

Blocking vs. Non-Blocking Findings ​

impeccable-gate blocks a PR only on objective, verifiable violations:

  • Accessibility (accessibility): Missing title on <iframe>, missing aria-label on icon/action buttons, missing :focus-visible keyboard focus styles, or WCAG 2.1 AA contrast below 4.5:1.
  • Layout & Responsive (layout_overflow): Unbounded horizontal overflow or broken mobile viewports (320px–1440px).
  • Design Tokens (design_tokens): Hardcoded arbitrary colors bypassing the CSS custom properties declared in DESIGN.md.
  • Interaction States (interaction_states): Interactive async components missing explicit loading, ready, or error states.

Subjective stylistic preferences never block a PR.

Released under the Apache-2.0 License.