hunter-party-ts/slop-hunter-ts/SKILL.md
Audit TypeScript code for AI-generated noise — redundant comments, verbose documentation, style drift from project conventions, and trivially dead code. Surface-level hygiene pass; defaults to branch diff but supports any scope. Use when: reviewing AI-assisted TypeScript code before merge, cleaning up generated code, enforcing project style on new contributions, or reducing review noise.
npx skillsauth add skyosev/agent-skills slop-hunter-tsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit code for AI-generated noise — comments that narrate the obvious, documentation that restates code, style choices that break project conventions, and dead code that slipped in. The goal: the code reads like a human wrote it, following existing project idioms.
Default to the diff. When scoped to a branch diff, only flag patterns introduced in this branch — pre-existing issues are out of scope. When scoped to a path or codebase, flag all matching patterns in the resolved surface.
Comments explain why, not what. A comment that restates the code ("increment counter") is noise. A comment that explains intent, constraints, or non-obvious decisions ("rate limit: 3rd-party API allows 100 req/min") is valuable.
Style is not cosmetic. Drift from project conventions increases cognitive load for every future reader. New code must conform to existing patterns, not introduce alternatives.
Less is more. AI tends to over-document, over-explain, and over-hedge. Strip to the minimum that preserves clarity.
Comments that narrate obvious behavior, restate function/variable names, or explain standard language constructs.
Signals:
// Initialize the array above const arr = []// Return the result above return result// ---- Helper Functions ----) in small filesAction: Delete. If the code needs explanation, it should be rewritten for clarity first.
Over-documentation that adds noise without insight — typically AI-generated JSDoc on every function including trivial private helpers.
Signals:
@param tags that repeat the parameter name (@param name - the name)@returns that restates the return typeAction: Keep JSDoc only on public API. Strip params/returns that add nothing beyond the type signature.
Patterns that diverge from the project's established conventions in naming, formatting, structure, or idioms.
Signals:
Action: Conform to existing project conventions. Cite the existing pattern as evidence.
Unused imports, unused variables, commented-out code blocks, and placeholder TODOs.
Signals:
import { X } from '...' where X is never used in the fileconst x = ... where x is never referenced// const old = ...)// TODO: implement or // FIXME without actionable contextAction: Delete unused imports/variables. Delete commented-out code. Convert vague TODOs to actionable tickets or delete.
Hedging language, apologetic comments, and over-explanation typical of AI-generated code.
Signals:
// This is a workaround for... without specifying the issue// Note: this might need to be updated if... (speculative)// For safety, we also check... (unnecessary hedging)// New, improved version.. (references old code)console.log('entering function X'))Action: Delete hedging and narration. Keep only comments that document concrete constraints or known issues with references.
main/master)BASE=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo main)
SCOPE=$(git diff --name-only $(git merge-base HEAD $BASE)...HEAD)
Constrain all subsequent scans to the resolved surface.In diff mode, focus on added lines to isolate new noise from pre-existing patterns:
# Added comments
git diff $(git merge-base HEAD $BASE)...HEAD | rg '^\+.*\/\/'
# Added JSDoc
git diff $(git merge-base HEAD $BASE)...HEAD | rg '^\+.*(\*\*|@param|@returns)'
In path/codebase mode, scan the resolved surface directly:
EXCLUDE='--glob !**/node_modules/** --glob !**/dist/**'
# Comments (then classify manually)
rg '^\s*//' --type ts $EXCLUDE -- $SCOPE
# JSDoc blocks
rg '/\*\*' --type ts $EXCLUDE -- $SCOPE
In all modes:
# TODO/FIXME markers
rg 'TODO|FIXME|HACK|XXX' -- $SCOPE
# Console.log statements
rg 'console\.(log|debug|info)' -- $SCOPE
For each finding, determine:
Save as YYYY-MM-DD-slop-hunter-audit-{$LLM-name}.md in the project's docs folder (or project root if no docs folder exists).
# Slop Hunter Audit — {date}
## Scope
- Surface: {diff / path / codebase}
- Files: {count or list}
- Exclusions: {list}
## Findings
### Redundant Comments
| # | Location | Comment | Action |
| - | -------- | ------- | ------ |
| 1 | file:line | `// Initialize the array` | Delete |
### Verbose Documentation
| # | Location | Pattern | Action |
| - | -------- | ------- | ------ |
| 1 | file:line | JSDoc on private helper with obvious behavior | Strip |
### Style Drift
| # | Location | Pattern | Project Convention | Action |
| - | -------- | ------- | ------------------ | ------ |
| 1 | file:line | `snake_case` variable | Project uses `camelCase` | Rename |
### Dead Code
| # | Location | Code | Action |
| - | -------- | ---- | ------ |
| 1 | file:line | Unused import `X` | Delete |
### AI Verbal Patterns
| # | Location | Pattern | Action |
| - | -------- | ------- | ------ |
| 1 | file:line | `// This is a workaround for...` | Delete or add specific issue reference |
## Recommendations (Priority Order)
1. **Must-fix**: {style drift that breaks project conventions}
2. **Should-fix**: {redundant comments, dead code}
3. **Consider**: {verbose docs, AI verbal patterns}
file/path.ext:line with the exact code.development
Transforms vague feature ideas into precise, codebase-grounded technical requirements. Use when requirements are ambiguous/incomplete, the user struggles to describe behavior, terminology is unclear, or multiple concepts are mixed. Output is a requirements spec—NOT an implementation plan.
tools
Audit TypeScript type definitions for design debt — duplicated shapes, missing derivations, over-engineered generics, under-constrained type parameters, reinvented utility types, and disorganized type architecture. Type structure and maintainability, not type enforcement. Use when: reviewing type definitions for maintainability, reducing type duplication, simplifying over-engineered type-level logic, or reorganizing type architecture after growth.
development
Audit TypeScript test code for quality gaps — missing coverage on critical paths, brittle tests coupled to implementation, over-mocking, assertion-free tests, missing edge cases, and duplicated test setup. Focuses on test effectiveness, not production code structure. Use when: reviewing TypeScript test suites for reliability, reducing false-positive test failures, improving coverage of critical business logic, or cleaning up test debt.
tools
Audit TypeScript class and interface design for SOLID violations — god classes, rigid extension points, broken substitutability, fat interfaces, and concrete dependency chains. Focuses on responsibility assignment and abstraction fitness. Use when: reviewing class hierarchies, preparing for extension with new variants, reducing coupling between services, or improving testability of class-heavy code.