# Design QA

Set up or run design QA gates for token + hardcoded-value lint, automated a11y (axe)...

- Repository: https://github.com/plugin87/ux-ui-agent-skills (3071 stars)
- Category: Design
- License: MIT
- Last updated: 2026-10-27
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add plugin87/ux-ui-agent-skills --skill design-qa -g -a claude-code -y`
Codex: `npx skills add plugin87/ux-ui-agent-skills --skill design-qa -g -a codex -y`
Cursor: `npx skills add plugin87/ux-ui-agent-skills --skill design-qa -g -a cursor -y`
Gemini CLI: `npx skills add plugin87/ux-ui-agent-skills --skill design-qa -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add plugin87/ux-ui-agent-skills`

## Description

Set up or run design QA gates for token + hardcoded-value lint, automated a11y (axe), contrast, visual regression across variants/states/themes/RTL, and the manual a11y checklist. Use when the user wants CI quality gates, to prevent design regressions, or to QA a component/screen before shipping.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Skill: Design QA

> **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.

Stand up the automated + manual gates that stop quality from regressing.

## Steps
1. Read `${CLAUDE_SKILL_DIR}/../../../workflows/design-qa.md` (the QA pyramid: token/lint gates → automated a11y → visual regression → manual a11y).
2. Wire the **fast gates** first (every commit/PR): `python3 ${CLAUDE_SKILL_DIR}/../../../scripts/validate_tokens.py`, `python3 ${CLAUDE_SKILL_DIR}/../../../scripts/validate_contrast.py` (batch WCAG over the token pairs), and `python3 ${CLAUDE_SKILL_DIR}/../../../scripts/lint_hardcodes.py <src>` (no raw hex/px/timing in component code). The repo's `.github/workflows/ci.yml` runs these.
3. Add **automated a11y** (axe-core / Pa11y) over each component's states (error/loading/disabled/expanded/selected), zero serious/critical to merge. Run the **real-render contrast gate** `node ${CLAUDE_SKILL_DIR}/../../../scripts/gate.mjs measure_render.mjs <file.html>` (and `--dark`). It opens the page in headless Chromium, disables transitions, and measures the true computed-style + alpha-composited contrast of every text element (catches what static token checks miss).
4. Add **visual regression** snapshots across variants × sizes × states × light/dark + key breakpoints + RTL; freeze animations + deterministic data.
5. Sign off the **manual a11y** checklist per release (keyboard, screen reader, 400% reflow, 200% text-spacing, reduced-motion, forced-colors; `${CLAUDE_SKILL_DIR}/../../../accessibility/*`).

The rest: https://github.com/plugin87/ux-ui-agent-skills/blob/HEAD/.claude/skills/design-qa/SKILL.md
