shipreel turns a pull request into a narrated walkthrough video: diagrams, the code that matters, and the real app in action, in about two and a half minutes. Reviewers watch the change instead of reverse-engineering the diff.
npx skills add theBstar/shipreelEach video says what changed and why, in an order that builds understanding, and ends with where a reviewer should look.
Boxes, arrows and moving packets for how the pieces connect.
The lines that matter, as a diff, never the whole file.
For UI changes it signs in to your app and records the actual flow.
Captions, crossfade cuts and a soft music bed, ducked under the voice.
Ask your agent to "make a shipreel for PR 123". It follows the skill step by step, and shows you still frames before it renders.
Plain HTML on a 1920×1080 stage, with one narration line per beat. Helpers draw boxes, arrows, cards, code and screen recordings.
A voice adapter speaks each line; headless Chrome renders every frame to match it, deterministically.
Crossfades between scenes, an ambient pad ducked under the voice, loudness normalised, under GitHub's 10 MB limit.
Needs Node 18+, ffmpeg and Chrome (or Chromium, Edge, Brave). On a Mac with those, there is nothing else to set up.
# Claude Code, Codex, Cursor and any agent that reads SKILL.md skills
npx skills add theBstar/shipreel# inside Claude Code
/plugin marketplace add theBstar/shipreel
/plugin install shipreel@shipreel# copy the skill into your agent's skills directory
git clone https://github.com/theBstar/shipreel
cp -r shipreel/plugins/shipreel/skills/shipreel ~/.claude/skills/Then ask your agent: "make a shipreel for PR 123". The video lands in .shipreel/, never in your repository's history; you drop it into the PR.
Put shipreel.yml at your repository root. Every key is optional; the defaults need nothing on a Mac.
instructions: | Audience: reviewers. Lead with the user-facing change. video: optimal_seconds: 150 # a guideline, not a wall voice: engine: piper # say · piper · command app: url: http://localhost:3000 credentials: password: { env: DEMO_PASSWORD } pronounce: kubectl: cube control
Tell every video who it's for. Aim for 150 seconds by default: shorter for small changes, longer only when needed.
Voice (macOS say, Piper, or any command), browser and fonts are all swappable. Found automatically on a Mac.
Sign-in steps and credentials from the environment or a git-ignored file. A password in the config is refused.
Every key is documented in references/config.md.
Narration describes the current behaviour, never the branch's history, and ends with what a reviewer should check.
Local and free by default. Any paid step, like a cloud voice, is estimated and asked about first.
No committed videos, no media branches, no uploads. Credentials are never printed.