← ClaudeAtlas

canon-frames-readlisted

Pulls numbered still frames from a recorded video through `canon demo frames`, reads each one with the Read tool, and reports one plain description per frame. Never judges the recording, since a frame read is evidence rather than a verdict. Use when asked to "check the recording", "read the demo frames", "see what the video shows", or right after `canon demo run` writes a video and nobody has opened it yet. Do NOT use to record the video, which is `canon-record`, or to state whether the recording looks correct or broken, which is out of scope for every surface in the toolkit today.
erclx/canon · ★ 2 · Code & Development · score 68
Install: claude install-skill erclx/canon
# Canon frames read ## Guards - If no recording path is given, stop: `❌ No recording path. Pass the video canon demo run wrote.` - Never write a pass-fail judgment, a "looks correct" line, or a "looks broken" line, anywhere in the report. A frame read is evidence a person weighs, not a verdict this skill hands them. - Never drive the application. Everything this skill touches is the frame files the verb already wrote, and it opens no browser and clicks nothing. - Never edit, trim, or otherwise modify the recording. The frames verb writes new files beside it, and this skill only reads what that writes. ## Step 1: extract frames Run: ```bash canon demo frames <video> --json ``` Branch on the record's `reason` rather than the exit code: - `video-missing`: report that the path does not resolve and stop. - `converter-missing`: report that ffmpeg is not installed and stop. `canon demo frames --help` names the install line. - `extraction-failed`: report the record's `message` and stop. - No `reason` key, meaning frames were written: continue to Step 2 with the record's `frames` array. ## Step 2: read every frame Read each path in `frames`, in array order, with the Read tool. Do not skip any and do not sample a subset, since a gap in the sequence is a gap in what the report covers. ## Step 3: report One numbered list entry per frame, each a plain description of what is on screen: the visible UI state, on-screen text, cursor position, and anything that changed from the entr