Files
OpenMontage/pipeline_defs/screen-demo.yaml
T
calesthio a36ce99793 screen-demo: add synthetic-terminal mode via Remotion TerminalScene
Make synthetic screen recording a first-class, discoverable capability
alongside real OS capture. For CLI / terminal / install-flow demos where
commands and output are predictable, author a `terminal_scene` cut instead
of driving a real screen recorder — deterministic, privacy-safe, pixel-
perfect, and frame-accurate to narration cues.

Components:
- TerminalScene.tsx: window chrome, char-by-char typing, blinking cursor,
  scrolling output, non-blocking floating pills, spring-based reveals
- ProviderChip.tsx: rotating badge overlay that cycles through provider
  names (used in AI-generated-motion scenes)
- BackgroundVideoLayer + source_in_seconds + backgroundVideo props on
  every scene type — supports video-behind-component composition

Discovery chain (six layers, so the next agent finds this without reading
source code):

1. pipeline_defs/screen-demo.yaml — bump to 2.1, declare production_modes
   (real_capture, synthetic_terminal) with required_tools, scene_type, and
   agent_skills pointers
2. skills/pipelines/screen-demo/idea-director.md — mode-selection table
   at brief time; brief.metadata.production_mode contract
3. skills/pipelines/screen-demo/asset-director.md — reads production_mode
   and branches asset production (capture+overlays vs steps+narration+
   pacing check)
4. .agents/skills/synthetic-screen-recording/SKILL.md — Layer 3 skill with
   step kinds (cmd/out/pause/pill), pacing rule, and the frozen-terminal
   failure mode captured from the showcase v3 retune
5. AGENT_GUIDE.md — TerminalScene added to Remotion routing; links
   SCENE_TYPES.md as the authoritative cut-type registry
6. remotion-composer/SCENE_TYPES.md — new cheat sheet of every cut.type
   and overlay.type with required fields, plus a "how to add a new scene
   type" section (candidates: ChatTranscript, EditorScene, PrReview,
   SlackThread, TicketBoard)

Guardrail:
- lib/verify_scene_pacing.py — reusable trace() and assert_alignment()
  helpers that mimic the TerminalScene frame math exactly. Fail loudly
  before render if steps burn through too fast or leave the scene frozen.
2026-04-16 19:22:46 -07:00

243 lines
7.6 KiB
YAML

name: screen-demo
version: "2.1"
description: >
Screen recording pipeline. Two production modes:
1. REAL CAPTURE — takes raw screen capture (app demo, browser walkthrough,
coding tutorial) via screen_recorder, cap_recorder, or playwright-recording
and produces a polished demo video with callouts, zoom crops, subtitles,
and cleaned audio.
2. SYNTHETIC (Remotion TerminalScene) — for CLI/terminal/install-flow demos,
renders a deterministic terminal animation with typed commands, scrolling
output, floating command pills, and blinking cursor. See
.agents/skills/synthetic-screen-recording/SKILL.md. Preferred when the
demo content is predictable (install walkthroughs, make targets, git clone,
API key config) because it's faster to iterate, privacy-safe, pixel-perfect,
and frame-accurate to narration cues.
The idea-director picks the mode at brief time based on whether the demo surface
is a real app UI (real capture) or a scriptable terminal session (synthetic).
category: screen_recording
stability: production
default_checkpoint_policy: guided
# Production modes this pipeline supports
production_modes:
- name: real_capture
description: "OS screen recording of a real desktop/browser session"
required_tools: [screen_recorder]
optional_tools: [cap_recorder]
best_for:
- Real app UIs (Figma, Photoshop, web apps with live state)
- Demos that depend on unpredictable live behavior
- User explicitly asked for a recording of their own screen
- name: synthetic_terminal
description: "Remotion TerminalScene — synthesized terminal animation"
required_tools: [video_compose] # Remotion path
scene_type: terminal_scene
agent_skills: [synthetic-screen-recording]
best_for:
- CLI / terminal / coding session demos
- Install walkthroughs, setup demos, config flows
- Tight narration-synced pacing where every command lands on a beat
- Reproducible renders (same input = identical pixels)
orchestration:
mode: executive-producer
skill: pipelines/screen-demo/executive-producer
budget_default_usd: 1.00
max_revisions_per_stage: 3
max_send_backs: 3
max_wall_time_minutes: 10
extensions:
custom_scripts: true
custom_playbooks: true
custom_skills: true
custom_tools: false
required_skills:
- pipelines/screen-demo/executive-producer
- pipelines/screen-demo/idea-director
- pipelines/screen-demo/script-director
- pipelines/screen-demo/scene-director
- pipelines/screen-demo/asset-director
- pipelines/screen-demo/edit-director
- pipelines/screen-demo/compose-director
- pipelines/screen-demo/publish-director
- meta/reviewer
- meta/checkpoint-protocol
compatible_playbooks:
recommended:
- minimalist-diagram
- clean-professional
also_works: []
custom_allowed: true
stages:
- name: idea
skill: pipelines/screen-demo/idea-director
produces:
- brief
- decision_log
tools_available: []
checkpoint_required: true
human_approval_default: true
review_focus:
- Brief accurately describes what the screen recording demonstrates
- Target platform and duration are realistic
- Callout strategy identified (what to highlight)
success_criteria:
- Schema-valid brief artifact
- Brief references the provided screen recording footage
- name: script
skill: pipelines/screen-demo/script-director
required_artifacts_in:
- brief
optional_artifacts_in:
- source_media_review
produces:
- script
required_tools:
- transcriber
optional_tools:
- scene_detect
- audio_enhance
tools_available:
- transcriber
- scene_detect
checkpoint_required: true
human_approval_default: true
review_focus:
- Transcription captures any voiceover accurately
- Key UI actions are annotated with timestamps
- Sections align with logical workflow steps
success_criteria:
- Schema-valid script artifact
- Script sections have timestamps from transcript or manual annotation
- name: scene_plan
skill: pipelines/screen-demo/scene-director
required_artifacts_in:
- script
optional_artifacts_in:
- brief
produces:
- scene_plan
required_tools: []
optional_tools:
- frame_sampler
tools_available:
- frame_sampler
checkpoint_required: true
human_approval_default: true
review_focus:
- Zoom-crop regions identified for key UI moments
- Callout overlay positions don't obscure important UI
- Pacing allows viewer to follow the workflow
success_criteria:
- Schema-valid scene_plan artifact
- Every key workflow step has a corresponding scene
- name: assets
skill: pipelines/screen-demo/asset-director
required_artifacts_in:
- scene_plan
optional_artifacts_in:
- script
produces:
- asset_manifest
required_tools: []
optional_tools:
- subtitle_gen
- tts_selector
- image_selector
- diagram_gen
- audio_enhance
tools_available:
- subtitle_gen
- tts_selector
- image_selector
- diagram_gen
- audio_enhance
checkpoint_required: true
human_approval_default: false
review_focus:
- Subtitle file exists and matches speech timing
- Reusable callout overlays (arrows, highlights, masks) are prepared
- Audio cleaned of keyboard noise and background hum
success_criteria:
- Schema-valid asset_manifest artifact
- All referenced asset files exist on disk
- name: edit
skill: pipelines/screen-demo/edit-director
required_artifacts_in:
- scene_plan
- asset_manifest
optional_artifacts_in:
- script
produces:
- edit_decisions
tools_available: []
checkpoint_required: true
human_approval_default: false
review_focus:
- Zoom-crop notes are smooth and minimal (no constant motion)
- Dead time (loading, typing pauses) trimmed or sped up
- Callout timing matches narration
success_criteria:
- Schema-valid edit_decisions artifact
- All cuts reference valid source files and assets
- name: compose
skill: pipelines/screen-demo/compose-director
required_artifacts_in:
- edit_decisions
- asset_manifest
optional_artifacts_in:
- scene_plan
produces:
- render_report
- final_review
required_tools:
- video_compose
- audio_mixer
optional_tools:
- video_trimmer
- audio_enhance
tools_available:
- video_compose
- audio_mixer
- video_trimmer
- audio_enhance
checkpoint_required: true
human_approval_default: false
review_focus:
- Output video is playable and crisp at target resolution
- UI text remains readable after crops and scaling
- Audio is clear with no keyboard/click noise
success_criteria:
- Schema-valid render_report artifact
- Output file exists and passes ffprobe validation
- name: publish
skill: pipelines/screen-demo/publish-director
required_artifacts_in:
- render_report
- final_review
optional_artifacts_in:
- brief
produces:
- publish_log
tools_available: []
checkpoint_required: true
human_approval_default: true
review_focus:
- Metadata includes relevant software/tool keywords
- Chapter markers align with workflow steps
- Export package is complete
success_criteria:
- Schema-valid publish_log artifact
- Export directory contains video, metadata, and thumbnail concept