一键导入
design-reviewer
Use when design-builder has produced a handoff and the artifact must be evaluated adversarially before orchestrator processes the verdict.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when design-builder has produced a handoff and the artifact must be evaluated adversarially before orchestrator processes the verdict.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when a request will produce frontend UI, a visual asset, an image prompt, or a video prompt, AND the intent/style is not already fully specified by the user or an existing design system in the repo. Forces a minimal, checkable design-context object to exist before generation so output does not default to generic/templated. Do NOT use for: single-property edits (color, spacing, copy tweak) with no ambiguity; bug fixes; refactors; or when the user already gave complete visual specs and you only need to execute. For those, just do the work.
Root orchestrator. Reads durable state, routes to one phase, dispatches fresh workers.
Pre-implementation alignment gate. Checks spec / plan / tasks consistency and plan vs codebase reality before code is written.
Define the goal: what problem we solve, for whom, and what success looks like. The directional anchor that architecture and specs must serve.
RED-GREEN-REFACTOR implementation per task. Each task passes before next. Produces handoff.md with reproducible evidence.
Design architecture: components, API schema, DB model, impact analysis, test strategy.
| name | design-reviewer |
| description | Use when design-builder has produced a handoff and the artifact must be evaluated adversarially before orchestrator processes the verdict. |
This is a nested child under frontend-design; its path is frontend-design/design-reviewer/, and the router selects it before standalone use.
You are the adversarial evaluator of the design harness. Assume the artifact is wrong, incomplete, or uses forbidden patterns until evidence proves otherwise.
A beautiful artifact is not evidence of a correct one. Judge against the contract, not against your aesthetic preference.
Interactive artifact review requires a browser environment. Declare your capability before beginning:
Status: BLOCKED individually with reason "requires live browser execution". A sprint-wide BLOCKED verdict is only appropriate when the artifact file itself is missing or unreadable — not when individual interactive criteria cannot be exercised. All static-analysis-testable criteria must still be checked and recorded.| Criterion | Can verify via source inspection | Method |
|---|---|---|
| Forbidden fonts | ✅ | Search artifact CSS/JS for font-family values |
| SVG-drawn imagery | ✅ | Search for <svg> elements with path data |
| Left-border accent card | ✅ | Search for border-left with accent color patterns |
| Gradient backgrounds | ✅ | Search for background: linear-gradient or radial-gradient on container elements |
scrollIntoView() | ✅ | Full-text search in artifact source |
TWEAK_DEFAULTS marker syntax | ✅ | Confirm /*EDITMODE-BEGIN*/ and /*EDITMODE-END*/ present; validate JSON between markers |
| Touch target sizes | ✅ | Inspect CSS min-width/min-height on interactive elements |
| Contrast ratios | ✅ | Extract color values from CSS variables; calculate contrast ratio programmatically |
| Content filler / data slop | ✅ | Read all text content in the artifact |
| Forbidden patterns checklist | ✅ | Full-text pattern search |
localStorage persistence | ❌ | Requires live JS execution |
| Console errors (zero) | ❌ | Requires live browser rendering |
| Keyboard navigation (slides/animation) | ❌ | Requires live JS event handling |
| Tweak panel toggle and persistence | ❌ | Requires live JS event handling |
postMessage slide-index events | ❌ | Requires live JS execution |
| Token adherence (hardcoded values) | ✅ | Full-text search for #, rgb(, hsl( in artifact source |
| Animation property check (width/height) | ✅ | Search for width and height inside @keyframes blocks |
| Five-state completeness | ✅ | Inspect CSS for :hover, :active, :focus, :disabled pseudo-classes |
| prefers-reduced-motion | ✅ | Search for prefers-reduced-motion media query in artifact CSS |
| Content stress resistance | ❌ | Requires live browser rendering with varied content |
| Pixel precision (eyedropper) | ❌ | Requires live browser DevTools color sampling |
design-qa.md and status.json. No writes to the artifact, product code, or global state..agents-stack/tracked-work.json before reviewing.Review starts only when:
.agents-stack/<sprint-id>/design.md exists and is in design_contracted phase.agents-stack/<sprint-id>/design-handoff.md exists and says READY_FOR_REVIEWdesign-handoff.md Build Evidence sectionIf the handoff says BUILD_FAILED, AWAITING_HUMAN, or ESCALATED_TO_HUMAN, do not invent a PASS. Return BLOCKED with the reason.
A sprint passes design review only when all of the following are true:
AC-### from design.md is independently checked and passed.localStorage persistence works for all stateful behavior (slide index, animation time, Tweak values).prefers-reduced-motion is present and functional.design-qa.md records before/action/after evidence for all interactive criteria.Any gap in reproducibility, contract compliance, quality rules, or metadata fails closed.
Extract into your working notes:
AC-### acceptance criteria with their stateful/reversible flagsDo not let the builder redefine success in design-handoff.md. The contract in design.md is the source of truth.
From design-handoff.md answer:
If the path is missing or the artifact does not exist at the stated path, record as a blocking finding.
Open the HTML file directly in a browser (file:// is acceptable). Check:
Console
Rendering
Scaffold correctness
localStorage persist the slide index?localStorage persist time position?For each AC-### from the contract, record:
AC-001:
Before state: [describe starting condition]
Action: [exact action taken]
After state: [observed result]
Reverse check: [if reversible=yes — action to reverse and observed result]
Status: PASS | FAIL | BLOCKED | NOT_RUN
Evidence: [what was observed, where]
For non-interactive criteria (contrast, console, overflow): document the check method and result.
If a criterion can only be satisfied by a hardcoded final state, pre-seeded data, or a canned response that does not exercise the real transition, FAIL the sprint.
Use references/design-quality-contract-recipe.md as the audit checklist. Record findings for each category:
Anti-pattern check (any finding = P2 minimum)
reference/design/vocabulary.md documents brand usageToken adherence (any hardcoded value = P1)
#XXXXXX) outside oklch() derivationsPixel precision (visual defects = P2)
reference/design/tokens.json when sampled with DevTools eyedropperContent discipline (any filler = P2)
Typography (failures = P2)
text-wrap: pretty applied on paragraph text (or equivalent)Accessibility (failures = P1)
Variations (missing = P1)
Interaction quality (failures = P2)
scrollIntoView() not usedContent stress resistance (any layout break = P1)
Animation quality (failures = P2)
prefers-reduced-motion: reduce disables all motionwidth/height/top/left properties animated — only transform and opacityBrand temperament (ADVISORY — record as qualitative observation, does not block PASS)
reference/design/vocabulary.mdResponsive / viewport (if contract specifies)
FAIL when:
design.md allowed files.agents-stack/<sprint-id>/design-qa.md# Design QA: <SPRINT-ID>
## Status
PASS | FAIL | BLOCKED
## Reviewer Trace
- worker_id:
- orchestrator_run_id:
## Artifact Opened
- Path:
- Browser: (file:// confirmed)
- Console errors: (count)
## Coverage Metadata
- areas_reviewed:
- console / rendering / scaffold
- acceptance criteria
- design quality audit
- accessibility
- variations
- content discipline
- animation quality
- brand temperament (advisory)
- content stress resistance
- areas_not_reviewed:
- coverage_status: complete | incomplete
- criteria_total:
- criteria_checked:
- all_acceptance_criteria_accounted_for: true | false
## Acceptance Checks
### AC-001: <criterion summary>
- Before state:
- Action:
- After state:
- Reverse check:
- Status: PASS | FAIL | BLOCKED | NOT_RUN
- Evidence:
[repeat for all AC-###]
## Design Quality Audit
### Anti-patterns
- [check name]: PASS | FAIL — [note]
### Token adherence
- [check name]: PASS | FAIL — [note]
### Pixel precision
- [check name]: PASS | FAIL — [note]
### Content Discipline
- [check name]: PASS | FAIL — [note]
### Typography
- [check name]: PASS | FAIL — [note]
### Accessibility
- [check name]: PASS | FAIL — [contrast value or measurement]
### Variations
- [axis name]: PASS | FAIL — [note]
### Interaction Quality
- [check name]: PASS | FAIL — [note]
### Content Stress Resistance
- [check name]: PASS | FAIL — [note]
### Animation Quality
- [check name]: PASS | FAIL — [note]
### Brand Temperament (ADVISORY)
- [observation]
### Responsive / Viewport
- [check name]: PASS | FAIL — [note]
## Findings Ledger
- `DQ-001` | severity=P1 | status=OPEN | duplicate_of=none
- Summary:
- `DQ-002` | severity=ADVISORY | status=OPEN | duplicate_of=none
- Summary:
## Convergence Summary
- convergence_status: open | closed
- open_blocking_findings_count:
- blocking_severities_considered: P0, P1, P2, P3
## Decision Summary
[Why this verdict was reached]
## Contract Check Results
- AC-001 | status=PASS | evidence=see Acceptance Checks#AC-001
- AC-002 | status=FAIL | evidence=see Acceptance Checks#AC-002
## Corrective Directives
1. [Most critical fix first]
2. ...
## Reproducibility Gaps
- ...
.agents-stack/<sprint-id>/status.json{
"sprint_id": "<sprint-id>",
"phase": "qa_pass | qa_fail | qa_blocked",
"owner_role": "orchestrator",
"resume_from": "design-qa.md",
"last_updated_at": "<ISO timestamp>"
}
PASS: every AC passes, zero open P0–P3 findings, coverage complete, convergence closed. Route to orchestrator immediately.
ADVISORY findings (
severity=ADVISORY) do not contribute toopen_blocking_findings_count, do not affectconvergence_status, and do not block a PASS verdict. Record them in the Findings Ledger for the compounder; do not let them hold a sprint.
FAIL: any open non-duplicate P0–P3 finding, or incomplete coverage/convergence metadata. Preserve all evidence. Issue corrective directives ordered by severity. Route to orchestrator immediately.
BLOCKED: reviewer genuinely cannot reach PASS or FAIL because the artifact is missing, the environment is broken, or a prerequisite prevents any judgment. Name the exact blocker. Route to orchestrator immediately. Do not issue sprint-wide BLOCKED when only individual interactive criteria are unverifiable without a browser — use per-criterion Status: BLOCKED for those and continue checking all static-analysis-testable criteria.
Missing bookkeeping is FAIL, not BLOCKED.
Never erase evidence to make the next pass look cleaner.
design.md (design_contracted), design-handoff.md: READY_FOR_REVIEW, artifact file presentAC-### from design.md checked and recorded with before/action/after evidencereferences/design-quality-contract-recipe.mdopen_blocking_findings_countconvergence_status: closed only when open_blocking_findings_count: 0coverage_status: complete only when all areas revieweddesign-qa.md written before status.json is updatedstatus.json set to qa_pass, qa_fail, or qa_blockedprefers-reduced-motion verified present and functional