a11y-audit
Audit a UI or design against WCAG 2.2 AA/AAA and ARIA patterns, returning…
Interrogate the brief before a line is built — ask only the questions whose answers change the work, and put every unasked decision on the record as a stated assumption.
$ npx -y skills add plugin87/ux-ui-agent-skills --skill grill-me --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/grill-meContext preview
The summary Claude sees to decide when to auto-load this skill.
Interrogate the brief before a line is built — ask only the questions whose answers change the work, and put every unasked decision on the record as a stated assumption.
name: grill-me description: Interrogate the brief before a line is built — ask only the questions whose answers change the work, and put every unasked decision on the record as a stated assumption. # A command the user runs. Converted from .claude/commands/ so it has a # CLAUDE_SKILL_DIR of its own and its paths resolve on every install route. # disable-model-invocation keeps the behaviour a command had: the user # starts it, the model never does, and its description stays out of the # listing budget the model's skill choice is drawn from. disable-model-invocation: true
> **Step 0 — is the kit here?** This skill reads files from the kit. Check once: > `ls ${CLAUDE_SKILL_DIR}/../../../tokens >/dev/null 2>&1 && echo KIT_OK || echo KIT_MISSING` > On `KIT_MISSING` only the skill folders were installed, which is what > `npx skills add` does. Say so plainly, point the user at > `npx ux-ui-agent-skills init` or the plugin install, and stop. Do not guess the > contents of a file you could not open.
The gates catch a screen built wrongly. Nothing in this repo catches a screen built correctly from the wrong brief, and that is where the expensive rework comes from: four eval runs scored 14/14 on the gates and still came back from `/critique` as rework, every finding a decision no gate can see.
This command spends five minutes up front to remove that class of failure.
Target: `$ARGUMENTS` (the thing about to be built; if that is not clear, that is itself the first question).
Asking for something the repo already answers is noise, and it teaches the user that answering you is a waste of time. Before writing a single question:
If one exists, the theme question is answered — do not ask it.
the component inventory are usually visible, not unknown.
Every question you keep after this pass is one the code genuinely cannot answer.
Pick from these. Do not ask all of them.
**Purpose and lead**
answer is "nothing", and that is a composition bug before it is a design.)
**Content reality**
project name, a nine-digit amount, an email with no spaces to break?
real is a lie the user catches immediately.
**Irreversible actions**
(Destructive wears the danger variant in every place it appears — the trigger and the confirm dialog both. A blue Delete is an automatic fail.)
do next?
**Theme and platform**
**Scope and done**
part of the bar or not?
time is worse than a wrong assumption.
build, it is not a question, it is a default — take it and say so.
content, and constraint; decide the rest.
An assumption held silently is indistinguishable from a guess. Each one gets a line: what was assumed, the default taken, and what it costs if it is wrong.
Assumption: no dark mode requested -> shipping both anyway (the theme is already dual, so the cost of including it is zero and the cost of retrofitting is not).
Write `BRIEF.md` next to the work, in this shape:
# <what is being built> Goal one sentence, from the user's side User and task who, and the task they came to finish Deliverables exact list; N screens means N screens Lead the one thing the eye lands on first Content reality empty / one / many, longest string, real vs placeholder Irreversible which actions, what confirms them, what failure reads like Theme source of truth, dark mode, brand direction Platform floor narrowest width, framework, RTL, AA or AAA Out of scope what this is deliberately not Assumptions each with its default and its cost if wrong Done when the gates that must pass, and whether /critique is part of the bar
This file is the thing `/critique` and a later reviewer argue against. A brief that lives only in the conversation cannot be checked, and so it will not be.
`/grill-me` -> build -> `/gate` -> `/critique`. This command removes ambiguity. It does not produce quality, it does not score anything, and it is not a substitute for rendering the work and looking at it.
Repo: plugin87/ux-ui-agent-skills
Audit a UI or design against WCAG 2.2 AA/AAA and ARIA patterns, returning…
Apply a visual direction — an archetype (high-end agency, editorial minimal, brutalist,…
Generate a complete, accessible brand design system from a brief — primitive → semantic →…
Adversarial design critique of the current work — render it, look at it, and argue for…
Build a dense, data-heavy screen - an analytics console or a trading terminal - with real…
Generate production-ready, accessible, token-driven component code for ANY framework —…