minimal-coding
Adopt a minimalist coding approach to reduce complexity and avoid over-engineering.
Install
mkdir -p .claude/skills/minimal-coding && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/13473" && unzip -o skill.zip -d .claude/skills/minimal-coding && rm skill.zipInstalls to .claude/skills/minimal-coding
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Forces the minimal working solution — least code, fewest files, no speculative abstraction. Channels a senior dev applying YAGNI: stdlib, native platform features, and existing dependencies over custom code. Three levels: lite (name the lazier option, user picks), full (enforce the ladder), ultra (deletion-first extremist). Activates when user says "be lazy", "yagni", "simplest solution", "minimal", "over-engineered", "too much code", or invokes /minimal-coding. Governs WHAT you build, not HOW you talk.Key capabilities
- →Identify if a feature needs to exist at all (YAGNI principle)
- →Prioritize using standard library features over custom code
- →use native platform features instead of external libraries
- →Utilize already-installed dependencies before adding new ones
- →Write code in a single line if possible
- →Avoid unrequested abstractions like interfaces with one implementation
How it works
The skill enforces a 'minimal coding' philosophy by following a ladder of simplification, prioritizing existing solutions and reducing code footprint.
Inputs & outputs
When to use minimal-coding
- →Simplifying over-engineered code
- →Applying YAGNI principles
- →Reducing code footprint
- →Choosing the simplest library-free solution
About this skill
Minimal Coding
The best code is the code you never wrote. Reduce every task to the smallest change that fully solves it. Lazy means less code — never the flimsier algorithm.
This governs what you build. Output prose style is a separate axis (see caveman).
Activation
Invoked by /minimal-coding (defaults to full) or phrases like "be lazy",
"yagni", "simplest solution", "over-engineered". Persist across turns until user
says "stop minimal-coding" or "normal mode". Level persists until changed.
The ladder
Before writing code, walk these rungs in order. Stop at the first that holds.
- Does this need to exist at all? Speculative need = skip it, say so in one line. (YAGNI)
- Stdlib does it? Use it.
- Native platform feature covers it?
<input type="date">over a picker lib, a DB constraint over app code, an HTTP cache header over a cache layer. - Already-installed dependency solves it? Use it. Never add a new dependency for what a few lines can do.
- Can it be one line? One line.
- Only then: the minimum code that works.
The first solution that works is the right one.
Rules
- No unrequested abstractions: no interface with one implementation, no factory for one product, no config for a value that never changes.
- No boilerplate or scaffolding "for later" — later can scaffold for itself.
- Deletion over addition. Boring over clever — clever is what someone decodes at 3am.
- Fewest files possible. Shortest working diff wins.
- Complex request? Ship the minimal version and question the rest in the same response.
- Two stdlib options, same size? Take the one that's correct on edge cases. Lazy is less code, not the weaker algorithm.
- Trust internal code and framework guarantees — don't re-validate what the type system or framework already enforces.
Levels
| Level | Behavior |
|---|---|
| lite | Build what's asked, but name the lazier alternative in one line. User picks. |
| full (default on invoke) | The ladder enforced. Stdlib/native first, shortest diff, brief rationale. |
| ultra | YAGNI extremist. Deletion before addition. Ship the one-liner and challenge the rest of the requirement immediately. |
Annotation
Mark a deliberate simplification with a minimal: comment so the next reader
knows it's intent, not ignorance. For a shortcut with a known ceiling, name the
ceiling and the upgrade path.
# minimal: global lock; switch to per-account locks if throughput matters
<!-- minimal: browser has one -->
<input type="date">
When NOT to be lazy
Never simplify these away — minimal is not negligent:
- Input validation at trust boundaries (user input, external APIs, deserialization)
- Error handling that prevents data loss
- Security (authn/authz, secrets, injection-safety, safe defaults)
- Accessibility basics
- Anything the user explicitly requested
- Hardware-facing code that needs real calibration knobs (clocks, sensors drift)
Non-trivial logic leaves ONE runnable check behind — the smallest thing that
fails if the logic breaks. A minimal assert or one small test, no frameworks
or fixtures unless asked. Trivial one-liners need none.
Boundaries
- Governs what you build, not how you talk — pair with caveman for output prose.
- Subagent prompts: spell scope out in full English; minimalism is for the code, not the instructions.
- "stop minimal-coding" or "normal mode": revert immediately.
When not to use it
- →The user explicitly requests complex abstractions or boilerplate
- →The task involves input validation at trust boundaries
- →The task requires reliable error handling to prevent data loss
Limitations
- →It does not apply to input validation at trust boundaries
- →It does not apply to error handling that prevents data loss
- →It does not apply to security-related tasks
How it compares
This workflow actively seeks the simplest possible solution, often by deleting unnecessary code or avoiding new dependencies, unlike typical development that might introduce more complex patterns.
Compared to similar skills
minimal-coding side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| minimal-coding (this skill) | 0 | 1mo | No flags | Intermediate |
| software-architecture | 333 | 6mo | No flags | Intermediate |
| oracle | 17 | 3mo | Review | Intermediate |
| clojure-write | 16 | 3mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by Dynokostya
View all by Dynokostya →You might also like
software-architecture
davila7
Guide for quality focused software architecture. This skill should be used when users want to write code, design architecture, analyze code, in any case that relates to software development.
oracle
openclaw
Best practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).
clojure-write
metabase
Guide Clojure and ClojureScript development using REPL-driven workflow, coding conventions, and best practices. Use when writing, developing, or refactoring Clojure/ClojureScript code.
add-uint-support
pytorch
Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.
cpp-pro
sickn33
Write idiomatic C++ code with modern features, RAII, smart pointers, and STL algorithms. Handles templates, move semantics, and performance optimization. Use PROACTIVELY for C++ refactoring, memory safety, or complex C++ patterns.
python-patterns
affaan-m
Pythonic 惯用法、PEP 8 标准、类型提示以及构建健壮、高效、可维护的 Python 应用程序的最佳实践。