Skip to content
Back to skills

Code Simplifier

ASecurity

MANUAL-ONLY; never auto-invoke. Apply behavior-preserving simplifications to explicitly named code — remove dead code and needless indirection, flatten nesting, deduplicate, replace hand-rolled logic with idiomatic equivalents — with tests proving behavior unchanged (green on the same suite before AND after every move). Manual-only by design; it edits working code, so it must never auto-trigger mid-task. Use when the user explicitly asks to simplify, clean up, reduce complexity of, or make mo...

  • 4 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 11, 2026
code-qualityjavascriptgojavaexpresscode-reviewgitapisecurity

Works with

  • api

Security analysis

A100/100

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

Scanned October 5, 2026

npx -y skills add ModernNomad-98/Project-Aegis --skill code-simplifier --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Code Simplifier?

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

Security grade badge for Code Simplifier
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/modernnomad-98-code-simplifier/badge)](https://www.skillsdirectory.com/skills/modernnomad-98-code-simplifier)

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: code-simplifier
description: MANUAL-ONLY; never auto-invoke. Apply behavior-preserving simplifications to explicitly named code — remove dead code and needless indirection, flatten nesting, deduplicate, replace hand-rolled logic with idiomatic equivalents — with tests proving behavior unchanged (green on the same suite before AND after every move). Manual-only by design; it edits working code, so it must never auto-trigger mid-task. Use when the user explicitly asks to simplify, clean up, reduce complexity of, or make more readable a specific file, module, or function. Do NOT use to report findings without editing (code-reviewer), to restructure architecture or change public contracts (architecture-designer + approval), or when the target has no test coverage — coverage comes first or the human accepts the risk explicitly.
disable-model-invocation: true
---

# Code Simplifier

**Reading key:** DI means dependency injection; JSON means JavaScript Object
Notation; API means application programming interface. This manual-only skill
edits only the code the user explicitly names.

## Purpose

Make named code simpler while provably changing nothing about its behavior.
Every edit is one of a known-safe move set, applied in small steps with the
same test suite green before and after each. The deliverable is the edited
code plus a proof trail: baseline run, per-step moves, final run, and a list
of tempting changes that were NOT made because they would alter behavior.
Simplification that "probably works the same" is a rewrite, and rewrites are
not this skill.

## Use When

- Use when: explicitly asked to simplify, clean up, de-tangle, or reduce the
  complexity of a specific file/module/function.
- Use when: review feedback says "works but convoluted" and the author wants
  it applied as a follow-up change.
- Do NOT use when: the ask is to *find* issues without editing — that is
  `code-reviewer`.
- Do NOT use when: the simplification would move module boundaries or change
  public contracts — that is architecture work (`architecture-designer`)
  with its own approval path.
- Do NOT use when: behavior is wrong — fix bugs first (`systematic-debugger` *(manual-only)*
  / `tdd-engineer` *(manual-only)*); simplifying broken code preserves the bug more legibly.
- This skill is **manual-only** (`disable-model-invocation: true`): it edits
  working code, so the human names the target and pulls the trigger — it
  never fires opportunistically mid-task.

## Inputs to Inspect

1. The named target code and everything that depends on it: importers,
   callers, subclass/override sites, reflection or string-based references.
2. The tests covering the target, and their actual coverage of it — run them
   first; note which behaviors are pinned and which are unprotected.
3. Repo conventions and idioms — "simpler" means simpler *in this codebase's
   dialect*, not the model's favorite style.
4. Version-control state: a clean tree, so each step is its own revertible
   commit-sized unit.
5. Git history of the target for traps: "weird" code with a bugfix commit
   behind it is load-bearing weirdness.

## Workflow

For any user-facing build choice, define terms and each viable path's purpose;
compare case-specific pros/cons and money, setup, and maintenance costs (mark
unknowns). Recommend one and why, then ask one atomic decision question. If a
deciding fact is missing, ask only for that fact this turn. A choice does not
authorize execution.

1. **Confirm scope with the human:** exactly which files/functions, and the
   no-go list (public API, behavior, dependencies, formatting-only sweeps).
2. **Run the covering tests — record the green baseline.** If coverage over
   the target is missing or thin: stop, report, and either add
   characterization tests first or get the human's explicit written
   acceptance of unprotected simplification.
3. **Plan the moves** from the known-safe catalog (dead-code removal, inline
   needless indirection, flatten nesting with guard clauses, deduplicate,
   idiomatic replacement, dead-parameter removal) — each with a blast-radius
   note. Anything not behavior-preserving goes on the "not doing" list.
4. **Apply one move at a time**; re-run the covering tests after each. A red
   test = revert the move, understand, reclassify (often the "dead" code
   wasn't).
5. **Watch the tells** that a move changes behavior: evaluation order,
   short-circuiting, exception type/timing, iteration order, float math,
   `this`/closure binding, lazy-vs-eager, side effects in removed "dead" code.
6. **Final verification:** full suite (not just the covering tests), plus
   lint/typecheck/build.
7. **Report** with before/after complexity signals (lines, nesting, branch
   count), the move list, and the explicit not-done list with reasons.

## Output Format

When asking for a build choice, show the explained options and justified
recommendation before the one question.

```
SIMPLIFICATION — <target>
Baseline: <test command + green result; coverage note>
Moves applied: <n. move — file:line — rationale — suite re-run: green>
Not done (would change behavior or exceed scope): <item — why>
Complexity delta: <lines A→B, max nesting A→B, branches A→B>
Final verification: <full suite / lint / build — real results>
Behavior changed: NONE (or: stop — see report)
```

## Validation Checklist

- [ ] User-facing build choices explain terms, reasons, costs or unknowns,
      pros/cons, and a justified recommendation before one atomic question.
- [ ] Human explicitly requested simplification of this named target.
- [ ] Green baseline recorded BEFORE the first edit, on the same suite used
      after.
- [ ] Coverage gap handling: characterization tests added or explicit human
      acceptance recorded — never silently proceeded.
- [ ] Each move re-verified individually; no batch of unverified edits.
- [ ] Public contracts, exported names, and observable behavior unchanged
      (including error types and messages callers may match on).
- [ ] "Not done" list present — restraint is a deliverable.
- [ ] No formatting churn beyond edited lines; no drive-by edits outside the
      named scope (`reviewable-diff-discipline`).

## Gotchas

- Dead code that isn't: reflection, string-keyed dispatch, DI containers,
  template references, and external callers (public packages, cron invoking
  a "unused" script) all defeat static "no references" checks.
- Clever one-liners are not simpler — optimize for the next reader, not for
  line count; sometimes the simplification is *expanding* a dense expression.
- Removing a "redundant" try/except or null-check can convert a handled
  failure into a crash — the handler's absence is observable behavior.
- Exception messages, log lines, and dict/JSON key order are behavior when
  anything parses them; grep for consumers before "tidying" strings.
- Deduplicating two similar functions that serve different domains welds
  those domains together — similarity is not sameness.
- A characterization test written from current behavior pins bugs too; note
  suspected bugs found while writing them and report, don't fix in-band.

## Stop Conditions

- No or thin test coverage over the target, and the human has not explicitly
  accepted unprotected simplification → stop and present the two options.
  Explain that characterization tests record current behavior, including
  existing bugs. Compare adding those tests with accepting unprotected edits:
  why each path exists, case-specific benefit and risk, test-writing time,
  ongoing upkeep, and any monetary cost or unknown. Recommend the safer route
  and explain why before asking for the missing decision.
- A planned move turns out to require a behavior or contract change →
  stop that move, list it under "not done", and report — changing it needs
  its own approved task.
- The target is entangled in security/tenant-isolation/money paths where a
  subtle behavior change is high-blast-radius → confirm via
  `human-approval-boundary` before any move.
- Tests are red at baseline → stop; simplification builds only on green.
- Mid-work discovery of an actual bug → report it; do not fix it inside the
  simplification diff.

## Supporting Files

- [references/simplification-catalog.md](references/simplification-catalog.md) —
  the known-safe move catalog with per-move preconditions and behavior-change
  tells; characterization-test recipe for uncovered targets.
- `evals/evals.json` — trigger + behavior cases.
- `evals/trigger-evals.json` — discrimination against `code-reviewer`,
  `principal-code-analyst`, and `full-codebase-auditor` (review/audit cluster).

Files in this skill

  • SKILL.md7.3 KB
  • evals/evals.json2.8 KB
  • evals/trigger-evals.json1.8 KB
  • references/simplification-catalog.md3.4 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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.