Skip to content
Back to skills

Simplify

ASecurity

Discovers incidental complexity, duplication, and dead code in a codebase and produces a ranked, behavior-preserving reduction plan — optionally applying safe changes. Dispatches four parallel read-only discovery lenses (clone detection, dead code, complexity hotspots, wrong abstraction), synthesizes into a prioritized reduction plan, and gates apply mode behind /refactor and a hard test check.

  • 56 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 3, 2026
ai-agentsnoderailsgitapi

Works with

  • api

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add griffinwork40/agent-afk --skill simplify --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Simplify?

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

Security grade badge for Simplify
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/griffinwork40-simplify/badge)](https://www.skillsdirectory.com/skills/griffinwork40-simplify)

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: simplify
description: "Discovers incidental complexity, duplication, and dead code in a codebase and produces a ranked, behavior-preserving reduction plan — optionally applying safe changes. Dispatches four parallel read-only discovery lenses (clone detection, dead code, complexity hotspots, wrong abstraction), synthesizes into a prioritized reduction plan, and gates apply mode behind /refactor and a hard test check."
when-to-use: "Reduce complexity, find duplicates, or remove dead code."
argument-hint: "[target] [--apply] [--all]"
context: load
---

## Sub-agent contract
/contract

### Overview

`/simplify` is a discovery-and-prioritization skill, not a correctness auditor (that is `/review`'s job) and not a blind executor (that is `/refactor`'s job). It answers: *what incidental complexity, duplication, and dead weight exists in this code, and what is safe to remove?* Default mode is **read-only**: a ranked reduction plan is emitted but nothing is changed. Writes only happen when `--apply` is explicitly passed.

Scope is **diff-bounded by default** (`git diff origin/main`, or working-tree/HEAD if no remote). Pass `--all` for a whole-repo sweep (where duplication and dead-code analysis pay off most). Pass an explicit `[target]` path or PR reference to override both. Code with no test coverage is safe to *analyze* but must never be *auto-applied* — the skill surfaces that gap and recommends `/simplify [target] --all` after adding tests, or produces the plan and stops.

---

## Argument parsing

| Argument | Effect |
|---|---|
| *(none)* | Scope = `git diff origin/main` (working-tree fallback) |
| `[target]` | Explicit path, glob, or PR ref |
| `--all` | Whole-repo sweep; excludes `node_modules/`, `dist/`, generated files |
| `--apply` | Opt-in write mode; default is read-only plan |

Parse arguments before dispatching Wave 1. Resolve scope to a concrete file list or diff stat and attach it to every sub-agent prompt.

---

## Wave 1 — Parallel discovery (read-only)

Dispatch all four lenses simultaneously as `research-agent` sub-agents. All are strictly read-only — no writes, no installs that modify `package.json`. Optional tooling (`jscpd`, `knip`) is an **accelerant only**; degrade to grep/structural reasoning when absent or network-gated.

### (a) Duplication / clone detection
Find exact and near-duplicate logic blocks across modules within scope. Optionally seed with:
```
npx jscpd <scope> --reporters json --silent
```
If `jscpd` is absent, use grep for literal repetition and structural reasoning for semantic clones. Output: **clone clusters** with `file:line` ranges, estimated token overlap, and a suggested extraction site.

### (b) Dead code / unused exports
Find module-graph-dead exports, unreachable branches, and obsolete feature flags — beyond what `tsc --noEmit --noUnusedLocals` already catches. Optionally seed with:
```
npx knip --reporter json
```
**MANDATORY GROUNDING**: every "X is unused/dead" claim MUST carry:
1. A `file:line` citation for the symbol.
2. A structural evidence path — *who would import it, and why nothing does*.

Dynamic imports, reflection, string-keyed access, and barrel re-exports are common false-positive vectors. Never assert dead code without grounding. Flag uncertain cases as **POSSIBLE-DEAD** rather than **DEAD**.

### (c) Complexity hotspots
Identify over-long functions (>40 lines), deep nesting (>3 levels), boolean-flag parameters, primitive obsession, and sprawling switch/if chains. **The target repo has NO ESLint** — this lens is pure agent reasoning over the code, not lint output. Rank by cyclomatic complexity estimate × call-site frequency. Output: hotspot list with `file:line`, smell label, and a plain-language refactor suggestion.

### (d) Reuse / wrong-abstraction-level
Find code that reimplements an existing helper, sits at the wrong layer (leaky abstraction, unnecessary wrapper), or is a thin pass-through with no added value. Cross-reference the project's existing utilities before flagging. Output: reuse candidates with `file:line`, what existing construct could replace them, and estimated call-site count.

---

## Synthesis — inline, after Wave 1

1. **Dedup**: one site often trips multiple lenses. Merge duplicate entries; annotate each with the lens(es) that flagged it.
2. **SANDI-METZ WRONG-ABSTRACTION GUARD**: flag but **do NOT propose collapsing** two code paths if unifying them requires introducing a new boolean/flag parameter. Record these as *"defer — duplication is cheaper than the wrong abstraction"* with an explanation.
3. **Rank by impact × safety**:
   - **HIGH IMPACT**: multi-site duplication, provably dead exports, complexity hotspots at high call frequency.
   - **LOW RISK**: purely local changes, full test coverage, no public API surface.
   - Deprioritize: single-use private helpers, style preferences, anything touching uncovered code.
4. **Emit the reduction plan** — one row per finding:

| # | Location (`file:line`) | Smell | Proposed simplification | Risk note | Behavior-preservation note |
|---|---|---|---|---|---|

5. Append a **Coverage gate summary**: list files in scope with no test coverage where apply was requested — recommend tests first.

**In default (read-only) mode: STOP here.** Print the plan and exit.

---

## Wave 2 — Gated apply (only when `--apply` is passed)

Before any write, verify the test suite is green:
```
pnpm lint && pnpm test
```
If the gate is red before any change, **abort apply and report**. Do not attempt to fix pre-existing failures.

**Delegation decision** (per ranked item, high-to-low):

- **Multi-site mechanical changes** (extract duplicated block into a shared helper used at N≥2 sites): delegate to `/refactor` if available. `/refactor` handles DAG-layered, worktree-isolated parallel application with a hard test gate at each layer boundary and a behavioral diff. Pass the reduction plan item as the refactor spec.
- **`/refactor` NOT available, OR single-site local simplifications**: apply directly inside a git worktree. One change at a time; run `pnpm lint && pnpm test` after each. On regression → route to `/diagnose`; revert the change; continue with remaining items.
- **Items touching uncovered code**: skip apply, preserve in plan output as *"plan-only — no test coverage"*.

On full success, chain to `/ship` for commit + PR.

---

## Guardrails

- **Behavior-preserving only** — never change observable behavior under the guise of cleanup.
- Exclude `node_modules/`, `dist/`, vendored code, and auto-generated files from all analysis.
- Optional tooling (`jscpd`, `knip`) must not modify `package.json` or lock files — use `npx` with no persistent side effects.
- Diff-scoped by default; whole-repo only on `--all` — avoids signal-drowning noise on large codebases.
- Max 3 apply-layer retries per item before skipping and continuing.

---

## Failure modes to surface explicitly

| Failure mode | Mitigation |
|---|---|
| Over-DRYing / wrong abstraction | Sandi-Metz guard (see Synthesis step 2) |
| False dead-code positives | Mandatory grounding rule on lens (b) |
| Behavior change disguised as cleanup | Pre/post test gate; worktree isolation |
| Scope creep on large repos | Diff-scope default; `--all` is explicit opt-in |

---

## Chains to

- `/refactor` — multi-site mechanical apply
- `/ship` — commit + PR after successful apply
- `/diagnose` — when an applied simplification breaks a test

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.