Lede
The prompt you wish you'd started with.
A coaching layer for Claude Code that reads your session log after the fact and shows you the prompt you meant to write — structured as a sprint contract, scored against the five subsystems of a good agent harness.

[!NOTE]
Most agent failures are not model failures. They are harness failures.
You knew the stack, the scope, the verification command — you just didn't say
them in the first prompt, and you didn't put them in the repo where the agent
could find them. Lede turns spotting that gap into a habit loop.
The 30-second tour
You finished a session. You know it took longer than it should have. Type:
/lede:assess 12
Lede reads the last 12 real user messages, classifies every constraint you added later across the five harness layers (task-spec · context · environment · verification · state), and gives you back a report that looks like this:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
YOU STARTED WITH
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Build me a small CLI todo app
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STRONGER STARTING POINT (a sprint contract for similar future work)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GOAL
Build a CLI todo app in Python using Click.
SCOPE
In: add / list / done / due dates
Out: categories, tags, cloud sync
ENVIRONMENT
Python 3.11; store JSON at ~/.todoapp/todos.json
STYLE
Overdue red, completed dim gray; `done` preserves history.
DEFINITION OF DONE
$ todo add "buy milk" && todo list
→ shows "buy milk"
$ todo done 1 && todo list -a
→ shows "buy milk" dim-gray, not removed
Followed by a harness-layer histogram, evidence-tagged additions, and 1–3 habits to carry forward. The report saves to ~/.claude/lede/ and feeds the next loop.
Install
/plugin marketplace add YCBytes/Lede
/plugin install lede@ycbytes-plugins
Local development install
claude --plugin-dir /path/to/Lede
The three commands
| Command | What it does | When to use it |
|---|
/lede:assess N | Coaches you on the last N real user messages of this session, framed as a sprint contract. | Right after finishing a focused chunk of work. |
/lede:init | Drafts a project profile (lede.md) from your README, manifests, configs, and harness state. | Once per repo, before your next session. |
/lede:doctor | Scores your repo's harness across the five subsystems and returns a prioritized punch list. | When you suspect the repo, not the model, is what's slowing you down. |
N is required for /assess — Lede doesn't auto-detect intent. If a report feels noisy, rerun with a smaller window so [U1] is the first real request in the arc you care about.
The five harness layers (the vocabulary that compounds)
Lede classifies every addition in the report against this fixed set. Over multiple sessions you learn to think in these terms, which is the actual habit change.
| Layer | What lives here |
|---|
| task-spec | Goal, scope (in / out), feature granularity, what "done" means in words |
| context | Tech stack, libraries, conventions, file paths, decisions already made |
| environment | Runtime versions, deps, where data lives, target platform |
| verification | Tests, lint, type checks, executable definition-of-done |
| state | Progress tracking, decision logs, session-resumability artifacts |
A tall bar on the same layer across three reports = the recurring blind spot Lede surfaces in the next report's header. That's the loop.
How the loop compounds
flowchart LR
A[Session ends] --> B["/lede:assess N"]
B --> C[Coaching report]
C --> D{Recurring<br/>layer?}
D -->|yes| E[Promote to lede.md]
D -->|no| F[Saved locally]
E --> G[Next session starts<br/>with context loaded]
F --> G
G --> A
One run is interesting. Three runs across the same project is when the diff actually gets shorter.
Foldable vs emergent
Every addition gets one of two labels alongside its harness layer. They matter because only one of them is your fault: