Problem
TransitionPreset offers Cross Dissolve and nothing else. Final Cut ships 88 built-in transitions and over a thousand effects, titles, and generators. Documents authored in FCPKitDSL are limited to one transition purely by DSL vocabulary.
The UID problem is smaller than it looks
Effects fall into two classes, and only one needs manual capture.
1. Motion templates — UID is a path, derivable without any export
FCP ships the catalog inside the app bundle:
Final Cut Pro.app/Contents/PlugIns/MediaProviders/MotionEffect.fxp/Contents/Resources/
Templates.localized/{Transitions,Effects,Titles,Generators}.localized/
Counts on FCP Creator Studio as of 2026-08-02: 169 .motr (transitions), 592 .moti (titles), 258 .moef (effects), 116 .motn (generators). The Templates.localized/Transitions.localized tree alone holds 88 — Boomerang, Crisscross, Neon, Ombre, Organic Flip, Pan Down, and more.
Their uid is the template path, exactly as seen in our own fixtures:
Gaussian → …/Effects.localized/Blur.localized/Gaussian.localized/Gaussian.moef
Lower Third Basic → …/Titles.localized/Social.localized/Lower Third Basic.localized/…moti
2. FxPlug built-ins — opaque GUIDs, must be captured from a real export
Only these need a fixture. Known from Tests/FCPKitTests/TestData:
| Name |
UID |
| Cross Dissolve |
FxPlug:4731E73A-8DAC-4113-9A30-AE85B1761265 |
| Drop Shadow |
FxPlug:9C13F991-BC99-4DC8-B150-381D7CCE183B |
| Green Screen Keyer |
FxPlug:41122549-B8A6-470E-94DA-211294D20B62 |
| Color Correction |
FFColorCorrectionHDREffect |
| Audio Crossfade |
FFAudioTransition |
Work
- Expand
TransitionPreset with the Motion-template transitions, deriving each uid from its catalog path.
- Add an
EffectPreset equivalent for .moef effects and .moti titles.
- Keep the five known FxPlug/FF UIDs above as explicit constants.
- Do not invent UIDs. Any effect whose UID is neither path-derivable nor in the table above is out of scope until someone captures a fixture for it.
Caveat to document
These paths live inside the Final Cut Pro app bundle and can move between releases. The generated presets are a snapshot to validate on import, not a stable contract. Record the FCP version the catalog was read from, and re-verify after a Final Cut upgrade.
Localized path components (.localized directories) are another fragility: confirm whether FCP accepts the base-language path on a non-English system before claiming portability.
Tests
- A document using a template-derived transition DTD-validates.
- Effect interning still dedups when several slides share a transition.
- The five FxPlug constants match the fixture values exactly.
Acceptance criteria
swift test green.
- A generated preset list is checked in with the FCP version it came from.
- At least one non-Cross-Dissolve transition round-trips through Final Cut import (this one gate needs a human with FCP).
Context: docs/planning/demo-presentation-video.md Issue 8. Independent of the demo issues; enriches the deck without blocking it.
Problem
TransitionPresetoffers Cross Dissolve and nothing else. Final Cut ships 88 built-in transitions and over a thousand effects, titles, and generators. Documents authored inFCPKitDSLare limited to one transition purely by DSL vocabulary.The UID problem is smaller than it looks
Effects fall into two classes, and only one needs manual capture.
1. Motion templates — UID is a path, derivable without any export
FCP ships the catalog inside the app bundle:
Counts on FCP Creator Studio as of 2026-08-02: 169
.motr(transitions), 592.moti(titles), 258.moef(effects), 116.motn(generators). TheTemplates.localized/Transitions.localizedtree alone holds 88 — Boomerang, Crisscross, Neon, Ombre, Organic Flip, Pan Down, and more.Their
uidis the template path, exactly as seen in our own fixtures:2. FxPlug built-ins — opaque GUIDs, must be captured from a real export
Only these need a fixture. Known from
Tests/FCPKitTests/TestData:FxPlug:4731E73A-8DAC-4113-9A30-AE85B1761265FxPlug:9C13F991-BC99-4DC8-B150-381D7CCE183BFxPlug:41122549-B8A6-470E-94DA-211294D20B62FFColorCorrectionHDREffectFFAudioTransitionWork
TransitionPresetwith the Motion-template transitions, deriving eachuidfrom its catalog path.EffectPresetequivalent for.moefeffects and.motititles.Caveat to document
These paths live inside the Final Cut Pro app bundle and can move between releases. The generated presets are a snapshot to validate on import, not a stable contract. Record the FCP version the catalog was read from, and re-verify after a Final Cut upgrade.
Localized path components (
.localizeddirectories) are another fragility: confirm whether FCP accepts the base-language path on a non-English system before claiming portability.Tests
Acceptance criteria
swift testgreen.Context: docs/planning/demo-presentation-video.md Issue 8. Independent of the demo issues; enriches the deck without blocking it.