Skip to main content
NEW · APP STORE Now on iOS · macOS · iPad Android & Windows soon GET IT
Prompts Multiple Software Interface Designs Generator

developer coding skill risk: low

Multiple Software Interface Designs Generator

The prompt instructs the model to gather module requirements then spawn parallel sub-agents to create radically different interface designs, present each design's signature and usa…

SKILL 1 file

SKILL.md
---
name: design-an-interface
description: "Generate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions \"design it twice\"."
---
# Design an Interface

Based on "Design It Twice" from "A Philosophy of Software Design": your first idea is unlikely to be the best. Generate multiple radically different designs, then compare.

## Workflow

### 1. Gather Requirements

Before designing, understand:

- [ ] What problem does this module solve?
- [ ] Who are the callers? (other modules, external users, tests)
- [ ] What are the key operations?
- [ ] Any constraints? (performance, compatibility, existing patterns)
- [ ] What should be hidden inside vs exposed?

Ask: "What does this module need to do? Who will use it?"

### 2. Generate Designs (Parallel Sub-Agents)

Spawn 3+ sub-agents simultaneously using Task tool. Each must produce a **radically different** approach.

```
Prompt template for each sub-agent:

Design an interface for: [module description]

Requirements: [gathered requirements]

Constraints for this design: [assign a different constraint to each agent]
- Agent 1: "Minimize method count - aim for 1-3 methods max"
- Agent 2: "Maximize flexibility - support many use cases"
- Agent 3: "Optimize for the most common case"
- Agent 4: "Take inspiration from [specific paradigm/library]"

Output format:
1. Interface signature (types/methods)
2. Usage example (how caller uses it)
3. What this design hides internally
4. Trade-offs of this approach
```

### 3. Present Designs

Show each design with:

1. **Interface signature** - types, methods, params
2. **Usage examples** - how callers actually use it in practice
3. **What it hides** - complexity kept internal

Present designs sequentially so user can absorb each approach before comparison.

### 4. Compare Designs

After showing all designs, compare them on:

- **Interface simplicity**: fewer methods, simpler params
- **General-purpose vs specialized**: flexibility vs focus
- **Implementation efficiency**: does shape allow efficient internals?
- **Depth**: small interface hiding significant complexity (good) vs large interface with thin implementation (bad)
- **Ease of correct use** vs **ease of misuse**

Discuss trade-offs in prose, not tables. Highlight where designs diverge most.

### 5. Synthesize

Often the best design combines insights from multiple options. Ask:

- "Which design best fits your primary use case?"
- "Any elements from other designs worth incorporating?"

## Evaluation Criteria

From "A Philosophy of Software Design":

**Interface simplicity**: Fewer methods, simpler params = easier to learn and use correctly.

**General-purpose**: Can handle future use cases without changes. But beware over-generalization.

**Implementation efficiency**: Does interface shape allow efficient implementation? Or force awkward internals?

**Depth**: Small interface hiding significant complexity = deep module (good). Large interface with thin implementation = shallow module (avoid).

## Anti-Patterns

- Don't let sub-agents produce similar designs - enforce radical difference
- Don't skip comparison - the value is in contrast
- Don't implement - this is purely about interface shape
- Don't evaluate based on implementation effort

INPUTS

module description REQUIRED

description of the module to design an interface for

gathered requirements REQUIRED

requirements collected in step 1

REQUIRED CONTEXT

  • module description
  • gathered requirements

OPTIONAL CONTEXT

  • constraints for each agent

TOOLS REQUIRED

  • task_tool

ROLES & RULES

  1. Ask: "What does this module need to do? Who will use it?"
  2. Spawn 3+ sub-agents simultaneously using Task tool
  3. Each must produce a radically different approach
  4. Present designs sequentially so user can absorb each approach before comparison
  5. Discuss trade-offs in prose, not tables
  6. Don't let sub-agents produce similar designs - enforce radical difference
  7. Don't skip comparison - the value is in contrast
  8. Don't implement - this is purely about interface shape
  9. Don't evaluate based on implementation effort

EXPECTED OUTPUT

Format
markdown
Schema
markdown_sections · Interface signature, Usage examples, What it hides, Trade-offs of this approach
Constraints
  • present designs sequentially
  • discuss trade-offs in prose not tables
  • include interface signature, usage example, what is hidden, and trade-offs for each design
  • ask synthesis questions at end

SUCCESS CRITERIA

  • Generate multiple radically different designs
  • Compare designs on interface simplicity, general-purpose vs specialized, implementation efficiency, depth, ease of correct use vs ease of misuse
  • Synthesize by asking which design fits and what elements to incorporate

FAILURE MODES

  • May let sub-agents produce similar designs instead of radical differences
  • May skip the comparison step
  • May implement code instead of focusing on interface shape

EXAMPLES

Includes one prompt template for sub-agents specifying constraints, output format with four numbered items, and four example agent constraints.

CAVEATS

Missing context
  • Exact mechanism or syntax for spawning sub-agents (Task tool details)
  • Target language/ecosystem for interface examples

QUALITY

OVERALL
0.88
CLARITY
0.90
SPECIFICITY
0.85
REUSABILITY
0.90
COMPLETENESS
0.90

IMPROVEMENT SUGGESTIONS

  • Add an explicit input parameter placeholder at the top for the module description to make invocation clearer.
  • Specify desired output format (e.g., markdown headings) for the final comparison section to ensure consistency.

USAGE

Copy the prompt above and paste it into your AI of choice — Claude, ChatGPT, Gemini, or anywhere else you're working. Replace any placeholder sections with your own context, then ask for the output.

MORE FOR DEVELOPER