Rollcut opens your app in a real browser, walks through it with a visible cursor, narrates each step, and attaches the finished MP4 and GIF to the release. Tag a release, get a trailer. Nobody records anything, ever again.
These are the actual assets attached to v1.1.0 of this repo, generated in CI by the Action with no one at the keyboard.
1 00:00:00,007 --> 00:00:04,007 This is Excalidraw, a whiteboard that runs in the browser. 2 00:00:05,769 --> 00:00:07,769 Pick the rectangle tool. 3 00:00:08,285 --> 00:00:10,335 Draw a shape on the canvas.
The workflow fires on release: published and points at your deployed app or a preview URL.
git tag v1.2.0 && git push --tagsHeadless Chromium performs the steps with a visible cursor and a soft 1.15× zoom on clicks. Each note is synthesized before recording, so the step is held exactly as long as its line takes to say. Voice and video never drift.
playwright · kokoro (local, no API key)ffmpeg muxes the voice, burns subtitles, cuts a GIF, and attaches all of it to the release that triggered the run. Optionally the README embed updates itself.
demo.mp4 · demo.gif · demo.srtA demo that breaks the day you cut a release is worse than no demo. Rollcut watches the spec between releases, fixes what it can, and tells you plainly about what it can't.
Run it nightly in mode: check. It replays the spec without recording and fails the job the day a step stops working — not the day you ship.
rollcut repair finds the renamed element, patches the YAML in place, and re-verifies it in a real browser. Steps it can't fix are kept and reported — never silently dropped.
Click through your product once and rollcut capture writes the spec from what you did. Or point rollcut plan at a URL and it proposes one — every selector verified before it's written.
.github/workflows/demo.yml. It needs contents: write to attach assets.rollcut capture, click through your app once, and it writes one for you.name: Demo on: release: { types: [published] } permissions: contents: write jobs: demo: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ArshadNyx/rollcut@v1 with: spec: demos/app.yaml url: https://app.example.com
Add it to one repo tonight. Your next release will have a demo video before you've finished the changelog.