Sets & syntax
Inside an exercise block, every line describes one set. The basic shape is:
[flag] <reps> @<weight> [flags]
Rep forms
| You write | Meaning |
|---|---|
5 | 5 reps |
5+ or amrap | As many reps as possible (at least the target) |
8-12 | Rep range — log anywhere from 8 to 12 |
3x8 | Shorthand for 3 sets of 8 |
30s | A 30-second (time-based) set |
1m30s | A 90-second set |
program.reptoOpen in Playground
Weight forms
Weights come after an @:
| You write | Meaning |
|---|---|
@%85 | 85% of this exercise's training max |
@%85 of Squat | 85% of another exercise's training max |
@135lbs / @60kg | A fixed load |
@BW | Bodyweight (pull-ups, dips, push-ups) |
@BW+20kg / @BW+45lbs | Bodyweight plus added load |
program.reptoOpen in Playground
Flags
Flags annotate a set. warmup goes before the reps; drop and failure go after the
weight:
| Flag | Effect |
|---|---|
warmup | Warm-up set — excluded from working volume |
drop | Drop set |
failure | Taken to failure |
program.reptoOpen in Playground
Exercise options
An exercise block can also carry options before its sets:
Bench Press {
rest: 3m // rest between sets
intensity: rpe // log RPE on each set (rpe | rir)
notes: "Pause on chest"
5 @%80
}
Supersets
Group exercises into a superset — they share a single rest timer:
program.reptoOpen in Playground
Comments
Use // for line comments. They're preserved with your program, so annotate freely:
Squat (Back Squat) {
5 @%85 // top set — push it
// back-off sets below
3x5 @%75
}
Next up: making programs adapt over time with progressions & hooks.