spring-cleanlisted
Install: claude install-skill smk-labs/claude-plugins
Spring-clean a repository the way خونه تکونی cleans a house before the new year: everything comes out, only what belongs goes back, and the house gets rules that keep it clean. The pass is net-negative and behavior-preserving. Success is fewer lines, fewer surfaces, identical behavior, and tests that stop the mess from regrowing. Calibration from one real three-day pass on a production TypeScript service: 409 files touched, 9,272 lines added, 70,666 deleted, entrypoint from 723 lines to 44.
## Phase 0: measure, don't guess
Read-only inventory before any edit. On big repos, fan out explorer subagents for the scan; keep verdicts in the main context.
- Top 20 files by line count, plus any function past ~40 lines.
- Checked-in build artifacts: anything CI or Docker also produces. The checkout test: nothing should deploy or run from a git checkout. If a pipeline builds it, git must not hold it.
- Dead surfaces: routes, panels, feature gates, scripts, CI jobs with no live caller. Check triggers too: a job whose only trigger was removed is dead even though its YAML looks alive.
- Vendored code that has an upstream home, and eval/test plumbing riding inside production code paths.
- Companion material living in the code tree: engineering docs, plan archives, audit reports, notes, research, prompts, QA evidence, assistant config (`.claude/`, `CLAUDE.md`). It helps development but is not shipped code.
- The untracked working tree, not just tracked files. **Gitignored is not clean**: