Authoring workflow
The end-to-end flow for authoring a new movement from scratch. Plan to spend 5–15 minutes per movement once you’re fluent.
Setting
You’re standing in front of the camera. The Studio’s open. Phases panel is empty, measurements panel shows the channel catalogue, test player at the bottom shows 0 reps + “No phase”.
Step 1. Add phases
Phases are the building blocks. Every movement is “the user traverses these phases in this order, that’s one rep.”
- Open the Phases panel (left column).
- Tap Add phase. Name it (e.g. “Down”). It appears as a tile with the default colour.
- Tap Add phase again. Name it (“Up”).
- Drag the tiles to reorder if needed. The order defines the cycle.
Most strength movements need 2 phases. Some need more:
- Lateral shuffle: 2 (Left / Right).
- Alternating lunge: 4 (Left Down / Up / Right Down / Up 2).
- Burpee: 3 (Stand / Squat / Plank).
- Skater: 2 (Left Plant / Right Plant).
See phases for naming + ordering tips.
Step 2. Select the active phase
Tap a phase tile. It gets a fill highlight (“selected”). The Measurements + Conditions panels now show measurements + conditions for THIS phase.
(Different from the green-bordered “detected” highlight that flares when the live tracker is in that phase, selected = what you’re editing, detected = where the user is. Both can coexist.)
Step 3. Pick measurements
Open the Measurements panel (right column). Two ways to drop measurements:
A. Preset chips (recommended)
At the top of the measurements panel, a grid of curated chips:
- Stance: wide, narrow
- Hand spread: together, apart
- Hand height: above head, at chest, by side
- Body in frame: on left of frame, centred, on right of frame
- Knees: deep, straight, deep right, straight right
- Elbows: bent, straight, bent right, straight right
- Body posture: stood up, crouched down, hands raised, hands lowered, jumped up
Tap a chip → it drops the underlying tracking points + a pre-tuned condition into the currently-selected phase. The chip lights green when applied.
B. Manual channel pick
Scroll the channel catalogue below the chips. Channels are grouped by kind (Joint angles · Distances · Ratios · Position · Velocity · Stability · Diagnostics). Tick the row to enable that channel as a condition on the current phase.
Long-press / tap the ⓘ button on any row to see what the channel measures and how it’s calculated.
Step 4. Tune conditions
Switch to the Conditions panel (right, below Measurements). Each enabled measurement gets a row with:
- The channel name + kind badge (angle / distance / ratio / …).
- A min/max number input pair.
- A horizontal range bar with a moving ball (the live value). Green when in range, red when out.
- A “Snap to current” button, captures the live value as the centre, with the channel’s default tolerance applied.
- An optional “Δ from phase entry” toggle for baseline-relative channels.
- Per-rule cue text + severity + trigger (if you want explicit form feedback for this condition).
The fastest authoring is:
- Get into the position the phase represents (e.g. squat down).
- Tap “Snap to current” on each condition.
- Verify the ball lands green when you’re in that position + red when you move away.
See conditions for the full editor.
Step 5. Verify the cycle
Stand in front of the camera and do the movement.
- The active phase tile lights up with a thick green border + bold text when the tracker decides you’re in that phase.
- The rep counter chip (top right of test player) ticks each time you complete the phase sequence.
- The detected-bucket chip (top of camera angles panel) shows where you’re physically standing.
- The toast deck flashes any triggered form feedback.
If reps aren’t ticking:
- Are all phases reachable? Look at the sequence progress stepper, for each authored sequence, it shows which phase you’re at. If the stepper sticks on one phase, your transition conditions aren’t being satisfied.
- Are conditions too strict? Loosen the range bands and try again.
- Are conditions on the wrong phase? You may have selected the wrong phase when dropping conditions.
Step 6. Author bucket variants (optional)
If your movement has view-dependent measurements (spine lean, shoulder abduction), open the Camera angles panel.
- The header chip shows the live-detected bucket.
- The 3×5 grid (Head / Hip / Feet × 90L / 45L / Front / 45R / 90R) represents the orbit. The cell with a filled fill is the authoring target.
- Tap a different cell to switch the authoring target. The conditions panel re-renders showing bands for the new bucket.
- Re-tune the bands for the new view.
See camera buckets.
Step 7. Pin sequences (optional)
For most movements the cycle is the phase order, auto-cycle. But some movements have multiple valid paths (alternating lunge = left-down → up → right-down → up). Open the Sequences section inside the Phases panel:
- Tap “Pin sequence” → captures the current phase order as a named sequence.
- Add additional sequences for alternate paths.
- The runtime accepts a rep on ANY authored sequence.
The sequence progress stepper below the Phases panel shows you, live, where you are in each authored sequence.
See phase sequences.
Step 8. Save
Top bar → Save. The Studio writes:
- The
.posefile into your catalog. - A
studio_versions/{timestamp}snapshot. - The phase definitions to your phases repository.
Use the dropdown chevron next to Save for:
- Save & Publish: sets
status: PUBLISHEDso consumer apps can filter for it. - Export .pose: download / share the JSON.
- Import .pose: load a previously-exported file into the editor.
- Import image / video: drop a marker on a static still / recorded clip to seed a phase. (See import / export.)
What you’ve authored
A complete Movement:
- Phases (with transitions gated on tracking-point conditions).
- Tracking points (one per channel you enabled).
- Form rules (one per condition you set, if you authored cues).
- Rep detection (auto-cycle or your pinned sequences).
- Angle bands (one per condition × bucket combination).
The .pose file is now in your catalog. Any consumer of the SDK
that loads it via Movement.fromJson(...) →
LoadMovementArgs.from(...).applyTo(tracker) will count
reps and surface form feedback identically to what you just saw
in the test player.
Read next
- Phases, Measurements, Conditions, deep dives on each panel.
- Phase sequences.
- Camera buckets.
- Form feedback, authoring cue text.
- Import/export.