software-design-principles

Enforce object-oriented design principles during code refactoring and design reviews.

Updated Mar 3, 2026
One-click install
npx skills add https://github.com/igoyetche/send-to-kindle --skill software-design-principles-igoyetche
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: software-design-principles
Source: https://github.com/igoyetche/send-to-kindle/tree/main/.claude/skills/software-design-principles
Command: npx skills add https://github.com/igoyetche/send-to-kindle --skill software-design-principles-igoyetche

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill helps developers write high-quality, maintainable, and robust code by enforcing professional object-oriented design principles and best practices.

Core Features & Use Cases

  • Code Quality Improvement: Identifies and suggests fixes for common design flaws like feature envy, primitive obsession, and tight coupling.
  • Design Guidance: Provides clear rules and examples for principles like Object Calisthenics, Dependency Inversion, and Fail-Fast error handling.
  • Use Case: When refactoring a complex class, use this Skill to ensure adherence to the 9 rules of Object Calisthenics and to identify methods that might be better placed in other classes.

Quick Start

Review the attached code file for adherence to object-oriented design principles.

Frequently Asked Questions about software-design-principles

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

FAQPage Schema
How do I detect feature envy and primitive obsession during a code review?

To detect feature envy during a code review, analyze method behavior to identify methods calling another class excessively and suggest relocation. Primitive obsession is flagged by detecting overuse of primitives for domain concepts.

What are the Object Calisthenics rules for writing maintainable object-oriented code?

Object Calisthenics enforces maintainable object-oriented code by applying constraints like one indentation level, no else keywords, wrapping primitives, and first-class collections to improve encapsulation.

How do I apply dependency inversion to reduce tight coupling in my classes?

Apply dependency inversion to reduce tight coupling by depending on abstractions rather than concrete implementations. This refactoring ensures high-level modules do not depend on low-level modules, improving maintainability.

Does this approach support fail-fast error handling for refactoring complex classes?

Fail-fast error handling is supported during refactoring by validating inputs immediately and throwing exceptions early. This prevents invalid states from propagating into complex class logic, ensuring robustness.

When should I use intention-revealing naming to improve clean code readability?

Use intention-revealing naming to improve clean code readability when method or class purpose is unclear. This design principle ensures identifiers describe behavior explicitly, reducing maintenance cognitive load.