From lazy-cat
Forces Claude to pause and ask if there's a cleverer, cheaper way before implementing. Helps avoid over-engineering by leveraging existing solutions, stdlib, or public APIs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/lazy-cat:think-twiceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> "A great engineer is a lazy engineer. They find the clever shortcut." — Steve Jobs
"A great engineer is a lazy engineer. They find the clever shortcut." — Steve Jobs
This skill rewires Claude's default instinct. Instead of charging ahead with the most obvious approach, Claude must first ask: "Is there a smarter way to do this?"
Productive laziness is not about doing less. It's about never doing more than necessary.
Skip if the task is trivially small (under ~10 lines, no data, no new dependencies) or if the user has explicitly described custom logic that no generic library could cover. In those cases, proceed directly.
Also: never hand-roll cryptography or security primitives. "Use an existing implementation" means the language stdlib or a widely-audited library — not a custom implementation.
Run this before any task that feels heavy — a large block of code, repetitive data, a complex algorithm, a long implementation. Stop at the first question that reveals a better path.
Before writing a single line, make sure the task is correctly understood.
If the answer to any of these is uncertain — ask the user before writing any code. One targeted question now saves a full redo later.
Someone has almost certainly solved this before.
npm install or pip install deliver this in 10 lines instead of 200?Scope creep is the enemy of efficiency.
The obvious implementation is rarely the best one.
Defer work until it's actually needed.
If none of the above reveals a shortcut, commit to the implementation — but scope it to the minimum that solves the problem today.
Run this mentally before any significant code block:
[ ] Do I fully understand what's being asked, or am I assuming?
[ ] Does an API, package, or dataset already solve this?
[ ] Am I building more than what's needed right now?
[ ] Is there a simpler approach I'm overlooking?
[ ] Can this be computed lazily instead of all at once?
[ ] Would a 10-line solution exist if I reframed the problem?
If any box triggers doubt — stop and explore that path before proceeding.
The greedy approach: see task → start implementing → figure it out as you go.
The lazy approach: see task → pause → find the clever path → implement only what's needed.
The difference is one beat of reflection before execution. That beat is what separates a solution that costs 50,000 tokens from one that costs 50.
| Instead of... | Consider... |
|---|---|
| Implementing a complex feature from scratch | Checking if a library already does it |
| Hardcoding a large static dataset | Fetching it from an API at runtime |
| Generating all permutations upfront | Computing on demand with memoization |
| Building the full system now | Building only the part that's needed today |
| Writing a clever algorithm | Checking if a simpler data structure makes it trivial |
| Implementing auth, payments, maps from scratch | Using the standard library for that domain |
| Generating many examples to prove a point | Using 2-3 representative cases |
| Preloading everything on startup | Loading lazily when actually needed |
Productive laziness has limits. Override it when:
In these cases, proceed — but state why: "Implementing this directly because X."
Before committing to any expensive path, spend 30 seconds looking for the cheap one.
If you find it, take it and explain what you chose. If you don't, proceed — and know you made the right call. If you're blocked by ambiguity, ask the user one targeted question and wait for the answer.
npx claudepluginhub albertobarnabo/lazy-cat --plugin lazy-catEncourages minimal, YAGNI-driven solutions: stdlib over dependencies, native features over custom code, one line over many. Supports intensity levels lite, full, ultra.
Guards against over-engineering and unnecessary code. Runs a seven-rung ladder before writing any code, every diff, fix, or feature — reuse stdlib/installed deps first, write minimum code last.
Enforces YAGNI and minimalism on demand, reducing code to the leanest correct solution. Invoke when you want to avoid over-engineering, bloat, or unnecessary dependencies.