sd-lean-execute
Build and verify a tlc-spec-lean feature with slice-by-slice Build, a docs sync, a UI regression gate, proofs and an independent Verifier, ending at a green validate_verification.py. Use when user say
SKILL.mdskills/sd-lean-execute/SKILL.md
GitHubExecute Lean Feature
This skill does not reimplement execution: it runs tlc-spec-lean's Build and Verify exactly as documented in references/build.md and references/verify.md, and layers two things on top: a docs sync and a UI regression gate on the screens the feature did not set out to change.
Everything lands before the proofs. check_proofs.py fails on uncommitted changes outside .specs/, and validate_verification.py fails when proofs.md was written at another HEAD. docs/ is outside .specs/, so each docs change is committed before check_proofs.py runs, never after its last run.
Steps
Add the following steps as tasks using the TaskCreate, TaskUpdate, TaskGet, and TaskList tools. Update the status as you progress through each step to keep the user informed.
| # | Step | Action | Output / Gate |
|---|---|---|---|
| 1 | Validate feature | Confirm .specs/features/{FEATURE}/checks.md exists and validate_checks.py {FEATURE} --execute exits 0, which also runs the Build: line once |
Missing or red checks -> stop: run sd-lean-planning. Red Build: -> tell the user, stop |
| 2 | Read lean skill | Invoke /tlc-spec-lean; read its references/build.md and references/verify.md once, references/verify-screens.md when a criterion cites a capture, and references/memory.md when resuming |
Build and Verify conventions loaded. Resolve these from the skill's own directory |
| 3 | Build slice by slice | Run Build as documented: tests from the checks, code, commits, the walk and saved pictures. Stop at its "Then stop" section, before check_proofs.py |
Slices implemented, proofs green |
| 4 | Sync docs | Invoke generate-docs skill in update mode, scoped to the commits of this run, if the changes warrant a docs update, and commit the result |
docs/ reflects the feature before the proofs run -- skip silently if no doc-worthy changes occurred |
| 5 | UI regression gate | If the build touched a UI component or screen, test it with Playwright MCP (or similar E2E tool), looking at screens the feature did not set out to change. Lean's walk, pictures and screens sub-agent already judge the screens it changed | No regression in other features -- skip silently for non-UI work. Something broken is fixed and committed before step 6 |
| 6 | Verify | Run check_proofs.py {FEATURE}, then dispatch the Verifier and the screens sub-agent as references/build.md "Then stop" says, unchanged |
Findings in verification.md, verdicts in screens.md |
| 7 | Fix findings | No findings -> skip. A missing obligation is an appended check. Fix everything in one pass and commit any docs change with the fix, then run check_proofs.py {FEATURE} and, when the fix changed code, screens round 2 as references/build.md says |
Nothing outside .specs/ is left uncommitted |
| 8 | Gate | Run validate_verification.py {FEATURE} |
Exit 0. A red gate is reported first, never left for the reader to find |
| 9 | Summary | Open with the last line of validate_verification.py, then what tlc-spec-lean reported and the docs sync outcome |
Local commits are made; git push and deploy wait for the user's explicit go-ahead |
| 10 | Save permanent memory | At the end of the session, evaluate whether there is anything worth saving as permanent memory. Save only what the next session will need and cannot rediscover by reading the code, Git, or CLAUDE.md -- such as the reason behind a decision, a non-obvious invariant, or a user preference; if it is already in the repo or only matters for this specific conversation, do not save it. Use the ai-memory-durable-pages skill to persist it. |
Durable page written when warranted, or nothing when not |
Reference files
- troubleshooting.md -- common failure symptoms and fixes
- diagram.md -- diagram of the flow.