Agent skill
deslop
Use when user wants to clean AI slop from code. Use for cleanup, remove debug statements, find ghost code, repo hygiene.
Install this agent skill to your Project
npx add-skill https://github.com/agent-sh/agentsys/tree/main/.kiro/skills/deslop
SKILL.md
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 50
For 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 --compact
Note: 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:
- Certainty: HIGH before MEDIUM before LOW
- Severity: high before medium before low
- 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.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
discover-tasks
Use when user asks to "discover tasks", "find next task", "prioritize issues", "what should I work on", or "list open issues". Discovers and ranks tasks from GitHub, GitLab, local files, and custom sources.
perf-analyzer
Use when synthesizing perf findings into evidence-backed recommendations and decisions.
perf-theory-gatherer
Use when generating performance hypotheses backed by git history and code evidence.
repo-intel
Use when user asks to "run repo intel", "generate repo map", "analyze repo", "query hotspots", "check ownership", or "bus factor". Unified static analysis - git history, AST symbols, project metadata.
consult
Cross-tool AI consultation. Use when user asks to 'consult gemini', 'ask codex', 'get second opinion', 'cross-check with claude', 'consult another AI', 'ask opencode', 'copilot opinion', or wants a second opinion from a different AI tool.
perf-code-paths
Use when mapping code paths, entrypoints, and likely hot files before profiling.
Didn't find tool you were looking for?