Gym Coach
Two halves that share one folder of markdown. A Claude skill acts as a training coach mid-session: it reads a state file, prescribes weights, logs sets typed one-handed at the rack, awards XP, and writes the session back. An Astro site then builds a progress board straight from those files.
ASimulated demo
This demo is built for a wider screen. Open it full screen for the best look on a phone.
The coach replay is scripted and every weight, rank and streak is made up. The real coach runs inside a Claude chat and stores logs in a cloud drive folder.
BTry this
Watch a session
Set results arrive in any format. The coach logs, decides hold or build, and tallies XP at the end.
Switch to the site
The Board is what the Astro build produces from those logs: one row per lift with weight, rep range, rank and trend.
Open a lift
Click any row for its estimated one-rep-max progression, rank proximity ring and session history.
Notice what is missing
There is no red anywhere. A missed week or a lighter day is shown neutrally, by design.
CWhat it does
Key highlights
- The coach reads exactly one state file at session start and writes two files at the end. Zero calls between sets, so nothing lags while you are standing at the rack.
- Progression rules, rep ranges, substitutions, cues and the rank ladder live in plain markdown reference files. Changing the program is editing a document.
- XP, levels, streaks and achievements make consistency the path of least resistance without nagging about misses.
- The progress site is fully static: no server, no database, no write path. Figures are transcribed from the log rather than recomputed, so the board and the coach can never disagree.
- Three different session log formats are parsed, with a curated alias map so "seated row" and "chest-supported row" become the right lift.
How it is built
- CoachClaude skill, markdown prompt
- Reference filesgoals, training style, voice
- Log storeCloud drive folder
- SiteAstro 7, static output
- ParsersTypeScript, node:test
- ChartsECharts
- PagesBoard, lift, session, calendar
- GuardrailsGrep checks in CI docs
Design choices
Cool neutrals with a single pine-green accent. The palette contains no token for a negative outcome and no three-step ramp that could read as one, so a bad week is unstyleable as such by omission rather than by discipline.