markdown-proposelisted
Install: claude install-skill erclx/canon
# Markdown propose
Reviews what a markdown surface says against a named concern and proposes what it should say instead. Writes proposals and stops. The operator answers per change, and a later invocation applies the answered set.
The value is the gate. A rewrite delivered in chat gets applied from memory across files nobody reopened, and nothing records what was approved.
## Guards
- No concern named and none derivable from the conversation. Stop: `❌ No concern to screen for. Name what looks wrong, or the surface to review.`
- No surface named and none derivable. Stop: `❌ No surface to review. Name the files, or the folder, to screen.`
- The concern resolves to one file only. Stop and say so: a single-file change needs no proposal folder.
- A named file cannot be read. Stop and name it. Do not screen what resolved and report a partial result.
## Phase detection
Two phases share this body, picked by whether a proposal folder already exists for the request's slug.
Derive `<slug>` from the concern and the surface, kebab-case, naming the subject rather than the activity. List `.canon/proposals/` at the main worktree root and match the topic against the slug half of each `<nn>-<slug>` folder already there before deriving a fresh one, the same way `plan-intake` matches its own folder. Never match against `.claude/` itself.
With no match, a fresh folder takes the next ordinal in `.canon/proposals/`'s own sequence: list the folders present, take the highest `<nn>`, and incre