software-design-philosophy

Apply John Ousterhout's design principles to reduce software complexity in code reviews and architecture discussions.

335|17|Updated Mar 11, 2026
One-click install
npx skills add https://github.com/luoling8192/software-design-philosophy-skill --skill software-design-philosophy-luoling8192
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: software-design-philosophy
Source: https://github.com/luoling8192/software-design-philosophy-skill/tree/main
Command: npx skills add https://github.com/luoling8192/software-design-philosophy-skill --skill software-design-philosophy-luoling8192

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Complexity in software design often causes misunderstanding and maintenance challenges. This guide helps teams reduce cognitive load and hidden dependencies by applying established design principles.

Core Features & Use Cases

  • Provides a distilled framework based on John Ousterhout's philosophy to inform code reviews, architecture discussions, API design, module decomposition, and refactoring decisions.
  • Emphasizes information hiding, deep modules, consistent naming, and prudent error handling to reduce surface area and ongoing complexity.
  • Use Case: during a code review or architecture discussion, request guidance to identify hidden dependencies or areas of improvement.

Quick Start

Ask for design guidance during code reviews, architecture discussions, API design, and module decomposition decisions.

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 during code reviews?

Reduce software complexity during code reviews by applying design principles like information hiding and deep modules to identify hidden dependencies and minimize cognitive load. This approach ensures modules have simple interfaces while encapsulating intricate implementation details.

What is the best way to design APIs that minimize hidden dependencies?

Design APIs to minimize hidden dependencies by emphasizing information hiding and creating deep modules. This philosophy reduces the module surface area exposed to users, ensuring consistent naming and prudent error handling to lower ongoing maintenance complexity.

How does information hiding improve architecture discussions?

Information hiding improves architecture discussions by guiding teams to encapsulate complex implementation details within deep modules. This technique reduces hidden dependencies and cognitive load, allowing architects to focus on simplified interfaces and robust module decomposition.

When do I need to apply deep modules for module decomposition?

Apply deep modules for module decomposition when refactoring systems to reduce surface area and ongoing complexity. Deep modules pair a simple interface with complex functionality, making them essential for improving readability and lowering cognitive load in software design.

Can I use design philosophy principles for refactoring and readability improvements?

Use design philosophy principles for refactoring and readability improvements by evaluating existing code against deep module and information hiding standards. This framework identifies shallow modules and hidden dependencies, guiding iterative design improvements to reduce overall software complexity.

How do I handle error handling by design in software architecture?

Handle error handling by design in software architecture by applying prudent error handling principles that reduce surface area. This design philosophy defines errors as part of the module interface, ensuring consistent treatment and minimizing disruptions to system complexity.