software-design-philosophy

Score and improve module and API designs for complexity using deep-module principles.

Updated Aug 27, 2026
One-click install
npx skills add https://github.com/tayiorbeii/paperclip-factory-kit --skill software-design-philosophy-tayiorbeii
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: software-design-philosophy
Source: https://github.com/tayiorbeii/paperclip-factory-kit/tree/main/skills/software-design-philosophy
Command: npx skills add https://github.com/tayiorbeii/paperclip-factory-kit --skill software-design-philosophy-tayiorbeii

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

It helps you manage and reduce software complexity that makes systems hard to understand, modify, and debug.

Core Features & Use Cases

  • Complexity diagnosis: identifies common complexity symptoms like change amplification, cognitive load, and unknown unknowns.
  • Deep vs. shallow modules: guides you to hide complexity behind simple interfaces and avoid “classitis” and pass-through designs.
  • Information hiding: prevents design decisions from leaking across module boundaries via clear ownership of knowledge.
  • Design review scoring: uses a 0–10 scoring rubric to assess whether an abstraction earns its interface complexity.
  • Documentation by comments: improves design clarity by capturing intent and assumptions that code can’t express.
  • Strategic vs tactical programming: encourages 10–20% design investment to avoid compounding technical debt.

Quick Start

Ask the AI to score and improve your module/API design for complexity by applying deep-module, information-hiding, and interface-comment rules.

Frequently Asked Questions about software-design-philosophy

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I reduce software complexity when refactoring API boundaries?

Reduce software complexity by applying deep module principles, hiding implementation details behind simple interfaces to prevent change amplification and cognitive load. The Skill diagnoses interface bloat and guides refactoring boundaries using a 0–10 scoring rubric for abstraction quality.

What is a deep module in software design and how does it hide information?

A deep module in software design provides a simple interface that hides significant implementation complexity, enforcing information hiding across module boundaries. This approach prevents design decisions from leaking, reduces unknown unknowns, and avoids shallow pass-through designs that shift complexity to the caller.

How do I score and review my API design for interface bloat?

Score and review API design for interface bloat using the Skill's 0–10 rubric, which evaluates whether an abstraction earns its interface complexity. It checks for red-flag diagnostics like classitis and pass-through methods, applying comment-driven design rules to capture intent and assumptions code cannot express.

When should I choose strategic programming over tactical programming?

Choose strategic programming over tactical programming to invest 10–20% of development time in design quality, preventing compounding technical debt. Tactical programming focuses on immediate features, whereas the strategic approach prioritizes deep modules and information hiding to manage long-term system complexity.

What are the common symptoms of software complexity I should look for?

Common symptoms of software complexity include change amplification, where simple modifications require multiple code changes, cognitive load that limits developer understanding, and unknown unknowns where existing code behavior is unclear. The Skill identifies these red flags during design reviews and API boundary analysis.

Can I use this approach to decide between general-purpose and special-purpose abstractions?

Yes, you can use this approach to decide between general-purpose and special-purpose abstractions by evaluating deep-vs-shallow tradeoffs. The Skill provides concrete principles and red-flag diagnostics to determine if a general-purpose abstraction hides enough complexity to justify its broader interface over a specialized design.