Architecture simplification
Skill yeaight7/agent-powerups/plugins/codebase-maintenance/skills/architecture-simplification
Use when a codebase carries over-engineered abstractions, unnecessary layers, or redundant logic that should be collapsed without changing behavior.From its SKILL.md
npx -y skills add yeaight7/agent-powerups --skill architecture-simplificationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 6 stars6 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
2.5 KB, 490 tokens by cl100k_base, as published. Nobody here has run it
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
-
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 -
Run the tests first. The affected area must be green before any removal — this is the behavioral baseline.
-
Inline the logic. Move the logic from the unnecessary abstraction directly into the caller.
-
Delete the dead code. Remove the interface, wrapper, or factory that is no longer needed.
-
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.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most architecture codebase skills give in 490 tokens
Counted across 811 of the 1,134 authors here whose files we hold, read 2026-08-07
- Ask the user which candidate to explorein 45 of 811, across 15 files
- Apply the deletion test to suspected shallow modulesin 43 of 811, across 15 files
- Read any relevant architecture decision records firstin 31 of 811, across 8 files
- Use exact glossary terms in every suggestionin 30 of 811, across 10 files
- Accept dependencies instead of creating themin 24 of 811, across 5 files
- Include before and after visualisations for each candidatein 24 of 811, across 5 files
- Read the domain glossary before exploringin 24 of 811, across 6 files
- Return results instead of producing side effectsin 23 of 811, across 4 files
- Explore the codebase for shallow modules and frictionin 23 of 811, across 3 files
- Introduce seams only where things varyin 22 of 811, across 3 files
- Reduce the number of methodsin 21 of 811, across 2 files
- Design deep modules with small interfacesin 21 of 811, across 3 files
Said here and by no other author read
- Identify the abstraction cost
- Count implementations and references
- Run the tests before removal
- Inline the logic into the caller
- Search for remaining references to the abstraction
- Keep the diff strictly to removal and inlining
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.