Software Design
Reducing complexity through thoughtful software design
Reduce software complexity using John Ousterhout's philosophy of deep modules, information hiding, and strategic programming. This skill helps your AI agent design interfaces that are simple on the outside and powerful on the inside.
A Philosophy of Software Design
npx skills add wondelai/skills/software-design-philosophy What your agent learns
Deep vs Shallow Modules
The best modules have simple interfaces that hide significant implementation complexity — depth matters more than number of modules.
Information Hiding
Each module should encapsulate design decisions that are likely to change, exposing only what callers need to know.
Strategic vs Tactical Programming
Invest time to design clean abstractions upfront (strategic) rather than hacking quick fixes (tactical).
Define Errors Out of Existence
Design interfaces so that error conditions cannot occur, rather than handling them after the fact.
Complexity Signals
Watch for change amplification, cognitive load, and unknown unknowns — the three manifestations of complexity.
Try these with the skill installed
Evaluate whether these modules are deep or shallow and suggest improvements using software-design-philosophy skill
Design reviewRedesign this API to hide implementation complexity behind a simpler interface using software-design-philosophy skill
API designIdentify complexity signals in this codebase and propose fixes using software-design-philosophy skill
Code reviewRefactor this error handling to define errors out of existence using software-design-philosophy skill
Error handlingInstall Software Design
Free, open-source, and ready in 30 seconds.
npx skills add wondelai/skills/software-design-philosophy MIT Licensed · Works with Claude Code, Cursor, Claude Cowork & OpenClaw · No account needed