Skip to content
cccskills
FreePublished on GitHub

a-philosophy-of-software-design

Review module boundaries, APIs, and abstractions using John Ousterhout-inspired design rules. Use it to reduce software complexity, decide which implementation details to hide, and reconsider interfaces that leave too much work to their callers.

OriginalShow the original description

Apply John Ousterhout-inspired software design rules when reducing complexity, designing module boundaries, or reviewing APIs and abstractions.

See how to install

Good for

  • Review module boundaries
  • Reconsider API responsibilities
  • Decide which implementation details to hide
  • Refactor interfaces that burden callers

Files included (4)

  • SKILL.md723 B
  • a-philosophy-of-software-design.md13.2 KB
  • a-philosophy-of-software-design.mini.md5.6 KB
  • a-philosophy-of-software-design.nano.md2.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

A Philosophy of Software Design Skill

Use this skill when a task involves module design, API design, information hiding, abstraction depth, cognitive load, or refactoring shallow interfaces.

Before making design or code decisions, read and apply a-philosophy-of-software-design.mini.md. Use a-philosophy-of-software-design.md only as a deeper reference when the mini rules are not enough for the current design tradeoff.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Helps separate business rules from frameworks, databases, user interfaces, and infrastructure. Uses Robert C. Martin-inspired architecture rules to guide decisions about responsibilities, dependency direction, and boundaries when technologies change.

  • Separating business rules from database code
  • Reviewing dependency direction between layers
  • Organizing use cases and entities
ciembor/agent-rules-books3.1KUpdated Sep 10, 2026

clean-code

FreeSummary

Review everyday code for readability and testability using rules inspired by Robert C. Martin. Examine names, small functions, control flow, responsibilities, comments, error handling, and tests to guide practical improvements to implementation quality.

  • Reviewing variable and function names
  • Reconsidering large functions and their responsibilities
  • Making control flow easier to read
ciembor/agent-rules-books3.1KUpdated Sep 10, 2026

code-complete

FreeSummary

Apply construction rules inspired by Steve McConnell when designing routines, variables, classes, and control flow. The skill guides implementation decisions, defensive programming to handle unexpected conditions, coding standards, and implementation testing.

  • Designing routines and classes
  • Reviewing variables and control flow
  • Handling unexpected inputs and conditions
ciembor/agent-rules-books3.1KUpdated Sep 10, 2026

Guide data system design with Martin Kleppmann-inspired rules. Review reliability, growth, data consistency, replication, transactions, and schema changes, including decisions about data ownership and how events, streams, and batch jobs move and process information.

  • Clarify data ownership and consistency requirements
  • Review data replication and partitioning
  • Design event flows, streams, and batch processing
ciembor/agent-rules-books3.1KUpdated Sep 10, 2026

Model complex business domains using domain-driven design, an approach that organizes software around business concepts. Inspired by Eric Evans, this skill guides shared terminology, model boundaries, aggregates, and the relationships between different contexts.

  • Modeling complex business domains
  • Aligning shared terminology and model boundaries
  • Considering aggregates, repositories, and domain services
ciembor/agent-rules-books3.1KUpdated Sep 10, 2026

Apply domain-driven design, an approach to modeling software around business concepts, without excessive ceremony. Inspired by Vaughn Vernon, this skill guides domain boundaries, relationships between models, aggregates, and events representing business occurrences.

  • Organizing business areas and model boundaries
  • Mapping relationships between bounded contexts
  • Considering aggregates and domain events
ciembor/agent-rules-books3.1KUpdated Sep 10, 2026

See all skills by ciembor

Report a problem with this skill