Source profileQuality 92/100

event4u-app/agent-config/src/skills/motion-choreographer/SKILL.md

motion-choreographer

Use when turning a locked still + blueprint into a provider-tuned motion prompt — camera, primary + secondary motion, physics, native-audio sync. Triggers 'motion prompt for Veo/Kling/Sora'.

Source repository stars
7
Declared platforms
0
Static risk flags
0
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

Turn an approved still + the 12-block scene blueprint into a provider-tuned motion prompt that the target video adapter consumes. Camera choreography, primary subject motion, secondary environment motion, physics constraints, and — when the adapter declares audio: native — a syn…

Best for

  • An image is locked (operator picked one candidate via
  • The blueprint exists in scenes//blueprint.json but the
  • A provider switch (Veo → Kling, Sora → Higgsfield) requires the

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/event4u-app/agent-config --skill "src/skills/motion-choreographer"
Safe inspection promptEditorial

Inspect the Agent Skill "motion-choreographer" from https://github.com/event4u-app/agent-config/blob/0adf49a8ae84b0ff6e2de8759eea43257e020eff/src/skills/motion-choreographer/SKILL.md at commit 0adf49a8ae84b0ff6e2de8759eea43257e020eff. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Procedure

    1. Read scenes//blueprint.json — fail loud if missing. 2. Read scenes//selection.json — fail loud if missing; the locked image path is required as the motion anchor. 3. Read the target adapter's capability via scripts/ai-video/adapters/.sh capability. Cache audio= for Step 3. 4.…

    Read scenes//blueprint.json — fail loud if missing.Read scenes//selection.json — fail loud if missing; theRead the target adapter's capability via
  2. 02

    Step 0: Inspect

    1. Read scenes//blueprint.json — fail loud if missing. 2. Read scenes//selection.json — fail loud if missing; the locked image path is required as the motion anchor. 3. Read the target adapter's capability via scripts/ai-video/adapters/.sh capability. Cache audio= for Step 3. 4.…

    Read scenes//blueprint.json — fail loud if missing.Read scenes//selection.json — fail loud if missing; theRead the target adapter's capability via
  3. 03

    Step 1: Camera choreography

    Emit a CAMERA MOTION block with the move type, distance, speed in seconds, and start-end framing.

    Move types: lock-off, pan, tilt, dolly-in, dolly-out, truck,Speed in seconds per beat (0.4s push, hold 1.6s, 0.4s pull).Start and end framing named (MS → CU, WS → MS).
  4. 04

    Step 2: Primary + secondary motion

    1. PRIMARY MOTION — what the subject does, beat-counted, with physics anchors (mass, contact points, momentum). Reuse ACTION from the blueprint; refine for the adapter's preferred verb density. 2. SECONDARY MOTION — what the world does (hair, fabric, foliage, water, dust, partic…

    PRIMARY MOTION — what the subject does, beat-counted, withSECONDARY MOTION — what the world does (hair, fabric,1. PRIMARY MOTION — what the subject does, beat-counted, with physics anchors (mass, contact points, momentum). Reuse ACTION from the blueprint; refine for the adapter's preferred verb density. 2. SECONDARY MOTION — wha…
  5. 05

    Step 3: Audio direction (conditional)

    If adapter capability is audio: native AND the blueprint's audio.enablenativeaudio is true:

    DIALOGUE TIMING — speaker @ 0.4s: "line" per dialogue entry.AMBIENT LAYERS — copy from blueprint; one layer per line.SYNC CUES — which action beat maps to which audio cue

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score92/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars7SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
event4u-app/agent-config
Skill path
src/skills/motion-choreographer/SKILL.md
Commit
0adf49a8ae84b0ff6e2de8759eea43257e020eff
License
MIT
Collected
2026-07-28
Default branch
main
View the original SKILL.md

motion-choreographer

Turn an approved still + the 12-block scene blueprint into a provider-tuned motion prompt that the target video adapter consumes. Camera choreography, primary subject motion, secondary environment motion, physics constraints, and — when the adapter declares audio: native — a synchronized audio direction block. Reads adapter capabilities from adapter-contract.md; never speaks to a network API.

When to use

  • An image is locked (operator picked one candidate via operator-pick.sh) and the next step is motion + audio direction for the video adapter.
  • The blueprint exists in scenes/<id>/blueprint.json but the motion prompt has not been emitted yet.
  • A provider switch (Veo → Kling, Sora → Higgsfield) requires the same scene retuned for the new adapter's capability profile.

Do NOT use when:

  • The blueprint is still prose only — run scene-expanderparse-blueprint.sh first.
  • No still has been locked — the operator-selection checkpoint must complete first.
  • The output is a still graphic — canvas-design.

Procedure

Step 0: Inspect

  1. Read scenes/<id>/blueprint.json — fail loud if missing.
  2. Read scenes/<id>/selection.json — fail loud if missing; the locked image path is required as the motion anchor.
  3. Read the target adapter's capability via scripts/ai-video/adapters/<id>.sh capability. Cache audio=* for Step 3.
  4. If a character.json lock exists, load it verbatim — identity tokens are immutable.

Step 1: Camera choreography

Emit a CAMERA MOTION block with the move type, distance, speed in seconds, and start-end framing.

  • Move types: lock-off, pan, tilt, dolly-in, dolly-out, truck, pedestal, push, pull, handheld, gimbal-glide, crane, whip.
  • Speed in seconds per beat (0.4s push, hold 1.6s, 0.4s pull).
  • Start and end framing named (MS → CU, WS → MS).

Blueprint intent-class decoding — the blueprint CAMERA block names one of six provider-agnostic intent classes; map it to the move types above before encoding:

Intent classMove-type mapping
static holdlock-off
push-inpush / dolly-in
pull-backpull / dolly-out
lateral tracktruck / pan
handheld drifthandheld / gimbal-glide
orbitcrane / arc via truck+pan

Adapter quirks (per-provider encoding of the mapped move):

  • Veo — accepts named moves; prefers ≤ 8s clips.
  • Kling — motion intensity 0–1 token; map our speed to that.
  • Sora — natural-language move + duration; no token.
  • Higgsfield — preset-driven; pick the preset that matches the move; record the preset id in the motion prompt.
  • LENS handling — blueprint mm + aperture translate to the provider's nearest lens / FOV idiom; never forward raw mm to a provider that lacks lens grammar.
  • DURATION handling — the blueprint value is free; clamp to the provider ceiling here and record the clamp in review.md (a silent clamp is a drift bug).

Step 2: Primary + secondary motion

Two blocks:

  1. PRIMARY MOTION — what the subject does, beat-counted, with physics anchors (mass, contact points, momentum). Reuse ACTION from the blueprint; refine for the adapter's preferred verb density.
  2. SECONDARY MOTION — what the world does (hair, fabric, foliage, water, dust, particles, breath). One layer per line.

Step 3: Audio direction (conditional)

If adapter capability is audio: native AND the blueprint's audio.enable_native_audio is true:

Emit an AUDIO DIRECTION block with:

  • DIALOGUE TIMINGspeaker @ 0.4s: "line" per dialogue entry.
  • AMBIENT LAYERS — copy from blueprint; one layer per line.
  • SYNC CUES — which action beat maps to which audio cue (footstep @ 1.2s, door close @ 2.1s).

If adapter capability is audio: none:

  • Emit a # AUDIO: ffmpeg-mux fallback comment with the blueprint's audio paths queued for stitch-time mux.
  • Set enable_native_audio: false in the motion-prompt JSON.
  • Blueprint carries DIALOGUE → the mux fallback cannot speak text lines. Emit a mandatory AUDIO DOWNGRADE warning block in motion-prompt.txt AND adapter-notes.md listing every dialogue line that will not render. The decision whether that is acceptable belongs to the orchestrator gate (adapter-contract § Audio ownership) — this skill translates, it never validates, and it NEVER silently strips dialogue.

Step 4: Physics constraints

Emit PHYSICS — a short list of what the model must respect: gravity direction, contact friction, fluid behavior, hair / cloth inertia, lens parallax. Single line per constraint.

Step 5: Emit motion-prompt JSON

Write scenes/<id>/motion-prompt.json with the adapter-contract stdin shape. The orchestrator pipes this into the video adapter's submit subcommand.

Step 6: Validate

  1. JSON parses (jq .).
  2. requires.audio_native is consistent with the chosen adapter's capability.
  3. Duration in the motion prompt matches blueprint duration ±0.
  4. Identity tokens (if character.json exists) are verbatim.

Output format

  1. scenes/<id>/motion-prompt.json — adapter-contract stdin.
  2. scenes/<id>/motion-prompt.txt — labeled prose blocks (CAMERA MOTION · PRIMARY MOTION · SECONDARY MOTION · AUDIO DIRECTION · PHYSICS) for operator review.
  3. scenes/<id>/adapter-notes.md — which adapter, which capability, which preset / model, with rationale.

Gotcha

  • The model wants to "improve" the blueprint's SUBJECT block — identity tokens are immutable; refuse the temptation.
  • Picking audio: native on an adapter that returns audio: none produces silent video — always read capability first, never guess from the adapter name.
  • Higgsfield preset id must be recorded; otherwise the rerun drifts to whichever preset the model picks on the next call.
  • Sora durations > 8s often degrade — clamp at the adapter table limit; surface the clamp to the operator.

Do NOT

  • Do NOT emit motion prompts for an adapter whose capability you did not query this turn.
  • Do NOT skip the still-locked check — motion direction without an anchored image diverges on every call.
  • Do NOT paraphrase identity tokens from character.json.
  • Do NOT call any network API — this skill is provider-tuning prose only.

Policies

Motion prompts inherit every constraint the upstream blueprint carries. Before emitting provider-tuned prose:

Refuse-and-surface; the motion prompt cannot launder a policy gap upstream skills should have caught.