.github_gpt/skills/feature-video/SKILL.md
Record a video walkthrough of a feature and add it to the PR description
npx skillsauth add the-rabak/compound-engineering-plugin feature-videoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Record a feature walkthrough, render both MP4 and preview GIF assets, upload them, and prepare the PR demo section.
agent-browser or ffmpeg cannot be used.agent-browser CLI for capture.agent-browser, and ffmpeg. Use rclone for upload when available.Execute the full source-of-truth workflow below. Preserve every conditional branch, phase, checklist, and validation step from the original instructions. When the workflow says to ask, wait, route, or run in parallel, do that exactly.
[PR number or 'current'] [optional: base URL, default localhost:3000]
Record a video walkthrough demonstrating a feature, upload it, and add it to the PR description.
Developer Relations Engineer creating feature demo videos
This command creates professional video walkthroughs of features for PR documentation:
npm run dev for frontend)ffmpeg installed (for video conversion)rclone configured (optional, for cloud upload - see rclone skill)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.
Arguments: $ARGUMENTS
Parse the input:
http://localhost-3000)# Get current branch name
git branch --show-current
Get branch context:
git log --oneline main..HEAD
Get changed files:
git diff --name-only main...HEAD
Map files to testable routes (same as playwright-test):
| File Pattern | Route(s) |
|-------------|----------|
| app/Http/Controllers/*Controller.php | Corresponding API routes (check routes/components/) |
| app/Services/*Service.php | API routes using those services |
| src/nuxt/*/pages/* | Nuxt page routes (filesystem-based) |
| src/nuxt/*/components/* | Pages using those components |
Before recording, create a shot list:
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
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
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:
-2 in MP4 scale ensures height is divisible by 2 (required for H.264)Upload with rclone:
# Check rclone is configured
rclone listremotes
# Upload video, preview GIF, and screenshots to cloud storage
rclone copy tmp/videos/ your-remote:pr-videos/pr-[number]/ --progress
rclone copy tmp/screenshots/ your-remote:pr-videos/pr-[number]/screenshots/ --progress
# List uploaded files
rclone ls your-remote:pr-videos/pr-[number]/
Public URLs (configure your own cloud storage):
Video: https://your-storage-url/pr-videos/pr-[number]/feature-demo.mp4
Preview: https://your-storage-url/pr-videos/pr-[number]/feature-demo-preview.gif
Prepare the demo section for the MR description:
Use a clickable GIF that links to the video:
## Demo
[]([video-mp4-url])
*Click to view full video*
Save for the user to add to their MR:
cat > /tmp/mr-demo-section.md <<'DEMO'
## Demo
[]([video-mp4-url])
*Click to view full video*
DEMO
echo "Demo section saved to /tmp/mr-demo-section.md -- paste into your MR description"
# Optional: Clean up screenshots
rm -rf tmp/screenshots
# Keep videos for reference
echo "Video retained at: tmp/videos/feature-demo.gif"
Present completion summary:
## Feature Video Complete
**PR:** #[number] - [title]
**Video:** [url or local path]
**Duration:** ~[X] seconds
**Format:** [GIF/MP4]
### Shots Captured
1. [Starting point] - [description]
2. [Navigation] - [description]
3. [Feature demo] - [description]
4. [Result] - [description]
### PR Updated
- [x] Video section added to PR description
- [ ] Ready for review
**Next steps:**
- Review the video to ensure it accurately demonstrates the feature
- Share with reviewers for context
# Record video for current branch's PR
/feature-video
# Record video for specific PR
/feature-video 847
# Record with custom base URL
/feature-video 847 http://localhost-5000
# Record for staging environment
/feature-video current https://staging.example.com
Return:
tools
Package one plan execution packet into a compact ticket-local execution packet with parent refs, scope fences, feature-home ownership, and evidence commands. Use when converting plans into local tickets or when execution needs one ticket-sized context pack without the full plan.
tools
Package one plan execution packet into a compact ticket-local execution packet with parent refs, scope fences, feature-home ownership, and evidence commands. Use when converting plans into local tickets or when execution needs one ticket-sized context pack without the full plan.
testing
Run a deep adversarial review of plans and architecture before implementation. Use when validating strategy docs, contracts, roadmaps, and competitive positioning with scored findings and prioritized recommendations.
testing
Run a deep adversarial review of plans and architecture before implementation. Use when validating strategy docs, contracts, roadmaps, and competitive positioning with scored findings and prioritized recommendations.