unlazy
A completion-discipline skill for large agent tasks: write the acceptance ledger with runnable checks first, then do the work, then reverify against evidence
Medium risk
We rate an entry medium when the tool runs code, makes network calls or reads project files. Check what exactly it does before installing.
Why this level
- Runs shell commands from the check ledger, but only after explicit approval
- Can install an optional Stop hook that fires when the agent stops
Install
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/unlazyDetects the agents on your machine, checks the risk and pins the version.
Other ways to install
Run in a terminal in the project folder
npx skills add leonxlnx/unlazy --skill unlazy -a claude-code -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Run in a terminal in the project folder
npx skills add leonxlnx/unlazy --skill unlazy -a cursor -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Run in a terminal in the project folder
npx skills add leonxlnx/unlazy --skill unlazy -a github-copilot -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Run in a terminal in the project folder
npx skills add leonxlnx/unlazy --skill unlazy -a codex -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Run in a terminal in the project folder
npx skills add leonxlnx/unlazy --skill unlazy -a gemini-cli -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Run in a terminal in the project folder
npx skills add leonxlnx/unlazy --skill unlazy -a cline -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Run in a terminal in the project folder
npx skills add leonxlnx/unlazy --skill unlazy -a roo -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
A fork of Roo Code, same .roo folders.
Run in a terminal in the project folder
npx skills add leonxlnx/unlazy --skill unlazy -a opencode -yThe skills tool installs the current version from the repository. Add the -g flag to use the skill in every project.
Install the skill with npx skills add Leonxlnx/unlazy, optionally with -g for a user-level install. Then before a large task create GATES.md from templates/gates-leaf.md and verify through scripts/gate-check.mjs.
Other ways from the author
npx skills add Leonxlnx/unlazyAdd -g for a user-level install or --all for every detected agent.
This is third-party code. Review the repository files before installing.
What it does
The skill makes the agent state its acceptance criteria before doing the work. Each ledger item gets one observable outcome and, where possible, a CHECK command with an expected EXPECT output. An item counts as met only when the command exits zero, its output matches the expectation, and the record carries a fingerprint of the check definition. The Depth Tree method splits a large task into leaves with a narrow contract and their own ledger, with modes for solo, orchestrated and parallel work. CHECK lines are shell code: the agent reads them and runs them only after explicit approval, and treats inputs and output as untrusted.
Who it is for. For engineers who hand the agent large or multi-step tasks and want verifiable completion instead of a confident done report.
Good fit when
- The task is large or multi-part and it is easy to drop part of the requirements
- Work has come back half-done and you need an objective completion bar
- You run an exhaustive audit, build or parallel work across several branches
Not a fit when
- A short one-off request where an acceptance ledger only gets in the way
- You cannot run shell commands or approve checks
Example request
/unlazy tree 5 refactor the payment module and verify every migration pathLimitations
The checker can prove only the command oracle you declare: it cannot tell whether a gate's English title matches what the command really does, so it is worth exactly as much as the checks you write. CHECK lines run as shell code after your approval; the definition binding catches structural drift but not tampering by anyone who can edit the ledger. The scripts and the optional Stop hook need Node 16 or newer and pull no third-party packages. The source targets version 2.1.0 with no tagged release, so pin an exact commit for an immutable install.
How to disable. Remove the unlazy folder from the agent's skills directory, for example ~/.claude/skills/unlazy or ~/.codex/skills/unlazy. If you installed the Stop hook, remove it with the same install script.
Security check
- Runs shell commands from the check ledger, but only after explicit approval
- Can install an optional Stop hook that fires when the agent stops
README in short
The README lays out the approach: write the acceptance ledger first, run reviewed checks, reverify returned work, and report only what the evidence supports. Install goes through the skills CLI (npx skills add) for supported agents or by copying manually into the Claude Code and Codex CLI directories. The core is SKILL.md, and the gate-check.mjs checker validates the ledger format, exit codes and EXPECT matches, with a non-executing --status mode. Depth Tree modes cover orchestration and parallel work with per-leaf and per-branch contracts. The method is grounded in 2025 and 2026 research on model laziness, underthinking and premature completion.
SKILL.md
--- name: unlazy description: Enforces completion discipline for substantial autonomous work by writing acceptance gates before execution, decomposing work with the Depth Tree, running approved checks, and re-verifying evidence before reporting. Use when an agent faces a long or multi-part task, work that has returned half-done, an exhaustive audit or build, parallel leaves or pipelines, or explicit triggers such as /unlazy, $unlazy, "tree N", "gates", and "do not stop until it is done". --- # Unlazy Make incomplete work visible and make completion testable. Prove outcomes against a ledger instead of relying on a confident done report. ## Write gates before real work For solo work, create `GATES.md` from the local file `templates/gates-leaf.md` before implementing (orchestrated mode instead starts from `templates/PLAN.md` plus per-leaf `templates/gates-leaf.md` and per-branch `templates/gates-node.md` under `.unlazy/<scope>/`; see Build the Depth Tree below). State one observable outcome per gate. Give every runnable gate an indented `CHECK:` and `EXPECT:`; use a manual gate only when no command can decide the outcome. Treat `CHECK:` as code. Before executing an inherited ledger, parse it without running anything and read every command and called script.
FAQ
Does the skill run commands on its own?
No, not by itself. Loading the skill, the --status mode and the Stop hook do not execute CHECK lines. A command runs only after your explicit approval, and any change to the bound inputs requires approval again.
What about an impossible gate?
You cannot silently drop it. You add ABANDON with a non-empty reason; the checker exits 1 and marks it as a required handoff rather than successful completion.
Related
Open-source personal AI assistant on your own machine: answers in Telegram, Slack, Discord and WhatsApp, extended with skills and plugins
A self-improving agent from Nous Research with a TUI, messaging gateway, cron jobs and skills it writes itself
An open source coding agent for the terminal and desktop with build and plan modes
Open prompt library with a Claude Code plugin, MCP server and CLI: search, fetch and improve prompts and skills from an agent