skills/product-design/SKILL.md
Decides what an interface should do before UI is built or audited: interaction choice, action scope and consequence, reachable states, resilience, and accessibility as task completion. Works from a brief, spec, mockup, intent, or existing UI. Use when asked "is this the right interaction", "design the flow", "what control should this use", "what should this action affect", "which states should this have", "make this resilient", or "what breaks here". For building or styling use ui-design; for built-code audits use ui-audit; for copy wording use copywriting.
npx skillsauth add mblode/agent-skills product-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Decide what the interface should do, then route who builds and verifies it: pick the right interaction, make scope and consequence clear, cover reality beyond the happy path. This skill owns the decision; it routes the build, verification, and copy out (ownership map in Related skills).
ui-design.ui-audit.copywriting.typography-audit or ui-animation.Dispatch on the artifact, not the topic. Both care about states and interaction; they act at different moments.
| You have... | The question is | Use |
|---|---|---|
| A brief, spec, mockup, intent, or a UI you decide about | What should exist: the right interaction, the action's name, which states should be reachable | product-design |
| Code, a diff, or a running UI you decide on | Is the built result right: states covered, accessible, renders and behaves correctly, ready to ship | ui-audit |
One artifact often needs both in sequence: product-design decides the states that must exist, ui-audit verifies the built code and rendered result implement them. Looking at code or a running screen is ui-audit's turn. This skill reviews the decision and stops at decision altitude; it never writes line-level code fixes.
AGENTS.md outrank this skill's defaults. Defer to them.ui-design.Resolve the mode from the user's verb and artifact, then load only that mode's references.
| Mode | Dispatch when the user asks for | Load |
|------|--------------------------------|------|
| shape (default) | "design the flow for", "what control here", "how should this work", "is this the right pattern", a brief with no settled UI | references/product-judgment.md, references/surfaces.md |
| spec | "spec the right interaction", "define the expected states", judgment applied before or during a build | references/surfaces.md, references/naming-and-copy.md; route the build to ui-design |
| review | "review this for product correctness", "what's wrong with this UX decision", "audit this flow" | references/interface-quality.md, references/rules.md |
| action | "what should this action affect", "which object or scope does this action cover", or action reversibility is unsettled | references/naming-and-copy.md; route final wording polish to copywriting |
| harden | "make this resilient", "what breaks here", error, permission, offline, and destructive paths | references/surfaces.md, references/interface-quality.md |
Modes chain: shape leads into spec; review leads into harden. When intent is ambiguous, use the narrowest mode the verb supports. A URL, screenshot, route, or component identifies scope; it does not authorize edits.
A material decision: see references/product-judgment.md.
Conflict order, highest first:
AGENTS.md or CLAUDE.md, the project's design system, routed sibling skills.When a request spans authorities, name the owning skill and hand off.
Product design pass:
- [ ] Step 1: Classify the request into one mode
- [ ] Step 2: Locate authority (user constraints, project design system, AGENTS.md)
- [ ] Step 3: Load only that mode's reference files
- [ ] Step 4: Identify object, scope, and consequence of each action in scope
- [ ] Step 5: Enumerate reachable states; check coverage (surfaces.md)
- [ ] Step 6: Apply standards; cite a stable rule ID per finding or decision
- [ ] Step 7: Emit output (review and harden use P0-P3); route follow-on work to siblings
- [ ] Step 8: Run the pass self-check and report its counts
For shape, spec, harden, or any material product or flow change, write the compact internal brief specified in references/product-judgment.md before proposing UI. If its job, desired outcome, and consequence fields cannot be filled in, stop and ask rather than guessing.
Close every pass with these counts, and label the pass INCOMPLETE if any line fails:
references/rules.md: must be zero.Five pillars. Each cites its governing rule IDs in references/rules.md and its reference.
rule/control-matches-cardinality, rule/navigation-vs-action, rule/inline-before-modal, rule/smallest-intervention. See references/product-judgment.md.rule/name-object-scope-consequence, rule/destructive-names-action, rule/destructive-proportional. See references/naming-and-copy.md.rule/cover-reachable-states, rule/empty-state-action, rule/error-states-recovery, rule/preserve-user-input. See references/surfaces.md.rule/cover-reachable-states. See references/surfaces.md. Whether the built UI renders them correctly is ui-audit's check.rule/accessible-name-required, rule/keyboard-complete-flow, rule/no-custom-focus-bypass. Route axe-style markup checks to ui-audit. See references/interface-quality.md.In review and harden modes, lead with findings ordered by user impact (P0-P3), each with location, verification status, rule ID, user consequence, and the smallest concrete fix with the skill that owns it. Keep findings at decision altitude; a line-level code or framework fix is ui-audit's output. Full severity rubric and finding format in references/interface-quality.md > Severity rubric.
Deterministic, structural, single-file checks (control selection by option count, nested modals, missing accessible names) belong in the consuming project's linter, wired to that project's components; judgment that needs product context (which object, what consequence) stays here. See references/lint-patterns.md for the decision tree and the rules worth encoding.
className) instead of the decision. It arrives without the rendered check that would validate it, and the product decision it was supposed to carry goes unstated. Route it to ui-audit.references/product-judgment.md).rule/clear-labels). The citation resolves to nothing, so the finding cannot be deduped against a sibling audit or traced to a rule. Record a coverage gap instead.ui-design: visual direction and building the decided interaction in code.ui-audit: the built result, both rendered quality and accessibility-markup audit and React or Next diff-level UX bug hunt with a ship verdict.copywriting: exact wording for names, errors, and empty and loading copy; defines shared copy rule IDs in its references/ui-states.md.typography-audit, ui-animation: type and motion.development
Fans out four concurrent review agents over the current diff, then APPLIES fixes directly to the working tree and verifies the build. Mutates code; it does not produce a report. Covers reuse (duplicate logic, hand-rolled stdlib, reinvented platform features), quality (hacky patterns, React/TypeScript hygiene, over-memoisation, exhaustive-deps, `any`, dead code, `CLAUDE.md`/`AGENTS.md` violations), efficiency (unnecessary work, missed concurrency, hot-path bloat), and test discipline (bug fixes without a repro test, useless tests to delete, missing tests only when they prevent a named failure). Use when the user says "tidy this up", "simplify", "clean up this diff", "polish my changes", "check for duplication", or "any reuse opportunities?", i.e. when the intent is to have the changes made automatically. For a read-only report that lists findings without touching files, use `pr-reviewer` instead. This skill edits code; for the PR's title, description, or commit history, use `pr-creator`.
development
Builds and stress-tests implementation plans in two modes. Create mode scans code and docs, asks one question at a time with a recommended answer, runs a blindspot pass when the user is new to the area, then writes a plan file. Review mode scores completeness, feasibility, scope, testability, risk, and assumptions, verifies checkable claims, and writes resolutions back until every dimension reaches 5/5. Use when asked to "create a plan", "plan this feature", "I want to build X", "grill me", "think this through", "blindspot pass", "unknown unknowns", "this is new to me", "review my plan", "rubber duck this", "stress test this plan", "is this plan ready", "get this plan to 5/5", "what am I missing", "verify this claim", "prove this plan", "fact-check this plan", or when the user explicitly wants a plan artifact before implementation. For code review use pr-reviewer; for architecture briefs use define-architecture.
tools
Audits the smallest relevant developer-facing surface of a library, CLI, SDK, or npm package across API contracts, errors, CLI behavior, public types, onboarding, and config. Uses candidate-first rule loading, bounded local evidence, and compact root-cause findings. Use when asked to "audit my CLI", "make this CLI agent-friendly", "is this API ergonomic", "review the developer experience", "improve these errors", "simplify first run", or "review my SDK". For end-user UI use ui-audit, for agentic-app trust use ax-audit, for docs prose use docs-writing, for README work use readme-creator, and for repo architecture use define-architecture. Inside a product that also ships a UI, this is the skill for the developer-facing half, so pick it when the complaint is about an import, command, error string, exported type, or config rather than a screen.
tools
Reviews the local diff or branch and returns a read-only, severity-tiered findings report. Modes cover standard bugs, structural quality, AI slop, and security audit. Use when asked to run /pr-reviewer, "review my changes", "code review", "thermo-nuclear review", "structural review", "deslop this", "clean up AI code", "security audit", "find vulnerabilities", or before commit, push, or handoff. For fixes use tidy; for PR creation use pr-creator; for CI or review comments use pr-babysitter; for frontend UX, accessibility, layout, state coverage, or rendered quality use ui-audit; for library, CLI, or SDK developer experience use dx-audit; for folder structure and module boundaries outside a diff use define-architecture; for plans use planning.