Back to skills
SKILL.md
Code Smell Detection
ASecurityUse when reviewing code quality, before refactoring, when complexity increases, when code feels "hard to change", during code review, or when onboarding to unfamiliar code - systematic identification of code smells with specific refactoring recipes
- 666 stars
- 0 votes
- 0 copies
- 6 views
- Added February 8, 2026
Security analysis
100/100npx -y skills add majiayu000/claude-skill-registry --skill code-smell-detection --agent claude-codeAre you the author of Code Smell Detection?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/majiayu000-code-smell-detection)---
name: code-smell-detection
description: Use when reviewing code quality, before refactoring, when complexity increases, when code feels "hard to change", during code review, or when onboarding to unfamiliar code - systematic identification of code smells with specific refactoring recipes
---
# Code Smell Detection
**Persona:** Code quality auditor who catalogs issues without judgment, focusing on objective metrics.
**Core principle:** Detect smells early, refactor incrementally, prevent accumulation.
## Should NOT Attempt
- Refactoring while detecting (separate concerns)
- Flagging style preferences as smells (smell != dislike)
- Reporting smells without refactoring recipes
- Detecting smells in generated or vendored code
## Smell Categories
### Bloaters (Too Big)
| Smell | Detection | Refactoring |
|-------|-----------|-------------|
| Long Method | >20 lines, multiple indents | Extract Method |
| Large Class | >300 lines, many responsibilities | Extract Class |
| Long Parameter List | >3 parameters | Introduce Parameter Object |
| Primitive Obsession | Strings for IDs, ints for money | Value Object |
| Data Clumps | Same 3+ fields appear together | Extract Class |
### Change Preventers (Hard to Modify)
| Smell | Detection | Refactoring |
|-------|-----------|-------------|
| Divergent Change | One class changed for many reasons | Extract Class per reason |
| Shotgun Surgery | One change requires many file edits | Move Method, Inline Class |
### Couplers (Too Connected)
| Smell | Detection | Refactoring |
|-------|-----------|-------------|
| Feature Envy | Method uses another class more than own | Move Method |
| Message Chains | a.b().c().d() | Hide Delegate |
### Dispensables (Remove)
| Smell | Detection | Refactoring |
|-------|-----------|-------------|
| Dead Code | Unreachable, unused | Delete |
| Duplicate Code | Same logic in multiple places | Extract Method/Class |
| Comments | Explaining bad code | Refactor code to be clear |
## Detection
```bash
# Long methods/Large files
find ./src -name "*.py" -exec wc -l {} \; | awk '$1 > 300'
# Feature Envy: Count method's references to own vs other class
# If other > own, method belongs elsewhere
```
## Refactoring Recipe: Extract Method
```python
# Before: Long method with comment sections
def process_order(order):
# Validate order
if not order.items: raise ValueError("Empty order")
# Calculate totals
total = sum(item.price for item in order.items) * 1.1
# Notify
send_email(order.customer.email, f"Total: {total}")
# After: Extracted methods
def process_order(order):
validate_order(order)
total = calculate_total(order)
notify_customer(order.customer, total)
```
## Prioritization
| Severity | Smells | Action |
|----------|--------|--------|
| High | Duplicate code, Feature envy, God class | Fix immediately |
| Medium | Long methods, Long params, Data clumps | Fix when touching file |
| Low | Comments, Lazy class | Fix during cleanup |
## Output Format
```markdown
## Code Smell Report: {path}
### High Priority
| File:Line | Smell | Evidence | Refactoring |
|-----------|-------|----------|-------------|
| user.py:45 | Long Method | 67 lines | Extract Method |
```
## Escalation Triggers
| Condition | Action |
|-----------|--------|
| >10 High severity smells | Escalate to `orchestrator` agent for planning |
| God class (>1000 lines) | Use `batch-editor` agent for systematic extraction |
| Circular dependencies | Escalate to architecture review |
| No test coverage | STOP. Add tests before ANY refactoring |
## Failure Behavior
If detection cannot complete:
- Report smells found so far with file:line references
- State reason for incomplete analysis (e.g., "Circular imports prevented full analysis")
- Recommend next steps (e.g., "Break circular dependency A→B→A first")
## Red Flags
- "It works, don't touch it" - Smells accumulate
- Refactoring without tests - Recipe for regression
## Related Skills
- **receiving-code-review**: Both focus on code quality improvement
- **verification-before-completion**: Verify fixes don't introduce new smells
## Integration
- **orchestrator** agent - Plan safe refactoring after detecting smells
- **code-reviewer** agent - Find dead code during review
- **test-driven-development** skill - Write tests before refactoring
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.