Paths: File paths (shared/, references/, ../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.
Tech Debt Cleaner (L3 Worker)
Automated cleanup of safe, low-risk tech debt findings from codebase audits.
Purpose & Scope
- Consume audit findings from
docs/project/codebase_audit.md (ln-620 output) or ln-511 code quality output
- Filter to auto-fixable findings with confidence >=90%
- Apply safe fixes: remove unused imports, delete dead code, clean commented-out blocks, remove deprecated aliases
- Never touch business logic, complex refactoring, or architectural changes
- Create single commit with structured summary of all changes
- Invocable from ln-510 quality coordinator pipeline or standalone
Auto-Fixable Categories
| Category |
Source Prefix |
Risk |
Auto-Fix Action |
| Unused imports |
MNT-DC- |
LOW |
Delete import line |
| Unused variables |
MNT-DC- |
LOW |
Delete declaration |
| Unused functions (unexported) |
MNT-DC- |
LOW |
Delete function block |
| Commented-out code (>5 lines) |
MNT-DC- |
LOW |
Delete comment block |
| Backward-compat shims (>6 months) |
MNT-DC- |
MEDIUM |
Delete shim + update re-exports |
| Deprecated aliases |
MNT-DC- |
LOW |
Delete alias line |
| Trailing whitespace / empty lines |
MNT- |
LOW |
Trim / collapse |
NOT Auto-Fixable (skip always)
| Category |
Reason |
| DRY violations (MNT-DRY-) |
Requires architectural decision on where to extract |
| God classes (MNT-GOD-) |
Requires domain knowledge for splitting |
| Security issues (SEC-) |
Requires context-specific fix |
| Architecture violations (ARCH-*) |
Requires design decision |
| Performance issues (PERF-*) |
Requires benchmarking |
| Any finding with effort M or L |
Too complex for auto-fix |
When to Use
- Invoked by ln-510-quality-coordinator Phase 3 (after ln-511 code quality check)
- Standalone: After
ln-620 codebase audit completes (user triggers manually)
- Scheduled: As periodic "garbage collection" for codebase hygiene
Inputs
- Pipeline mode (ln-510): findings from ln-511 code quality output (passed via coordinator context)
- Standalone mode:
docs/project/codebase_audit.md (ln-620 output)
Workflow
Load findings: Read docs/project/codebase_audit.md. Parse findings from Dead Code section (ln-626 results) and Code Quality section (ln-624 results).
Filter to auto-fixable:
- Category must be in Auto-Fixable table above
- Severity must be LOW or MEDIUM (no HIGH/CRITICAL)
- Effort must be S (small)
- Skip files in:
node_modules/, vendor/, dist/, build/, *.min.*, generated code, test fixtures
Verify each finding (confidence check):
MANDATORY READ: shared/references/clean_code_checklist.md
For each candidate fix:
a) Read the target file at specified location
b) Confirm the finding still exists (file may have changed since audit)
c) Confirm removal is safe:
- For unused imports: grep codebase for usage (must have 0 references)
- For unused functions: grep for function name (must have 0 call sites)
- For commented-out code: verify block is code, not documentation
- For deprecated aliases: verify no consumers remain
d) Assign confidence score (0-100). Only proceed if confidence >=90
Apply fixes (bottom-up within each file):
- Sort fixes by line number descending (bottom-up prevents line shift issues)
- Apply each fix using Edit tool
- Track: file, lines removed, category, original finding ID
Verify build integrity:
Per shared/references/ci_tool_detection.md discovery hierarchy: detect and run lint + typecheck commands.
- If ANY check fails: revert ALL changes (
git checkout .), report failure
- If no lint/type commands detected: skip verification with warning
Create commit:
Update audit report:
Output Format
verdict: CLEANED | NOTHING_TO_CLEAN | BUILD_FAILED
stats:
total_findings: {from audit}
auto_fixable: {filtered count}
applied: {actually fixed}
skipped: {confidence <90 or stale}
reverted: {if build failed, all}
fixes:
- file: "src/utils/helpers.ts"
line: 45
category: "unused_function"
removed: "formatDate()"
finding_id: "MNT-DC-003"
- file: "src/api/v1/auth.ts"
line: 12
category: "deprecated_alias"
removed: "export { newAuth as oldAuth }"
finding_id: "MNT-DC-007"
build_check: PASSED | SKIPPED | FAILED
commit_sha: "abc1234" | null
Critical Rules
- Safety first: Never fix if confidence <90%. When in doubt, skip.
- Bottom-up editing: Always apply fixes from bottom to top of file to avoid line number shifts.
- Build verification: If linter/type-checker fails after fixes, revert ALL changes immediately.
- No business logic: Never modify function bodies, conditionals, or control flow.
- Explicit staging: Stage files by name, never
git add . or git add -A.
- Idempotent: Running twice produces no changes if audit report unchanged.
- Git-aware: Only operate on tracked files. Skip untracked or ignored files.
- Exclusions: Skip generated code, vendor directories, minified files, test fixtures.
Definition of Done
- Audit report loaded and parsed
- Findings filtered to auto-fixable categories
- Each finding verified with confidence >=90%
- Fixes applied bottom-up per file
- Build integrity verified (lint + type check) or skipped with warning
- Single commit created with structured message (or all reverted on build failure)
- Audit report updated with "Last Automated Cleanup" section
- Output YAML returned to caller
Reference Files
- Clean code checklist:
shared/references/clean_code_checklist.md
- Audit output schema:
shared/references/audit_output_schema.md
- Audit report template:
shared/templates/codebase_audit_template.md
Version: 1.0.0
Last Updated: 2026-02-15
1---2name: ln-512-tech-debt-cleaner-33description: Automated tech debt cleanup worker (L3). Reads codebase audit findings, applies safe auto-fixes for low-risk issues (unused imports, dead code, commented-out code, deprecated aliases). Confidence >=90% only. Creates single commit with summary.4---56> **Paths:** File paths (`shared/`, `references/`, `../ln-*`) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root.78# Tech Debt Cleaner (L3 Worker)910Automated cleanup of safe, low-risk tech debt findings from codebase audits.1112## Purpose & Scope1314- **Consume** audit findings from `docs/project/codebase_audit.md` (ln-620 output) or ln-511 code quality output15- **Filter** to auto-fixable findings with confidence >=90%16- **Apply** safe fixes: remove unused imports, delete dead code, clean commented-out blocks, remove deprecated aliases17- **Never touch** business logic, complex refactoring, or architectural changes18- **Create** single commit with structured summary of all changes19- Invocable from ln-510 quality coordinator pipeline or standalone2021## Auto-Fixable Categories2223| Category | Source Prefix | Risk | Auto-Fix Action |24|----------|--------------|------|-----------------|25| Unused imports | MNT-DC- | LOW | Delete import line |26| Unused variables | MNT-DC- | LOW | Delete declaration |27| Unused functions (unexported) | MNT-DC- | LOW | Delete function block |28| Commented-out code (>5 lines) | MNT-DC- | LOW | Delete comment block |29| Backward-compat shims (>6 months) | MNT-DC- | MEDIUM | Delete shim + update re-exports |30| Deprecated aliases | MNT-DC- | LOW | Delete alias line |31| Trailing whitespace / empty lines | MNT- | LOW | Trim / collapse |3233## NOT Auto-Fixable (skip always)3435| Category | Reason |36|----------|--------|37| DRY violations (MNT-DRY-) | Requires architectural decision on where to extract |38| God classes (MNT-GOD-) | Requires domain knowledge for splitting |39| Security issues (SEC-) | Requires context-specific fix |40| Architecture violations (ARCH-*) | Requires design decision |41| Performance issues (PERF-*) | Requires benchmarking |42| Any finding with effort M or L | Too complex for auto-fix |4344## When to Use4546- **Invoked by ln-510-quality-coordinator** Phase 3 (after ln-511 code quality check)47- **Standalone:** After `ln-620` codebase audit completes (user triggers manually)48- **Scheduled:** As periodic "garbage collection" for codebase hygiene4950## Inputs5152- **Pipeline mode (ln-510):** findings from ln-511 code quality output (passed via coordinator context)53- **Standalone mode:** `docs/project/codebase_audit.md` (ln-620 output)5455## Workflow56571) **Load findings:** Read `docs/project/codebase_audit.md`. Parse findings from Dead Code section (ln-626 results) and Code Quality section (ln-624 results).58592) **Filter to auto-fixable:**60 - Category must be in Auto-Fixable table above61 - Severity must be LOW or MEDIUM (no HIGH/CRITICAL)62 - Effort must be S (small)63 - Skip files in: `node_modules/`, `vendor/`, `dist/`, `build/`, `*.min.*`, generated code, test fixtures64653) **Verify each finding (confidence check):**66 **MANDATORY READ:** `shared/references/clean_code_checklist.md`67 For each candidate fix:68 a) Read the target file at specified location69 b) Confirm the finding still exists (file may have changed since audit)70 c) Confirm removal is safe:71 - For unused imports: grep codebase for usage (must have 0 references)72 - For unused functions: grep for function name (must have 0 call sites)73 - For commented-out code: verify block is code, not documentation74 - For deprecated aliases: verify no consumers remain75 d) Assign confidence score (0-100). Only proceed if confidence >=9076774) **Apply fixes (bottom-up within each file):**78 - Sort fixes by line number descending (bottom-up prevents line shift issues)79 - Apply each fix using Edit tool80 - Track: file, lines removed, category, original finding ID81825) **Verify build integrity:**83 Per `shared/references/ci_tool_detection.md` discovery hierarchy: detect and run lint + typecheck commands.84 - If ANY check fails: revert ALL changes (`git checkout .`), report failure85 - If no lint/type commands detected: skip verification with warning86876) **Create commit:**88 - Stage only modified files (explicit `git add` per file, not `git add .`)89 - Commit message format:90 ```91 chore: automated tech debt cleanup9293 Removed {N} auto-fixable findings from codebase audit:94 - {count} unused imports95 - {count} dead functions96 - {count} commented-out code blocks97 - {count} deprecated aliases9899 Source: docs/project/codebase_audit.md100 Confidence threshold: >=90%101 ```1021037) **Update audit report:**104 - Add "Last Cleanup" section to `docs/project/codebase_audit.md`:105 ```markdown106 ## Last Automated Cleanup107 **Date:** YYYY-MM-DD108 **Findings fixed:** N of M auto-fixable109 **Skipped:** K (confidence <90% or verification failed)110 **Build check:** PASSED / SKIPPED111 ```112113## Output Format114115```yaml116verdict: CLEANED | NOTHING_TO_CLEAN | BUILD_FAILED117stats:118 total_findings: {from audit}119 auto_fixable: {filtered count}120 applied: {actually fixed}121 skipped: {confidence <90 or stale}122 reverted: {if build failed, all}123fixes:124 - file: "src/utils/helpers.ts"125 line: 45126 category: "unused_function"127 removed: "formatDate()"128 finding_id: "MNT-DC-003"129 - file: "src/api/v1/auth.ts"130 line: 12131 category: "deprecated_alias"132 removed: "export { newAuth as oldAuth }"133 finding_id: "MNT-DC-007"134build_check: PASSED | SKIPPED | FAILED135commit_sha: "abc1234" | null136```137138## Critical Rules139140- **Safety first:** Never fix if confidence <90%. When in doubt, skip.141- **Bottom-up editing:** Always apply fixes from bottom to top of file to avoid line number shifts.142- **Build verification:** If linter/type-checker fails after fixes, revert ALL changes immediately.143- **No business logic:** Never modify function bodies, conditionals, or control flow.144- **Explicit staging:** Stage files by name, never `git add .` or `git add -A`.145- **Idempotent:** Running twice produces no changes if audit report unchanged.146- **Git-aware:** Only operate on tracked files. Skip untracked or ignored files.147- **Exclusions:** Skip generated code, vendor directories, minified files, test fixtures.148149## Definition of Done150151- Audit report loaded and parsed152- Findings filtered to auto-fixable categories153- Each finding verified with confidence >=90%154- Fixes applied bottom-up per file155- Build integrity verified (lint + type check) or skipped with warning156- Single commit created with structured message (or all reverted on build failure)157- Audit report updated with "Last Automated Cleanup" section158- Output YAML returned to caller159160## Reference Files161162- **Clean code checklist:** `shared/references/clean_code_checklist.md`163- **Audit output schema:** `shared/references/audit_output_schema.md`164- **Audit report template:** `shared/templates/codebase_audit_template.md`165166---167**Version:** 1.0.0168**Last Updated:** 2026-02-15