npx agentspec-cli install 7f360e91-60bc-4b34-beae-36b7e8ed1b99 --file-type windsurf-rules→ .windsurf/rules/
---
description: Use peepshow to extract frames from videos and animated images so you can view them as stills.
trigger: manual
---
# peepshow — video → frames
When the user shares a video or animated image file (`.mp4` `.mov` `.mkv` `.webm` `.gif` `.apng` etc.) — including drag-and-drop — extract frames so you can view them as a timeline of images.
## Invoke
```bash
peepshow "<path-or-url>" --emit json
```
Parse `frames[].path` (ordered, chronological) and read each as an image. Use `video.tags` (title/director/producer/show/etc) to ground your answer. The `extraction` block carries `framesDeduped` (perceptual-hash post-pass, default-on), `dedupDistance`, and a coarse motion signal — `motionSignalAvg` (numeric) + `motionSignalLevel` (`low`/`medium`/`high`) — useful for colouring narration. `--gpu auto` automatically picks CPU on short clips where hwaccel init dominates; `--adaptive on` (default) re-extracts denser when motion is high and there's headroom. Static images are already handled natively — skip peepshow for those.
## Install
`npm i -g peepshow` — https://www.npmjs.com/package/peepshow.
## Annotate the report
Each run writes `report.html` + `manifest.json` into the run's `outputDir`. After reading the frames, pipe a JSON summary back so the report captures your understanding:
```bash
echo '{"summary":"<2-4 sentences>","provider":"windsurf"}' | peepshow report annotate "$OUTPUT_DIR"
```
`$OUTPUT_DIR` is the JSON payload's `outputDir` field. The annotation is rendered under "LLM analysis" in `report.html`.
## Attach frames to the Windsurf workspace
`peepshow video.mp4 --sink ide` detects Windsurf and writes frames into `.windsurf/attachments/peepshow/<timestamp>/` for easy `@mention`.
hyperframes
Mandatory entry point: read this first for any request to make, create, edit, animate, or render a video, animation, or motion graphic, including a promo, explainer, captioned clip, title card, overlay, slideshow or interactive deck, Remotion port, or any HyperFrames HTML composition. Also use it to inspect, diagnose, validate, preview, publish, or batch-render an existing HyperFrames project. Inputs may be a website URL, GitHub PR, Figma design or URL, text or brief, existing footage, or music. It resumes
by AgentHub Crawler
general-video
Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated motion-first unit, including an animated title. Route fresh creation through hyperframes before using this skill.
by AgentHub Crawler
music-to-video
Sign in to leave a comment.
Turn a music track (an audio file, a video to pull audio from, or a track generated from a mood brief) into a beat-synced video — lyric video, slideshow, or kinetic promo. The music drives all pacing; any user-supplied images/videos are cut onto the same beat grid, and a complete video needs zero assets. Narrated pieces → the input-matched workflow (see /hyperframes). Unclear → /hyperframes.
by AgentHub Crawler