unlazy skill

A completion-discipline skill for large agent tasks: write the acceptance ledger with runnable checks first, then do the work, then reverify against evidence

  • 4,362 ★ on the repository
  • Last commit
  • MIT
Skill

Extended access

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
All reasons and checks

leonxlnx/unlazy

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/unlazy

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • Runs shell commands from the check ledger, but only after explicit approval
  • Can install an optional Stop hook that fires when the agent stops

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 path

Limitations

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.

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.

Discussion

No questions or reviews yet.

Skills

A skill that keeps an agent off its own hashes, locks and receipts: ship the output first, then verify

SkillExtended access185Repository stars

A skill plus hooks that keep a coding agent on task and cut speculative defenses, unread checksums and scope creep

PluginExtended access3.9KRepository stars

A catalog of nearly two hundred skills: code delivery, review, debugging, AI governance, product work and agent coordination.

SkillMinimal access174Repository stars

Skill that rewrites a task into a bolder brief: the goal beyond the goal, a top specialist approach, methods from other fields.

SkillMinimal access103Repository stars

A multi-agent harness that verifies results by artifacts: stop hooks, an independent judge and an event log for Claude Code, Codex, Cursor and more

CLIBroad access1.4KRepository stars

A workshop skill: the agent vets a finished skill, finds peers, scores it and edits step by step, testing every change.

SkillExtended access967Repository stars

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.

README badge

Original 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.

Report a problem