.cursor/skills/assemble-video/SKILL.md
Assemble a narrated video from a TOML project file using the committed assembler script. Use when the user says /assemble-video and provides an android.toml or ios.toml path, or wants to generate audio for the audio-first workflow.
npx skillsauth add baijum/ukulele-companion assemble-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.
Runs scripts/assemble_video.py to assemble per-scene video clips with AI-generated voiceover narration and branding jingles into a final MP4.
ffmpeg on PATHtomllib)OPENAI_API_KEY in ~/.secretspip install openai/record-clips to create them)source ~/.secrets
python3 scripts/assemble_video.py docs/videos/<feature>/android.toml
Replace android.toml with ios.toml for iOS videos.
The script:
tpad to match narration durationconcat filterGenerate audio first to know exact clip durations before recording:
# Step 1: Generate audio, print required clip durations
source ~/.secrets
python3 scripts/assemble_video.py docs/videos/<feature>/android.toml --audio-only
# Step 2: Record clips using the printed durations
# Use /record-clips skill
# Step 3: Assemble final video
python3 scripts/assemble_video.py docs/videos/<feature>/android.toml
Each feature has per-platform TOML files in docs/videos/<feature>/:
android.toml -- Android-specific scenes, recording notes, and resolutionios.toml -- iOS-specific scenes, recording notes, and resolutionAudio (audio/ directory) is shared across platforms since narration is platform-agnostic.
[project]
title = "Feature Name - Ukulele Companion"
output = "../../feature-videos/android/feature-name.mp4"
resolution = "1080x2424"
[branding]
intro = "../../jingle-intro.wav"
outro = "../../jingle-outro.wav"
[voiceover]
model = "tts-1-hd"
voice = "nova"
volume_boost = 3.0
[[scene]]
name = "scene-name"
video = "clips/android/01-scene.mp4"
audio = "audio/01-scene.mp3"
narration = """Narration text."""
delay = 1.0
min_clip_duration = 25
See existing projects at docs/videos/explorer/android.toml and docs/videos/tuner/android.toml for full examples.
mkdir -p docs/videos/<feature>/clips/android docs/videos/<feature>/clips/ios docs/videos/<feature>/audioandroid.toml (and/or ios.toml) with scenes and narration--audio-only to generate audio and see required clip durations/record-clips to record scene clips/record-clips -- Record scene clips for a TOML projecttools
Record scene video clips for a TOML video project. Reads the android.toml or ios.toml to get the scene list and min_clip_duration, navigates to each screen via ADB (Android) or simctl (iOS), and records individual clips. Use when the user says /record-clips and provides a TOML path.
tools
Upload a release AAB to Google Play Store using the Gradle Play Publisher plugin. Use when the user asks to upload to Play Store, publish to Google Play, deploy to internal testing, promote a release, or mentions Play Console.
development
Promote a release from Google Play internal testing to a closed testing track (Alpha or App Hive Testing). Use when the user asks to promote a release, move to closed testing, push to alpha, push to App Hive Testing, or mentions track promotion.
development
Promote a release to Google Play open testing or production tracks. Supports full rollout and staged rollout to production. Use when the user asks to promote to open testing, beta, go to production, release to all users, staged rollout, or increase rollout percentage.