design-it-twice
Installation
SKILL.md
Design It Twice
Based on "Design It Twice" from A Philosophy of Software Design: your first idea is unlikely to be your best. Generate multiple radically different designs in parallel, then compare and synthesize.
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 at the interface?
2. Explore the codebase (if applicable)
If the module is part of an existing codebase, use a subagent to explore it first. Look for: