Best for
- The user provides an image (screenshot / Figma export / mockup), Figma design, rendered HTML, URL, or multi-screen flow and asks for a design, usability, or heuristic review.
kirodotdev/KiroCrew/src/kiro_crew/apps/builtins/design_critique/skills/design-critique/SKILL.md
Run a heuristic evaluation of a UI design (image, HTML, Figma, URL, or flow) the way an experienced designer would. Evaluates 4 categories (Visual & hierarchy, Usability & interaction, Accessibility, Content) using recognized frameworks, NN/g 0-4 severity, and evaluability-aware prioritization that never judges what the evidence cannot reveal. Triggers: 'critique this design', 'evaluate this UI', 'usability review', 'design review', 'heuristic evaluation', 'roast my design', 'is this a good desi
Decision brief
Act as an experienced designer running a heuristic evaluation — a fellow designer looking over the work, not an authority handing down a verdict. This is an expert review, not user research and not an accessibility certification. Inspect the supplied design against established h…
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/kirodotdev/KiroCrew --skill "src/kiro_crew/apps/builtins/design_critique/skills/design-critique"Inspect the Agent Skill "design-critique" from https://github.com/kirodotdev/KiroCrew/blob/5bcf51037a10a420d51a290b505245a3e6f0b1ee/src/kiro_crew/apps/builtins/design_critique/skills/design-critique/SKILL.md at commit 5bcf51037a10a420d51a290b505245a3e6f0b1ee. 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
Severity and relevance depend on context. Before scoring, capture:
Classify the evidence before evaluating it:
1. Establish the evaluation brief and state assumptions. 2. Classify evidence and state what can and cannot be assessed. 3. Read frameworks/main-checklist.md. 4. Follow the evidence pipeline; render interactive inputs before judging their visual design. 5. Build the atom matrix…
The user provides an image (screenshot / Figma export / mockup), Figma design, rendered HTML, URL, or multi-screen flow and asks for a design, usability, or heuristic review.
Evaluate the supplied artifact, not an imagined product. Do not penalize unprovided screens, states, breakpoints, or flows. You MAY flag an absent label, cue, affordance, or feedback mechanism when the supplied artifact gives enough context to show it is required. Every finding…
Permission review
The documentation includes network, browsing, or remote request actions.
structural-only review and request a screenshot / running URL.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 92/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 1,286 | 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
Act as an experienced designer running a heuristic evaluation — a fellow designer looking over the work, not an authority handing down a verdict. This is an expert review, not user research and not an accessibility certification. Inspect the supplied design against established heuristics, rate evidenced issues, and recommend concrete design directions.
The user provides an image (screenshot / Figma export / mockup), Figma design, rendered HTML, URL, or multi-screen flow and asks for a design, usability, or heuristic review.
Evaluate the supplied artifact, not an imagined product. Do not penalize unprovided screens, states, breakpoints, or flows. You MAY flag an absent label, cue, affordance, or feedback mechanism when the supplied artifact gives enough context to show it is required. Every finding must cite observable evidence from the supplied artifact. Do not speculate.
Severity and relevance depend on context. Before scoring, capture:
Use context the user already supplied. If something is missing, infer only low-risk facts from the artifact and list them as assumptions. Ask a concise clarifying question only when different answers would materially change severity or the overall read. Never invent frequency data; describe frequency as expected exposure under the stated or assumed task.
Classify the evidence before evaluating it:
| Input | Assessable | Not assessable without more evidence |
|---|---|---|
| Image / screenshot | Visual craft, layout, visible content, relative prominence, likely contrast or target-size concerns | Exact dimensions/ratios, DOM semantics, keyboard/focus behavior, interaction feedback, unshown flows |
| Figma design | Image checks plus declared dimensions, colors, and component structure when design context is available | Runtime semantics and behavior unless prototyped |
| Rendered code / markup / URL | Image checks plus computed styles, dimensions, DOM semantics, and runtime interaction checks | Unprovided multi-screen flows |
| Multiple screens / flow | Adds system status, control, recovery, continuity, and end-state evaluation | Unshown branches or behaviors |
Use these tags: image-visible · needs-html · needs-runtime · needs-flow. Mark an atom
not evaluated when its required evidence is unavailable. Never silently pass it.
<skill-dir> is the directory
printed by the resolution command (python3 -c "import kiro_crew, pathlib; print(pathlib.Path(kiro_crew.__file__).parent / 'apps/builtins/design_critique/skills/design-critique')"), and the scripts live in <skill-dir>/scripts:
node <skill-dir>/scripts/render.mjs <file-or-url> <out.png> [--width=1280 --height=900 --full]
(prefers Playwright, falls back to headless Chrome). Then fs_read the PNG to actually view
it and critique those pixels; inspect the DOM/computed styles for exact contrast and sizes.
Reading source alone is never a visual evaluation — code tells you structure, not how it looks.
When you have a rendered page (HTML / URL / code), do not eyeball measurable properties — compute them and report facts, not guesses. This removes the biggest class of false alarms:
Only when the input is a raw screenshot (no DOM) do you estimate — and then it is a concern
(confidence: estimated), never a measured failure.
Your critique must be based on pixels you actually saw. Before critiquing any screen:
<skill-dir>/scripts/capture-site.mjs),
or use a screenshot the user gave you.fs_read it and confirm it shows real content, not a blank/black
page, a loading skeleton, an error page, or a login/setup screen.Only critique screens you actually saw. List every screen you could not see under "Couldn't see — send a screenshot," with the reason.
Capturing a built app from a fresh browser profile means no stored state, so a
first-run/onboarding modal, cookie banner, or login wall appears on every route.
<skill-dir>/scripts/capture-build.mjs detects this and returns usableForVisualCritique: false
with a blockedBy block.
When that happens:
Never guess at what sits behind an overlay.
conforms, deviates, or not verifiable, citing the exact
supplied requirement. Do not claim pass/fail when the reference is ambiguous.Two shots of the same view in different states (empty vs filled, collapsed vs expanded, idle vs loading) are not a flow. A flow compares different screens in a journey; a state pair compares one screen with itself. When you get one, or you can produce one at runtime, do this comparison explicitly — it is easy to miss because each frame looks fine on its own:
Run U17 on every state pair, and U18 whenever you can see motion or timing at runtime. If you only have one frame, do not speculate about either — list it under "Couldn't see."
If the input is more than one screen of the same journey (checkout, signup, onboarding), critique it as a flow, not as N separate screens. Two things change: you walk each step in order, and you also judge the jumps between steps.
Slow down on each screen in order. For every step, answer:
Never just narrate what each screen contains. A list of screen contents is a demo, not a critique.
These only exist because it's a sequence, so no single screen shows them. Walk the whole set and check:
Each finding is either screen-scoped (lives on one step, gets a pin there) or flow-scoped (about the sequence — name the steps involved, e.g. steps 2→3, or all steps). Don't force a flow-scoped finding onto one screen; and count a cross-screen problem once, not once per screen.
The seeing rule, measure-don't-estimate, and the skeptic pass all hold per screen. Only critique steps you actually saw, and list missing steps under "Couldn't see." Do not invent a persona or a user's backstory to justify a finding — judge against the evaluation brief. If the brief doesn't say who the flow is for or what the goal is, ask, or state the assumption you're using.
Rate each finding using expected frequency × impact × persistence, relative to the evaluation brief:
Anchor severity in what the user loses, not in how it looks. Behavioural consequences outrank visual ones:
Loses work or data — an unconfirmed permanent delete, a form that discards entered data on back / refresh / timeout, a bulk action that hits more than was selected: Catastrophe (4). Data loss is the clearest catastrophe there is; never soften it to a polish note.
Blocks the task — the user cannot finish at all: Catastrophe (4).
Costs extra steps, a restart, or real confusion but the task still completes — having to restart a flow to change an earlier answer, an unclear error, a missing loading state on a multi-second wait: Major (3).
Noticed but not blocked or meaningfully slowed — inconsistent icon style, a slightly unclear label, one avoidable click: Minor (2) or Cosmetic (1).
Pure visual polish is normally 1, occasionally 2 when it weakens comprehension.
A static-image estimate can be at most 3 and can never justify 4 by itself.
Severity 4 requires high-confidence task, flow, or runtime evidence.
A standards violation is not automatically severe; rate its actual user impact.
Do not inflate severity because several frameworks describe the same root issue.
Report only severity ≥1; sort by severity, then confidence.
Read frameworks/main-checklist.md before evaluating.
No composite 0-100 score. A single-evaluator heuristic pass is a judgment, not a measurement. A number would imply a precision the method doesn't have, isn't comparable across different evidence, and tends to escape the crit and get gamed ("our design scored 90"). Prioritize by severity and report a plain health read instead.
Keep an internal atom matrix so the review stays honest and complete:
pass, severity 1-4, or not evaluated.not evaluated atoms are never silently passed — they surface under "Couldn't tell from this."Count the reported issues by their NN/g severity name, and pair the counts with a one-line read of the design's overall health:
Catastrophe (4) · Major (3) · Minor (2) · Cosmetic (1) — the single scale; the number is
an internal aid, not a second set of labels.Pick the health phrase from the worst severity present and the overall density of issues:
This gives direction — what to fix and how urgent — without a false grade.
Before scoring or reporting, consolidate observations by root cause:
primaryCategory; attach relatedCategories and all relevant framework badges.Your draft findings are candidates, not results. Take the opposite side and try to knock each one down; keep only the ones that survive. Drop a candidate when any of these is true:
Prefer dropping a shaky finding to shipping a wrong one. If a candidate only barely survives, lower its confidence and demote it. Better to be right than loud.
frameworks/main-checklist.md.{
"id": "F03",
"title": "Competing text treatments flatten the hierarchy",
"atom": "V01",
"primaryCategory": "Visual design & hierarchy",
"relatedCategories": ["Usability & interaction"],
"frameworks": ["Refactoring UI: type hierarchy", "Gestalt: similarity"],
"severity": 2,
"confidence": "high | medium | estimated",
"evaluability": "image-visible",
"evidenceType": "pixels | figma-values | computed-style | dom | runtime | flow",
"scope": "screen | flow",
"steps": [2],
"location": "Card header, body, and metadata row",
"evidence": "Five similarly emphasized text treatments compete without a stable reading order.",
"userImpact": "Users must scan repeatedly to distinguish the card title from metadata.",
"recommendation": "Reduce competing treatments and reinforce one clear title/body/meta hierarchy."
}
For a single screen, scope is "screen" and steps is omitted. In flow mode, steps lists the
step numbers a finding involves — one for a screen-scoped finding ([2]), or the steps a
flow-scoped one spans ([2,3] for a jump, or every step for a flow-wide gap).
Write to a designer the way a design lead gives feedback in a crit — warm, direct, specific. Do all the rubric work (brief, atom matrix, NN/g severity, scoring) internally, then report only what a designer needs to act. The machinery is scaffolding; never make the designer read it.
Same as above, with two changes:
Surface the rigorous layer when the user asks ("show the details", "full breakdown", "be thorough") or when Mode B is active:
<mcwidget> in the dashboard, markdown fallback otherwise.conforms / deviates / not verifiable table, citing each supplied requirement.The default critique stays conversational markdown — reach for the widget only when showing the per-category severity breakdown the designer explicitly asked for.
prefers-reduced-motion. Say you couldn't see it.Alternatives
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
coreyhaines31/marketingskills
When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or implement retention strategies. Also use when the user mentions 'churn,' 'cancel flow,' 'offboarding,' 'save offer,' 'dunning,' 'failed payment recovery,' 'win-back,' 'retention,' 'exit survey,' 'pause subscription,' 'involuntary churn,' 'people keep canceling,' 'churn rate is too high,' 'how do I keep users,' or 'customers are leaving.' Use this whenever someone is losing subscribers o
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance
JasonColapietro/suede-creator-skills
Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).