Getting started

A ReptoLang program is a text file (.repto) made of a few directives at the top followed by one or more weeks. Here's a complete, minimal program:

1. The version directive

Every program starts with @version 1. This pins the syntax: a @version 1 program will always parse the same way, even as the language grows. Always include it.

2. Metadata

Optional @ directives describe the program. They don't affect what gets built — they just label it:

@name "PPL Hypertrophy"
@author "Coach K"
@description "6-day push/pull/legs"
@difficulty intermediate    // beginner | intermediate | advanced | elite
@category hypertrophy        // powerlifting | bodybuilding | strength | hypertrophy | ...
@unit kg                     // default weight unit: kg | lb | lbs

3. Training maxes

The tm { } block lists the training maxes that percentage-based sets are calculated from. Refer to exercises by their library name (see the exercise library):

A set written 5 @%85 then means 5 reps at 85% of that exercise's training max.

4. Weeks, days, and exercises

The body of a program is a list of weeks. Each week contains day blocks, and each day contains exercise blocks. Names are plain strings, so label them however you like:

Inside an exercise block, each line is a set. There are many ways to write one — fixed reps, rep ranges, AMRAP, time-based, bodyweight, and more. That's the next page: Sets & syntax.

5. Run it

Paste any program into the Playground to compile it instantly. The output shows the resolved weeks, days, exercises, and sets — plus any warnings (e.g. an exercise name it couldn't match). Every snippet in these docs has an Open in Playground button.