Skip to content
Development
Skill

/architecture-simplification

Use when a codebase carries over-engineered abstractions, unnecessary layers, or redundant logic that should be collapsed without changing behavior.

From plugin
agent-powerups
6113 skills46 agents54 commands
Install
$ npx -y skills add yeaight7/agent-powerups --skill architecture-simplification --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/architecture-simplification

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use when a codebase carries over-engineered abstractions, unnecessary layers, or redundant logic that should be collapsed without changing behavior.

SKILL.md

architecture-simplification.SKILL.md
name: architecture-simplification
description: Use when a codebase carries over-engineered abstractions, unnecessary layers, or redundant logic that should be collapsed without changing behavior.

Purpose

Over time, codebases accumulate "just in case" abstractions. This skill guides the safe removal of unnecessary complexity: remove the noise around the core logic without changing the core logic itself.

When to Use

  • An interface has only one implementation and no second one is planned
  • A wrapper, factory, or layer only passes arguments straight through
  • Two code paths do the same thing and should be consolidated

Inputs

  • The suspect abstraction(s) and their call sites
  • A green test suite covering the affected area

Workflow

1. **Identify the abstraction cost.** Does this interface have only one implementation? Does this wrapper class just pass arguments straight through? Measure before cutting:

   grep -rn "implements IUserRepository" src/    # count implementations
   grep -rn "IUserRepository" src/ | wc -l       # count references

2. **Run the tests first.** The affected area must be green before any removal — this is the behavioral baseline.

3. **Inline the logic.** Move the logic from the unnecessary abstraction directly into the caller.

4. **Delete the dead code.** Remove the interface, wrapper, or factory that is no longer needed.

5. **Test verification.** Re-run the same tests; the observable behavior of the system must not have changed.

**Example:** if a `UserRepository` implements `IUserRepository` but there is only ever one database, inline `UserRepository` and delete `IUserRepository`.

Output

  • The simplified code with the abstraction removed
  • Before/after test evidence showing unchanged behavior

Verification

  • [ ] Tests covering the area were green before the change (baseline)
  • [ ] Same tests green after the change — observable behavior preserved
  • [ ] No references to the removed abstraction remain (searched, not assumed)
  • [ ] Diff contains only removal/inlining — no core-logic rewrites

Failure Modes

  • **Rewrite disguised as simplification** — do not rewrite the entire subsystem; simplification removes the noise around the core logic, not the logic itself.
  • **Cutting without a baseline** — without a green pre-change test run, "tests pass after" proves nothing.
  • **Speculative retention** — keeping the interface "in case we need it later" recreates the original problem.
Read more
Ships withagent-powerups

Curated power-ups for coding agents: skills, slash commands, MCP configs, hooks, AGENTS.md templates, and workflows for serious software engineering. Claude Code, Codex, Antigravity CLI, Cursor and more

Get the whole plugin

Other skills on agent-powerups.