Draft v0.1 - Open Workout Format

Workout Day Markdown

A readable, parseable format for describing one complete training day: strength work, hypertrophy blocks, supersets, EMOMs, AMRAPs, tests, warm-ups, finishers, and coaching notes.

The canonical specification now lives in the public open-workout-format GitHub repository. Set is the first intended consumer, not the owner of the format.

Read the v0.1 spec

Prompt generator

Turn any workout text into a conversion prompt.

Paste a workout or program, then copy a generic AI prompt that targets Open Workout Format v0.1.

Set import code

Create one code for a whole program.

Paste Open Workout Markdown and copy a Set import code. Set will create one Saved Plan per workout day.

Examples

Real-world pattern examples without copied program content.

The public format repo includes synthetic examples for tempo strength, rehab calendar days, compact week sessions, max-rep tests, note-heavy press days, and composite AMRAP work.

Minimal shape

Markdown for people. Directives for software.

The document stays useful in a normal Markdown viewer, while `::: block` sections mark the exact work the athlete should complete during the day.

# Hypertrophy System S7.3

::: block id=part-3 name="Lower Body" kind=tri-set
complete: 4 rounds
rest: 1m30s-2m
rpe: 8

- Eccentric Nordic Hamstring Curl
  reps: 5
  tempo: "Slow the eccentric as much as possible"

- Leg Extension
  reps: 10/side
  tempo: 20X2

- Banded Clamshell
  reps: 10/side
:::

Structure

One workout day is an ordered list of blocks.

A block is one unit of work: a lift prescription, circuit, interval piece, warm-up, test, or instruction section.

Required

  • An H1 title for the workout day.
  • At least one `::: block` directive for structured work.
  • A `kind` attribute on each block.

Recommended

  • `id` for stable local references.
  • `name` for display labels.
  • Field lines such as `sets`, `reps`, `rest`, `tempo`, `rpe`, `duration`, and `score`.

Block vocabulary

Broad enough for real programming.

Known kinds get specialized UI. Unknown kinds should be preserved instead of dropped, so source intent survives conversion.

warmup mobility activation strength hypertrophy skill superset tri-set circuit complex amrap emom interval tabata for-time test finisher cooldown instruction

Timed and scored work

AMRAP, EMOM, intervals, and tests fit the same model.

Completion style lives on the block. Exercise prescriptions stay as readable fields underneath each movement.

::: block id=conditioning name="AMRAP 35" kind=amrap duration=35m
score: rounds+reps

- Strict Chest-to-Bar
  reps: 3

- Wall-Facing Handstand Hold
  duration: 30s

- Clapping Push-ups
  reps: 10
:::
::: block id=emom-12 name="EMOM 12" kind=emom duration=12m interval=1m
score: completed rounds

minute 1:
- Row
  calories: 12

minute 2:
- Burpees
  reps: 10
:::

Parser contract

Preserve the source. Normalize only when safe.

Values such as `10-12`, `10/side`, `65-70% 1RM`, `31X1`, `max`, and `1m30s-2m` can be understood by software, but the original string must remain available for rendering.

1 Source plan

PDF, screenshot, coach text, spreadsheet, or manual Markdown.

2 Workout Day Markdown

The open, editable representation of what should be completed today.

3 Semantic renderer

Set can render structured instructions in review screens and the session runner.

Set clipboard transport

Set can wrap the open Markdown for compact sharing.

Raw Open Workout Markdown remains the canonical format. Set's clipboard code is only a transport envelope: `SET-OPEN-WORKOUT-v1:` followed by base64url-encoded JSON that carries the Markdown payload.

{"type":"set.openWorkout","version":1,"format":"open-workout-format","formatVersion":"0.1","payloadEncoding":"utf8","payload":"# Workout Day\n\n..."}

Adoption path

The first target is planned workouts.

Set will use Open Workout Format to improve imported workout-plan rendering before expanding toward broader conversion workflows. Future changes, examples, fixtures, and AI conversion work should happen in the GitHub repository so any coach, tool, or athlete can build against the same open specification.