Best for
- Reviewing pull requests with UI changes
- Auditing frontend components for design quality
- Verifying responsive design across viewports
event4u-app/agent-config/src/skills/design-review/SKILL.md
When the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility and more.
Decision brief
When the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility and more.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/design-review"Inspect the Agent Skill "design-review" from https://github.com/event4u-app/agent-config/blob/a36d4658de87e81bda8299dc3a01b9b9ce583af5/src/skills/design-review/SKILL.md at commit a36d4658de87e81bda8299dc3a01b9b9ce583af5. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
1. Inspect the PR and preview — Read the PR description, diff, and identify changed components/pages; capture a baseline screenshot of the preview URL. 2. Walk the interactions — Run Phase 1; cover hover/focus/active/disabled, keyboard, loading, and form error states. 3. Cover r…
Read PR description and git diff.
Test user flows end-to-end.
The 320px row is the floor fe-design already asserts ("every layout must work on 320px width"). It is in this table because an asserted floor outside the measured set is an assertion nobody checks; 375px passing says nothing about 320px, which is where a two-column grid or a fix…
Typography: Font sizes, weights, line heights, hierarchy.
Permission review
The documentation asks the agent to read local files, directories, or repositories.
Load the reference file whose sections the review needs — never all of them by default:The documentation asks the agent to run terminal commands or scripts.
npx tsx node_modules/@event4u/agent-config/src/scripts/lint_design_slop.ts --dir <consumer-ui-path> --jsonEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 99/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 7 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Render-verification gate. A UI verdict is gated on the design-artifact verification checklist: where render capability exists, do not pass a design task without render evidence (checklist steps 1–5); where it is absent, scope the verdict to what was statically checked and say so — never "looks good" without evidence.
Use this skill when:
Do NOT use when:
fe-design skill instead)One of the following browser automation tools:
A live preview URL is required for testing.
accessibility-auditor).:focus-visible indicator (Q6 floor, lint_design_quality).fe-design § Motion (micro-feedback ~100–200 ms;
structural open/close ~200–500 ms) — the timing source of truth; do not restate
a competing band set here. Every animated transition also carries a
prefers-reduced-motion alternative (M5 / Q4).prefers-reduced-motion block exists — the block is greppable and says
nothing. A reveal presents its content at the final state; a scrubbed
sequence presents each beat at its resting state; only decoration is
correctly removed. animation: none over a reveal leaves the content
invisible. Verdict table:
accessibility-auditor § 2.Test at four viewports:
| Viewport | Width | Device |
|---|---|---|
| Desktop | 1440px | Standard monitor |
| Tablet | 768px | iPad |
| Mobile | 375px | iPhone SE |
| Floor | 320px | Narrowest supported — the asserted floor |
The 320px row is the floor fe-design already asserts
("every layout must work on 320px width"). It is in this table because an
asserted floor outside the measured set is an assertion nobody checks; 375px
passing says nothing about 320px, which is where a two-column grid or a fixed
min-width actually breaks.
scroll_evidence artefact
(references/verification-automation.md
§ Scroll evidence) and report every sample whose asserted state and
observed disagree as a finding. An empty samples array is a recorded null,
not a pass.| Criterion | Check |
|---|---|
| 1.1.1 | All images have meaningful alt text |
| 1.3.1 | Semantic HTML (headings, landmarks, lists) |
| 1.4.3 | Color contrast ≥ 4.5:1 (text), ≥ 3:1 (large text) |
| 1.4.11 | Non-text contrast ≥ 3:1 (UI components, borders) |
| 2.1.1 | All functionality available via keyboard |
| 2.4.3 | Focus order is logical and predictable |
| 2.4.7 | Focus indicator is visible |
| 3.3.1 | Error messages identify the field and describe the error |
| 3.3.2 | Labels and instructions for form inputs |
| 4.1.2 | ARIA roles, states, and properties are correct |
Approval is earned, not assumed. Default to flagging.
A design review is a skeptic's pass. The default verdict for every element is "this needs to justify itself" — not "this is probably fine." Approve explicitly when you have examined the evidence and found it sound.
This posture prevents the failure of "nothing to report" reviews that miss real issues because the reviewer defaulted to charitable assumptions.
When a finding warrants a remediation recommendation, prefer in this order:
"Delete the animation" is always the first option to consider, even before suggesting a different easing curve. The same applies to decorative elements, excessive copy, and redundant UI chrome.
Load the reference file whose sections the review needs — never all of them by default:
references/review-communication.md — Before / After / Why output format · Communication principles · Report structure · Design Review Summaryreferences/verification-automation.md — Visual QA with browser automation · Async-verifier pattern (keep the main context clean)Read the resolved ui_authority
(contract) before reviewing. Three
fields change what a finding means:
surface_mode sets the density, hierarchy and expressiveness a reviewer
should expect. A dense operate screen is not "cramped" and a generous
persuade hero is not "wasteful".change_intent decides whether a visual-world difference is a finding at
all. Under preserve a palette or type-family delta is a defect; under
redesign it is the point.reference_maturity decides whether a difference from the reference is a
defect. A wireframe declares structure, so reproducing its grey boxes is
over-fidelity, not fidelity.QUALITY FLOORS DO NOT VARY BY SURFACE MODE.
THE Q1-Q6 FLOOR SET IS IDENTICAL IN ALL FOUR MODES.
Do not re-derive any of these fields here. This skill is a declared consumer of that object, and the contract's consumer table names it.
PASS A (JUDGEMENT) RUNS BEFORE PASS B (DETECTOR + RENDER), AND IN ISOLATION.
INLINE EXECUTION IS PERMITTED ONLY WHERE NO SPAWN PRIMITIVE EXISTS, AND THEN
LINE 1 READS `DEGRADED: single-context (<reason>)`.
THERE IS NO THIRD STATE.
Pass A — judgement. Read the surface and form a verdict without the detector output and without the render artefact. Emit an assessment id.
Pass B — detector plus render. Run lint_design_slop and read the
ui:render manifest. Emit a second assessment id.
Order is the whole point. A judgement formed after reading a detector's
findings is anchored to them: the reviewer confirms the list instead of looking
at the surface. Running A first is what keeps B's findings additive rather than
directive — the same reason
evaluator-independence forbids
pre-loading a verdict into a reviewer's prompt.
When no spawn primitive exists the two passes share one context, which means A cannot be isolated from B. That is a real degradation and it is reported, not hidden: line 1 of the output reads
DEGRADED: single-context (<reason>)
Output therefore carries either two assessment ids or that banner. Neither present is not a third state — it is an unreported degradation, and it is the failure this section exists to prevent.
Hybrid: a deterministic detector does the mechanical pattern-matching (zero token cost, no catalog reload); you do the judgment it cannot. After the structured review phases, add an explicit Anti-Slop Check section:
npx tsx node_modules/@event4u/agent-config/src/scripts/lint_design_slop.ts --dir <consumer-ui-path> --json
Each finding carries rule (e.g. slop-v1-side-stripe), catalogId
(V1), severity (P0–P3), file:line, and a message. Cite these
verbatim (rule-id + catalogId + file:line) — do not re-describe them from
the prose catalog. Findings are rebuttable presumptions: a finding the
consumer's DESIGN.md gate suppresses is already filtered out; a remaining
finding means the project has not declared the pattern as intentional.
lint_design_slop is flags, never a block (default exit 0; CI opts into
failure via --fail-on).docs/guidelines/design-antipatterns.md
for the tells that need structural/aesthetic judgment (e.g. T3 icon-tile
stack, L2 three-identical-card grid, V2 glassmorphism intent). List any that
appear, cite by entry ID, and check the override condition.state.ui_design.provided_artifact is set), a finding about a
decision the artifact makes is correct about the pattern and wrong about the
action. Keep it in the output, cite it as "matches provided spec", and
set artifact_covered: true on it — the polish gate drops those from the
round-driving set, so an unmarked finding will send a round at the user's
own design. The flag is scoped to decisions the artifact actually covers;
anything it leaves open (a state it never showed) is generative work and
keeps the full scan. Precedence + scope:
design-fidelity-mechanics
§ Provided-artifact precedence. Regression witness: daf-slop-vs-provided.For the objective quality floors (WCAG contrast, font-size, line-length,
reduced-motion, heading hierarchy, focus indicator), do NOT eyeball them —
run the accessibility-auditor checklist (Q1–Q6 in the catalog) and cite its
verdict. The review owns the subjective anti-slop judgment (Visual /
Typography / Color / Layout taste); accessibility-auditor owns the
objective floors and the WCAG audit method. Cite, don't re-derive.
Frequently asked questions
When the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility and more.
The source record exposes this install command: npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/design-review". Inspect the command and pinned source before running it.
Static rules flagged read-files, exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
GCWing/BitFun
Designer's eye QA: finds visual inconsistency, spacing issues, hierarchy problems, AI slop patterns, and slow interactions — then fixes them. Iteratively fixes issues in source code, committing each fix atomically and re-verifying with before/after screenshots. For plan-mode design review (before implementation), use /plan-design-review. Use when asked to "audit the design", "visual QA", "check if it looks good", or "design polish". Proactively suggest when the user mentions visual inconsistenci
dimetron/pi-go
Deep design review of Go codebase — naming, structure, consistency, interfaces, error handling. Scores each dimension and provides actionable fixes.
garrytan/gstack
Designer's eye QA: finds visual inconsistency, spacing issues, hierarchy problems, AI slop patterns, and slow interactions — then fixes them. (gstack)
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program