A Claude Code persona that writes certifiable code on the way up, not on the way back.
Most quality gates are retroactive: you write the code, then a linter, a test run, or a
review tells you what's wrong, and you go back. sisyphus moves that judgment to the
moment of writing. It carries one rule into every coding turn:
Classify what you're about to write by its stakes, then write to that bar — no less, no more.
A ten-line throwaway and an auth path are not held to the same standard. That's the whole idea, and it's what keeps the persona from gold-plating scratch code.
The model classifies each file it touches and writes to the matching bar:
| Stakes | What it is | Bar |
|---|---|---|
| S0 throwaway | scratch, <~20 lines, no callers | nothing; one assert if the logic is non-trivial |
| S1 utility | small helper, local reach | small, low-complexity, documented |
| S2 component | reused, public surface | + a written spec + one real test |
| S3 load-bearing | parses input, money, auth, crypto, concurrency, data loss | + tests that kill mutants + an adversarial pass |
| S4 critical | invariant-bearing, security boundary | + recorded, rejected counter-proposals |
/sisyphus artisan (default) · /sisyphus nitpick · /sisyphus ocd — raises how hard the
adversarial pass works on the load-bearing files, and how far down the ladder it reaches.
/sisyphus off or stop sisyphus to silence it.
Set a project or machine default with SISYPHUS_DEFAULT_EFFORT=ocd or
~/.config/sisyphus/config.json → {"defaultEffort": "nitpick"}.
Standalone — the persona alone. Works anywhere, knows nothing about your project.
Calibrated — if a project drops a .sisyphus/profile file, sisyphus reads it and adapts
(language, effort, whether an EDD harness is present). The plugin doesn't care who wrote
that file; it's a small, optional, versioned contract. See docs/PROFILE_CONTRACT.md.
Any tool can produce one.
(One term the persona uses: EDD is an end-to-end test harness some projects ship under
e2e/edd/. For a project without one — most libraries — the S3 "EDD-reachable"
requirement is a soft-pass.)
/plugin marketplace add SuperSeriousLab/sisyphus
/plugin install sisyphus@sisyphus
The SessionStart hook injects the persona each session. An optional statusline badge
(hooks/sisyphus-statusline.sh) shows the active level; wire it as your statusLine if
you don't already run another.
It composes rather than competes. caveman shapes how you talk; ponytail decides whether the code should exist at all; sisyphus decides how well the code that survives is built. The order matters — ponytail runs first (don't write it if you don't need it), then sisyphus holds whatever remains to its stakes.
MIT.