The Problem

AI agents routinely declare work complete when they have only skimmed the task. They underthink, stop at the first plausible answer, and skip verification. This repo addresses that failure mode directly: it turns "finish the job" from a prompt into a runnable contract with executable checks and recorded evidence.

What This Does

unlazy is a skill that enforces completion discipline through a "Depth Tree" method. A task is split N layers deep, and each leaf gets the full time budget of the whole task, so effort compounds with depth. The core is SKILL.md, which defines the workflow: write an acceptance ledger first, execute reviewed checks, reverify returned work, and report only what evidence supports.

The executable part is a Node-based gate checker in scripts/. gate-check.mjs reads a GATES.md ledger, parses CHECK: and EXPECT: lines, runs the commands, and records evidence. The references/ directory holds the detailed method, orchestration, and token-economy specs. Templates in templates/ provide starting ledgers for leaf and node tasks.

How It Is Wired

Entry point: scripts/gate-check.mjs. The CLI flow is: parse GATES.md -> validate the ledger -> resolve the command oracle -> execute or print the resolved command -> capture output and exit status -> compare against EXPECT: -> write evidence back into the ledger.

What a run does: It reads and writes GATES.md in the working directory. It shells out to whatever command the CHECK: line specifies. It does not touch a database or network. The blast radius is the shell command itself—if you approve a malicious CHECK:, the checker will run it. The --status mode is the only always non-executing path.

File map:

  • scripts/gate-check.mjs - CLI entry, orchestration, evidence recording
  • scripts/lib/gates.mjs - parser and validator for the ledger format
  • scripts/lib/regex-worker.mjs - regex helpers for parsing
  • scripts/install-hooks.mjs / scripts/stop-hook.mjs - optional git hooks
  • templates/gates-leaf.md / templates/gates-node.md - ledger templates
  • references/gates.md - the gate contract specification
  • tests/ - self-check, hardening, and stress tests
  • agents/openai.yaml - agent configuration for OpenAI-compatible clients

The wiring has not been mapped for the Depth Tree orchestration itself—SKILL.md describes it, but the actual tree-splitting logic is not in this repo as executable code. The scripts enforce gates, not the tree decomposition.

How To Use It

Setup: Install via the skills CLI or clone manually.

npx skills add Leonxlnx/unlazy

For manual install, clone into ~/.claude/skills/unlazy or ~/.codex/skills/unlazy. Requires Node 16+, no third-party runtime packages.

Configuration: No environment variables. Copy templates/gates-leaf.md to GATES.md and replace placeholders.

Running it:

node <path>/scripts/gate-check.mjs --status GATES.md
node <path>/scripts/gate-check.mjs --approve GATES.md
node <path>/scripts/gate-check.mjs --reverify GATES.md

Real-World Use

A payment module refactor with migration paths. The agent writes a GATES.md with gates for each migration script, each with a CHECK: that runs the script and an EXPECT: that asserts success. The agent runs --status to preview, --approve to execute, and --reverify before reporting completion. Evidence in the ledger shows exactly what ran, with what PATH, and what it printed.

Code Health & Issues

  • Low - missing lockfile - package.json exists with no lockfile, so dependency resolution is non-reproducible. No third-party runtime deps, but the risk is real if dependencies are added.
  • Low - no CI for the skill itself - .github/workflows/test.yml exists but the test suite (tests/run-tests.mjs) is not wired into a documented CI badge or release pipeline.

Deep static analysis has not run for this repo yet. The structure supports the above observations only.

The Bottom Line

The gate contract is a practical, honest mechanism for forcing verification, and the evidence recording is well-designed. The Depth Tree method is described but not implemented as code—it lives in the skill description. Use this if you run agents on substantial tasks and need auditable completion criteria; skip it if your work is small enough that a checklist suffices.