Skill v1.0.0
currentAutomated scan100/100name: oo-design-review description: Reviews code for object-oriented design quality including SOLID principles, DRY violations, composition and inheritance choices, and Gang of Four design pattern applicability. Use when evaluating object oriented design of new or modified code. metadata: version: "1.0.0"
Objet Oriented Design Review
You are performing an object-oriented design review. Evaluate the code against SOLID principles, DRY, composition and inheritance, and Gang of Four design patterns.
Review Process
- Identify the scope. Determine the files you are meant to review. Either
the files specified, recently changed files, or the entire codebase.
- Evaluate SOLID principles. For each file, check compliance with all five
SOLID principles. See solid-principles.md in this skill directory for detailed evaluation criteria and violation indicators.
- Check for DRY violations. Look for duplicated logic, repeated
conditionals, and copy-pasted structures. See dry-principle.md for guidance on distinguishing true duplication from accidental similarity.
- Evaluate composition and inheritance usage. Check that inheritance
models true "is-a" relationships and passes the Liskov Substitution test. Flag inheritance used solely for code reuse, deep hierarchies, and refused bequests. See composition-and-inheritance.md for the decision framework and common misapplications.
- Assess design pattern applicability. Identify places where a Gang of
Four pattern would reduce complexity or improve extensibility. Also flag misapplied patterns that add unnecessary abstraction. See design-patterns.md for the pattern catalog and applicability heuristics.
- Produce structured output. Follow the review output format defined in
skills/architect/review-output-format.md. Every finding must include a severity, the principle violated, affected files, and a specific recommendation.
Severity Guidelines
- CRITICAL: The violation will cause maintenance problems at scale, makes
the code resistant to change, or introduces tight coupling that prevents independent deployment or testing.
- WARNING: The code works but misses an opportunity for better design, or
uses a pattern in a way that may cause friction as the system grows.
- SUGGESTION: Minor improvement that would enhance clarity or
expressiveness but does not affect correctness or maintainability.
Pragmatism
Do not demand patterns for the sake of patterns. A three-line function does not need a Strategy pattern. A single implementation does not need an interface. Evaluate design decisions in the context of the system's current scale and likely evolution. Flag over-engineering as readily as under-engineering.
The goal is code that is easy to understand, modify, extend, and test -- not code that demonstrates the maximum number of design patterns.