avoid-unnecessary-features-yagni
Installation
SKILL.md
Summary
Do not implement features, abstractions, or extensibility points for hypothetical future use cases. Implement only what is needed to satisfy the current requirements.
Rationale
- Reduced Complexity: Unused code adds maintenance burden and cognitive load without providing value.
- Lower Cost: Implementing features that are never used is a waste of time and resources.
- Better Design: Designing for unknown future requirements often leads to wrong abstractions that are harder to refactor later than simple code.
Guidance
- Just in Time: Implement features when you need them, not when you foresee them.
- Remove Dead Code: If a feature is no longer used, remove it immediately.
- Simple First: Choose the simplest solution that satisfies the current verification plan. Refactor later if requirements change.