minimalist-skill
Subtraction-first engineering for AI agents. The smallest correct change wins — with every guard intact.
Package details
Install minimalist-skill from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:minimalist-skill- Package
minimalist-skill- Version
1.0.0- Published
- Jul 3, 2026
- Downloads
- 37/mo · 12/wk
- Author
- divyeshjayswal
- License
- MIT
- Types
- extension, skill
- Size
- 55.4 KB
- Dependencies
- 0 dependencies · 0 peers
Pi manifest JSON
{
"extensions": [
"./pi-extension/index.js"
],
"skills": [
"./skills"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
Ask your agent for a date picker. It installs a library, writes a wrapper component, a stylesheet, and a paragraph about timezones you didn't ask for.
Minimalist makes it stop and check first: does this need to exist → is it already in the codebase → does the stdlib have it → does the platform have it → is it one line → only then write new code. Every step it skips, it says so — and now it writes that down too, not just says it once and forgets.
<!-- descent step 4: the platform already has one -->
<input type="date">
The part nobody else ships: receipts
Every "less code" tool tells you to trust the vibes. Minimalist keeps a ledger. Every time the descent rejects a dependency, an abstraction, or a speculative config option, it's logged — not just mentioned once in chat and gone:
$ node scripts/log-rejection.js --report
3 rejected-scope entries in ~/.minimalist/ledger.jsonl
- [platform] date picker library -> <input type="date">
- [yagni] config flag for a value that never changes
- [stdlib] custom debounce helper -> AbortController + setTimeout
By step:
platform: 1
yagni: 1
stdlib: 1
/minimalist-gain reads that file, not the model's memory of the last five
minutes. Cross-session, inspectable, grep-able. If your tech lead wants to
know what the agent talked itself out of building this sprint, that's a
ten-second cat, not a re-prompt and a shrug.
Not lazy — accountable
Minimal never means unsafe. These are never cut, at any level: input validation, authN/authZ, rate limits, error handling on fallible ops, resource cleanup, tests. If a shorter version drops one of these, the shorter version is wrong — and it doesn't ship.
Install
Node.js 18+ on PATH (for the two lifecycle hooks; skills work without it).
Claude Code
/plugin marketplace add DivyeshJayswal/minimalist
/plugin install minimalist@minimalist
Desktop app: Customize → personal plugins → Add from repository → repo URL.
Codex
codex plugin marketplace add DivyeshJayswal/minimalist
/plugins → install Minimalist → /hooks → trust its two hooks → new thread.
GitHub Copilot CLI
copilot plugin marketplace add DivyeshJayswal/minimalist
copilot plugin install minimalist@minimalist
Commands are namespaced: /minimalist:minimalist ultra.
Gemini CLI
gemini extensions install https://github.com/DivyeshJayswal/minimalist
Antigravity CLI
agy plugin install https://github.com/DivyeshJayswal/minimalist
Reuses the Gemini extension; also ships .agents/rules/ for always-on rules.
Pi agent harness
pi install git:github.com/DivyeshJayswal/minimalist
OpenCode
{ "plugin": ["minimalist-skill"] }
Or from a checkout: { "plugin": ["./.opencode/plugins/minimalist.mjs"] }.
OpenCode also auto-loads this repo's AGENTS.md.
Hermes
hermes plugins install DivyeshJayswal/minimalist --enable
OpenClaw — skills ship in .openclaw/skills/; point your skills path at the repo.
Cursor · Windsurf · Cline · Kiro · Devin · CodeWhale · Swival — rule files
are pre-generated, copy the one you need: .cursor/rules/minimalist.mdc,
.windsurf/rules/minimalist.md, .clinerules/minimalist.md,
.kiro/steering/minimalist.md, .github/copilot-instructions.md,
.devin-plugin/, or generic AGENTS.md.
Uninstall
node scripts/uninstall.js
Commands
| command | does |
|---|---|
/minimalist [lite|full|ultra|off] |
set intensity (default full) |
/minimalist-review |
review a diff for bloat — and for missing guards |
/minimalist-audit |
ranked deletion candidates across the codebase |
/minimalist-gain |
the ledger, read back — measured, never invented |
/minimalist-help |
the whole tool in 15 lines |
lite advises, full enforces, ultra ships the diff with ≤3 lines of prose. The
guardrail holds at all three. stop minimalist / normal mode also works.
Numbers, reproduced by you
node benchmarks/run.js --repo <target-repo> --model haiku --n 4 # real run
node benchmarks/run.js --mock # free pipeline check
Scores the git diff a real agent leaves behind, not a single-shot prompt:
LOC, tokens, cost, wall time, plus a 6-task adversarial safety tier (path
traversal, SQLi, token forgery, malformed input, rate limits, authz) that
fails a run if a guard line is deleted and not restored. Mock runs are
watermarked "do not publish" — only real runs are. Every benchmarks/arms/*.txt
becomes an arm, so you can drop in another project's ruleset and compare
directly, yourself, on your own repo. We don't publish a number we didn't
run.
How it works
One skill file (skills/minimalist/SKILL.md) is the source of truth; every
per-agent copy is generated from it (npm run mirrors), and CI fails on
drift — across ubuntu, macOS, and Windows. For Claude Code/Codex/Copilot it
rides two lifecycle hooks (UserPromptSubmit injects the ruleset and parses
/minimalist switches; SubagentStart makes subagents inherit the level).
For Gemini/OpenCode/Pi it loads as extension context. For rule-file agents
it's a generated copy. Level state lives in ~/.minimalist/config.json,
written atomically, merged never overwritten. Rejected scope lives in
~/.minimalist/ledger.jsonl, appended never truncated.
If another instruction-injecting skill is detected (output-style or code-minimal), minimalist yields prose-style decisions to it and keeps code volume for itself, or applies the stricter rule on overlap — never contradictory instructions.
Development
npm test # 49 tests, node:test, zero dependencies
npm run mirrors # regenerate per-agent rule copies from SKILL.md
npm run mirrors:check # CI drift gate
npm run bench:mock # validate the benchmark pipeline for free
CI runs ubuntu / macos / windows × Node 18/20/22.