mcpField
S
simplify-code

simplify-code

github.com/vudovnDevelopment8.2k57 installsUpdated 9w ago
Repository

About simplify-code

A skill that helps developers review and reduce code complexity. It provides checklists and steps for spotting redundant abstractions, dead code, deep nesting, and over-parameterized functions while preserving behavior.

Key features

  1. 01Identify unnecessary abstractions
  2. 02Find and remove dead code
  3. 03Reduce deep nesting
  4. 04Simplify over-parameterized functions
  5. 05Simplify incrementally and verify behavior

Use cases

  1. 01Refactor code that is difficult to understand
  2. 02Remove unused code and configuration
  3. 03Reduce function and control-flow complexity
  4. 04Check tests and builds after simplification

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/vudovn/ag-kit --skill simplify-code

After installing, type/simplify-codein Claude Code to confirm it loaded.

Details

From the project README

Simplify Code — Reduce Unnecessary Complexity

The best code is the code you don't have to write. The second best is the code anyone can read.

Core Principle

Complexity is a cost. Every abstraction, every indirection, every clever pattern
adds cognitive load. Simplify ruthlessly unless complexity serves a clear purpose.

Simplification Checklist

1. Unnecessary Abstractions
SmellSimplification
Wrapper class that just delegatesRemove wrapper, use the inner class directly
Factory that creates only one typeReplace with direct constructor
Strategy pattern with one strategyReplace with simple function
Interface with one implementationRemove interface, use the class
Abstract class with one childMerge into the child class
Config object for 2 valuesUse function parameters
2. Dead Code
SmellAction
Unused importsRemove
Unreachable branchesRemove (check tests first)
Commented-out codeRemove (it's in git history)
Unused variables/functionsRemove
TODO comments older than 6 monthsRemove or create issue
Feature flags for launched featuresRemove flag, keep the code
3. Deep Nesting
// ❌ Before: 4 levels deep
function process(data) {
  if (data) {
    if (data.items) {
      for (const item of data.items) {
        if (item.active) {
          doSomething(item)
        }
      }
    }
  }
}

// ✅ After: Early returns + filter
function process(data) {
  if (!data?.items) return

  data.items
    .filter(item => item.active)
    .forEach(doSomething)
}
4. Over-Parameterized Functions
// ❌ Before: 8 parameters
function createUser(name, email, age, role, dept, active, verified, avatar) { }

// ✅ After: Object parameter
function createUser(opts: CreateUserOpts) { }
5. Premature Optimization
SmellSimplification
Custom cache for <100 itemsRemove cache, measure first
Memoization on cheap functionsRemove memo
Lazy loading for small modulesUse direct import
Complex state machine for 3 statesUse simple if/else or switch

Simplification Protocol

Step 1: Identify Complexity
- Count nesting levels (target: ≤3)
- Count function parameters (target: ≤4)
- Count lines per function (target: ≤30)
- Count abstractions per feature (target: ≤2)
- Check for dead code (target: 0)
Step 2: Verify Understanding

Before simplifying, ensure you understand:

  • What the code does (not what it looks like it does)
  • Why it was written this way (maybe there's a reason)
  • What tests cover it (simplification must not break tests)
Step 3: Simplify Incrementally
1. Remove dead code first (safest)
2. Flatten nesting with early returns
3. Inline trivial abstractions
4. Merge related functions
5. Simplify data structures
Step 4: Verify Behavior Preserved
npm run test    # All existing tests still pass
npm run build   # Still compiles

When NOT to Simplify

SituationWhy Keep Complexity
Performance-critical hot pathOptimization may look complex but is necessary
Required by framework/libraryExternal constraints
Explicitly requested patternUser chose this architecture
Will need extension soonAbstraction prepares for known growth

Ask first: "This pattern seems over-engineered. Should I simplify it, or is there a reason for the abstraction?"

Comments

Markdown supported