Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Detects codebase bloat via dead code, duplication, complexity, and doc bloat scans. Use when codebase feels large or before a release.
.claude/skills/athola-bloat-detector/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -19% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-20 | ✗→✓ | ▲ Improved | -22% | 0% |
Systematically detect and eliminate codebase bloat through progressive analysis tiers.
| Category | Examples | |----------|----------| | Code | Dead code, God classes, Lava flow, duplication | | AI-Generated | Tab-completion bloat, vibe coding, hallucinated deps | | Documentation | Redundancy, verbosity, stale content, slop | | Dependencies | Unused imports, dependency bloat, phantom packages | | Git History | Stale files, low-churn code, massive single commits |
bash/bloat-scan
Detects: Large files, stale code, old TODOs, commented blocks, basic duplication
bash/bloat-scan --level 2 --focus code # or docs, deps
Adds: Static analysis (Vulture/Knip), git churn hotspots, doc similarity
bash/bloat-scan --level 3 --report audit.md
Adds: Cross-file redundancy, dependency graphs, readability metrics
| Do | Don't | |----|-------| | Context usage > 30% | Active feature development | | Quarterly maintenance | Time-sensitive bugs | | Pre-release cleanup | Codebase < 1000 lines | | Before major refactoring | Tools unavailable (Tier 2/3) |
| Level | Confidence | Action | |-------|------------|--------| | HIGH | 90-100% | Safe to remove | | MEDIUM | 70-89% | Review first | | LOW | 50-69% | Investigate |
Priority = (Token_Savings × 0.4) + (Maintenance × 0.3) + (Confidence × 0.2) + (Ease × 0.1)Tier 1 (always available):
modules/quick-scan.md - Heuristics, no toolsmodules/git-history-analysis.md - Staleness, churn, vibe coding signaturesmodules/growth-analysis.md - Growth velocity, forecasts, threshold alertsTier 2 (optional tools):
modules/code-bloat-patterns.md - Anti-patterns (God class, Lava flow)modules/ai-generated-bloat.md - AI-specific patterns (Tab bloat, hallucinations)modules/documentation-bloat.md - Redundancy, readability, slop detectionmodules/static-analysis-integration.md - Vulture, KnipShared:
modules/remediation-types.md - DELETE, REFACTOR, CONSOLIDATE, ARCHIVEPatterns that span plugin boundaries or manifest configuration, discovered through ecosystem-wide audits.
alwaysApply AccumulationFlag plugins with 3+ skills where alwaysApply: true. Each always-on skill injects its full text into every session, creating a baseline token floor before the user types anything. Sum the estimated_tokens fields to report total per-session cost.
Compare hooks declared in plugin.json or openpackage.yml against entries in hooks.json. A hook present in hooks.json but absent from the manifest is invisible to the plugin loader and cannot be audited, versioned, or disabled through normal plugin management.
Scan skill files for identical multi-line text blocks repeated across 10+ files (e.g., generic troubleshooting sections like "Command not found / Permission errors / Unexpected behavior"). These are copy-paste artifacts that inflate token cost without adding skill-specific value.
Skills loaded into model context gain nothing from HTML-style Tables of Contents. Detect ## Table of Contents followed by bulleted anchor-link lists. These waste tokens since the model reads sequentially, not via hyperlinks.
Compare files on disk in skills/*/modules/ against the modules: list in each skill's SKILL.md frontmatter. Files that exist on disk but are not listed in the manifest are invisible to progressive loading and may be dead weight or missing from the load path.
Always excludes: .venv, __pycache__, .git, node_modules, dist, build, vendor
Also respects: .gitignore, .bloat-ignore
--dry-run for previewsbloat-auditor agent - Executes scansunbloat-remediator agent - Safe remediationcontext-optimization skill - MECW principles/bloat-scan command - User-facing slash command that invokes thisskill; there is no separate bloat-scan skill
findings listed per bloat category (Code, AI-Generated, Documentation, Dependencies, Git History)
a priority score computed from the formula (Token_Savings × 0.4) + (Maintenance × 0.3) + (Confidence × 0.2) + (Ease × 0.1)
every proposed removal documented as DELETE, REFACTOR, CONSOLIDATE, or ARCHIVE per modules/remediation-types.md
hook registration gaps, boilerplate footers, ToC bloat) if the scan target contains plugin directories
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 9,677 | 5,649 | -42% | 1 | 1 | 0% | 1,417 | 2,336 | +65% | 0 | 0 | — |
case-02 | pass→pass | 9,405 | 4,438 | -53% | 1 | 1 | 0% | 1,348 | 2,141 | +59% | 0 | 0 | — |
case-03 | fail→pass | 10,997 | 6,207 | -44% | 1 | 1 | 0% | 1,672 | 2,400 | +44% | 0 | 0 | — |
case-04 | fail→fail | 17,766 | 5,454 | -69% | 1 | 1 | 0% | 2,983 | 1,788 | -40% | 0 | 0 | — |
case-05 | fail→fail | 20,060 | 4,532 | -77% | 1 | 1 | 0% | 3,252 | 1,729 | -47% | 0 | 0 | — |
case-06 | fail→fail | 16,219 | 4,504 | -72% | 1 | 1 | 0% | 2,660 | 1,745 | -34% | 0 | 0 | — |
case-07 | fail→fail | 21,900 | 3,575 | -84% | 1 | 1 | 0% | 1,444 | 2,027 | +40% | 0 | 0 | — |
case-08 | fail→pass | 9,173 | 2,924 | -68% | 1 | 1 | 0% | 1,528 | 1,943 | +27% | 0 | 0 | — |
case-09 | fail→pass | 12,899 | 1,956 | -85% | 1 | 1 | 0% | 2,207 | 1,780 | -19% | 0 | 0 | — |
case-10 | fail→pass | 12,214 | 2,553 | -79% | 1 | 1 | 0% | 1,965 | 1,810 | -8% | 0 | 0 | — |
case-11 | pass→pass | 11,003 | 2,737 | -75% | 1 | 1 | 0% | 1,694 | 1,905 | +12% | 0 | 0 | — |
case-20 | fail→pass | 13,732 | 2,952 | -79% | 1 | 1 | 0% | 2,403 | 1,881 | -22% | 0 | 0 | — |
case-12 | fail→pass | 10,573 | 2,107 | -80% | 1 | 1 | 0% | 1,713 | 1,754 | +2% | 0 | 0 | — |
case-13 | pass→pass | 9,024 | 3,296 | -63% | 1 | 1 | 0% | 1,400 | 1,988 | +42% | 0 | 0 | — |
case-14 | fail→pass | 8,198 | 4,598 | -44% | 1 | 1 | 0% | 1,216 | 2,167 | +78% | 0 | 0 | — |
case-15 | pass→pass | 11,928 | 5,101 | -57% | 1 | 1 | 0% | 1,765 | 2,101 | +19% | 0 | 0 | — |
case-16 | pass→pass | 11,172 | 9,506 | -15% | 1 | 1 | 0% | 1,857 | 3,091 | +66% | 0 | 0 | — |
case-17 | pass→pass | 8,774 | 3,780 | -57% | 1 | 1 | 0% | 1,393 | 2,122 | +52% | 0 | 0 | — |
case-18 | pass→pass | 9,877 | 1,834 | -81% | 1 | 1 | 0% | 1,752 | 1,721 | -2% | 0 | 0 | — |
case-19 | fail→pass | 14,466 | 1,429 | -90% | 1 | 1 | 0% | 2,393 | 1,656 | -31% | 0 | 0 | — |
case-21 | pass→pass | 6,965 | 1,711 | -75% | 1 | 1 | 0% | 1,125 | 1,625 | +44% | 0 | 0 | — |
case-22 | pass→pass | 9,351 | 3,850 | -59% | 1 | 1 | 0% | 1,402 | 2,060 | +47% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.