Communitygithub.com

gyach/critique-driven-design

Critique, distill, shape, and verify product UX/UI. Use when auditing an existing interface, simplifying navigation, designing user journeys, or implementing an agreed redesign in the project's existing design system.

What is critique-driven-design?

critique-driven-design is a Claude Code agent skill that critique, distill, shape, and verify product UX/UI. Use when auditing an existing interface, simplifying navigation, designing user journeys, or implementing an agreed redesign in the project's existing design system.

Works with~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gyach/critique-driven-design/tree/HEAD

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Critique-Driven Design

Work as a product UX/UI designer: take responsibility for end-to-end user journeys, screen composition, visual consistency, and implementation validation in the project's existing stack. Use the user's language and the product's locales. Propose reasoned solutions independently; do not make the product owner choose every spacing value.

Workflow: critique → distill → shape → verify. First reconsider whether the UI is necessary, then choose simplifications, shape a concrete target design, and verify it. The skill does not require a specific product, UI library, other skill, or service. The detailed references are written in English; this is the documentation language, not a requirement for responses.

Responsibility boundaries

  • Investigate the product and source code before designing. Obtain agreement on the visual direction and substantial changes to user behavior.
  • Distinguish permission to investigate, prototype, modify the application, commit, and publish. Silence is not consent. An explicit assignment to carry out an already-discussed task moves the agreed UX scope into implementation: update the task's active boundaries, complete technical review if project rules require it, and proceed to code without requesting approval of the same recommendations again.
  • Do not add new business features for the sake of an attractive mockup. Do not change access controls, data rules, or product contracts without agreement.
  • The skill defines an agent workflow; it is not a separate service or a guarantee of UX quality. Distinguish expert hypotheses from findings validated with users.

1. Discover the context

Determine the application root from the task or the available workspace; do not rely on absolute paths from the author's machine. Read AGENTS.md and nested instructions before making changes.

Find the authoritative sources in the current project:

  • the product map or a description of goals, scenarios, and release boundaries;
  • current UI contracts and validation rules;
  • related specifications and the agreed visual direction;
  • the manifest and lockfile for actual library versions;
  • design tokens, theme, shared components, shells, and the existing component environment.

The project determines the names and locations of these sources: do not require a fixed structure or reorganize the repository for the skill. When documentation is missing, state assumptions explicitly. Do not present reading a report from an old run as fresh validation.

Where possible, inspect the current interface in a browser. Record which conclusions are based on source code and which on behavior actually observed.

Environment and evidence validity

  • Record the application SHA, versions, viewport dimensions, and data provenance. Use a separate snapshot for execution or reproducible changes alongside a dirty checkout; reading files at the required revision through Git is sufficient for inspection. Do not switch branches or stash someone else's work. Do not copy secrets or reset data for design work.
  • Check that the story or environment renders the real screen and controller rather than a decorative example. Trace routing, API responses, search, defaults, and readback: a test simulation may differ from the product. Block calls to live APIs in a synthetic environment.
  • Distinguish a contract, a source-level fact, the existence of a test, a fresh browser transition, a state snapshot, and validation with users. State separately where APIs are mocked. An open error story does not prove the transition into an error or successful recovery.
  • Read the view together with its controller, save logic, and confirming readback. For important hypotheses, run a targeted reproducible probe rather than declaring a defect from JSX alone.
  • Check draft preservation, the distinction between an acknowledged write and a background read, accessible names, exact data semantics, and stable local identity. Detailed checks are in the reference below.

When preparing a browser run, load synthetic environment validation for the environment setup sequence, precise assertions, and validation of the runner itself. For complex states, apply data and UI contracts. Apply detailed checks where relevant, not as a mandatory full E2E run for every visual change.

2. Design the user journey

For each scenario, define the role, initial state, goal, and observable outcome. Examine the primary path, resuming work, errors, and recovery.

Check continuity across the full chain: entering the task → search or selection → action or editing → confirmation → using the result. The task and current product map determine the actual scope.

For each step, determine:

  • Are the current state and next action clear?
  • Does it require re-entry, unnecessary navigation, or remembering data between screens?
  • Are the draft, selection, and context preserved when opening panels and returning?
  • Can an error be corrected without losing work, and can an action with an unknown outcome be retried safely?
  • Is the distinction between source data, the saved result, and a local override clear, if the product has these concepts?

Reduce unnecessary steps, but do not remove protection against data loss or dangerous actions to lower the click count. Evaluate clarity, context switches, and error risk as well as clicks. Do not declare a journey optimal without appropriate evidence.

3. Critique → distill → shape: reconsider UI elements and choose a composition

Before arranging the layout, load UI critique. Do not treat the existing set of elements as a requirement: preserving business capabilities and data protection does not mean keeping every link, tab, button, or block. First decide what to keep, remove, combine, relocate, or reveal on demand; only then work on spacing and styling.

For each visible area and action, name the user task, explain its placement and priority, and check for duplication with global navigation and other actions. The absence of a compelling reason to occupy permanent space is a reason to propose removal/relocation, not to automatically replace text with an icon. A contextual shortcut must justify itself through usefulness; check differences in destinations/filters and the consequences of removal, but do not keep a shortcut merely because it already exists.

The output of this stage is a prioritized plan of specific changes: element/location → problem and evidence → decision (remove/combine/relocate/restyle/keep) → affected journey → check that the useful capability is preserved → dependencies and relative cost. Separate observed redundancy from hypotheses about usage frequency. Do not present a successful technical run or reduced height as a completed UX critique.

Before choosing colors, identify the surface's primary task: working with a list, editing a document, configuration, checking a result, or viewing status.

  • Give space to the primary content: the document, list, or data.
  • Use a shared shell and predictable placement of navigation, headings, primary actions, and feedback.
  • For an editor, align the behavior of the document, toolbar, outline, and inspector as one system.
  • Reveal secondary settings as needed, but do not hide required actions or significant states exclusively behind hover or an unclear icon.
  • Do not substitute marketing hero sections, decorative metrics, or grids of equally weighted cards for a task-oriented composition.

If the direction is not yet agreed, present several meaningfully different layouts for the same scenario, recommend one, and explain the tradeoffs. Do not create variants that differ only in color. If the direction has already been accepted, develop it without reopening the choice.

4. Ensure visual consistency

Define consistent rules for typography, density, spacing, widths, surfaces, borders, radii, icons, and semantic states.

Compactness means efficient use of space, not tiny text or cramped controls. Preserve readability, clear grouping, and accessible interaction targets; for touch, aim for targets of at least 44 CSS px. Account for the project's current accessibility requirements.

Use a restrained palette and a meaningful action hierarchy. States must not differ only by color. Do not add gradients, shadows, icons, or containers without a functional reason. Check contrast and visible keyboard focus.

Use realistic labels in supported locales, long names, and representative data. Clearly label synthetic data; do not present it as user data or measurement results.

Minimum design deliverable

Match the deliverable to the assignment: an audit needs verifiable recommendations, design needs a concrete target solution, and authorized implementation needs a working interface. Do not create audit archives unnecessarily. If implementation is authorized, a report, findings matrix, and validated plan are intermediate artifacts, not completion.

Distinguish auditing from designing. If assigned to create a design, do not stop at a problem list: prepare a concrete target solution—the chosen layout, primary actions and transitions, significant states and recovery, and use of existing components and tokens. State changes from current behavior, the tradeoff, and observable acceptance criteria. If application changes are prohibited, use a local composition experiment or prototype with explicit limitations; do not present it as a finished implementation.

For each significant recommendation, connect problem → evidence → change → tradeoff → validation → approximate implementation complexity. Prioritize layout according to the role's task: a form before a list is justified for entry but may obstruct search and browsing. Placing the table higher does not by itself prove better UX.

5. Implement in the existing design stack

  • Use existing UI-layer components and a single source of tokens. Keep the theme and CSS variables consistent; do not introduce a second independently editable palette.
  • Respect local import boundaries for the UI library, styles, and icons. Do not bypass UI adapters when the project provides them.
  • Evolve shared components when there is a recurring contract; do not preemptively wrap the entire library.
  • Do not replace the UI stack without separate agreement. Use the existing stack, whether MUI, Tailwind, native components, or another option; verify APIs against documentation for the version actually installed. Documentation services are optional.
  • Prototype complex behavior in the real stack when interaction fidelity matters. Standalone HTML is acceptable for an agreed concept but does not replace a finished application implementation.
  • Preserve server-side authorization, save behavior, idempotency, draft protection, and domain constraints.
  • Document accepted decisions in the existing authoritative UI contract and related specifications; do not create a competing source of rules.

6. Verify and refine

Before validation, select affected journeys and risky transitions; state the required evidence level: source code, a state snapshot, an interactive client check, or backend evidence. Apply the list below where relevant, distinguishing inapplicable from untested. Do not require the entire downstream process for a small composition experiment if it does not affect that process.

After authorized changes, run the checks required by repository rules and tests for affected behavior. For shared components, update existing stories or examples if the project uses them.

In validation examples, names and pass results must correspond exactly to assertions. Wait for a distinctive visible sign of the state rather than merely a delay or a nonempty root; unexpected API requests and unhandled exceptions must fail the run. Do not return a blanket 200 for unsupported fixture actions. Combine dependent steps or prepare the initial state again. Distinguish smoke, interaction, and measurement; their sum is not UX coverage. Do not describe the network restrictions of HTTP interception as universal isolation.

In the browser, check:

  • the primary end-to-end journey, not only the first screen;
  • primary working viewport sizes and agreed narrow layouts;
  • long text in supported locales, overflow, zoom, and scrolling;
  • empty, loading, error, success, and unavailable-action states;
  • keyboard interaction and ordinary pointer clicks separately, focus, dialogs, menus, panel closure, and return to the trigger; after a pointer failure, Enter or a forced click does not count as fixing the mouse click;
  • preservation of entered data and recovery after errors;
  • the absence of accidental differences in density and styling between screens.

Take screenshots and actually inspect them. Check composition, whitespace balance, alignment, visual noise, and the priority of the primary action. Fix the identified cause: recoloring cannot repair a faulty layout.

Do not automatically update screenshot baselines to make a test pass: inspect and justify changes first. Update only the inspected snapshot and the specific project/test; then rerun it without the update flag. Before the next Playwright run, preserve the needed expected/actual/diff and error-context artifacts in a separate evidence directory: the runner clears the shared outputDir even for a targeted run. Distinguish test counts, unique scenarios, and intentional repetitions across projects; do not count a repeated test-file import as additional coverage. Builds, axe, and visual comparisons are useful but do not prove usability on their own.

If the browser or test environment is unavailable, state the limitation directly. Do not claim validation that was not performed.

Iteration and independent review

If the owner requests independent or model-based review, give the reviewer the current skill, task criteria, the deliverable under review, constraints, and evidence—not only your summary. Preserve the exact version of the input package. If a specific model is requested, verify the actual model ID of the completed session: a role name does not select a model.

Evaluate feedback on its merits. For each significant finding, record a fix or a reasoned rejection, then rerun the affected check. Correct the skill's procedure, not just the report text; product changes require their own authorization.

Before finishing, separately check critique quality: whether unjustified elements, duplicated navigation, false tabs, competing actions, and journey gaps have been identified; whether decisions address which elements belong on the screen, not just geometry. If everything was kept without explaining its necessity, the critique stage is incomplete. Do not invent flaws or require a fixed number of removals when the screen is already justified by its tasks.

Continue the cycle while there is a fixable substantial risk of false acceptance, lost work, or an unusable design deliverable. Stop when significant findings are closed, repeat validation confirms their resolution, and what remains is cosmetic, duplicates existing rules, or would require disproportionately costly research. Explicitly list residual limitations and the reason for stopping. If review is unavailable, report the blocker rather than replacing it with self-review.

Final deliverable

Keep one current outcome at the start of the report; label old runs as historical baselines and remove completed items from next steps so the next agent does not repeat finished work. Distinguish skill readiness from application acceptance and implementation of the concept.

Return a concise summary of:

  • which user difficulty was addressed and what supports the design;
  • links or paths to the concept, implementation, and current contract;
  • which checks were actually performed and what remains unverified;
  • which significant decision is needed from the owner, if it blocks progress.

A visual and UX audit must lead to concrete changes or verifiable recommendations, not generalities about modernity and harmony.

Related Skills