acc-analyze-solid-violations
Analyzes PHP codebase for SOLID principle violations. Detects God classes (SRP), type switches (OCP), broken contracts (LSP), fat interfaces (ISP), and concrete dependencies (DIP). Generates actionable reports with severity levels and remediation recommendations.
Best use case
acc-analyze-solid-violations is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Analyzes PHP codebase for SOLID principle violations. Detects God classes (SRP), type switches (OCP), broken contracts (LSP), fat interfaces (ISP), and concrete dependencies (DIP). Generates actionable reports with severity levels and remediation recommendations.
Teams using acc-analyze-solid-violations should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/acc-analyze-solid-violations/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How acc-analyze-solid-violations Compares
| Feature / Agent | acc-analyze-solid-violations | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Analyzes PHP codebase for SOLID principle violations. Detects God classes (SRP), type switches (OCP), broken contracts (LSP), fat interfaces (ISP), and concrete dependencies (DIP). Generates actionable reports with severity levels and remediation recommendations.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# SOLID Violations Analyzer
## Overview
This skill analyzes PHP codebases for SOLID principle violations and generates detailed reports with severity levels and remediation recommendations.
## Analysis Workflow
### Step 1: Scope Identification
Determine analysis scope from user input or detect automatically:
```bash
# Detect project structure
ls -la src/
# Identify key directories
find . -type d -name "Domain" -o -name "Application" -o -name "Infrastructure"
```
### Step 2: Run Detection Patterns
Execute detection patterns for each SOLID principle.
## SRP (Single Responsibility) Detection
### God Class Detection
```bash
# Find large classes (>500 lines)
find . -name "*.php" -path "*/src/*" -exec wc -l {} \; | awk '$1 > 500 {print "CRITICAL: " $0}'
# Find classes with many methods
for file in $(find . -name "*.php" -path "*/src/*"); do
count=$(grep -c "public function" "$file" 2>/dev/null || echo 0)
if [ "$count" -gt 15 ]; then
echo "WARNING: $file has $count public methods"
fi
done
# Classes with problematic names
grep -rn "class.*Manager\|class.*Handler\|class.*Helper\|class.*Util" --include="*.php" src/
```
### High Dependency Count
```bash
# Count constructor dependencies
grep -rn "__construct" --include="*.php" -A 20 src/ | \
grep -E "private|readonly" | \
awk -F: '{files[$1]++} END {for(f in files) if(files[f]>7) print "WARNING: " f " has " files[f] " dependencies"}'
```
### Multiple Responsibility Indicators
```bash
# Classes with "And" in name
grep -rn "class\s\+\w*And\w*" --include="*.php" src/
# Check for mixed concerns
grep -rn "class.*Service" --include="*.php" src/ -l | while read file; do
if grep -q "Repository\|Mailer\|Logger" "$file"; then
echo "INFO: $file may have mixed concerns"
fi
done
```
## OCP (Open/Closed) Detection
### Type Switch Detection
```bash
# Switch on type property
grep -rn "switch.*->type\|match.*->type\|match.*::class" --include="*.php" src/
# instanceof chains
grep -rn "if.*instanceof\|elseif.*instanceof" --include="*.php" src/
# Type-based conditionals
grep -rn "if.*getType\(\)\s*===\|if.*->type\s*===" --include="*.php" src/
# Hardcoded type maps
grep -rn "\[.*::class\s*=>" --include="*.php" src/
```
### Extension Indicators
```bash
# Classes that need frequent modification (check git history if available)
git log --since="3 months ago" --name-only --pretty=format: -- "*.php" | \
sort | uniq -c | sort -rn | head -20
```
## LSP (Liskov Substitution) Detection
### Contract Violations
```bash
# NotImplementedException throws
grep -rn "throw.*NotImplemented\|throw.*NotSupported\|throw.*UnsupportedOperation" --include="*.php" src/
# Empty method overrides
grep -rn "public function.*\{[\s]*\}" --include="*.php" src/
# Parent type checks in child classes
grep -rn "if.*parent::\|parent::.*?:" --include="*.php" src/
```
### Precondition/Postcondition Issues
```bash
# Additional validation in overrides
grep -rn "function.*override" --include="*.php" -A 10 src/ | grep "if.*throw"
# Return null where parent might not
grep -rn "return\s*null;" --include="*.php" src/
```
## ISP (Interface Segregation) Detection
### Fat Interface Detection
```bash
# Count methods in interfaces
for file in $(find . -name "*.php" -path "*/src/*" -exec grep -l "^interface" {} \;); do
count=$(grep -c "public function" "$file" 2>/dev/null || echo 0)
if [ "$count" -gt 5 ]; then
echo "WARNING: $file interface has $count methods"
fi
if [ "$count" -gt 8 ]; then
echo "CRITICAL: $file interface has $count methods - consider splitting"
fi
done
```
### Unused Interface Methods
```bash
# Find "// TODO" or "// not implemented" in interface implementations
grep -rn "//\s*TODO\|//\s*not implemented\|//\s*unused" --include="*.php" src/
# Empty implementations
grep -rn "function.*\{[\s]*return;\s*\}" --include="*.php" src/
```
### Generic Interface Names
```bash
# Overly generic interface names
grep -rn "interface\s\+\(Service\|Manager\|Handler\)\s*$" --include="*.php" src/
```
## DIP (Dependency Inversion) Detection
### Direct Instantiation
```bash
# New in methods (excluding exceptions, DateTime, stdClass)
grep -rn "new\s\+[A-Z]" --include="*.php" src/ | \
grep -v "Exception\|DateTime\|stdClass\|DateTimeImmutable\|ArrayObject\|SplQueue"
# Static method calls to concrete classes
grep -rn "[A-Z][a-z]*::[a-z]" --include="*.php" src/ | \
grep -v "self::\|static::\|parent::\|Uuid::\|Money::"
```
### Concrete Type Hints
```bash
# Constructor with concrete types (not interfaces)
grep -rn "__construct" --include="*.php" -A 15 src/ | \
grep -E "(private|readonly)\s+[A-Z][a-z]*[A-Z][a-z]*\s+\\\$" | \
grep -v "Interface\|Abstract\|Contract"
```
### Service Locator Anti-pattern
```bash
# Container/locator usage
grep -rn "container->get\|app()->make\|\\\$this->get(" --include="*.php" src/
```
## Report Generation
### Analysis Output Format
```markdown
# SOLID Violations Report
## Summary
| Principle | Critical | Warning | Info |
|-----------|----------|---------|------|
| SRP | X | X | X |
| OCP | X | X | X |
| LSP | X | X | X |
| ISP | X | X | X |
| DIP | X | X | X |
## Critical Violations
### SRP-001: God Class
- **File:** `src/Service/UserManager.php`
- **Lines:** 847
- **Issue:** Class exceeds 500 lines with 23 public methods
- **Recommendation:** Extract into focused classes
- **Skills:** `acc-create-use-case`, `acc-create-domain-service`
### OCP-001: Type Switch
- **File:** `src/Payment/PaymentProcessor.php:45`
- **Issue:** Switch on payment type requires modification for new types
- **Recommendation:** Apply Strategy pattern
- **Skills:** `acc-create-strategy`
## Warning Violations
### ISP-001: Fat Interface
- **File:** `src/Repository/UserRepository.php`
- **Methods:** 12
- **Issue:** Interface too large, clients forced to depend on unused methods
- **Recommendation:** Segregate into UserReader, UserWriter, UserStats
## Remediation Priority
1. **Immediate:** God classes blocking testing
2. **High:** Type switches preventing extension
3. **Medium:** Fat interfaces causing coupling
4. **Low:** Minor DIP violations
```
## Severity Classification
| Severity | Criteria | Action |
|----------|----------|--------|
| CRITICAL | >500 LOC, >10 deps, NotImplementedException | Immediate refactoring |
| WARNING | 300-500 LOC, 7-10 deps, type switches | Plan refactoring |
| INFO | 200-300 LOC, minor issues | Monitor in next iteration |
## Remediation Skills
| Violation | Recommended Skill |
|-----------|-------------------|
| God Class | `acc-create-use-case` |
| Type Switch | `acc-create-strategy` |
| No Interface | `acc-create-repository` |
| Domain Logic | `acc-create-domain-service` |
| Value Extraction | `acc-create-value-object` |
| Factory Missing | `acc-create-factory` |
| Decorator Need | `acc-create-decorator` |
## Quick Analysis Commands
```bash
# Full analysis
echo "=== SRP ===" && \
find . -name "*.php" -path "*/src/*" -exec wc -l {} \; | awk '$1 > 400' && \
echo "=== OCP ===" && \
grep -rn "switch.*type\|match.*::class" --include="*.php" src/ && \
echo "=== LSP ===" && \
grep -rn "NotImplemented\|NotSupported" --include="*.php" src/ && \
echo "=== ISP ===" && \
for f in $(find . -name "*.php" -exec grep -l "^interface" {} \;); do \
c=$(grep -c "public function" "$f"); [ $c -gt 5 ] && echo "$f: $c methods"; \
done && \
echo "=== DIP ===" && \
grep -rn "new\s\+[A-Z]" --include="*.php" src/ | grep -v "Exception\|DateTime" | head -20
```
## Integration with acc-solid-knowledge
This analyzer uses detection patterns from `acc-solid-knowledge`. For detailed principle explanations and patterns, refer to:
- `acc-solid-knowledge/references/srp-patterns.md`
- `acc-solid-knowledge/references/ocp-patterns.md`
- `acc-solid-knowledge/references/lsp-patterns.md`
- `acc-solid-knowledge/references/isp-patterns.md`
- `acc-solid-knowledge/references/dip-patterns.md`
- `acc-solid-knowledge/references/antipatterns.md`
## Report Template
See `assets/report-template.md` for the full report format.Related Skills
acc-solid-knowledge
SOLID principles knowledge base for PHP 8.5 projects. Provides quick reference for SRP, OCP, LSP, ISP, DIP with detection patterns, PHP examples, and antipattern identification. Use for architecture audits and code quality reviews.
acc-analyze-test-coverage
Analyzes PHP codebase for test coverage gaps. Detects untested classes, methods, branches, exception paths, and edge cases. Provides actionable recommendations.
acc-analyze-coupling-cohesion
Analyzes coupling and cohesion metrics in PHP codebases. Calculates Afferent/Efferent coupling (Ca/Ce), LCOM metrics, instability index, and abstractness. Identifies highly coupled modules and low cohesion classes.
ac-stop-hook-analyzer
Analyze context and decide on continuation via Stop hook. Use when determining if work should continue, analyzing completion status, making continuation decisions, or implementing the Two-Claude pattern.
ab-testing-analyzer
全面的AB测试分析工具,支持实验设计、统计检验、用户分群分析和可视化报告生成。用于分析产品改版、营销活动、功能优化等AB测试结果,提供统计显著性检验和深度洞察。
ab-test-analyzer
Ab Test Analyzer - Auto-activating skill for Data Analytics. Triggers on: ab test analyzer, ab test analyzer Part of the Data Analytics skill category.
32-analyze-verify-150
[32] ANALYZE. Ensure every critical claim has verifiable evidence with confidence levels. Each fact must have source + confidence percentage. If confidence <85%, enter Loop150 to find more sources. Use for critical decisions, factual claims, legal/compliance work, or any situation where unverified claims are dangerous.
31-analyze-think-150
[31] ANALYZE. Universal deep thinking methodology for any situation requiring quality reasoning. Use when solving problems, debugging, making decisions, analyzing code, planning, reviewing, or anytime you need thorough thinking instead of surface-level responses. Triggers on "think deeply", "analyze thoroughly", "reason carefully", "deep thinking", "understand completely", or any task requiring careful thought.
30-analyze-impact-150
[30] ANALYZE. Understand how changes impact the system — what's the core, what's affected, what depends on what. Use when planning changes, analyzing systems, debugging issues, or anytime you need to see the full picture of cause and effect. Triggers on "what's affected", "impact analysis", "dependencies", "scope mapping", or when you need to understand ripple effects.
meeting-insights-analyzer
Analyzes meeting transcripts and recordings to uncover behavioral patterns, communication insights, and actionable feedback. Identifies when you avoid conflict, use filler words, dominate conversations, or miss opportunities to listen. Perfect for professionals seeking to improve their communication and leadership skills.
ux
This AI agent skill provides comprehensive guidance for creating professional and insightful User Experience (UX) designs, covering user research, information architecture, interaction design, visual guidance, and usability evaluation. It aims to produce actionable, user-centered solutions that avoid generic AI aesthetics.
tech-blog
Generates comprehensive technical blog posts, offering detailed explanations of system internals, architecture, and implementation, either through source code analysis or document-driven research.