You are doing a focused refactoring session. This is a distinct phase, not continuous activity.
ls package.json pyproject.toml setup.py 2>/dev/nullCheck if jscpd and knip are installed. If not:
npm install -D jscpd knip
npx knip initRun both tools:
npx jscpd src/
npx knipReport the results:
- jscpd: Number of duplicate code blocks and duplication percentage
- knip: Unused files, unused dependencies, unused exports, unused types
Ensure tools are installed:
pip install ruff vulture # or: uv pip install ruff vultureRun quality checks:
# Unused imports, variables, redefinitions
ruff check src/ --select=F401,F841,F811 --statistics
# Dead code detection
vulture src/ --min-confidence 80
# Auto-fix what's possible
ruff check src/ --select=F401,F841,F811 --fixReport the results:
- ruff: Unused imports (F401), unused variables (F841), redefinitions (F811)
- vulture: Dead functions, classes, and variables
For each issue:
- Duplicate code: Extract to shared utility or module
- Unused files: Delete them
- Unused dependencies: Remove from package.json or pyproject.toml
- Unused exports/imports: Remove the export or delete if truly unused
- Dead functions/classes: Delete if no longer needed
After fixing quality issues, run the code-simplifier agent to simplify complex patterns:
Use the Task tool with subagent_type="code-simplifier"
This simplifies complex code patterns that accumulated during development.
Look for files that are no longer needed after recent changes. Common culprits:
- Old implementations that were replaced
- Test files for deleted code
- Unused components or utilities
- Stale documentation
- Prototype files superseded by production versions
# JavaScript
npm test
# Python
pytest tests/ -v --tb=shortCommit the refactoring changes as a distinct commit:
git add -A
git commit -m "refactor: code quality cleanup (dead code removal, lint fixes)"- Treat refactoring as a distinct phase, not continuous activity
- Do this when you feel pain from Claude making mistakes, or after large additions
- ~20% of dev time on focused code quality improvements is reasonable
- Don't over-optimize—ship working code, then clean up
- Always run tests after cleanup to catch broken imports