Skip to content
Development
Skill

/java-solid

Checks Java code for SOLID principles violations with Java-specific patterns. Use when user asks to "check SOLID principles", "is this good OOP", "single responsibility", "SOLID violations", "open closed principle", or "dependency inversion".

From plugin
claude-java-plugins
1726 skills6 agents5 commands

Claude Code

$ npx -y skills add ducpm2303/claude-java-plugins --skill java-solid --agent claude-code

SKILL.md

java-solid.SKILL.md
description: Checks Java code for SOLID principles violations with Java-specific patterns. Use when user asks to "check SOLID principles", "is this good OOP", "single responsibility", "SOLID violations", "open closed principle", or "dependency inversion".
argument-hint: "[paste class or paste multiple related classes]"
allowed-tools: Read, Grep, Glob

Review the provided Java code for SOLID principles violations. For each principle, check for violations and suggest targeted improvements. Tailor suggestions to the detected Java version.

S — Single Responsibility Principle

A class should have one reason to change.

**Violations to flag:**

  • Classes named `*Manager`, `*Helper`, `*Utils` with more than 3 unrelated methods
  • Service classes that also contain validation logic, email sending, AND database calls
  • Classes with more than ~200 lines (often a signal of multiple responsibilities)
  • Methods that do multiple distinct things (parse + validate + persist + notify)

**Fix pattern:** Extract each responsibility into its own class. Show the split.

O — Open/Closed Principle

Open for extension, closed for modification.

**Violations to flag:**

  • `if/else` or `switch` chains on type/status that would require modification to add new types
  • Hard-coded behaviour that should be configurable
  • Direct instantiation of concrete classes in business logic (use interfaces)

**Fix pattern:** Introduce Strategy, Template Method, or polymorphism. Show the refactoring.

L — Liskov Substitution Principle

Subtypes must be substitutable for their base types.

**Violations to flag:**

  • Subclass overrides a method by throwing `UnsupportedOperationException`
  • Subclass weakens preconditions (accepts nulls when parent doesn't)
  • Subclass strengthens postconditions (returns more restricted type)
  • Square extends Rectangle anti-pattern

**Fix pattern:** Use composition over inheritance, or restructure the hierarchy.

I — Interface Segregation Principle

Clients should not depend on interfaces they don't use.

**Violations to flag:**

  • Interfaces with more than ~5 methods where implementors only use some
  • `implements` classes that leave methods empty or throw `UnsupportedOperationException`
  • Fat service interfaces used by clients that only call 1–2 methods

**Fix pattern:** Split the fat interface into focused role interfaces.

D — Dependency Inversion Principle

Depend on abstractions, not concretions.

**Violations to flag:**

  • Field or constructor takes a concrete class (`new UserServiceImpl`) instead of an interface (`UserService`)
  • `new ConcreteClass()` inside business logic instead of dependency injection
  • Static utility method calls deep in business logic that prevent testing
  • `@Autowired` on a concrete class field instead of an interface

**Fix pattern:** Introduce interface + constructor injection. Show the change.

Output format

For each violation: 1. **Principle violated:** (S/O/L/I/D) 2. **Location:** class + method 3. **Problem:** what rule is broken and why it matters 4. **Fix:** before/after code

End with: **SOLID Score** — how many of the 5 principles are cleanly satisfied (e.g., "3/5 — S, I, D pass; O and L need attention").

Next Steps

  • For O violations → run `/java-design-pattern` to find the right pattern
  • For D violations → run `/java-refactor` to extract interfaces
  • For SRP violations → run `/java-refactor` to split classes
Read more
@ducpm2303
Ships withclaude-java-plugins

A Claude Code plugin marketplace with 3 focused plugins for Java developers. All plugins support Java 8 through Java 21 and tailor advice to your target Java version.

1726 skills6 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
17
Star history of ducpm2303/claude-java-plugins on GitHub, a chart by star-history.com

Other skills on claude-java-plugins.

java-adr

java-adr

Creates, lists, and manages Architecture Decision Records for Java projects. Use when user asks to "create an ADR", "document…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about java-solid.

Which coding agents can use java-solid?
java-solid installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.