
Deslop
- 64 installs
- 931 repo stars
- Updated July 26, 2026
- avifenesh/agentsys
deslop is a Claude skill that scans code for AI slop, debug statements, and dead code and reports or auto-fixes findings by certainty level.
About
This skill cleans AI slop from code by scanning for debug statements, ghost code, orphaned infrastructure, and unused exports. It runs a detection script, optionally enhances findings with AST-based repo-map analysis, and ranks results by HIGH, MEDIUM, or LOW certainty. It returns structured JSON in report or apply mode so an orchestrator can auto-fix high-certainty items.
- Detects debug statements, ghost code, orphaned infrastructure, and unused exports
- Certainty-based findings (HIGH/MEDIUM/LOW) with auto-fix only for HIGH
- Report or apply mode with scope of all, diff, or a specific path
Deslop by the numbers
- 64 all-time installs (skills.sh)
- Ranked #534 of 1,352 Code Review & Quality skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
deslop capabilities & compatibility
- Capabilities
- dead code detection · code cleanup · unused export detection
- Use cases
- refactoring · code review
What deslop says it does
Clean AI slop from code with certainty-based findings and auto-fixes.
Use when user wants to clean AI slop from code. Use for cleanup, remove debug statements, find ghost code, repo hygiene.
npx skills add https://github.com/avifenesh/agentsys --skill deslopAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 64 |
|---|---|
| repo stars | ★ 931 |
| Last updated | July 26, 2026 |
| Repository | avifenesh/agentsys ↗ |
What it does
Scan code for AI slop, debug statements, and dead code, then report or auto-fix findings by certainty.
Who is it for?
Removing debug statements, dead code, and unused exports before shipping
Skip if: Adding features or fixing functional bugs
When should I use this skill?
The user wants to clean AI slop, remove debug statements, find ghost code, or do repo hygiene
What you get
A certainty-ranked list of slop findings with high-certainty items auto-fixable.
- structured JSON findings
- list of auto-fixable slop
- certainty and severity summary
By the numbers
- 3 certainty levels (HIGH/MEDIUM/LOW)
- 2 modes (report, apply)
Files
deslop
Clean AI slop from code with certainty-based findings and auto-fixes.
Parse Arguments
const args = '$ARGUMENTS'.split(' ').filter(Boolean);
const mode = args.find(a => ['report', 'apply'].includes(a)) || 'report';
const scope = args.find(a => a.startsWith('--scope='))?.split('=')[1] || 'all';
const thoroughness = args.find(a => a.startsWith('--thoroughness='))?.split('=')[1] || 'normal';Input
Arguments: [report|apply] [--scope=<path>|all|diff] [--thoroughness=quick|normal|deep]
- Mode:
report(default) orapply - Scope: What to scan
all(default): Entire codebasediff: Only files changed in current branch<path>: Specific directory or file- Thoroughness: Analysis depth (default:
normal) quick: Regex patterns onlynormal: + multi-pass analyzersdeep: + CLI tools (jscpd, madge) if available
Detection Pipeline
Phase 1: Run Detection Script
The detection script is at ../../scripts/detect.js relative to this skill.
Run detection (use relative path from skill directory):
# Scripts are at plugin root: ../../scripts/ from skills/deslop/
node ../../scripts/detect.js . --thoroughness normal --compact --max 50For diff scope (only changed files):
BASE=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@' || echo "main")
# Use newline-separated list to safely handle filenames with special chars
git diff --name-only origin/${BASE}..HEAD | \
xargs -d '\n' node ../../scripts/detect.js --thoroughness normal --compactNote: The relative path ../../scripts/detect.js navigates from skills/deslop/ up to the plugin root where scripts/ lives.
Phase 2: Repo-Map Enhancement (Optional)
If repo-map exists, enhance detection with AST-based analysis:
// Use relative path from skill directory to plugin lib
// Path: skills/deslop/ -> ../../lib/repo-map
const repoMap = require('../../lib/repo-map');
if (repoMap.exists(basePath)) {
const map = repoMap.load(basePath);
const usageIndex = repoMap.buildUsageIndex(map);
// Find orphaned infrastructure with HIGH certainty
const orphaned = repoMap.findOrphanedInfrastructure(map, usageIndex);
for (const item of orphaned) {
findings.push({
file: item.file,
line: item.line,
pattern: 'orphaned-infrastructure',
message: `${item.name} (${item.type}) is never used`,
certainty: 'HIGH',
severity: 'high',
autoFix: false
});
}
// Find unused exports
const unusedExports = repoMap.findUnusedExports(map, usageIndex);
for (const item of unusedExports) {
findings.push({
file: item.file,
line: item.line,
pattern: 'unused-export',
message: `Export '${item.name}' is never imported`,
certainty: item.certainty,
severity: 'medium',
autoFix: false
});
}
}Phase 3: Aggregate and Prioritize
Sort findings by: 1. Certainty: HIGH before MEDIUM before LOW 2. Severity: high before medium before low 3. Fix complexity: auto-fixable before manual
Phase 4: Return Structured Results
Skill returns structured JSON - does NOT apply fixes (orchestrator handles that).
Output Format
JSON structure between markers:
=== DESLOP_RESULT ===
{
"mode": "report|apply",
"scope": "all|diff|path",
"filesScanned": N,
"findings": [
{
"file": "src/api.js",
"line": 42,
"pattern": "debug-statement",
"message": "console.log found",
"certainty": "HIGH",
"severity": "medium",
"autoFix": true,
"fixType": "remove-line"
}
],
"fixes": [
{
"file": "src/api.js",
"line": 42,
"fixType": "remove-line",
"pattern": "debug-statement"
}
],
"summary": {
"high": N,
"medium": N,
"low": N,
"autoFixable": N
}
}
=== END_RESULT ===Certainty Levels
| Level | Meaning | Action |
|---|---|---|
| HIGH | Definitely slop, safe to auto-fix | Auto-fix via simple-fixer |
| MEDIUM | Likely slop, needs verification | Review first |
| LOW | Possible slop, context-dependent | Flag only |
Pattern Categories
HIGH Certainty (Auto-Fixable)
debug-statement: console.log, console.debug, print, println!debug-import: Unused debug/logging importsplaceholder-text: "Lorem ipsum", "TODO: implement"empty-catch: Empty catch blocks without commenttrailing-whitespace: Trailing whitespacemixed-indentation: Mixed tabs/spaces
MEDIUM Certainty (Review Required)
excessive-comments: Comment/code ratio > 2:1doc-code-ratio: JSDoc > 3x function bodystub-function: Returns placeholder value onlydead-code: Unreachable after return/throwinfrastructure-without-impl: DB clients created but never used
LOW Certainty (Flag Only)
over-engineering: File/export ratio > 20xbuzzword-inflation: Claims without evidenceshotgun-surgery: Files frequently change together
Fix Types
| Fix Type | Action | Patterns |
|---|---|---|
remove-line | Delete line | debug-statement, debug-import |
add-comment | Add explanation | empty-catch |
remove-block | Delete code block | stub-function with TODO |
Error Handling
- Git not available: Skip git-dependent checks
- Invalid scope: Return error in JSON
- Parse errors: Skip file, continue scan
Integration
This skill is invoked by:
deslop-agentfor/deslopcommand/next-taskPhase 8 (pre-review gates) withscope=diff
The orchestrator spawns simple-fixer to apply HIGH certainty fixes.
Related skills
Forks & variants (1)
Deslop has 1 known copy in the catalog totaling 2 installs. They canonicalize to this original listing.
- avifenesh - 2 installs
FAQ
Does it auto-fix everything it finds?
No, only HIGH-certainty findings are auto-fixed; MEDIUM needs verification and LOW is flagged only.
What can I scope the scan to?
The entire codebase (all), only changed files (diff), or a specific path.