Auto simplify
Reduce a change's complexity WITHOUT changing behavior, provably: find duplication/dead code/over-abstraction in the diff, apply the smallest clarifying edit, then prove behavior preserved (tests green + adversarial semantic check) or REVERT — looping until dry. Respects Chesterton's Fence: never removes code whose purpose isn't established. Use when code works but reads worse than it should.From its SKILL.md
npx -y skills add ulpi-io/autonomous-engineering --skill auto-simplifyAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.8 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
Auto Simplify
Overview
Make code easier to read and maintain while keeping exactly what it does — driven by an until-dry loop where every edit must pass through a behavior-preservation gate before it counts. The discipline is what makes it safe: simplification is the one refactor most likely to quietly change semantics, so each change is minimal, verified, and reverted-on-doubt.
Phase 0: Scope, baseline, safety net
- Resolve scope (
$scope— the diff by default; a path/module otherwise). - Establish the behavior baseline: the relevant tests are GREEN before you touch anything (if there are no
tests around the target, that's a gap — consider
auto-testfirst, or characterize behavior before simplifying). In pipeline order this net already exists:auto-buildlands a test with every task, which is exactly why simplify runs after build. Record a snapshot of observable behavior for the target (inputs→outputs, key side effects). - Open a
checkpoint-resumerun.
Success criteria: scope fixed; a green baseline + behavior snapshot exist as the safety net.
Phase 1: Find simplification opportunities
Scan the scope for complexity that adds no behavior (prioritize by reader-cost):
- duplication — the same business logic in multiple places (DRY it — but not test DAMP);
- dead code — unreachable branches, unused exports/vars, commented-out blocks, debug output;
- over-abstraction — indirection/generalization with a single caller; a factory for one product;
- tangled control flow — deep nesting, redundant conditionals, boolean thickets that a guard clause or early return would flatten;
- naming/structure — names or shapes that hide intent (fixable without behavior change).
For each, apply Chesterton's Fence: establish WHY it exists before proposing to remove/collapse it.
Success criteria: a prioritized list of concrete, behavior-neutral simplifications, each with its purpose understood.
Phase 2: Simplify one thing, prove behavior preserved (converge until dry)
Run converge-loop in until-dry mode; per opportunity:
- Apply the smallest clarifying edit.
- Prove behavior-preserving (
adversarial-verify, regression lens): run the relevant tests — still green? Then an adversarial check: does the edit change ANY observable output, side effect, error, or edge-case behavior vs. the baseline snapshot? Consider the inputs a naive reader wouldn't (nulls, empties, boundaries, concurrency). If any behavioral difference is found or suspected → REVERT. - Keep or revert — keep only verified-neutral edits; a reverted one is recorded, not retried identically.
Re-scan; exit when a round finds nothing more worth simplifying (dry) or it stalls.
Success criteria: each kept edit is verified behavior-preserving; the suite is green; no unverified edit remains.
Phase 3: Report
Close the checkpoint and report: what was simplified (and the reader-cost it removed), what was investigated-and-kept (Chesterton's Fence — with the purpose found), and anything reverted for failing the behavior gate. Confirm the suite is green.
Success criteria: an honest account of kept / kept-on-purpose / reverted, with a green suite.
Common Rationalizations
| Rationalization | Reality |
|---|---|
| "This code looks pointless, delete it." | You not seeing the purpose isn't proof there is none. Establish why it's there (Chesterton's Fence) before removing. |
| "Fewer lines is simpler." | Simpler = faster to understand, not shorter. A dense one-liner can be harder to read than the five lines it replaced. |
| "I'll refactor the whole module in one pass." | A broad rewrite destroys the behavior-preservation signal and hides semantic changes. One verified edit at a time. |
| "Tests pass, so behavior is preserved." | Tests are necessary, not sufficient — they may not cover the edge the edit changed. Add the adversarial semantic check. |
| "This abstraction might be needed later." | Speculative generality with one caller is complexity now for a maybe-later. Inline it; re-abstract when a second caller actually arrives. |
| "It's clearly equivalent, no need to verify." | "Clearly equivalent" is exactly where the subtle edge-case break hides. Verify or revert. |
Red Flags
- Behavior changed (an output/error/side effect differs) after a "simplification".
- Code removed without its purpose being established.
- A large multi-concern diff labeled "simplify".
- Tests weakened/deleted to make a simplification "pass".
- "Simpler" that's actually just terser and harder to read.
- The loop kept re-attempting the same reverted edit.
Guardrails
- Never change observable behavior; revert anything not provably neutral.
- Never remove code whose purpose you haven't established.
- Never do a broad rewrite; one small verified edit at a time.
- Never weaken tests to keep a simplification.
- Optimize for reader understanding, not line count or abstraction.
When To Load References
converge-loop(skill) — the until-dry simplification loop.adversarial-verify(skill) — the behavior-preservation (regression-lens) gate.checkpoint-resume(skill) — durable simplify-run state.auto-test(skill) — establish a test safety net first if the target is under-covered.
Output Contract
Report:
- scope + the behavior baseline used (tests green + snapshot)
- simplifications kept (reader-cost removed), each verified behavior-preserving
- code investigated and kept on purpose (Chesterton's Fence — the purpose found)
- edits reverted for failing the behavior gate
- final suite state (green)
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.