tensr.fitness

workout.md — the routine format

A routine is plain markdown. It reads fine on screen, prints on a gym clipboard, and parses cleanly back into tensr. Four properties on purpose: machine readable, human readable, printable, and useful by itself.

Minimal example

---
title: Upper Hypertrophy — Push
---

# Day A

## Barbell Bench Press: 4x6-8 rest:150

## Incline Dumbbell Press: 3x8-12 rest:90

## Cable Crossover: 3x12-15 rest:60

Grammar

PieceShapeNotes
Frontmatter--- … ---YAML. title is optional (untitled routines get Finder-style numbering).
Day# Day A / # Mon / # PushOne # heading per training day. Omit entirely for a single-workout routine. Labels like Mon or Push carry across to every surface.
Movement## Name: SETSxREPSAn h2 per movement. The name resolves against the open movement catalog (or stays a custom name).
Prescription4x8 · 3x8-12SETS x REPS. Reps may be a single number or a range. Never invent a prescription the source doesn't state.
Restrest:90Optional, seconds, after the prescription.
Notes / cuesplain text under a movementFree prose (e.g. per leg, form cues) is preserved as movement notes.

Supersets & multi-day

Superset notation (e.g. 4a/4b pairs) is preserved from the source. A multi-day split is just multiple # day sections in one file; a single workout omits the day headings and lists movements directly.

Complete example — every feature

A single .workout.md that exercises every part of the grammar andlints clean under workoutmd lint --strict (zero diagnostics, round-trips through fmt): frontmatter, a defaults 1RM table, weekday / ordinal / rest day normalization, supersets, modalities, every prescription and resistance kind, tempo, drop sets, stop conditions, AMRAP, bullet-form movements, notes, and images.

↓ kitchen-sink.workout.md ·  curl https://docs.tensr.fitness/examples/kitchen-sink.workout.md

What each part demonstrates
---
version: 0.1
title: The Kitchen Sink — every workout.md feature
author: Eric Moore
source: https://docs.tensr.fitness/workout-md/
tags: [reference, example, strength, hypertrophy]
based_on:
  - href: https://5thirtyone.com/jim-wendler-531
    title: "5/3/1 — Jim Wendler"
difficulty: intermediate
weeks: 8
---

```defaults
units: lbs
Bench Press=225
Back Squat=315
Deadlift=405lbs(belt)
Overhead Press=140
Front Squat=115kg
Bulgarian Split Squat=50(25/hand)
```

# Monday

## A1. BB Bench Press: 5x5 @80% {3-1-2-0} rest:180

![Bench setup — arch and retracted scapulae](./media/bench-setup.jpg)

Form: Tucked elbows, scapulae retracted, feet driving into the floor.
Bar path travels over the base of the sternum.
Reason: Primary horizontal press; loaded off the 1RM table above.

## A2. SA DB Row: 5x8 @70lbs rest:90

Superset with A1 — alternate A1/A2, rest only after A2.

## B. Back Squat: 4x6-8 @315lbs {2-1-1-0} rest:2m

Notes: Earn the top of the 6–8 range before adding load.

## C. Deadlift: 3+x5 @85% 2rir

## D. Bulgarian Split Squat: 3x10 @50lbs(25/hand) rest:60

## E. Cable Crossover: 3x12-15 @BW DS-3

## F. Tricep Pushdown: 3x12+ @40lbs DS

## G. Bicep Curl: 3xAMRAP 30s @rpe8.5

# Wednesday

## A. Front Squat: 5x3 @140kg {3e-1-2c-0} rest:180

## B. Overhead Press

- sets: 4
- reps: 8+-12
- weight: @70%
- tempo: {2-0-1-0}
- rir: 2
- rest: 90
- dropset: 2

Form: Brace the ribs down and press "through the window."

## C. Lat Pulldown

- sets: 3
- reps: 10-12
- rpe: 8
- rest: 75
- stop: failure

## D. Pull-up: 4x8 @BW rest:120 failure

## E. Face Pull DB: 3x15 @20lbs

# Rest

# Day 4

## A. BB Hip Thrust: 4x12 @225lbs {1-2-1-1} rest:75

![Hip thrust — chin tucked, ribs stacked](https://docs.tensr.fitness/favicon.svg)

## B. Leg Press: 3x20 @360lbs DS(2 x 2rir)

## C. Standing Calf Raise: 4x15-20 @140lbs DS(3 x failure)

Provenance (catalog entries)

Routines curated into the open catalog carry mandatory attribution in frontmatter —source_author and source_url — so a program's origin travels with the file:

---
version: 0.1
title: Cable A/B Split (curated)
source_author: Jane Coach
source_url: https://example.com/cable-program
---

For agents

When a model proposes a program, it should emit exactly this format so the user can import it directly, and prefer catalog movement names it can confirm exist. A forthcoming workoutmd CLI validates a file against this spec with agent-legible error messages (which line, which rule, how to fix). Until then, the grammar above is the contract.

→ Teach your agent to read your data and write these