unlazy
Use when task decomposition needs gate-file proof before a done claim, or when the user says "unlazy", "depth tree", "gates", or "do not stop until it is done". Detects half-done work, premature done claims, stubs, and silently narrowed scope.
Install / Use
npx skills add OutlineDriven/outline-driven-developmentInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Skill content
View source on GitHubname: unlazy description: 'Use when task decomposition needs gate-file proof before a done claim, or when the user says "unlazy", "depth tree", "gates", or "do not stop until it is done". Detects half-done work, premature done claims, stubs, and silently narrowed scope. In orchestrated mode (tree 4+), enforces dispatch-state, human approval binding, and parent reverification before a done claim.'
Unlazy
Contract
| Field | Bound contract |
|---|---|
| Trigger | User invokes 'unlazy', 'depth tree', 'gates', or 'do not stop until it is done'; laziness symptoms appear (half-done work, premature done claims, stubs, silently narrowed scope); or a build decomposes three or more layers deep. |
| Authority | Reversible-local: writes only named local gate files and evidence; rollback is file deletion of the created .outline/ tree. |
| Side effect | Creates .outline/GATES.md and per-leaf gate files; executes gate_check.py; flips checkboxes; records EVIDENCE. In orchestrated mode, writes .outline/dispatch.json and approval logs. No remote mutation. |
| Done | Solo mode: gate_check.py exits 0; every leaf box is checked and EVIDENCE is non-pending; no stubs, placeholders, or follow-up remain. Honestly surfaced abandonment (ABANDON lines with reasons) is accounted in the report but blocks a clean done: the report carries the abandoned count and ids. Orchestrated mode: same gate requirements plus every returned leaf is parent-reverified, dispatch state is valid, and abandoned count is zero: any abandonment produces HANDOFF REQUIRED and blocks done per references/dispatch-gates.md. |
Inputs
Required: task decomposition and intended outcome. Optional: depth hint (tree N) and any work already in progress. The skill directory is found by locating scripts/gate_check.py relative to the working directory.
Gate format
Each item in the gates file is a checkbox with a unique ID, an observable outcome statement, and either an automated CHECK/EXPECT pair or a manual EVIDENCE field. CHECK is the shell command; EXPECT is the substring or /regex/ the output must contain. A checked box with EVIDENCE still reading pending counts as UNMET. Template files live in assets/gates.md under the skill directory.
- Box format:
- [ ] <id>: <observable outcome> - Automated gate:
CHECK: <command>/EXPECT: <substring or /regex/>/EVIDENCE: pending - Manual gate:
EVIDENCE: pending - Abandoned gate:
ABANDON: <id> <reason>, reported, not deleted - Leaf IDs: G1, G2, … inside a leaf gates file
- Branch/root IDs: N1, N2, … inside a branch gates file
Templates: plan contract, leaf gates, and branch gates in assets/gates.md.
Procedure
- Locate the skill directory by finding scripts/gate_check.py relative to the working directory. Done when: the skill directory is located.
- If .outline/GATES.md does not exist, create it from the templates. Decompose the task into a depth tree: Layer 1 is the task; leaves are the only places real work happens. Depth guidance: tree 2-3 for a feature, bug hunt, or document (solo); tree 4-5 for a subsystem or serious refactor; tree 6-7 for an entire project built to a high bar, orchestrated with leaves on disjoint work units. Done when: the depth tree is decomposed and GATES.md is created.
- Before real work starts, write the acceptance gates to .outline/GATES.md (solo) or .outline/gates/leaf-*.md (orchestrated), using the templates. One checkbox per observable outcome the task requires. For command-checkable outcomes, add CHECK (runnable command) and EXPECT (required output). The Hoare contract: CHECK is the test, EXPECT is the postcondition, EVIDENCE is the recorded proof. Done when: every observable outcome has a checkbox with CHECK/EXPECT or manual EVIDENCE.
- Work each leaf in four passes: implement completely without placeholders, reread as a domain expert, hunt defects, then polish at zero cost. Done when: a full four-pass review finds no change worth making.
- During and after work, run gate_check.py:
It runs each CHECK command, compares output against EXPECT (substring by default, or /regex/ with flags), flips a box frompython3 <skill-dir>/scripts/gate_check.py [.outline/GATES.md ...][ ]to[x]when the gate is met, and records EVIDENCE with the actual command output. --status reports without changing anything. Done when: gate_check.py has been run and boxes are flipped or unmet gates are identified. - Before reporting done, run gate_check.py again. If any gate is still unchecked or has pending evidence, stop and do that work instead. The done state is the gates file, not the feeling of done. In orchestrated mode, unmet gates block done unconditionally: there is no abandonment path; see
references/dispatch-gates.md. Done when: all gates are checked with non-pending EVIDENCE, or remaining work is identified. - Solo mode only: if a gate becomes genuinely impossible, add ABANDON: <id> <reason> to the gates file and surface it in the report. Visible surrender is honest; silent scope-narrowing is not. Abandonment is accounted but blocks a clean done: the report carries the abandoned count and ids. In orchestrated mode, abandonment is not permitted; an impossible gate produces HANDOFF REQUIRED per
references/dispatch-gates.md. Done when: the ABANDON line is added and surfaced (solo), or the handoff is declared (orchestrated). - Report the gates ledger: paste the file with its count, N of N checked, all EVIDENCE lines with actual output, and every ABANDON line surfaced. In orchestrated mode, report zero abandoned or declare HANDOFF REQUIRED. Done when: the report contains the full ledger with counts, evidence, and abandons.
- In orchestrated mode (tree 4+), apply the dispatch enforcement layers in
references/dispatch-gates.md: strict parsing without executing, human approval bound to the exact CHECK before execution, the dispatch state machine in.outline/dispatch.json, and parent reverification of every returned leaf. A CHECK cannot approve itself; child-produced evidence alone cannot mark a leaf VERIFIED. The parent reruns every runnable leaf CHECK on return. Done when: every returned leaf is parent-reverified, dispatch state is valid, and branch integration gates pass.
Failure and recovery
- Missing gates file: create it from templates and run step 3 before continuing.
- Checker non-zero: count unmet boxes; stop and do the remaining work.
- Unchecked box with pending EVIDENCE: counts as UNMET; do not report done.
- Box is checked but evidence still pending: counts as UNMET; do not report done.
- Gate becomes impossible: add ABANDON: <id> <reason>; report it; do not silently drop.
- Stop when gates are unmet rather than narrowing scope or claiming done.
- Orchestrated mode: missing or stale approval for a CHECK: display the complete binding and leave CHECK unexecuted; never reuse a near match.
- Orchestrated mode: invalid dispatch transition: leave dispatch.json unchanged; report current state, rejected event, and allowed next events.
- Orchestrated mode: child return without parent proof: keep leaf unverified; rerun its approved oracles and parent integration gates.
Output
The gates ledger with every box and its EVIDENCE line showing actual command output, a summary line (N of N checked, M abandoned with reasons), and the final report. Solo mode: abandonment is surfaced honestly with ids and reasons but blocks a clean done. Orchestrated mode: zero abandonment required; any abandonment produces HANDOFF REQUIRED and blocks done per references/dispatch-gates.md.
Related Skills
claude-howto
41.4kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
ai-job-search
40.9kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
guizang-ppt-skill
25.7kAI-agent Skill for generating polished HTML slide decks: editorial magazine and Swiss layouts, image prompts, social covers, and a WebGL/low-power presentation runtime.
reactive-resume
42.2kA one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!
Security Score
Audited on Invalid Date
