← ClaudeAtlas

canon-recordlisted

Drives a screencast draft through to a recording. Compiles it with `canon demo compile` when no plan exists yet at the default path, skipping compile when one is already there, then runs `canon demo run` once nothing is unresolved. Reports every unresolved field from the compile or run record and stops rather than guessing one. Use when asked to "record the screencast", "run the demo", "compile and record this draft", or right after `canon-screencast` prints its next-step line. Do NOT use to draft the beats, which is `canon-screencast`, or to fill in a plan's target or URL, which is the operator's own edit.
erclx/canon · ★ 2 · Code & Development · score 68
Install: claude install-skill erclx/canon
# Canon record ## Guards - If no draft path is given, stop: `❌ No draft path. Pass the path canon-screencast printed.` - Never guess or fill an unresolved field, a target, a URL, or anything else the compile or run record names. Report it and stop. Filling one in reproduces the failure `canon demo run`'s `plan-unresolved` reason exists to catch, one layer up where nothing enforces it. - Never pass `--force` to compile. A plan already at the default output path may carry timing tuned by hand, and the draft cannot reproduce that, so leave it untouched. - Drive the application through `canon demo run` alone. Never open a browser, click through the app, or write to the output paths some other way. ## Step 1: resolve the plan path Derive the default plan path the same way `canon demo compile` does: `<out>/<slug>.json`, where `<out>` defaults to `demos` and `<slug>` defaults to the draft's filename with its extension stripped. `.canon/tmp/screencast/inline-edit.md` resolves to `demos/inline-edit.json`. ## Step 2: compile only when no plan exists yet Check whether the resolved plan path already exists. - **It exists.** A person may have tuned it by hand since compiling. Skip compiling and go to Step 3 with this path. - **It does not exist.** Run: ```bash canon demo compile <draft> --json ``` Branch on the record rather than the exit code: - `reason: draft-missing` or `reason: draft-unreadable`: report the reason, plus the record's `message` when it carries one, an