Design interface
Explore multiple radically different interface designs for a feature in parallel before committing to one. Uses parallel sub-agents to generate distinct approaches so you can compare tradeoffs rather than anchoring on the first idea. For UI/UX interface work specifically — not API interface design. Use when the user says "design-interface", "let's explore some designs for X", "what are the options for this screen", or before building any non-trivial UI.From its SKILL.md
npx -y skills add max4c/skills --skill design-interfaceAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
11.5 KB, as published. Nobody here has run it
Design Interface
Generate multiple radically different design explorations for a UI feature in parallel, then compare them. The point is to avoid anchoring on the first idea — most designs are worse than they could be because the first sketch becomes the spec.
Inspired by Matt Pocock's design-an-interface. Adapted for visual/UX design exploration rather than code API design.
Contract
Input: a description of what you need to design + (optional) constraints (platform, style guide, accessibility requirements).
Output: 3-5 distinct design explorations as markdown + sketch descriptions, presented side-by-side so the user can compare. No code, no mockups — descriptions detailed enough that a designer or developer could build any of them.
What this skill does NOT do: write implementation code, build actual mockups in Figma, or commit to a design. It produces explorations for the user to evaluate. The follow-up (implementation, prototyping) is a separate workflow.
This is for visual/UX design. For API or type interface design, use max:tech-spec instead.
Phases
Phase 1: Understand the design brief
Before exploring solutions, nail down the problem. Gather just enough to brief parallel agents — not a full PRD.
Intake checklist (ask one at a time, skip what's already answered):
- What's the feature? "A new sidebar for X" or "A way to Y"
- Who's the primary user? Power user vs novice, enterprise vs consumer, one-time vs daily
- What's the context of use? Desktop, mobile, one-handed, quick glance, deep focus, collaborative
- What's the user trying to accomplish? What should they be able to do in 10 seconds? In 10 minutes?
- What's the platform constraint? macOS, iOS, web, cross-platform. Existing design system (HIG, Material, custom)?
- What's the accessibility requirement? Keyboard-only support? Screen reader? Dynamic type?
- What's out of scope? What aren't we designing right now?
If the user already has a PRD, read it instead of asking. Extract the intake answers from it.
Phase 2: Define the design dimensions
Before spawning explorations, identify the axes along which designs can vary. This is the most important step — without explicit dimensions, parallel agents converge on the average and produce 5 variations of the same idea.
Dimension library (pick 2-3 where variation matters most for this feature):
Navigation & structure
- Spatial arrangement: left rail / collapsible drawer / inline tabs / floating palette / bottom bar / top bar
- Hierarchy: flat list / tree / hub-and-spoke / breadcrumb-driven / search-first
- Depth: everything visible at once / progressive disclosure / drill-down
Density & pacing
- Visual density: compact (many items, small targets) / spacious (few items, large targets)
- Information density: dashboard (lots of data visible) / focused (one thing at a time)
- Interaction pacing: rapid (hover, keyboard-heavy) / deliberate (click-confirm)
Interaction style
- Primary input: click / hover / keyboard / drag / touch / gesture
- Modality: modal (pauses the flow) / inline (non-blocking) / ambient (background)
- Feedback: immediate (optimistic) / confirmed (wait for server) / batched (queue then apply)
Visual weight
- Loudness: prominent (colorful, shadows, gradients) / quiet (muted, minimal chrome) / hidden (reveals on hover)
- Whitespace: generous (airy, calm) / tight (efficient, utilitarian)
- Affordance strength: obvious (buttons look like buttons) / subtle (discoverable but calm)
Orientation
- Primary axis: horizontal (left-to-right reading) / vertical (top-to-bottom scrolling) / radial (centered hub)
- Grid: rigid grid / free-form / magnetic snapping
Temporal
- State transitions: animated (transitions are communicative) / instant (no animation)
- Persistence: session-only / persistent across launches / cloud-synced
Pick 2-3 dimensions where variation matters most for THIS feature. Each parallel exploration will occupy a different corner of that dimension space.
Example — for "a new sidebar to browse workspaces":
- Dimension 1: Spatial arrangement (left rail vs. top-bar dropdown vs. command-palette-first)
- Dimension 2: Density (compact-with-icons vs. spacious-with-descriptions)
- Dimension 3: Hierarchy (flat list vs. tree with folders)
That gives up to 3×2×2 = 12 possible corners. Pick 3-5 corners that are maximally different.
Phase 3: Spawn parallel explorations
Dispatch 3-5 parallel sub-agents, each with a distinct brief. Concurrent dispatch prevents anchoring — if the explorations run sequentially, later ones anchor on earlier ones.
Dispatch mechanism: use the Agent tool with multiple concurrent calls in a single message. Each call is a separate agent instance with a distinct brief. If concurrent Agent tool calls aren't available in the environment, fall back to a single agent with explicit instructions: "Generate N distinct designs, treating each as if it were produced by a different designer who hasn't seen the others."
Brief template for each parallel exploration:
You are designing a <feature type> for <user type> on <platform>.
Context: <1-2 sentences from Phase 1 intake>
Your assigned design corner:
- <Dimension 1>: <value — be specific>
- <Dimension 2>: <value>
- <Dimension 3>: <value>
Constraints:
- <platform>
- <accessibility>
- <any other hard constraints>
Be opinionated. Don't hedge. Propose something that MAXIMIZES your corner's
strengths and accepts its weaknesses. Do not produce a balanced or compromise
design — that's what averaging produces, and averaging is what we're trying
to avoid.
Describe the design in enough detail to visualize it:
- Overall layout (positions, proportions, key regions)
- Interaction flow (how the user accomplishes the primary task)
- Visual treatment (typography, color use, chrome, affordances)
- Key moments (first-run, empty state, error state, success state)
Do NOT:
- Write code or implementation details
- Reference specific Figma components or libraries
- Hedge with "this could also..."
- Propose multiple alternatives within your design
Output: a markdown description of ONE design, 300-600 words, structured as:
- Name (captures the key design choice)
- Overview (2-3 sentences)
- Layout
- Interaction
- Visual treatment
- Strengths (2-3 specific benefits)
- Weaknesses (2-3 specific costs — be honest)
- Best for (the user or use case this excels at)
The goal is that the 3-5 designs are distinguishably different — not 5 variations of the same idea.
Phase 4: Present comparisons
Collect the outputs and present them to the user in a comparison format that forces explicit tradeoff visibility:
# Design Explorations: <Feature Name>
## Brief recap
<2-3 sentences of what's being designed, for whom, on what platform.>
## Dimensions explored
- <Dimension 1>: <values we explored>
- <Dimension 2>: <values>
- <Dimension 3>: <values>
## Option A: <Name>
**Corner:** <Dimension 1 value, Dimension 2 value, ...>
**Overview:** <2-3 sentences>
**Layout:** <description>
**Interaction:** <description>
**Visual treatment:** <description>
**Strengths:**
- <specific benefit>
- <specific benefit>
**Weaknesses:**
- <specific cost>
- <specific cost>
**Best for:** <the kind of user or use case this excels at>
---
## Option B: <Name>
...
---
## Comparison matrix
| Attribute | A | B | C | D | E |
|---|---|---|---|---|---|
| Speed to learn | 3 | 5 | 2 | 4 | 3 |
| Density (1=sparse, 5=dense) | 5 | 2 | 4 | 3 | 3 |
| Flexibility | 2 | 4 | 5 | 3 | 4 |
| Accessibility | 4 | 3 | 3 | 5 | 4 |
| Feels Bugbook-y | 5 | 2 | 3 | 4 | 3 |
| Implementation effort | Low | High | Medium | Low | Medium |
(Customize the rows to match what matters for this feature. Don't use generic rubrics — pick attributes that reveal the tradeoffs.)
Don't rank the designs for the user. Present the tradeoffs; let the user decide which tradeoffs matter.
Phase 5: Pick (or iterate)
Ask the user: "Which option resonates, or do you want to explore further along a specific dimension?"
Possible user responses:
- Pick one — done. Return the selected option as the output.
- Combine parts — synthesize a new design from pieces of two or more options. Present the synthesis ("Option F: take A's layout + C's interaction model") and confirm before finalizing.
- Explore further — pick a dimension and spawn more parallel agents along that axis. "I want to see more options with spacious density but different hierarchies."
- Start over — the briefs weren't right. Go back to Phase 1 and re-intake.
Phase 6: Output
Write the selected (or synthesized) design to docs/designs/<slug>.md. Include all the explorations that were considered so future-you can see the tradeoff space:
# <Feature Name> — Design
## Selected design: Option C (or synthesis of A + C)
<full description>
## Rationale
<why this one won over the others>
## Explorations considered
<summaries of A, B, C, D, E with links to full descriptions in an appendix>
## Appendix: full exploration writeups
<all 5 explorations in full>
Return the path to the caller.
Anti-patterns
- Generating 5 variations of the same design. If the options differ only in color or padding, you're not exploring — you're polishing. Push the dimension variation harder. Each agent's brief should make a DIFFERENT commitment.
- Hedging. "This design could work, but also..." is useless. Each option should be a confident commitment, even if the overall process explores multiple commitments. Instruct agents to commit, not hedge.
- Skipping the dimensions phase. Without explicit dimension targets, parallel agents converge on the average. Force them apart with specific corner assignments.
- Presenting winners and losers. Don't rank the designs for the user. Present the tradeoffs; let them decide which tradeoffs matter.
- Treating design as decoration. Design is about how the user accomplishes their goal. If your options vary in aesthetics but not in workflow, you're solving the wrong problem.
- Over-specifying the brief. If you tell each agent exactly what to design, you're not exploring, you're prescribing. The brief should set the corner, not the solution.
- Spawning too many agents. 3-5 is the sweet spot. More than 5 and the comparison becomes overwhelming; fewer than 3 and you might as well just sketch one idea yourself.
- Forgetting accessibility as a dimension. Keyboard, screen reader, and dynamic type are dimensions too. Include at least one exploration that prioritizes accessibility over the other dimensions.
Further reading
- Matt Pocock's
design-an-interfaceskill — the parallel-agent framing - Edward Tufte, The Visual Display of Quantitative Information — for dense-data feature design
- Don Norman, The Design of Everyday Things — for affordance and interaction clarity
- Apple Human Interface Guidelines / Material Design / Fluent UI — for platform-native dimension vocabulary