ai/cursor-content-team/skills/video-editor-handoff/SKILL.md
Structured handoff from content org to tech remotion-builder for programmatic video; Task payload, workspace_root, Remotion paths, composition id, output basename, aspect ratio, audio policy, handoff_schema_version 2 synthetic audio fields, ffmpeg recipe id.
npx skillsauth add akshay-na/dotfiles video-editor-handoffInstall 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.
handoff_schema_version: 2 — document this integer in every payload consumed by remotion-builder so Stage C can branch on audio.pipeline. Frontmatter version: 2 is the skill package version; keep both aligned for operators.
Org skill — ~/.cursor/skills/video-editor-handoff/ after stow. Use before Task → remotion-builder from content-lead, cco (only when user explicitly authorizes tech dispatch in planning), or the user.
handoff_schema_version: 2)| Field | Type | Description |
|-------|------|-------------|
| audio.pipeline | static | kokoro_whisper_v1 | Default static: checked-in assets / library paths only. kokoro_whisper_v1: remotion-builder Tasks kokoro-audio-builder before composition lock-in for staticFile stems. |
| audio.brief_path | string | Corpus-relative path to VO / audio brief (markdown or JSON). |
| audio.voice_id | string | Opaque voice id (no secrets). |
| audio.locale | string | BCP-47-ish locale tag for TTS/ASR. |
| audio.stem_output_dir | string | e.g. tools/audio-pipeline/out/<video_slug>/ (repo-relative). |
| audio.alignment_format | whisper_words_v1 | Alignment JSON shape: segments with words[] { word, start, end, probability? }. |
| audio.format | object | { sample_rate, bit_depth, channels, lufs_target, true_peak_max_dbtp } — loudness probes (ebur128 / loudnorm) use same field names. Example: lufs_target: -14, true_peak_max_dbtp: -1.0. |
| audio.tonejs_mode | off | preview | stem_prerender | render is forbidden until headless Tone.js smoke passes per governance. |
When audio.pipeline is kokoro_whisper_v1, the payload must include audio_editor_artifact (pointer to audio-editor output video-editor incorporated).
sme-* must not Task audio-editor. Only user, cco, or content-lead dispatch audio-editor (see content-foundry-agent-boundaries.mdc).audio.pipeline: static; no structured synthetic VO fields.handoff_schema_version: 2; optional audio.pipeline (default static). Add audio.* block when using Kokoro + Whisper; remotion-builder validates handoff_schema_version before Task kokoro-audio-builder.video-editor, programmatic video, Remotion, Skia, and/or ffmpeg deliverable.touches[] include encoded video under assets/video/ or assets/<channel>/ (e.g. Reels).workspace_root — content corpus git root.content_id (cf-*) and target note path when tied to a corpus atom.approved_plan_path — plan lists this phase (content-lead execution).sme-visual-brief-style notes as needed.assets/... or corpus-relative encode path, and Remotion CLI basename when rendering inside tools/remotion/out/ during implementation.ssr_headless_shell (default) vs experimental_csr (explicit sign-off).LoadSkia() reference.none (post-mux / transcode only; primary encode still via Remotion CLI unless plan says otherwise).Under corpus tools/remotion/:
video_slug — directory name under src/videos/<video_slug>/; must match Remotion Composition id and the default out/<basename>.mp4 basename for stable n8n keys.remotion_src_dir — e.g. tools/remotion/src/videos/<video_slug>/ (repo-relative from corpus root).composition_id — same string as video_slug unless a legacy exception is documented in the plan.output_basename — filename stem for tools/remotion/out/<output_basename>.mp4 (no directory); promote to assets/... per plan after QA.aspect_ratio — 16:9 | 9:16 (Reels / vertical).audio — required | optional plus free-text notes (music vs VO, levels, loop vs one-shot, rights).handoff_schema_version — 2 for payloads using audio.pipeline / structured audio.*; omit or 1 only for legacy static-audio-only handoffs (treated as audio.pipeline: static).workspace_rootcontent_id (if applicable; stable id for automation)target_note_pathapproved_plan_pathbrief_markdownvideo_slugremotion_src_dir (e.g. tools/remotion/src/videos/<video_slug>/)composition_id (typically identical to video_slug)output_basename (e.g. cf-2026-0042-topic-slug or lab-topic-slug)aspect_ratio (16:9 | 9:16)audio — v1: required | optional + free-text notes (single scalar). v2: prefer an object with mux (required | optional | silent), notes (string), and synthetic fields pipeline, brief_path, voice_id, locale, stem_output_dir, alignment_format, format, tonejs_mode per table above (default pipeline: static when omitted).audio_editor_artifact — required when audio.pipeline is kokoro_whisper_v1 (path or id to audio-editor package).render_modeskia_enabled (boolean)ffmpeg_recipe_id | noneoutput_paths_glob or explicit file targets (final assets/... when applicable)handoff_schema_version: 2, synthetic VO)handoff_schema_version: 2
workspace_root: /path/to/content-foundry
content_id: cf-2026-0999
target_note_path: staging/video/example.md
approved_plan_path: .cursor/docs/plans/2026-05-10-example-remotion.md
brief_markdown: |
60s explainer; VO + bed under narration.
video_slug: lab-audio-kokoro-smoke
remotion_src_dir: tools/remotion/src/videos/lab-audio-kokoro-smoke/
composition_id: lab-audio-kokoro-smoke
output_basename: lab-audio-kokoro-smoke
aspect_ratio: "16:9"
audio_editor_artifact: draft/video/audio-briefs/cf-2026-0999-audio.md
audio:
mux: required
notes: VO + bed under narration; Kokoro + Whisper alignment.
pipeline: kokoro_whisper_v1
brief_path: draft/video/scripts/cf-2026-0999-vo.md
voice_id: "<PLACEHOLDER_VOICE>"
locale: en-US
stem_output_dir: tools/audio-pipeline/out/lab-audio-kokoro-smoke/
alignment_format: whisper_words_v1
format:
sample_rate: 48000
bit_depth: 16
channels: mono
lufs_target: -14
true_peak_max_dbtp: -1.0
tonejs_mode: off
render_mode: ssr_headless_shell
skia_enabled: false
ffmpeg_recipe_id: none
Task target = remotion-builder (tech pack — ~/.cursor/agents/remotion-builder.md).remotion-builder explicitly for routing.sme-* must not Task remotion-builder; they hand briefs to video-editor / content-lead / user.remotion-builder returnsassets/ outputs; update atom body / registry per corpus content-foundry-validate when applicable.chief-visual-officer + chief-visual-handoff — separate from encoded video.remotion-builder uses org inherit / policy pin; do not retarget without user approval.
development
Discovery + naming convention reference for typed dev/SME/QA/devops team members in any workspace folder. Primary consumer: `tech-lead` (org-tier).
devops
Automated task classification, agent selection, and state tracking. Use when routing tasks to agents, selecting pipelines, or managing task state.
testing
Use when designing scalable systems, evaluating consistency models, planning state management, making architectural decisions, or when trade-offs around coupling, failure isolation, and reversibility need explicit reasoning before implementation.
tools
CTO/tech-lead helper — split work into disjoint shard briefs with caps (instance_cap, partition_basis, determinism keys).