Reely docs

Reely turns an iOS feature into a clean, auto-zoomed, captioned sizzle reel — from inside your own AI coding agent. You stay in Claude Code (or any MCP host); it authors a faithful mock of your feature and calls Reely’s local run_reel tool, which builds, drives the Simulator, records, composites the look, and opens the finished reel in the Reely viewer.

You, in your agent

“Make a sizzle reel of the onboarding flow.”

/reely-sizzle-reel skill

Authors a mock + FeatureAdapter + FlowSpec (your key, no LLM cost to us).

run_reel (Reely engine)

build → Simulator → drive → record → composite → opens the viewer.

The authoring half is the LLM’s job. The rendering half — run_reel — is Reely’s deterministic engine, exposed as a local stdio MCP tool and shared with the reely run CLI.

Installation

Reely is macOS-only and uses your local Xcode + iOS Simulators. Setup is three parts: install the tooling once per machine, wire Reely into a repo once, then generate reels by asking your agent.

1. Prerequisites (once per machine)

  • Xcode 26 toolchain and xcodegen installed (Apple Silicon recommended).
  • Claude Code (claude) installed and authenticated — logged in, or ANTHROPIC_API_KEY set.
  • ffmpeg / ffprobe on PATH (used for verification only).

2. Build the binary and the viewer

Build a stable reely binary (.mcp.json points at it — don’t use swift run, its path is ephemeral), then build and launch the viewer once so macOS associates .reelyproj with it.

bash
cd /path/to/Reely
swift build -c release            # → .build/release/reely

cd Editor && xcodegen generate
xcodebuild -project ReelyEditor.xcodeproj -scheme ReelyEditor \
  -destination 'platform=macOS' -derivedDataPath build
open "build/Build/Products/Debug/Reely Editor.app"   # registers it, then quit

3. Wire Reely into your project (once per repo)

Point install at the iOS project you want reels for:

bash
/path/to/Reely/.build/release/reely mcp install --repo /path/to/YourProject

This writes, non-destructively (existing entries are preserved):

File (in your repo)What it does
.mcp.jsonRegisters the reely stdio MCP server (absolute binary path + a 15-min tool timeout).
.claude/settings.jsonPre-approves mcp__reely__run_reel so the call never blocks on a permission prompt.
.claude/skills/reely-sizzle-reel/Copies the authoring skill into the repo, and materializes .reely/scaffold/.

Re-run install any time you rebuild the binary at a new path, or to refresh the skill.

4. Verify

Run claude in your repo, approve the project’s MCP server when prompted, and confirm with /mcp — you should see reely connected. For a no-authoring smoke test, install into the Reely repo itself and run the tool against the bundled harness:

text
Call run_reel with harness Harness/ReelyHarness.xcodeproj,
scheme ReelyHarness, spec Fixtures/create-project.flowspec.json.

If the viewer pops up on a finished reel, the whole pipeline is healthy.

The run_reel tool

Everything below is one tool. Your agent calls it; you steer it with a plain-English prompt. Paths are relative to the repo root. It is single-flight — it shares one Simulator + scratch dir, so a second concurrent call is rejected until the first finishes.

ArgumentRequiredDefaultNotes
harnessrequiredPath to the recording target .xcodeproj / .xcworkspace (relative to the repo).
schemerequiredScheme of the recording target.
specrequiredPath to the Flow Spec JSON — the ordered steps to drive.
deviceiPhone 16 ProSimulator device name. Must exist in xcrun simctl list devices.
outputout/reel.mp4Output video. A sibling .reelyproj bundle is always written next to it.
effectstrueApply the sizzle effects: padded canvas, auto-zoom, dead-air cuts.
themeFromAppfalseColour the background, captions and contact shadow from the app brand.
brandBundlebuilt harnessPath to the real product .app / .xcassets / app icon to theme from.
captionFontsystemCaption typeface: a curated preset, system, app, or any PostScript name.

Captions have no argument: the agent writes caption copy onto FlowSpec steps and they auto-enable from the spec content.

Use cases

Each case is a real prompt you’d type to the agent, and the reel it produces. Together they cover every parameter — go from all-defaults to a fully branded, captioned App Store preview by changing what you ask for.

1

A clean reel, all defaults

The baseline. The skill authors a brand-faithful mock + FeatureAdapter + FlowSpec, then calls run_reel with only the three required paths. Device, output and effects all take their defaults.

Example reel produced by run_reel: A clean reel, all defaults
2

Self-narrating captions

Captions are not a tool parameter — the agent is the copywriter. It writes a caption field onto the hero beats of the FlowSpec, and captions auto-enable when the spec carries any copy. The run_reel call is unchanged.

Example reel produced by run_reel: Self-narrating captions
3

Brand it from the app

Theme-from-App is opt-in. With themeFromApp: true the compositor pulls the background, caption palette and contact shadow from the brand surface — and swaps captions into the app’s own embedded font.

Example reel produced by run_reel: Brand it from the app
4

Theme from a specific bundle

By default Theme-from-App reads the built harness app. Point brandBundle at the real product to extract the true palette + icon — it accepts a .app, an .xcassets, or an app-icon image.

Example reel produced by run_reel: Theme from a specific bundle
5

Pick a caption typeface

captionFont overrides the caption face. Choose one of ten preinstalled iOS presets (helvetica-neue, avenir-next, futura, gill-sans, optima, georgia, palatino, baskerville, american-typewriter, menlo), or system, app (force the extracted brand face), or any PostScript name.

Example reel produced by run_reel: Pick a caption typeface
6

Record on another device

device selects the Simulator. It must be a device name present in xcrun simctl list devices; output is device-native portrait.

Example reel produced by run_reel: Record on another device
7

Choose the output path

output sets the mp4 path (relative to the repo). A reopenable .reelyproj bundle — raw.mov + timeline.json + effects.json — is always written next to it for the viewer.

Example reel produced by run_reel: Choose the output path
8

Raw recording, no sizzle

effects: false writes a plain trim: the synced, dead-air-free recording with no padded canvas, auto-zoom or cuts. Useful when you want to grade or composite the footage yourself.

Example reel produced by run_reel: Raw recording, no sizzle
9

Everything: an App Store preview

The combined case: the skill bakes caption copy into the spec, themes from the app brand with captions in the brand face, and writes to a named path — one call, every lever.

Example reel produced by run_reel: Everything: an App Store preview

CLI fallback

Everything run_reel does is also a plain command — useful for CI or headless use. The same engine backs both.

bash
reely run \
  --harness Harness/ReelyHarness.xcodeproj --scheme ReelyHarness \
  --spec Fixtures/create-project.flowspec.json --device "iPhone 16 Pro" \
  --output out/reel.mp4 --project out/reel.reelyproj
open out/reel.reelyproj          # open it in the viewer

# Re-author the look on an existing recording, no re-record:
reely effects out/reel.mp4 --timeline out/reel.timeline.json --output reel.mp4

The same run_reel surface is what a hosted cloud-Mac renderer would expose later — moving from local to cloud is swapping the MCP endpoint, not a rewrite.