From mattpocock-skills
Generates multiple radically different API/module interface designs using parallel sub-agents, then compares trade-offs. Use when exploring interface options or designing a module.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mattpocock-skills:design-an-interfaceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
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.
Before designing, understand:
Ask: "What does this module need to do? Who will use it?"
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
Show each design with:
Present designs sequentially so user can absorb each approach before comparison.
After showing all designs, compare them on:
Discuss trade-offs in prose, not tables. Highlight where designs diverge most.
Often the best design combines insights from multiple options. Ask:
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).
npx claudepluginhub esonhugh/marketplace --plugin mattpocock-skillsGenerates multiple radically different interface designs for modules or APIs using parallel sub-agents. Use when designing APIs, exploring options, comparing module shapes, or 'design it twice'.
Generates multiple radically different interface designs using parallel sub-agents, based on 'A Philosophy of Software Design'. Useful when designing APIs, exploring interface options, or comparing module shapes.
Design a module's interface using parallel sub-agents for radically different designs. Compare on depth, simplicity, and efficiency, then grill the synthesis. Use for new APIs, refactors, or interface decisions.