Generate multiple radically different interface designs for a module using parallel sub-agents. Use when designing an API, service contract, hook, or component interface — or when someone mentions "design it twice".
From claude-toolkitnpx claudepluginhub johwer/marketplace --plugin claude-toolkitThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
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 in parallel, then compare.
$ARGUMENTS
If no context is provided, ask: "What does this module need to do, and who will call it?"
Before designing, understand:
Also explore the codebase briefly to understand:
.claude/skills/ (backend-conventions.md, frontend-conventions.md)Spawn 3 sub-agents simultaneously using the Task tool. Each must produce a radically different approach. Assign a different constraint to each:
Prompt for each sub-agent:
Design an interface for: [module description]
Requirements: [gathered requirements]
Existing patterns to consider: [from codebase exploration]
Your constraint: [one of the below]
Agent 1: "Minimize surface area — aim for 1-3 methods/props max"
Agent 2: "Maximize flexibility — support all foreseeable use cases"
Agent 3: "Optimize for the most common case — make the happy path effortless"
Stack context:
- Backend (.NET): use C# interface syntax with Task<T> return types,
ApiResponse<T> wrapper, and dependency injection patterns
- Frontend (React/TS): use TypeScript types, hook signatures, or component
props interfaces — follow named exports and CVA patterns
Output:
1. Interface signature (types/methods/props)
2. Usage example (how the caller uses it)
3. What this design hides internally
4. Trade-offs of this approach
Show each design clearly with:
Present designs one at a time so the user can absorb each before seeing the comparison.
After showing all designs, compare on:
Discuss trade-offs in prose. Highlight where designs diverge most.
The best design often combines insights from multiple options. Ask:
If the user wants to proceed, offer to:
/tdd to implement with tests firstDeep module (aim for this): small, simple interface hiding significant complexity internally.
Shallow module (avoid): large, complex interface with thin or trivial implementation.
Red flags in a design: