Agent skill

Deburr Edge Cases

by imbue-ai in imbue-ai/offload

Strip AI-codegen cruft from a branch — defensive checks the type system should make unrepresentable, redundant validation, speculative abstraction, no-op wrappers — while preserving load-bearing…

MITAuto-check passedDevelopment

Install Deburr Edge Cases

skills CLI
$ npx skills add imbue-ai/offload --skill deburr-edge-cases -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install imbue-ai/offload deburr-edge-cases --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/imbue-ai/offload.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/deburr-edge-cases .claude/skills/deburr-edge-cases && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
deburr-edge-cases
GitHub stars
125
Token cost
~2.5k tokens
SKILL.md length
1,360 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Strip AI-codegen cruft from a branch — defensive checks the type system should make unrepresentable, redundant validation, speculative abstraction, no-op wrappers — while preserving load-bearing…

  • Works in 6 steps: Scope the diff → Review by cluster → Consolidate, dedup, triage → …
  • Tasks that involve Project scaffolding
  • SKILL.md covers When to use, What counts as ornamentation, What to PRESERVE and Process, plus 2 more sections
  • Calls cargo

What it does

Deburr Edge Cases is an agent skill from imbue-ai/offload. Strip AI-codegen cruft from a branch — defensive checks the type system should make unrepresentable, redundant validation, speculative abstraction, no-op wrappers — while preserving load-bearing seams. Use after a feature lands and before merge, when asked to "simplify", "de-ornament", "remove cruft", "make erroneous states unrepresentable", or "clean up" a diff.

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Project scaffolding. The repository describes itself as: Offload your test computation to ephemeral compute. The licence is MIT.

When your agent uses it

  • Tasks that involve Project scaffolding

Example prompts

  • “simplify”
  • “de-ornament”
  • “remove cruft”
  • “/deburr-edge-cases”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Scope the diff
  2. Review by cluster
  3. Consolidate, dedup, triage
  4. Execute one at a time
  5. Verify suspected cruft is actually removable
  6. Final verification

What it can do on your machine

Read from SKILL.md and the folder at commit d3675da. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Deburr Edge Cases loads about 2.5k tokens when it runs. Until then it costs about 96 tokens; SKILL.md has 1,360 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~96
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from imbue-ai/offload at commit d3675da, republished under its MIT licence (© imbue-ai). 1,360 words, ~2,499 tokens.

Download SKILL.mdSave it as .claude/skills/deburr-edge-cases/SKILL.md (or your agent's skills folder).
name
deburr-edge-cases
description
Strip AI-codegen cruft from a branch — defensive checks the type system should make unrepresentable, redundant validation, speculative abstraction, no-op wrappers — while preserving load-bearing seams. Use after a feature lands and before merge, when asked to "simplify", "de-ornament", "remove cruft", "make erroneous states unrepresentable", or "clean up" a diff.
<!-- Generated by rust-bucket v0.9.7. DO NOT EDIT BY HAND. -->

Deburr: an edge-case de-ornamentation pass

A structured pass to remove accumulated cruft from a branch — particularly the failure mode where code solves, at a narrow local layer, a problem that should be addressed globally or structurally. The canonical example: instead of enforcing design intent in the type system (making erroneous states unrepresentable), the code accumulates defensive runtime checks to detect and flag bad states that a better type would forbid at compile time.

This is a quality pass, not a bug hunt. Every change must be behavior-preserving, with the existing test suite as the safety net. It complements a correctness-focused review (which hunts bugs); route bug findings there, not here. If you trip over a genuine correctness bug mid-pass, note and surface it separately — do not fix it as part of this pass.

A recognizable shape — an unwrap_or, a single-impl trait — is a prompt to ask whether the construct earns its keep here, not a finding in itself. Reason about intent and invariants, not form.

When to use

  • After a feature branch lands, before merge — especially work assembled by several contributors or agents, which tends to accrete per-phase scaffolding that reads as cruft once the whole is in view.
  • When the user asks to "simplify", "de-ornament", "remove cruft / ceremony / boilerplate", "make bad states unrepresentable", "tighten the types", or "clean up" a set of changes.

What counts as ornamentation

  1. Defensive coding the type system should forbid. Runtime checks, branches, or asserts guarding states a tighter type would make unrepresentable — for example a tri-state Option<bool>, a sentinel (""/-1/0) standing in for an Option/enum, a field validated on every read rather than made unconstructable-when-invalid, or a "this can't happen" guard.
  2. Redundant / over-eager validation. Re-checking an invariant already guaranteed upstream (e.g. re-validating what a parse step already proved).
  3. Speculative generality / over-abstraction. A trait, generic, indirection layer, config knob, or helper with a single call site and no second implementor in view. No-op wrapper methods that just forward to another method with no distinct behavior.
  4. Ornamental error handling. Error/diagnostic variants for conditions that cannot occur, or a fan-out of variants where one would do.
  5. Dead-but-dressed-up scaffolding that is not a deliberate, documented forward seam.

What to PRESERVE

Do not strip things that earn their keep. Call them out as intentional rather than flagging them:

  • Genuine architectural seams: a trait that is the documented extension point for future implementors (even with one impl today), mirroring an established pattern in the codebase.
  • The sole enforcement point: input validation that is the only guard (e.g. validating tool-call arguments when the schema is advisory and never enforced at the boundary).
  • Concurrency primitives matching the actual ownership (an AtomicBool guard through a shared &self can't be replaced by take-by-value Option if the caller holds &self).
  • Test seams: a generalization (e.g. over AsyncWrite) that has a real second caller in tests.
  • Required safety rails: a bound or check mandated by a spec/requirement is not "added cruft" even if the current structure makes it hard to hit — keep it.
  • A DI/context struct that is over-built today but has a confirmed near-term second consumer.

When unsure whether something is cruft or load-bearing: it is load-bearing until proven otherwise. Default to keeping.

Finding no ornamentation is a valid and common result — especially on small or already-tight diffs. Report "clean" rather than inventing a finding to justify the pass.

Process

Run the steps directly, or route the fan-out and edits through whatever review/delegation process the repo otherwise follows. Keep edits one-at-a-time and behavior-preserving, and review each before moving on. Match effort to the diff: for a few files, scan and fix directly; the clustering and per-cluster fan-out below are for large, multi-author branches.

1. Scope the diff

Compute the cumulative branch diff against the merge base and list the changed source files, excluding generated/state files (lockfiles, task-tracker state) unless relevant. This is the review surface.

2. Review by cluster

Partition the changed files into coherent clusters (e.g. parse/types, registry/storage, config/state-modeling, wiring/transport). Take one cluster at a time — or, if the repo supports parallel read-only reviewers, one reviewer per cluster. For each, apply:

  • the precise lens above (the five ornamentation categories + the preserve list),
  • the file cluster and the specific suspects to scrutinize,
  • verify suspicious editor diagnostics against cargo check --all-targets before reporting,
  • a consistent finding shape: one-line title; confidence (high/med/low that it's a real simplification, not a behavior change); file:location; the specific cruft; a crisp remedy (prefer "replace runtime check X with type Y"); behavior-preserving vs. behavior-changing.

Separate clear wins from judgment calls, and name anything judged intentional / load-bearing so it is not re-litigated. The review stage reports findings only — it does not edit.

3. Consolidate, dedup, triage

Merge the findings. Drop:

  • anything behavior-changing that isn't clearly an improvement,
  • anything that removes a spec-required rail,
  • low-value cosmetic churn. Keep the type-system wins and genuine no-op removals. The headline finding is usually a single structural remodel (e.g. tri-state Option<bool> → Option<Resolved> so the bad state is unrepresentable); the rest are small isolated cleanups.
Show full SKILL.md (529 more words)Show less
4. Execute one at a time

Take one finding (or one tightly-coupled pair) at a time. Pin the exact contract before editing — especially for a structural refactor, write the target type design and the invariant truth-table the change must preserve, plus a test-migration map (migrate tests to the new shape; never weaken assertions to pass). Execute in increasing invasiveness: small, isolated, behavior-preserving cleanups first; the big structural remodel last, on an already-cleaned base. After each change, verify cargo and review it before moving on. If no existing test exercises the changed path, the suite is not a safety net for it — add a characterization test first, or lower the finding's confidence and flag the gap.

5. Verify suspected cruft is actually removable

Before deleting a "no-op", confirm it is one. A classic trap: a let _ = (&field, …) discard or an #[allow] that looks ornamental but actually suppresses a real dead_code/lint warning (e.g. #[derive(Deserialize)] does not count as a read, and #[derive(Debug)] is ignored by dead-code analysis — so fields only read via derives genuinely warn). If removing the "cruft" produces a warning or breaks a check, restore it and report rather than deleting into a broken build. Don't trade ornament for a warning.

6. Final verification

Run the full check suite on the whole de-ornamented stack: cargo fmt --check, cargo clippy --all-targets --all-features, cargo nextest run, ratchets check. Confirm no assertion was weakened or deleted to make a change pass — tests that only covered genuinely-removed code may go with it, but everything else must be migrated, not loosened.

Worked examples

  • Tri-state collapse → unrepresentable bad state. enabled: Option<bool> rewritten None → Some(true) at assembly and read via unwrap_or(false), then carried dead into a component that only exists when enabled. Fix: split the parse DTO from a resolved type; make the consumer field Option<ResolvedConfig> with no enabled field, so "disabled" = None by construction. Deletes the rewrite, the accessor, the unwrap_or, the dead field, and the explanatory comments that existed only to compensate for the confusing type.
  • Sentinel → Option. A helper returning an owned String with "" meaning "absent", forcing a downstream !is_empty() && … guard. Fix: return Option<&str>; the guard and an allocation vanish.
  • Namespacing struct → free function. A zero-field struct FooThing; whose only purpose is to host one associated fn that is never called on an instance and implements no trait. Fix: make it a module-level free fn, delete the struct/impl. (Distinguish from the real seam — the trait + concrete type it delegates to — which stays.)
  • No-op wrapper method. A trait default summarize() that just returns self.list(), with no override and one caller. Fix: delete it; the caller uses list(). Reintroduce only if a second, genuinely-distinct behavior ever materializes.

Anti-patterns for this pass

  • Deleting something into a compiler/clippy warning (verify first; restore if it warns).
  • Removing a spec-mandated safety bound because the current structure makes it hard to hit.
  • Stripping a documented forward seam or the sole enforcement point of an invariant.
  • Weakening or deleting test assertions to make a refactor pass — migrate them instead.
  • Doing the big structural remodel first, or batching everything into one giant unreviewable commit.
  • Treating the pass as a bug hunt — it is quality-only; route correctness findings to a dedicated bug-hunting review.

© imbue-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/deburr-edge-cases of imbue-ai/offload.

Open the folder on GitHubat commit d3675da

Compare with similar skills

Deburr Edge Cases next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Deburr Edge Cases compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Deburr Edge Cases this skillimbue-ai/offload125—~2.5kAutomated safety check: PassMIT
Nx Generatenomcopter/react-mosaic4.8k7 repos~1.9kAutomated safety check: PassCustom licence
PonytailDavidObando/gsharp5657 repos~1.7kAutomated safety check: PassMIT
Run Nx Generatornrwl/nx29k2 repos~592Automated safety check: NotesMIT
Conductor Setupgemini-cli-extensions/conductor3.8k—~4.2kAutomated safety check: PassApache-2.0
Mirage VFS Adapter Authoringstrukto-ai/mirage3.7k—~2.4kAutomated safety check: PassApache-2.0

Similar skills

  • Nx Generate

    nomcopter/react-mosaic

    Generate code using nx generators. An agent skill from nomcopter/react-mosaic.

    4.8k GitHub starsUsed in 7 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Ponytail

    DavidObando/gsharp

    Forces the laziest solution that actually works, simplest, shortest, most minimal.

    565 GitHub starsUsed in 7 repos~1.7k tokens
    DevelopmentAuto-check passed
  • Run Nx generators with prioritization for workspace-plugin generators.

    29k GitHub starsUsed in 2 repos~592 tokens
    DevelopmentAuto-check: notes
  • Conductor Setup

    gemini-cli-extensions/conductor

    Scaffolds the project and sets up the Conductor environment.

    3.8k GitHub stars~4.2k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Builds or extends a custom Mirage virtual filesystem adapter for an API, database, object store or app data, with a working mount configuration and filesystem tests.

    3.7k GitHub stars~2.4k tokensUpdated today
    DevelopmentAuto-check passed
  • Enforces this repository's TypeScript backend module architecture under server/: feature folders, barrel exports, and where shared types and utilities belong.

    14k GitHub stars~1.2k tokensUpdated 2 days ago
    DevelopmentAuto-check passed

More from imbue-ai/offload

  • Offload

    imbue-ai/offload

    Activate when you see offload.toml in a repo, offload referenced in build targets (justfile, Makefile, scripts), or when you need to run a large test suite in parallel.

    125 GitHub stars~3.1k tokensUpdated 15 days ago
    Auto-check passed
  • Offload Benchmark

    imbue-ai/offload

    Run local vs Offload benchmarks for mng and sculptor, then update the Benchmarks section of the Offload README.

    125 GitHub stars~2.6k tokensUpdated 15 days ago
    Auto-check passed
  • Release To Crates

    imbue-ai/offload

    Cut a release of a Rust crate and publish to crates.io, with externally-gated merge and publish steps.

    125 GitHub stars~2.3k tokensUpdated 15 days ago
    Auto-check passed
  • Offload Onboard

    imbue-ai/offload

    Onboard a repository to use Offload for parallel test execution on Modal.

    125 GitHub stars~7.2k tokensUpdated 15 days ago
    Auto-check: notes

Categories

Questions about Deburr Edge Cases

What does Deburr Edge Cases do?

Strip AI-codegen cruft from a branch — defensive checks the type system should make unrepresentable, redundant validation, speculative abstraction, no-op wrappers — while preserving load-bearing…. Deburr Edge Cases is an agent skill from imbue-ai/offload. Strip AI-codegen cruft from a branch — defensive checks the type system should make unrepresentable, redundant validation, speculative abstraction, no-op wrappers — while preserving load-bearing seams.

When should I use Deburr Edge Cases?

Deburr Edge Cases fits situations like: tasks that involve Project scaffolding.

How do I install Deburr Edge Cases in Claude Code?

Run `npx skills add imbue-ai/offload --skill deburr-edge-cases -a claude-code`. Or copy the skill folder (.agents/skills/deburr-edge-cases in imbue-ai/offload) into .claude/skills/deburr-edge-cases in your project. Claude Code loads it when a task matches its description.

How do I install Deburr Edge Cases in Codex?

Run `npx skills add imbue-ai/offload --skill deburr-edge-cases -a codex`. Or copy the skill folder (.agents/skills/deburr-edge-cases in imbue-ai/offload) into .agents/skills/deburr-edge-cases in your project. Codex loads it when a task matches its description.

Can I use Deburr Edge Cases in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add imbue-ai/offload --skill deburr-edge-cases -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deburr-edge-cases, .gemini/skills/deburr-edge-cases, .github/skills/deburr-edge-cases and .opencode/skills/deburr-edge-cases in your project.

What does Deburr Edge Cases need to run?

Going by SKILL.md and its folder, Deburr Edge Cases needs the command-line tools its instructions call (cargo).

Does Deburr Edge Cases access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Deburr Edge Cases safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Deburr Edge Cases use?

Deburr Edge Cases is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Deburr Edge Cases use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Deburr Edge Cases?

Skills that share tags, products or a category with Deburr Edge Cases: Nx Generate (nomcopter/react-mosaic, 4.8k stars), Ponytail (DavidObando/gsharp, 565 stars), Run Nx Generator (nrwl/nx, 29k stars) and Conductor Setup (gemini-cli-extensions/conductor, 3.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Deburr Edge Cases?

imbue-ai (a GitHub organization) maintains it in imbue-ai/offload, which has 125 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on September 25, 2026.

Source: imbue-ai/offload on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.