/feature-video
Record a video walkthrough of a feature and add it to the PR description
$ npx -y skills add davekilleen/Dex --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/feature-video
Context preview
What this command does when you run it.
Record a video walkthrough of a feature and add it to the PR description
Command definition
feature-video.mdname: feature-video
description: Record a video walkthrough of a feature and add it to the PR description
argument-hint: "[PR number or 'current'] [optional: base URL, default localhost:3000]"
Feature Video Walkthrough
<command_purpose>Record a video walkthrough demonstrating a feature, upload it, and add it to the PR description.</command_purpose>
Introduction
<role>Developer Relations Engineer creating feature demo videos</role>
This command creates professional video walkthroughs of features for PR documentation:
- Records browser interactions using agent-browser CLI
- Demonstrates the complete user flow
- Uploads the video for easy sharing
- Updates the PR description with an embedded video
Prerequisites
<requirements>
- Local development server running (e.g., `bin/dev`, `rails server`)
- agent-browser CLI installed
- Git repository with a PR to document
- `ffmpeg` installed (for video conversion)
- `rclone` configured (optional, for cloud upload - see rclone skill)
</requirements>
Setup
**Check installation:**
command -v agent-browser >/dev/null 2>&1 && echo "Installed" || echo "NOT INSTALLED"
**Install if needed:**
npm install -g agent-browser && agent-browser install
See the `agent-browser` skill for detailed usage.
Main Tasks
1. Parse Arguments
<parse_args>
**Arguments:** $ARGUMENTS
Parse the input:
- First argument: PR number or "current" (defaults to current branch's PR)
- Second argument: Base URL (defaults to `http://localhost:3000`)
# Get PR number for current branch if needed
gh pr view --json number -q '.number'
</parse_args>
2. Gather Feature Context
<gather_context>
**Get PR details:**
gh pr view [number] --json title,body,files,headRefName -q '.'
**Get changed files:**
gh pr view [number] --json files -q '.files[].path'
**Map files to testable routes** (same as playwright-test):
| File Pattern | Route(s) | |-------------|----------| | `app/views/users/*` | `/users`, `/users/:id`, `/users/new` | | `app/controllers/settings_controller.rb` | `/settings` | | `app/javascript/controllers/*_controller.js` | Pages using that Stimulus controller | | `app/components/*_component.rb` | Pages rendering that component |
</gather_context>
3. Plan the Video Flow
<plan_flow>
Before recording, create a shot list:
1. **Opening shot**: Homepage or starting point (2-3 seconds) 2. **Navigation**: How user gets to the feature 3. **Feature demonstration**: Core functionality (main focus) 4. **Edge cases**: Error states, validation, etc. (if applicable) 5. **Success state**: Completed action/result
Ask user to confirm or adjust the flow:
**Proposed Video Flow**
Based on PR #[number]: [title]
1. Start at: /[starting-route]
2. Navigate to: /[feature-route]
3. Demonstrate:
- [Action 1]
- [Action 2]
- [Action 3]
4. Show result: [success state]
Estimated duration: ~[X] seconds
Does this look right?
1. Yes, start recording
2. Modify the flow (describe changes)
3. Add specific interactions to demonstrate
</plan_flow>
4. Setup Video Recording
<setup_recording>
**Create videos directory:**
mkdir -p tmp/videos
**Recording approach: Use browser screenshots as frames**
agent-browser captures screenshots at key moments, then combine into video using ffmpeg:
ffmpeg -framerate 2 -pattern_type glob -i 'tmp/screenshots/*.png' -vf "scale=1280:-1" tmp/videos/feature-demo.gif
</setup_recording>
5. Record the Walkthrough
<record_walkthrough>
Execute the planned flow, capturing each step:
**Step 1: Navigate to starting point**
agent-browser open "[base-url]/[start-route]"
agent-browser wait 2000
agent-browser screenshot tmp/screenshots/01-start.png
**Step 2: Perform navigation/interactions**
agent-browser snapshot -i # Get refs
agent-browser click @e1 # Click navigation element
agent-browser wait 1000
agent-browser screenshot tmp/screenshots/02-navigate.png
**Step 3: Demonstrate feature**
agent-browser snapshot -i # Get refs for feature elements
agent-browser click @e2 # Click feature element
agent-browser wait 1000
agent-browser screenshot tmp/screenshots/03-feature.png
**Step 4: Capture result**
agent-browser wait 2000
agent-browser screenshot tmp/screenshots/04-result.png
**Create video/GIF from screenshots:**
# Create directories
mkdir -p tmp/videos tmp/screenshots
# Create MP4 video (RECOMMENDED - better quality, smaller size)
# -framerate 0.5 = 2 seconds per frame (slower playback)
# -framerate 1 = 1 second per frame
ffmpeg -y -framerate 0.5 -pattern_type glob -i 'tmp/screenshots/*.png' \
-c:v libx264 -pix_fmt yuv420p -vf "scale=1280:-2" \
tmp/videos/feature-demo.mp4
# Create low-quality GIF for preview (small file, for GitHub embed)
ffmpeg -y -framerate 0.5 -pattern_type glob -i 'tmp/screenshots/*.png' \
-vf "scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=128[p];[s1][p]paletteuse" \
-loop 0 tmp/videos/feature-demo-preview.gif
**Note:**
- The `-2` in MP4 scale ensures height is divisible by 2 (required for H.264)
- Preview GIF uses 640px width and 128 colors to keep file size small (~100-200KB)
</record_walkthrough>
6. Upload the Video
<upload_video>
**Upload with rclone:**
# Check rclone is configured
rclone listremotes
# Upload video, preview GIF, and screenshots to cloud storage
# Use --s3-no-check-bucket to avoid permission errors
rclone copy tmp/videos/ r2:kieran-claude/pr-videos/pr-[number]/ --s3-no-check-bucket --progress
rclone copy tmp/screenshots/ r2:kieran-claude/pr-videos/pr-[number]/screenshots/ --s3-no-check-bucket --progress
# List uploaded files
rclone ls r2:kieran-claude/pr-videos/pr-[number]/
Public URLs (R2 with public access):
Video: https://pub-4047722ebb1b4b09853f24d3b61467f1.r2.dev/pr-videos/pr-[number]/feature-demo.mp4
Preview: https://pub-4047722ebb1b4b09853f24d
Read more
name: feature-video description: Record a video walkthrough of a feature and add it to the PR description argument-hint: "[PR number or 'current'] [optional: base URL, default localhost:3000]"
Feature Video Walkthrough
<command_purpose>Record a video walkthrough demonstrating a feature, upload it, and add it to the PR description.</command_purpose>
Introduction
<role>Developer Relations Engineer creating feature demo videos</role>
This command creates professional video walkthroughs of features for PR documentation:
- Records browser interactions using agent-browser CLI
- Demonstrates the complete user flow
- Uploads the video for easy sharing
- Updates the PR description with an embedded video
Prerequisites
<requirements>
- Local development server running (e.g., `bin/dev`, `rails server`)
- agent-browser CLI installed
- Git repository with a PR to document
- `ffmpeg` installed (for video conversion)
- `rclone` configured (optional, for cloud upload - see rclone skill)
</requirements>
Setup
**Check installation:**
command -v agent-browser >/dev/null 2>&1 && echo "Installed" || echo "NOT INSTALLED"
**Install if needed:**
npm install -g agent-browser && agent-browser install
See the `agent-browser` skill for detailed usage.
Main Tasks
1. Parse Arguments
<parse_args>
**Arguments:** $ARGUMENTS
Parse the input:
- First argument: PR number or "current" (defaults to current branch's PR)
- Second argument: Base URL (defaults to `http://localhost:3000`)
# Get PR number for current branch if needed gh pr view --json number -q '.number'
</parse_args>
2. Gather Feature Context
<gather_context>
**Get PR details:**
gh pr view [number] --json title,body,files,headRefName -q '.'
**Get changed files:**
gh pr view [number] --json files -q '.files[].path'
**Map files to testable routes** (same as playwright-test):
| File Pattern | Route(s) | |-------------|----------| | `app/views/users/*` | `/users`, `/users/:id`, `/users/new` | | `app/controllers/settings_controller.rb` | `/settings` | | `app/javascript/controllers/*_controller.js` | Pages using that Stimulus controller | | `app/components/*_component.rb` | Pages rendering that component |
</gather_context>
3. Plan the Video Flow
<plan_flow>
Before recording, create a shot list:
1. **Opening shot**: Homepage or starting point (2-3 seconds) 2. **Navigation**: How user gets to the feature 3. **Feature demonstration**: Core functionality (main focus) 4. **Edge cases**: Error states, validation, etc. (if applicable) 5. **Success state**: Completed action/result
Ask user to confirm or adjust the flow:
**Proposed Video Flow** Based on PR #[number]: [title] 1. Start at: /[starting-route] 2. Navigate to: /[feature-route] 3. Demonstrate: - [Action 1] - [Action 2] - [Action 3] 4. Show result: [success state] Estimated duration: ~[X] seconds Does this look right? 1. Yes, start recording 2. Modify the flow (describe changes) 3. Add specific interactions to demonstrate
</plan_flow>
4. Setup Video Recording
<setup_recording>
**Create videos directory:**
mkdir -p tmp/videos
**Recording approach: Use browser screenshots as frames**
agent-browser captures screenshots at key moments, then combine into video using ffmpeg:
ffmpeg -framerate 2 -pattern_type glob -i 'tmp/screenshots/*.png' -vf "scale=1280:-1" tmp/videos/feature-demo.gif
</setup_recording>
5. Record the Walkthrough
<record_walkthrough>
Execute the planned flow, capturing each step:
**Step 1: Navigate to starting point**
agent-browser open "[base-url]/[start-route]" agent-browser wait 2000 agent-browser screenshot tmp/screenshots/01-start.png
**Step 2: Perform navigation/interactions**
agent-browser snapshot -i # Get refs agent-browser click @e1 # Click navigation element agent-browser wait 1000 agent-browser screenshot tmp/screenshots/02-navigate.png
**Step 3: Demonstrate feature**
agent-browser snapshot -i # Get refs for feature elements agent-browser click @e2 # Click feature element agent-browser wait 1000 agent-browser screenshot tmp/screenshots/03-feature.png
**Step 4: Capture result**
agent-browser wait 2000 agent-browser screenshot tmp/screenshots/04-result.png
**Create video/GIF from screenshots:**
# Create directories mkdir -p tmp/videos tmp/screenshots # Create MP4 video (RECOMMENDED - better quality, smaller size) # -framerate 0.5 = 2 seconds per frame (slower playback) # -framerate 1 = 1 second per frame ffmpeg -y -framerate 0.5 -pattern_type glob -i 'tmp/screenshots/*.png' \ -c:v libx264 -pix_fmt yuv420p -vf "scale=1280:-2" \ tmp/videos/feature-demo.mp4 # Create low-quality GIF for preview (small file, for GitHub embed) ffmpeg -y -framerate 0.5 -pattern_type glob -i 'tmp/screenshots/*.png' \ -vf "scale=640:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=128[p];[s1][p]paletteuse" \ -loop 0 tmp/videos/feature-demo-preview.gif
**Note:**
- The `-2` in MP4 scale ensures height is divisible by 2 (required for H.264)
- Preview GIF uses 640px width and 128 colors to keep file size small (~100-200KB)
</record_walkthrough>
6. Upload the Video
<upload_video>
**Upload with rclone:**
# Check rclone is configured rclone listremotes # Upload video, preview GIF, and screenshots to cloud storage # Use --s3-no-check-bucket to avoid permission errors rclone copy tmp/videos/ r2:kieran-claude/pr-videos/pr-[number]/ --s3-no-check-bucket --progress rclone copy tmp/screenshots/ r2:kieran-claude/pr-videos/pr-[number]/screenshots/ --s3-no-check-bucket --progress # List uploaded files rclone ls r2:kieran-claude/pr-videos/pr-[number]/
Public URLs (R2 with public access):
Video: https://pub-4047722ebb1b4b09853f24d3b61467f1.r2.dev/pr-videos/pr-[number]/feature-demo.mp4 Preview: https://pub-4047722ebb1b4b09853f24d
A personal operating system powered by Claude. Strategic work management, meeting intelligence, relationship tracking, daily planning — all configured for your specific role. No coding required.
Repo: davekilleen/Dex
Other commands on davekilleen-dex.
- /agent-native-audit
Run comprehensive agent-native architecture review with scored principles
Open command - /changelog
Create engaging changelogs for recent merges to main branch
Open command - /create-agent-skill
Create or edit Claude Code skills with expert guidance on structure and best practices
Open command - /deepen-plan
Enhance a plan with parallel research agents for each section to add depth, best practices, and implementation details
Open command - /deploy-docs
Validate and prepare documentation for GitHub Pages deployment
Open command - /generate_command
Create a new custom slash command following conventions and best practices
Open command

