Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Safe, incremental refactoring with SOLID evaluation. Trigger with "refactor this", "improve the code", "clean up", "restructure", "improve maintainability".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 220% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 142% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 211% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 176% | 0% |
Performs safe, step-by-step code refactoring with quantitative SOLID principles evaluation. Visualizes technical debt and clarifies improvement priorities.
bash# Identify complex code and create refactoring plan find . -name "*.js" -exec wc -l {} + | sort -rn | head -10 "Refactor large files to reduce complexity" # Detect and consolidate duplicate code grep -r "function processUser" . --include="*.js" "Consolidate duplicate functions using Extract Method" # Evaluate SOLID principles violations grep -r "class.*Service" . --include="*.js" | head -10 "Assess whether these classes follow Single Responsibility Principle"
bash# Find long methods grep -A 50 "function" src/*.js | grep -B 50 -A 50 "return" | wc -l "Split methods over 50 lines using Extract Method" # Find complex conditions grep -r "if.*if.*if" . --include="*.js" "Improve nested conditions using Strategy pattern" # Find code smells grep -r "TODO\|FIXME\|HACK" . --exclude-dir=node_modules "Resolve technical debt in comments"
javascript// Before: Long method function processOrder(order) { // 50 lines of complex processing } // After: Separation of responsibilities function processOrder(order) { validateOrder(order); calculateTotal(order); saveOrder(order); }
javascript// Before: switch statement function getPrice(user) { switch (user.type) { case "premium": return basePrice * 0.8; case "regular": return basePrice; } } // After: Strategy pattern class PremiumPricing { calculate(basePrice) { return basePrice * 0.8; } }
textS - Single Responsibility (20 points) ├─ Number of responsibilities: 1 (20pts) | 2 (15pts) | 3 (10pts) | 4+ (5pts) ├─ Method count: <7 (+5pts) | 7-15 (+3pts) | >15 (0pts) ├─ Clear reasons for change: Clear (+5pts) | Unclear (0pts) └─ Example score: UserService (auth + data processing) = 10 points O - Open/Closed (20 points) ├─ Extension points: Strategy/Template Method (20pts) | Inheritance only (10pts) | None (5pts) ├─ Existing code changes for new features: Not needed (+5pts) | Minimal (+3pts) | Required (0pts) ├─ Interface usage: Appropriate (+5pts) | Partial (+3pts) | None (0pts) └─ Example score: PaymentProcessor (Strategy) = 20 points L - Liskov Substitution (20 points) ├─ Derived class contract compliance: Complete (20pts) | Partial (10pts) | Violated (0pts) ├─ Precondition strengthening: None (+5pts) | Present (-5pts) ├─ Postcondition weakening: None (+5pts) | Present (-5pts) └─ Example score: Square extends Rectangle = 0 points (violated) I - Interface Segregation (20 points) ├─ Interface size: 1-3 methods (20pts) | 4-7 (15pts) | 8+ (5pts) ├─ Unused method implementations: None (+5pts) | 1-2 (+2pts) | 3+ (0pts) ├─ Role clarity: Single role (+5pts) | Multiple roles (0pts) └─ Example score: Readable/Writable separation = 20 points D - Dependency Inversion (20 points) ├─ Dependency direction: Abstractions only (20pts) | Mixed (10pts) | Concretions only (5pts) ├─ DI usage: Constructor Injection (+5pts) | Setter (+3pts) | None (0pts) ├─ Testability: Mockable (+5pts) | Difficult (0pts) └─ Example score: Repository Pattern = 20 points Total Score = S + O + L + I + D ├─ 90-100 points: Excellent (SOLID compliant) ├─ 70-89 points: Good (Minor improvements needed) ├─ 50-69 points: Fair (Refactoring recommended) ├─ 30-49 points: Poor (Major improvements required) └─ 0-29 points: Critical (Design overhaul required)
textTechnical Debt (time) = Complexity Score × Impact Range × Fix Difficulty Complexity Score: ├─ Cyclomatic complexity: 1-5 (low) | 6-10 (med) | 11-20 (high) | 21+ (critical) ├─ Cognitive complexity: Nesting depth × conditional branches ├─ Lines of code: <50 (1pt) | 50-200 (2pts) | 200-500 (3pts) | 500+ (5pts) └─ Duplication rate: 0-10% (1pt) | 10-30% (2pts) | 30-50% (3pts) | 50%+ (5pts) Impact Range: ├─ Dependent modules: Direct dependencies + Indirect × 0.5 ├─ Usage frequency: API calls/day ├─ Business importance: Critical (×3) | High (×2) | Medium (×1) | Low (×0.5) └─ Team knowledge: 1 person knows (×3) | 2-3 (×2) | 4+ (×1) Fix Difficulty: ├─ Test coverage: 0% (×3) | <50% (×2) | 50-80% (×1.5) | >80% (×1) ├─ Documentation: None (×2) | Insufficient (×1.5) | Adequate (×1) ├─ Dependencies: Tightly coupled (×3) | Moderate (×2) | Loosely coupled (×1) └─ Change risk: Breaking change (×3) | Backward compatibility (×2) | Safe (×1) Cost Conversion: ├─ Time cost: Debt time × Developer hourly rate ├─ Opportunity cost: New feature delay days × Daily revenue impact ├─ Quality cost: Bug probability × Fix cost × Frequency └─ Total cost: Time + Opportunity + Quality costs
| Priority | Impact | Fix Cost | Time Savings | Investment ROI | Response Deadline | | -------------------------- | ------ | -------- | ------------ | --------------------- | ----------------- | | Critical (Immediate) | High | Low | > 5x | Invest 1h → Save 5h+ | Immediately | | Important (Planned) | High | High | 2-5x | Invest 1h → Save 2-5h | Within 1 month | | Watch (Monitor) | Low | High | 1-2x | Invest 1h → Save 1-2h | Within 3 months | | Acceptable (Tolerable) | Low | Low | < 1x | Investment = Savings | No action needed |
| Code Smell | Detection Criteria | Debt Score | Improvement Method | | ----------------------- | -------------------------------- | -------------- | ------------------------ | | God Object | Responsibilities >3, Methods >20 | High (15-20h) | Extract Class, Apply SRP | | Long Method | Lines >50, Complexity >10 | Medium (5-10h) | Extract Method | | Duplicate Code | Duplication rate >30% | High (10-15h) | Extract Method/Class | | Large Class | Lines >300, Methods >15 | High (10-20h) | Extract Class | | Long Parameter List | Parameters >4 | Low (2-5h) | Parameter Object | | Feature Envy | Other class references >5 | Medium (5-10h) | Move Method | | Data Clumps | Repeated argument groups | Low (3-5h) | Extract Class | | Primitive Obsession | Excessive primitive type usage | Medium (5-8h) | Replace with Object | | Switch Statements | Cases >5 | Medium (5-10h) | Strategy Pattern | | Shotgun Surgery | Change impact areas >3 | High (10-15h) | Move Method/Field |
javascript// Evaluation target: UserService class class UserService { constructor(db, cache, logger, emailService) { // 4 dependencies this.db = db; this.cache = cache; this.logger = logger; this.emailService = emailService; } // Responsibility 1: Authentication authenticate(username, password) { /* ... */ } refreshToken(token) { /* ... */ } // Responsibility 2: User management createUser(data) { /* ... */ } updateUser(id, data) { /* ... */ } deleteUser(id) { /* ... */ } // Responsibility 3: Notifications sendWelcomeEmail(user) { /* ... */ } sendPasswordReset(email) { /* ... */ } } // SOLID Score Evaluation Result S: 10 points (3 responsibilities: auth, CRUD, notifications) O: 5 points (No extension points, direct implementation) L: 15 points (No inheritance, not applicable) I: 10 points (Interfaces not segregated) D: 10 points (Depends on concrete classes) Total: 50 points (Fair - Refactoring recommended) // Technical Debt Complexity: 15 (7 methods, 3 responsibilities) Impact Range: 8 (Authentication used across all features) Fix Difficulty: 2 (Tests exist, documentation lacking) Debt Time: 15 × 8 × 2 = 240 hours Priority: Critical (Auth system requires immediate attention)
javascript// After applying SOLID principles (Score: 90 points) // S: Single Responsibility (20 points) class AuthenticationService { authenticate(credentials) { /* ... */ } refreshToken(token) { /* ... */ } } // O: Open/Closed (20 points) class UserRepository { constructor(storage) { // Strategy Pattern this.storage = storage; } save(user) { return this.storage.save(user); } } // I: Interface Segregation (20 points) interface Readable { find(id); findAll(); } interface Writable { save(entity); delete(id); } // D: Dependency Inversion (20 points) class UserService { constructor( private auth: IAuthService, private repo: IUserRepository, private notifier: INotificationService ) {} } // Debt reduction: 240 hours → 20 hours (92% reduction)
bash# SOLID score measurement npx solid-analyzer src/ --output report.json # Complexity analysis npx complexity-report src/ --format json sonar-scanner -Dsonar.javascript.lcov.reportPaths=coverage/lcov.info # Technical debt visualization npx code-debt-analyzer --config .debt.yml # Code formatting npm run lint:fix prettier --write src/ # Test execution and coverage npm test -- --coverage npm run test:mutation # Mutation testing
Other measured skills in the registry, with their headline benchmark lift.