From interaction-recorder
Use when someone asks to record, capture, or create a video of a web application's UI. Triggers on: demo video, walkthrough, screen recording, product demo, UI capture, video for README, record my app, make a demo, create a walkthrough, show how this works as a video, screen record the UI, video documentation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/interaction-recorder:interaction-recorderThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Record professional demo videos of any codebase's UI — automatically.
assets/remotion-templates/AnnotationOverlay.tsxassets/remotion-templates/BrowserFrame.tsxassets/remotion-templates/ClickZoomOverlay.tsxassets/remotion-templates/FadeTransition.tsxassets/remotion-templates/GradientBackground.tsxassets/remotion-templates/README.mdevals/evals.jsonreferences/asset-generation.mdreferences/auth-patterns.mdreferences/config.mdreferences/flow-mapping.mdreferences/limitations-check.mdreferences/planning.mdreferences/presets.mdreferences/quality-review.mdreferences/recording.mdreferences/remotion-docs.mdreferences/repo-analysis.mdreferences/tool-setup.mdreferences/video-assembly.mdRecord professional demo videos of any codebase's UI — automatically.
This skill analyzes a repository, understands its UI flows, and produces polished video recordings ranging from quick captures to fully narrated productions with graphics, annotations, transitions, sound design, and AI-generated title cards.
Before diving into phases, establish two things upfront with the Asker:
Ask: "Should I record one continuous end-to-end video, or multiple separate clips?"
| Scope | When to use |
|---|---|
| End-to-end | Single continuous video covering the full user journey (or a defined subset) |
| Chunks | Multiple separate clips — one per feature, flow, or view. Good for docs, onboarding, or modular demos |
Ask: "What level of polish do you need?"
| Tier | What you get | Typical use case |
|---|---|---|
| Quick-demo | Clean screen recording with cursor, no narration or effects | Internal sharing, quick Slack demo, PR review |
| Walkthrough | Narration (TTS) + AI start/end cards + annotations + click-zoom + subtle sounds + background music + browser frame + gradient background | README demo, onboarding video, stakeholder update |
| Production | Everything in walkthrough + AI-generated graphics + full storyboard + custom theme design | Product launch, marketing, investor deck, conference talk |
/record-demo — Full interactive workflowRuns all phases (1→9). Pauses at the plan checkpoint for approval.
/record-quick — Skip planning, smart defaultsSkips planning. Analyzes the repo, then immediately records using walkthrough-tier defaults. Phases: 1→3, intent checkpoint, skip 4, then 5→9.
/record-plan — Plan only, no executionRuns phases 1→4 only. Outputs a storyboard without recording.
/record-review — Post-recording quality critiqueReviews a completed recording for quality issues. Run after any recording session.
PLANNING PHASES
Phase 1: Repo Analysis → references/repo-analysis.md
Phase 2: Flow Mapping → references/flow-mapping.md
Phase 3: Limitations Check → references/limitations-check.md
(see also: references/auth-patterns.md)
Phase 4: Planning & Storyboard → references/planning.md
↓ ← CHECKPOINT (mandatory in /record-demo, intent-only in /record-quick)
EXECUTION PHASES
Phase 5: Workspace Setup → references/tool-setup.md
Phase 6: Asset Generation → references/asset-generation.md
Phase 7: Recording → references/recording.md
Phase 8: Video Assembly → references/video-assembly.md
Phase 9: Quality Review → references/quality-review.md
REFERENCE DOCS
Config & presets → references/config.md
Quality tier presets → references/presets.md
Auth patterns → references/auth-patterns.md
Remotion API → references/remotion-docs.md
These four rules are NON-NEGOTIABLE. Violating any one of them produces a broken video. If you find yourself about to do something that contradicts these rules, STOP and re-read them.
CORRECT ORDER: Phase 6 (generate narration) → Phase 7 (record paced by narration)
WRONG ORDER: Record first, then generate narration, then stretch/compress to fit
Narration clip durations are the CRITICAL PATH. They drive the recording pace.
Each segment's Playwright recording lasts exactly narration_duration + 0.5s buffer.
This guarantees PERFECT narration-to-video sync with ZERO post-production time-stretching.
DO NOT start recording until ALL narration clips exist and timing-manifest.json is written.
CORRECT: recordings/segment-01.mp4, segment-02.mp4, ... (separate files)
WRONG: One long recordings/full-recording.webm that gets sliced/slowed later
Each segment = its own Playwright browser context = its own video file = its own duration matched to its narration clip. This enables:
DO NOT record one continuous video. Create a new browser context for each segment.
CORRECT: Remotion composition → npx remotion render → ffmpeg compress final output
WRONG: ffmpeg drawbox + concat + filter_complex as the primary pipeline
Remotion renders: browser frame with rounded corners and shadow, click-zoom overlays, spring-animated annotations, fade transitions between segments, animated title cards, layered audio with ducking. ffmpeg drawbox cannot do any of these properly.
Only fall back to ffmpeg-only if Remotion render fails. If falling back, explicitly warn the Asker: "Remotion failed. Using ffmpeg fallback — no zoom, annotations, or animated transitions."
Every audio file in the entire pipeline — narration clips, silence gaps, sound effects, background music — MUST be 44100Hz, 2-channel, 16-bit PCM WAV.
Normalize IMMEDIATELY after generating/downloading each file:
ffmpeg -y -i "input.mp3" -ar 44100 -ac 2 -c:a pcm_s16le "output.wav" 2>/dev/null
Mixing formats (e.g., 32kHz mono narration + 44100Hz stereo silence) WILL produce garbled audio. Validate format before concatenation.
Goal: Understand the codebase, how to run it, and where the UI lives.
Read references/repo-analysis.md before starting.
Output: Mental model of the repo + run instructions + design tokens.
Goal: Map every user journey, view, and state.
Read references/flow-mapping.md before starting.
Output: A structured flow map.
Goal: Identify blockers.
Read references/limitations-check.md before starting.
If auth is needed, also read references/auth-patterns.md.
Output: Blockers list with workarounds.
Goal: Create a detailed plan, get Asker approval.
Read references/planning.md before starting.
Skipped in /record-quick — auto-plan is generated from the flow map using walkthrough defaults
from references/presets.md, including default start/end cards and background music.
In /record-demo, this is interactive:
⚠️ CHECKPOINT: Do not proceed without explicit Asker approval.
Goal: Prepare the environment.
Read references/tool-setup.md before starting.
npx create-video)scripts/load-env.sh or dotenvGATE — Do not proceed to Phase 6 until ALL of these pass:
npx remotion --version succeedsGoal: Generate all audio and visual assets. Narration durations are the CRITICAL PATH.
Read references/asset-generation.md before starting.
Strict execution order:
GATE — Do not proceed to Phase 7 until:
Goal: Capture screen recordings paced by narration clip durations.
Read references/recording.md before starting.
timing-manifest.json to know each segment's target durationnarration_duration + 0.5s bufferGATE — Do not proceed to Phase 8 until:
Goal: Composite everything using Remotion.
Read references/video-assembly.md before starting.
Layer order in Remotion composition:
Render via npx remotion render. Post-process with ffmpeg for compression + thumbnail.
If Remotion fails: fall back to ffmpeg-only assembly with a warning to the Asker.
Goal: Review the recording for quality issues before delivering.
Read references/quality-review.md before starting.
Two-stage review:
After review:
.interaction-recorder/preferences.jsonIf anything fails:
| Failure | Fallback |
|---|---|
| TTS API | Retry 3× (2s/4s/8s backoff) → local TTS (macOS say / Linux espeak-ng) |
| FAL image gen | HTML+CSS → Playwright screenshot |
| FAL SFX/Music | Retry 3× → ffmpeg synthesis (WARN Asker: lower audio quality) |
| Remotion render | ffmpeg-only assembly (WARN Asker: no zoom/annotations/animated transitions) |
| Playwright selector | Screenshot state, log error, skip action, continue recording |
| App won't start | Check if already running; report exact error to Asker |
| App requires auth | See references/auth-patterns.md for common patterns |
| API key missing | Check .env files, prompt Asker, validate with test request |
Phase 6 (Assets): Narration clips generated sequentially (critical path), then in parallel:
Phase 7 (Recording chunks): One subagent per chunk.
Phase 8 waits for all Phase 6-7 outputs to exist before starting.
See references/config.md for the full configuration reference, walkthrough tier defaults,
and workspace directory layout.
After a successful recording, the skill offers to save preferences to
.interaction-recorder/preferences.json in the target repo root. Subsequent recordings
in the same repo auto-load this file, skipping re-discovery of design tokens, TTS provider,
app startup configuration, and theme.
See references/quality-review.md for the preferences file format and save/load behavior.
npx claudepluginhub prakhar625/my-plugins --plugin interaction-recorderRecords polished UI demo videos of web applications using Playwright, following a three-phase discover-rehearse-record process. Best for creating walkthroughs, tutorials, or feature showcase videos for documentation or presentations.
Generates MP4 walkthrough videos from app screenshots or live sites using Remotion. Adds smooth transitions, zoom effects, text overlays, progress bars, optional voiceover narration for demos, showcases, docs.
Converts a GitHub pull request into a narrated explainer video with code diff, before/after, and impact scenes. Useful for creating changelog videos or code walkthroughs from PRs.