Skip to content
Back to skills

De Sloppify

ASecurity

Two-agent cleanup pattern. Implementer works freely, then a dedicated cleanup agent removes unused imports, console.logs, commented-out code, dead code, and formatting issues. Produces a diff of what was cleaned.

  • 40 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 6, 2026
developmentjavascripttypescriptrustgojavabashnoderefactoringcode-reviewgit

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 10 files and shows the line behind each finding

Scanned September 6, 2026

npx -y skills add oimiragieo/agent-studio --skill de-sloppify --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of De Sloppify?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for De Sloppify
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/oimiragieo-de-sloppify/badge)](https://www.skillsdirectory.com/skills/oimiragieo-de-sloppify)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: de-sloppify
description: Two-agent cleanup pattern. Implementer works freely, then a dedicated cleanup agent removes unused imports, console.logs, commented-out code, dead code, and formatting issues. Produces a diff of what was cleaned.
version: 1.0.0
model: sonnet
invoked_by: both
user_invocable: true
tools: [Read, Write, Edit, Bash, Grep, Glob]
agents: [developer, code-simplifier, code-reviewer, qa]
category: Quality
tags: [cleanup, code-quality, dead-code, unused-imports, formatting, diff]
best_practices:
  - Always run implementer phase first — cleanup phase only runs on committed/staged work
  - Cleanup agent must not change behavior — structural only
  - Produce a diff so reviewers can verify no logic was altered
  - Run pnpm lint:fix and pnpm format after cleanup completes
error_handling: strict
source: builtin
trust_score: 100
provenance_sha: 48a60a5cbfbc95d4
---

# De-Sloppify

## Overview

De-Sloppify implements a **two-agent pattern** for code cleanup:

1. **Implementer** — works freely, writes code without worrying about polish
2. **Cleanup Agent** — runs after implementation, removes all slop without touching logic

This separation prevents "cleanup anxiety" from slowing down implementation while still producing clean final code.

## When to Use

```javascript
Skill({ skill: 'de-sloppify' });
```

Invoke when:

- Implementation is complete but the code contains known slop (unused imports, leftover console.logs, commented-out code)
- Before committing a feature branch
- After a rapid prototyping session
- As a post-implementation cleanup gate

## Iron Law

```
CLEANUP AGENT MUST NOT CHANGE BEHAVIOR.
Every removal must be verifiable as dead code, unused import,
or formatting-only. If there is any doubt — LEAVE IT.
```

## What Gets Cleaned

| Category                 | Examples                                     | Safe to Remove |
| ------------------------ | -------------------------------------------- | -------------- |
| **Unused imports**       | `import foo from 'foo'` — never referenced   | YES            |
| **console.log / debug**  | `console.log('debug here')`, `console.error` | YES            |
| **Commented-out code**   | `// const old = foo()` (code, not docs)      | YES            |
| **Dead code**            | Unreachable branches, unused variables       | YES            |
| **Trailing whitespace**  | Spaces at end of lines                       | YES            |
| **Extra blank lines**    | 3+ consecutive blank lines                   | YES            |
| **TODO with no context** | `// TODO` (no ticket, no description)        | On flag only   |

## What Must NOT Be Cleaned

| Category                 | Why                                           |
| ------------------------ | --------------------------------------------- |
| Commented doc blocks     | `/** ... */` JSDoc, `/* ... */` section notes |
| `console.error` in catch | May be intentional error logging              |
| Disabled test blocks     | `// it.skip(...)` — intentional               |
| Feature-flag dead code   | May be awaiting activation                    |
| Complex logic            | Even if it looks unused — leave it            |

## Workflow

### Phase 1: Implementer Works Freely

The implementer completes the feature without cleanup overhead. This is normal development.

### Phase 2: Cleanup Agent Runs

After implementation, invoke de-sloppify. The cleanup agent runs these checks in order:

#### Step 1: Snapshot Pre-Cleanup State

**Command:**

```bash
git diff HEAD -- {{target_files}} > C:/dev/projects/agent-studio/.claude/context/tmp/pre-cleanup-snapshot.diff
```

**Expected output:** A diff file capturing current state.

**Verify:** File exists at `.claude/context/tmp/pre-cleanup-snapshot.diff`.

#### Step 2: Find Unused Imports

**Command (JavaScript/TypeScript):**

```bash
node C:/dev/projects/agent-studio/.claude/skills/de-sloppify/scripts/main.cjs \
  --action find-unused-imports \
  --files "{{comma_separated_file_paths}}"
```

**Expected output:** JSON array of `{ file, line, import }` objects for unused imports.

**Verify:** Exit code 0 and valid JSON array.

#### Step 3: Find Console Logs

**Command:**

```bash
node C:/dev/projects/agent-studio/.claude/skills/de-sloppify/scripts/main.cjs \
  --action find-console-logs \
  --files "{{comma_separated_file_paths}}"
```

**Expected output:** JSON array of `{ file, line, statement }` objects.

**Verify:** Exit code 0 and valid JSON array.

#### Step 4: Find Commented-Out Code

**Command:**

```bash
node C:/dev/projects/agent-studio/.claude/skills/de-sloppify/scripts/main.cjs \
  --action find-commented-code \
  --files "{{comma_separated_file_paths}}"
```

**Expected output:** JSON array of candidate commented-out code blocks.

**Verify:** Exit code 0 and valid JSON array.

#### Step 5: Apply Cleanup

For each finding that is safe to remove, use `Edit` to remove the line(s). Apply changes conservatively — when in doubt, leave it.

#### Step 6: Format and Lint

**Command:**

```bash
cd C:/dev/projects/agent-studio && pnpm lint:fix && pnpm format
```

**Expected output:** `0 errors, 0 warnings` from lint; no changes from format.

**Verify:** Both commands exit 0 with no output indicating issues.

#### Step 7: Generate Cleanup Diff

**Command:**

```bash
git diff -- {{target_files}}
```

**Expected output:** A diff showing only removals (lines starting with `-`). No additions should appear unless they are indentation fixes.

**Verify:** Review the diff — confirm every removed line was dead code or formatting. If any functional line was removed, revert with `git checkout -- <file>`.

#### Step 8: Report

Produce a cleanup summary:

```
De-Sloppify Report
==================
Files processed: N
Unused imports removed: N
Console.logs removed: N
Commented-out code blocks removed: N
Dead code blocks removed: N
Formatting fixes applied: N

Diff: git diff HEAD -- <files>
```

## Anti-Patterns

- Never remove a `console.error` inside a catch block without confirming it is debug-only
- Never remove commented code that contains a ticket reference or TODO explanation
- Never run cleanup on uncommitted work from the implementer — take a snapshot first
- Never combine cleanup and logic changes in the same commit
- Never use regex to find "unused" code — use the CLI scanner or lint output only

## Enforcement Hooks

Input validated against `schemas/input.schema.json` before execution.
Output contract defined in `schemas/output.schema.json`.

Pre-execution hook (`hooks/pre-execute.cjs`) validates:

- `action` is a known enum value
- `files` is a non-empty array of paths

Post-execution hook (`hooks/post-execute.cjs`) emits observability event to `.claude/context/runtime/tool-events.jsonl`.

## Assigned Agents

- `developer` — runs cleanup after implementation
- `code-simplifier` — incorporates de-sloppify as a cleanup step
- `code-reviewer` — recommends de-sloppify when reviewing slop-heavy PRs
- `qa` — verifies cleanup did not alter behavior

## Memory Protocol

**Before starting:** Read `.claude/context/memory/learnings.md` for cleanup patterns specific to this codebase.

**After completing:** Append summary to `.claude/context/memory/learnings.md`:

```
**de-sloppify** — [date] Cleaned N files. Removed: M unused imports, K console.logs, J commented blocks.
```

> ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

## Related Skills

- `code-simplifier` — structural refactoring (de-sloppify is style-only)
- `finishing-a-development-branch` — includes de-sloppify as a phase
- `codebase-cleaner` — broader cleanup including file-level slop

Files in this skill

  • SKILL.md7.5 KB
  • commands/de-sloppify.md1.7 KB
  • hooks/post-execute.cjs782 B
  • hooks/pre-execute.cjs1.6 KB
  • references/research-requirements.md1.4 KB
  • rules/de-sloppify.md2.1 KB
  • schemas/input.schema.json617 B
  • schemas/output.schema.json2.2 KB
  • scripts/main.cjs10.9 KB
  • templates/implementation-template.md2.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…