/workout-plan — Build the user's training plan
This skill turns the profile + trainer into a structured program and writes it
to ~/workout-coach/plan.md. The plan is a living template, not a fixed
calendar: a repeating weekly schedule plus a set of progression targets that
ratchet over time.
It sits at the center of the workout loop:
workout reads plan.md and, by default, builds today's session from the
next thing the plan schedules (unless the user asks for something else).
workout-log updates plan.md when a logged session was taken from the
plan — ticking adherence and ratcheting the progression targets.
workout-profile / workout-trainer are the inputs; re-run this skill
after they change so the plan stays aligned.
Steps
Load the inputs.
cat ~/workout-coach/profile.md — required. If it doesn't exist, tell
the user to run /workout-profile first; don't invent a profile.
cat ~/workout-coach/trainer.md — optional. If absent, use a neutral,
balanced coach and mention /workout-trainer.
cat ~/workout-coach/plan.md — if it exists, this is a revision:
summarize the current plan and ask what to change (progress the block,
swap a focus, account for a profile change) rather than silently
overwriting. Preserve the revision log.
- Skim recent logs for current baselines
(
ls -t ~/workout-coach/logs/ 2>/dev/null | head -5, then cat a few).
Logs are YAML (<date>.yaml, a sessions: list).
- Get the date with
date +%F. For the ## This week (adherence) heading,
also compute this week's Monday from the shell rather than by hand —
date -v-$(($(date +%u)-1))d +%F on macOS, or
date -d "-$(($(date +%u)-1)) days" +%F on GNU/Linux; don't trust a
remembered date.
Set the goal focus and prioritize. Pull the goals and PB targets from
the profile. Where goals compete for recovery (classic case: heavy leg work
vs. running, or max-strength vs. endurance), say so plainly and rank them
— the plan should clearly serve the top priorities and keep the rest in
maintenance. Don't pretend five goals can all be peaked at once.
Choose the methodology per goal, scaled to the user's level:
- Calisthenics rep goals (e.g. more push-ups/pull-ups) → frequent
submaximal volume ("grease the groove"), which fits a many-short-sessions
day especially well.
- Running speed (e.g. a faster mile) → intervals + strides.
- Running endurance (e.g. a half marathon) → a progressive weekly long run +
tempo work.
- Strength/size → progressive load within the available equipment.
Let the trainer persona flavor style and exercise selection (e.g. Bruce
Lee → crisp, never-to-failure GtG and mobility woven between sets), but never
let it override the profile's limits or safety.
Honor the profile's constraints — these are hard rules, not suggestions:
- Frequency & time: fit the user's sessions/day and minutes/session.
Each planned session must be self-contained and inside the time budget.
- Equipment & location rules: only program what they have, where they
have it. Respect any scheduling rules in the profile (e.g. "pull-ups
only after 18:00 and only when a run is involved" → schedule pull-ups as
evening run-to-the-bar sessions, never as a daytime desk slot).
- Permanent limitations & current niggles: work around them; pick the
safer regression when unsure.
- Off-clock work: if a goal needs a session that can't fit a normal slot
(e.g. a 16 km long run), schedule it explicitly outside the working day and
say so — don't pretend it fits a 15-minute break.
Sequence and recover. Order the week so competing systems aren't stacked
(e.g. don't put a hard squat session the day before a hard run, or hammer the
same muscle group two slots running). Build in at least one easy/mobility or
rest provision per week, and a deload rule (e.g. ease ~30% every 4th
week) so adaptation sticks.
Set progression targets. For each key movement, write the current
working number the plan prescribes now, plus the ratchet rule that moves
it (e.g. "push-up GtG: 4×22 — +2 reps/set once all sets hit target two
sessions running"; "long run: 8 km — +1 km/week, hold on deload weeks").
These are the numbers workout prescribes and workout-log updates.
Write the plan to ~/workout-coach/plan.md using the template below
(mkdir -p ~/workout-coach first if needed). Stamp the created/updated date
and which profile/trainer it's based on. On a revision, append to the
revision log rather than wiping history, and reset ## This week.
Confirm and hand off. Summarize the plan in a few lines, name the top
priority and any honest tradeoffs, then point the user on:
- run
/workout to get today's session pulled from the plan (or ask for
something specific to go off-plan),
- run
/workout-log to record it — completed planned sessions ratchet the
plan automatically,
- re-run
/workout-plan after a profile change, or every few weeks to
progress the block.
Plan template
# Workout Plan
_Created: <YYYY-MM-DD> · Last updated: <YYYY-MM-DD>_
_Based on: profile.md (<profile's last-updated date>) · trainer: <persona or none>_
_Block: <e.g. 4-week progression — week 1 of 4>_
## Goal focus
Prioritized targets this plan drives toward:
1. <goal / PB> — <why it's first, the strategy in a line>
2. <goal / PB> — <...>
<note any goals kept in maintenance, and any tradeoff being made>
## Approach
<2–5 lines: the methodology — e.g. grease-the-groove for push/pull, 3 runs/week
(intervals / tempo / long), leg sequencing, deload every 4th week. Note the
trainer flavor.>
## Weekly schedule
Repeating week. <constraints recap, e.g. workday = 4 × ~15-min slots; pull-ups
only after 18:00 and only with a run; long run is off-clock on the weekend.>
### Monday — <theme>
- Slot 1 — <focus>: <movements @ targets> (<one-line cue>)
- Slot 2 — <...>
- Slot 3 — <...>
- Slot 4 — <...>
### Tuesday — <theme>
- ...
### ... (through the week, including rest/mobility days)
### Sunday — <theme or rest>
- ...
## Progression targets
Current working numbers — `workout` prescribes these; `workout-log` ratchets them:
- <movement>: <current target> — _ratchet:_ <rule>
- <movement>: <current target> — _ratchet:_ <rule>
- ...
## This week (adherence)
Week of <Monday's date> — `workout-log` records sessions taken from the plan here;
`workout-plan` resets this on each revision.
- (none yet)
## Revision log
- <YYYY-MM-DD>: plan created from profile (<profile date>), trainer <persona>.
Principles
- The plan is a living template + progression state, not a frozen calendar.
It encodes what to do and the numbers to do it at; the numbers move as the
log proves the user is ready.
- The profile and safety always win. The trainer flavors style and
selection; it never overrides limits, injuries, equipment, or scheduling
rules. When unsure, choose the safer regression.
- Prioritize honestly. When goals compete, rank them and keep the rest in
maintenance — don't promise to peak everything at once.
- Respect the clock and the calendar. Every planned session fits the user's
slot/time budget; anything that can't (e.g. a long run) is scheduled off-clock
and labeled as such.
- Sequence for recovery. Don't stack competing systems; bake in easy days
and a deload.
- Keep
plan.md tidy and skimmable — workout and workout-log parse it,
so keep the section headings and the progression-target format stable.
1---2name: workout-plan3description: Generate (or revise) a structured, multi-session training plan from the user's profile and trainer persona, oriented toward their goals and PB targets. Writes ~/workout-coach/plan.md — a repeating weekly schedule plus progression targets that `workout` pulls today's session from and `workout-log` ratchets as sessions are completed. Use when the user says "make a plan", "build my training plan", "plan my week", "create a program", or wants a structured schedule rather than a single session.4---56# /workout-plan — Build the user's training plan78This skill turns the profile + trainer into a structured program and writes it9to `~/workout-coach/plan.md`. The plan is a **living template**, not a fixed10calendar: a repeating weekly schedule plus a set of **progression targets** that11ratchet over time.1213It sits at the center of the workout loop:14- **`workout`** reads `plan.md` and, by default, builds today's session from the15 next thing the plan schedules (unless the user asks for something else).16- **`workout-log`** updates `plan.md` when a logged session was taken from the17 plan — ticking adherence and ratcheting the progression targets.18- **`workout-profile`** / **`workout-trainer`** are the inputs; re-run this skill19 after they change so the plan stays aligned.2021## Steps22231. **Load the inputs.**24 - `cat ~/workout-coach/profile.md` — **required.** If it doesn't exist, tell25 the user to run `/workout-profile` first; don't invent a profile.26 - `cat ~/workout-coach/trainer.md` — optional. If absent, use a neutral,27 balanced coach and mention `/workout-trainer`.28 - `cat ~/workout-coach/plan.md` — if it **exists**, this is a *revision*:29 summarize the current plan and ask what to change (progress the block,30 swap a focus, account for a profile change) rather than silently31 overwriting. Preserve the revision log.32 - Skim recent logs for current baselines33 (`ls -t ~/workout-coach/logs/ 2>/dev/null | head -5`, then `cat` a few).34 Logs are **YAML** (`<date>.yaml`, a `sessions:` list).35 - Get the date with `date +%F`. For the `## This week (adherence)` heading,36 also compute this week's Monday from the shell rather than by hand —37 `date -v-$(($(date +%u)-1))d +%F` on macOS, or38 `date -d "-$(($(date +%u)-1)) days" +%F` on GNU/Linux; don't trust a39 remembered date.40412. **Set the goal focus and prioritize.** Pull the goals and **PB targets** from42 the profile. Where goals compete for recovery (classic case: heavy leg work43 vs. running, or max-strength vs. endurance), say so plainly and **rank them**44 — the plan should clearly serve the top priorities and keep the rest in45 maintenance. Don't pretend five goals can all be peaked at once.46473. **Choose the methodology per goal**, scaled to the user's level:48 - Calisthenics rep goals (e.g. more push-ups/pull-ups) → frequent49 submaximal volume ("grease the groove"), which fits a many-short-sessions50 day especially well.51 - Running speed (e.g. a faster mile) → intervals + strides.52 - Running endurance (e.g. a half marathon) → a progressive weekly long run +53 tempo work.54 - Strength/size → progressive load within the available equipment.55 Let the **trainer persona** flavor *style and exercise selection* (e.g. Bruce56 Lee → crisp, never-to-failure GtG and mobility woven between sets), but never57 let it override the profile's limits or safety.58594. **Honor the profile's constraints — these are hard rules, not suggestions:**60 - **Frequency & time:** fit the user's sessions/day and minutes/session.61 Each planned session must be self-contained and inside the time budget.62 - **Equipment & location rules:** only program what they have, where they63 have it. Respect any **scheduling rules** in the profile (e.g. "pull-ups64 only after 18:00 and only when a run is involved" → schedule pull-ups as65 evening run-to-the-bar sessions, never as a daytime desk slot).66 - **Permanent limitations & current niggles:** work around them; pick the67 safer regression when unsure.68 - **Off-clock work:** if a goal needs a session that can't fit a normal slot69 (e.g. a 16 km long run), schedule it explicitly outside the working day and70 say so — don't pretend it fits a 15-minute break.71725. **Sequence and recover.** Order the week so competing systems aren't stacked73 (e.g. don't put a hard squat session the day before a hard run, or hammer the74 same muscle group two slots running). Build in at least one easy/mobility or75 rest provision per week, and a **deload** rule (e.g. ease ~30% every 4th76 week) so adaptation sticks.77786. **Set progression targets.** For each key movement, write the *current79 working number* the plan prescribes now, plus the **ratchet rule** that moves80 it (e.g. "push-up GtG: 4×22 — +2 reps/set once all sets hit target two81 sessions running"; "long run: 8 km — +1 km/week, hold on deload weeks").82 These are the numbers `workout` prescribes and `workout-log` updates.83847. **Write the plan** to `~/workout-coach/plan.md` using the template below85 (`mkdir -p ~/workout-coach` first if needed). Stamp the created/updated date86 and which profile/trainer it's based on. On a revision, append to the87 revision log rather than wiping history, and reset `## This week`.88898. **Confirm and hand off.** Summarize the plan in a few lines, name the top90 priority and any honest tradeoffs, then point the user on:91 - run `/workout` to get today's session pulled from the plan (or ask for92 something specific to go off-plan),93 - run `/workout-log` to record it — completed planned sessions ratchet the94 plan automatically,95 - re-run `/workout-plan` after a profile change, or every few weeks to96 progress the block.9798## Plan template99100```markdown101# Workout Plan102103_Created: <YYYY-MM-DD> · Last updated: <YYYY-MM-DD>_104_Based on: profile.md (<profile's last-updated date>) · trainer: <persona or none>_105_Block: <e.g. 4-week progression — week 1 of 4>_106107## Goal focus108Prioritized targets this plan drives toward:1091. <goal / PB> — <why it's first, the strategy in a line>1102. <goal / PB> — <...>111<note any goals kept in maintenance, and any tradeoff being made>112113## Approach114<2–5 lines: the methodology — e.g. grease-the-groove for push/pull, 3 runs/week115(intervals / tempo / long), leg sequencing, deload every 4th week. Note the116trainer flavor.>117118## Weekly schedule119Repeating week. <constraints recap, e.g. workday = 4 × ~15-min slots; pull-ups120only after 18:00 and only with a run; long run is off-clock on the weekend.>121122### Monday — <theme>123- Slot 1 — <focus>: <movements @ targets> (<one-line cue>)124- Slot 2 — <...>125- Slot 3 — <...>126- Slot 4 — <...>127### Tuesday — <theme>128- ...129### ... (through the week, including rest/mobility days)130### Sunday — <theme or rest>131- ...132133## Progression targets134Current working numbers — `workout` prescribes these; `workout-log` ratchets them:135- <movement>: <current target> — _ratchet:_ <rule>136- <movement>: <current target> — _ratchet:_ <rule>137- ...138139## This week (adherence)140Week of <Monday's date> — `workout-log` records sessions taken from the plan here;141`workout-plan` resets this on each revision.142- (none yet)143144## Revision log145- <YYYY-MM-DD>: plan created from profile (<profile date>), trainer <persona>.146```147148## Principles149150- **The plan is a living template + progression state**, not a frozen calendar.151 It encodes *what to do* and *the numbers to do it at*; the numbers move as the152 log proves the user is ready.153- **The profile and safety always win.** The trainer flavors style and154 selection; it never overrides limits, injuries, equipment, or scheduling155 rules. When unsure, choose the safer regression.156- **Prioritize honestly.** When goals compete, rank them and keep the rest in157 maintenance — don't promise to peak everything at once.158- **Respect the clock and the calendar.** Every planned session fits the user's159 slot/time budget; anything that can't (e.g. a long run) is scheduled off-clock160 and labeled as such.161- **Sequence for recovery.** Don't stack competing systems; bake in easy days162 and a deload.163- **Keep `plan.md` tidy and skimmable** — `workout` and `workout-log` parse it,164 so keep the section headings and the progression-target format stable.