← Back to list

loose-ends
by ElliotJLT
A collection of Claude skills I have concocted to optimise my Ops/Product workflows.
⭐ 1🍴 0📅 Jan 21, 2026
SKILL.md
name: loose-ends description: | Before declaring work complete, checks for loose ends: unused imports, TODO comments created, missing tests, stale references, incomplete error handling. Activates after implementing features or fixes. The cleanup that always gets skipped. allowed-tools: | bash: grep, git, python file: read scripts: sweep.py
Loose Ends
When To Activate
Instructions
The Loose Ends Checklist
Before declaring complete, run through:
Code Hygiene
- No unused imports
- No unused variables
- No commented-out code (unless intentional)
- No console.log/print statements left in
- No debugger statements
TODOs and FIXMEs
- No new TODOs created and forgotten
- Any existing TODOs in touched files addressed or noted
Tests
- New code has tests (or explicit reason why not)
- Existing tests still pass
- Edge cases considered
Types (if applicable)
- No
anytypes added - No type assertions without reason
- Interfaces/types defined for new structures
References
- Old references updated if things were renamed
- No broken imports
- No stale comments referring to old code
Error Handling
- Errors handled or explicitly bubbled up
- User-facing errors have good messages
- No silent failures
Automated Sweep
Run the sweep script to find common cruft:
python scripts/sweep.py
Scans for:
console.log,print(),debuggerstatementsTODO,FIXME,XXX,HACKcommentsdd(),var_dump(),binding.pry(PHP/Ruby)
Quick Scan Commands
# Find TODOs in changed files
git diff --name-only | xargs grep -n "TODO\|FIXME"
# Find console.log in changed files
git diff --name-only | xargs grep -n "console.log"
# Find unused imports (TypeScript)
npx tsc --noEmit 2>&1 | grep "declared but"
# Find any types added
git diff | grep ": any"
Prioritize by Impact
Not all loose ends are equal:
| Priority | Type | Action |
|---|---|---|
| Fix now | Broken imports, missing exports | Blocks functionality |
| Fix now | console.log in production code | Leaks info |
| Should fix | Unused imports/variables | Code smell |
| Should fix | Missing tests for new logic | Technical debt |
| Note for later | Old TODOs in touched files | Existing debt |
| Ignore | Style inconsistencies | Not your scope |
Output Format
## Loose Ends Check
**Files changed:** [count]
**Fixed:**
- [x] Removed unused import in `file.ts`
- [x] Removed console.log in `handler.ts`
**Noted:**
- [ ] `utils.ts:45` has existing TODO (not from this change)
**Clean:** No loose ends found / All addressed
NEVER
- Declare "done" without scanning for loose ends
- Leave console.log in production code
- Create TODOs and forget about them
- Leave unused imports from experimentation
- Skip the checklist because "it's a small change"
ALWAYS
- Scan changed files before committing
- Remove debugging artifacts
- Address or document any TODOs you create
- Verify imports are used
- Check that tests pass after changes
Example
After implementing a new API endpoint:
## Loose Ends Check
**Files changed:** 4
**Scanning...**
`api/users.ts`:
- Line 3: unused import `lodash` → Removed
- Line 45: console.log for debugging → Removed
`types/user.ts`:
- Clean
`tests/users.test.ts`:
- New endpoint has test → Good
- Edge case (empty input) not tested → Added
`services/user.ts`:
- Line 23: TODO I wrote: "validate email format" → Addressed now
**Result:** 4 loose ends found and fixed. Ready to commit.
Score
Total Score
60/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
✓LICENSE
ライセンスが設定されている
+10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon