Skip to content
Development
Skill

/deslop

Use when the user says deslop, debloat, tidy, simplify, clean a diff, cleanup codebase, or deslop branch diff, or remove dead code or config. Not for remote, credential, publish, deploy, or irreversible changes.

From plugin
odin-claude-plugin
36200 skills
Install
$ npx -y skills add OutlineDriven/odin-claude-plugin --skill deslop --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/deslop

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when the user says deslop, debloat, tidy, simplify, clean a diff, cleanup codebase, or deslop branch diff, or remove dead code or config. Not for remote, credential, publish, deploy, or irreversible changes.

SKILL.md

deslop.SKILL.md
name: deslop
description: 'Use when the user says deslop, debloat, tidy, simplify, clean a diff, cleanup codebase, or deslop branch diff, or remove dead code or config. Not for remote, credential, publish, deploy, or irreversible changes.'

Deslop

Four modes share one spine: bound scope, verify with the repo's own command, rollback on regression, atomic commits separate from behavior changes.

Contract

| Field | Bound contract | |---|---| | Trigger | The user says deslop, debloat, tidy, simplify, clean up this diff, cleanup codebase, deslop a branch diff, remove dead code, find placeholders or stubs, remove dead fields, redundant wrappers, or stale config, or the slop skill routes code findings here | | Authority | Reversible local: writes only production source files or prose artifacts (may run the repo verifier and `git restore` on regression); rollback is version control or undo. No remote mutation. | | Side effect | Local writes to production source files or prose artifacts; no edits to tests, fixtures, mocks, examples, generated, vendored, or lockfile/build artifacts | | Done | Mode-specific done predicate holds; verifier green or rollback confirmed |

Refusal

Not for behavior changes, new abstractions, or refactors that introduce patterns: a tidy pass that would change observable behavior stops and reports a candidate for a separate refactor. Not for remote, credential, publish, deploy, or irreversible changes. Not for duplication across artifacts or drift: those are handed off, not force-compressed. Not for non-code targets (memory, git workspace, docs): route to their owners. Not for opportunistic sweeps across untouched files in tidy mode: the candidate must lie in code already under edit.

Mode selection

| User says | Mode | Target | |---|---|---| | deslop, remove debug code, find placeholders or stubs, remove dead code, slop routed here | slop | Production source files | | debloat, tighten this, too long | bloat | One padded prose artifact (document, skill, spec) | | tidy this up, simplify, clean up this diff, polish my changes, make this simpler | tidy | Code in the working tree | | dead field, redundant wrapper, stale config, duplicate state, speculative abstraction | tidy | Code already under edit | | cleanup codebase | tidy | Code already under edit | | deslop this branch diff, remove AI debris from my branch, clean up added lines only | diff | Added/modified lines in a branch diff |

Shared spine

1. **Bound scope.** Prefer changed files unless the user requested a full sweep. Exclude tests, fixtures, mocks, examples, generated output, vendored code, lockfiles, build artifacts, and minified bundles: `**/test/**`, `**/tests/**`, `**/__tests__/**`, `*.test.*`, `*.spec.*`, `*_test.*`, `*Test.java`, `**/fixtures/**`, `**/mocks/**`, `**/testdata/**`, `**/examples/**`, `**/benches/**`, `dist/**`, `build/**`, `target/**`, `coverage/**`, `vendor/**`, `node_modules/**`, `*.min.*`, generated/protobuf/openapi outputs. Keep Markdown out of whitespace cleanup: trailing spaces can be semantic line breaks. Done when: the file set is enumerated and exclusions applied.

2. **Verify.** Run the repo's own test command after fixes. Derive it from manifests in this order: package script (`test`, then `check`, then `typecheck`), `cargo test`, `go test ./...`, `pytest`, `mvn test`, `gradle test`, `dotnet test`, `bundle exec rspec` or `rake test`, `composer test` or `phpunit`, `swift test`, or the project's documented command. If no command exists, run the narrowest parser/type check available, state the limitation, and treat every fix as unverified. Done when: the verifier has run or the limitation is stated.

3. **Rollback on regression.** If verification fails, immediately `git restore -- <file...>` every changed file, rerun the verifier to confirm baseline, and report the failed fix group as blocked with file/line and failing command. Never suppress tests, rewrite expectations, or keep partial results. Done when: baseline is confirmed restored or fixes are verified green.

4. **Commit separately.** Cleanup commits are always separate from behavior commits. Use atomic commits with clear messages naming what was removed. If a cleanup is mixed into a behavior commit, split it with `git move --fixup` or `git split` before merging. Done when: each commit has exactly one concern and the diff is net-deletion or inline-and-delete only.

Slop mode

Certainty-graded mechanical slop removal from production source. Full category catalog, per-language instances, and autofix strategy semantics: `references/slop-catalog.md`.

1. **HIGH deterministic scan.** Use `search` for line patterns and `ast-grep` where syntax shape matters. Record `{file, line, pattern, certainty: HIGH, strategy}` for each finding. Categories: debug output (stream-writing mechanism left behind after debugging: exclude output that is the product: CLIs, loggers, entrypoints), placeholder or unimplemented body (empty block, no-op, not-yet-implemented throw, TODO-marked panic), swallowed failure (catch/except/rescue that discards the error so the unhappy path continues with invalid state), crash-on-failure shortcut (forced unwrap, unchecked cast, abort-on-error where failure is recoverable: flag only), hardcoded credential (`sk-`, `ghp_`/`github_pat_`, `AKIA`, `Bearer <token>`, JWT strings, private-key blocks: flag only), placeholder text (lorem ipsum, `asdf asdf`, `foo bar baz`, `replace this`, `TODO: implement`), privilege and supply-chain hazard (`chmod 777`, piping download into shell: flag only), whitespace artifact (mixed tabs+spaces on one indentation prefix, trailing whitespace outside Markdown). Done when: every HIGH category has been scanned.

2. **MEDIUM contextual scan.** Use codegraph first when indexed; otherwise combine `ast-grep`, `search`, and direct reads of the narrow files. Report only, no auto-fix: comment bloat (doc-to-code ratio >3 for a real function with ≥3 code lines, or >2 comments

Read more
Ships withodin-claude-plugin

Formerly the ODIN Claude Plugin. The repository URL is unchanged. Outline-Driven Development, nicknamed ODIN, is a highly opinionated code-agent skill library: principles-first engineering, surgical editing, and workflow automation, published as installable

Get the whole plugin
Stats
36
Stars
0
Forks
Active
Maintenance
Python
Language
Apache-2.0
License
3d ago
Last commit
10mo ago
Created

Repo: OutlineDriven/odin-claude-plugin

Other skills on odin-claude-plugin.