keep-it-simple

Enforce YAGNI principles before creating factories, abstract base classes, or config-driven features.

60|2|Updated Jan 21, 2026
One-click install
npx skills add https://github.com/ElliotJLT/Claude-Skill-Potions --skill keep-it-simple
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: keep-it-simple
Source: https://github.com/ElliotJLT/Claude-Skill-Potions/tree/main/skills/keep-it-simple
Command: npx skills add https://github.com/ElliotJLT/Claude-Skill-Potions --skill keep-it-simple

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This skill helps teams avoid premature abstractions and over-engineering by guiding when to add abstractions and when to keep things simple, emphasizing YAGNI.

Core Features & Use Cases

  • Enforces YAGNI principles before creating factories, abstract base classes, or config-driven features.
  • Provides decision checks like the 3-case rule and explicit criteria to avoid unnecessary complexity.
  • Use Case: When evaluating a new abstraction, verify whether there are 3 concrete usages before abstracting; otherwise implement a simple solution.

Quick Start

When planning new abstractions, ask if you have 3+ concrete use cases and implement the simplest working solution first.

Frequently Asked Questions about keep-it-simple

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
When should I avoid premature abstraction in my code design?

Avoid premature abstraction until you have at least 3 concrete, real use cases. The Rule of Three prevents over-engineering by deferring factory patterns, abstract base classes, and config-driven features until genuine duplication emerges. Implement the simplest working solution first.

How do I apply YAGNI principles when planning new features?

YAGNI (You Aren't Gonna Need It) means building only what's required now, not speculative infrastructure. Before adding factories, abstract layers, or configuration systems, verify you have multiple concrete requirements. Keep design decisions simple and defer complexity until evidence justifies it.

What's the best way to decide between a simple solution and an abstraction?

Use explicit criteria: check if you have 3+ distinct use cases before abstracting. If you have fewer, implement a straightforward, concrete solution. This approach balances code maintainability against unnecessary complexity, guiding practical refactoring decisions.

How can I prevent over-engineering when designing software architecture?

Enforce YAGNI checks before creating abstract base classes, configuration-driven features, or infrastructure abstractions. Apply the Rule of Three and simplicity criteria to distinguish between justified abstractions and premature complexity that adds maintenance burden without current value.

What are the risks of creating abstractions too early in development?

Premature abstraction increases complexity, maintenance cost, and cognitive load without solving real problems. It often creates rigid patterns that don't fit actual use cases. Deferring abstraction until you have concrete duplication keeps codebases simpler and more adaptable.