Lightweight design smell review for modules and APIs—coupling, cohesion, naming, boundaries, and unnecessary complexity. Use before large refactors or when code feels hard to change. Complements gstack/review (diff-focused).
Installs into .claude/skills of the current project.
Are you the author of Design Smell Review?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/charlieviettq-design-smell-review-awesome-agent-skill)
---
name: design-smell-review
description: "Lightweight design smell review for modules and APIs—coupling, cohesion, naming, boundaries, and unnecessary complexity. Use before large refactors or when code feels hard to change. Complements gstack/review (diff-focused)."
allowed-tools: Read, Glob, Grep
---
# Design smell review
## Scope
Review **structure and boundaries**, not line-by-line style. Pair with PR diff review for changes; use this for module-level health.
## Smell checklist
| Smell | Signal | Direction |
|-------|--------|-----------|
| God module | Many unrelated responsibilities | Split by domain |
| Shotgun surgery | One change touches many files | Consolidate logic |
| Feature envy | Module A mostly uses B's data | Move behavior |
| Leaky abstraction | Impl details escape API | Narrow public surface |
| Config soup | Magic strings everywhere | Named constants / schema |
| Boolean flags | `if is_x` branches everywhere | Polymorphism or strategy |
## Workflow
1. Map **entry points** and **dependencies** (imports, public API).
2. List **responsibilities** per module; flag >1 unrelated core job.
3. Check **testability** — can core logic run without I/O?
4. Propose **smallest** structural improvement (not full rewrite).
5. Record decision in ADR if trade-off is significant.
## Output format
```text
## Summary
[1-2 sentences]
## Smells (priority order)
1. [Smell] — evidence — suggested fix (effort: S/M/L)
## Recommended next step
[One concrete change to try first]
```
## Simplification (Chesterton's Fence)
Before deleting or collapsing code, ask **why it exists**:
- Comment, test, or git history explaining constraint?
- If unknown, prefer small experiment or question over bulk delete.
- Remove duplication only when behavior is proven identical.
- "Fewer lines" is not success if edge cases or observability regress.
## Boundaries
- Do not block small fixes on perfect architecture.
- Prefer incremental extraction over big-bang rewrites.