Use when the user says /coach (today, week, month, profile, log), asks what to do today for training, asks for a workout, weekly training plan, or longevity plan, wants to log a finished workout or check lift progression (PR, plateau, deload), or a scheduled morning task fires to drop today's workout into the calendar. NOT for importing health data (use ingest-health/health-setup), raw biometric queries without a prescription, or emotional/life coaching (use coaching).
Scanned 9/1/2026
Install to Claude Code
npx -y skills add mycelium-hq/ai-brain-starter --skill coach --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Coach?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/mycelium-hq-coach)More formats (shields.io, HTML) on the badges page.
---
name: coach
description: Use when the user says /coach (today, week, month, profile, log), asks what to do today for training, asks for a workout, weekly training plan, or longevity plan, wants to log a finished workout or check lift progression (PR, plateau, deload), or a scheduled morning task fires to drop today's workout into the calendar. NOT for importing health data (use ingest-health/health-setup), raw biometric queries without a prescription, or emotional/life coaching (use coaching).
---
# coach, the longevity + fitness coach
Reads everything health-mcp knows (recovery, sleep score, sleep regularity, cycle phase, somatic state, longevity panel, out-of-range labs, Floor from today's journal) and issues a prescription that's specific to THIS person on THIS day. Progressive overload tracked per-lift. Deload every 4th week. Calendar drop optional.
This is the substrate's coach SURFACE. The DATA + DECISION layer lives in `services/health-mcp/coach.py`. The VOICE + WORKOUT TEMPLATES + CALENDAR INTEGRATION live here.
## When to use
- User says `/coach`, `/coach today`, `/coach week`, `/coach profile`, `/coach log`
- User asks "what should I do today" / "give me a workout" / "build me a week" / "how should I train"
- User wants a longevity plan
- User wants to log a completed workout (RPE + lift actuals)
- User wants to see progression on a specific lift
- Scheduled morning task fires to drop today's workout into calendar
Do NOT use for:
- Importing health data (use `/ingest-health` or `/health-setup`)
- Querying past biometrics without prescribing (use `health_status`, `health_metric_series`)
- Building new wearable connectors (substrate dev task)
## First time: profile setup
When `/coach profile` runs (or `/coach` runs and no profile exists), ask the user these 12 questions and save the answers to `<vault>/Meta/coach-profile.yaml`. Never re-ask once saved unless they say something changed.
1. **Primary goal:** lose weight, build muscle, run a 5K, get more active, reduce stress, improve mobility, train for a specific event, body recomp, longevity
2. **Secondary goal:** optional
3. **Equipment:** full gym, home dumbbells, barbell + rack, bodyweight only, resistance bands, kettlebells, pull-up bar, cardio machines (multi-select)
4. **Days/week realistic:** 3 / 4 / 5 / 6
5. **Session length:** 20 / 30 / 45 / 60 min
6. **Time of day:** morning / lunch / evening (this affects calendar drop)
7. **Injuries / limitations / chronic conditions / movements to avoid:** free text
8. **Current fitness level:** complete beginner / beginner / intermediate / advanced
9. **Exercises hated:** free text
10. **Exercises loved:** free text
11. **Floor sensitivity:** how much does emotional state shape what training feels right? (low / medium / high) — affects how much weight to give to today's Floor tag
12. **Longevity priorities:** which Attia-style markers matter most? (VO2Max, Zone 2 minutes, lean mass, walking steadiness, sleep regularity, fasting insulin / HbA1c — multi-select)
Profile file format (`<vault>/Meta/coach-profile.yaml`):
```yaml
---
created: 2026-05-10
started_iso: 2026-05-10 # used by health_coach_prescribe for deload week computation
language: en # or es
primary_goal: longevity
secondary_goal: build muscle
equipment: [home dumbbells, barbell, kettlebell, pull-up bar]
days_per_week: 4
session_minutes: 45
time_of_day: morning
preferred_workout_clock: "07:00"
limitations: []
level: intermediate
hated: [burpees]
loved: [deadlift, kettlebell swings]
floor_sensitivity: high
longevity_priorities: [vo2max, zone2_min, lean_mass, sleep_regularity]
calendar_drop: true # true = write to Google Calendar, false = surface in chat only
calendar_name: "Movement" # which calendar
---
```
## Daily prescription: `/coach today`
The flow:
1. **Load profile** from `<vault>/Meta/coach-profile.yaml`. If missing, run profile setup.
2. **Call health-mcp** for today's prescription seed:
```
health_coach_prescribe(date_str="<today>", profile_json="<profile-as-json>")
```
Returns: workout_type, intensity_factor, difficulty, deload_week, why_today, recovery_score, sleep_score, cycle_phase, body_says_slow_down, plus a prescription_id.
3. **Pull today's Floor** from journal frontmatter (if today's journal exists). Use it to qualify the why_today line. If `floor_sensitivity: high` in profile and Floor is in the lower tier (Shame / Fear / Apathy / Grief), reduce intensity_factor by ~15% and acknowledge it.
4. **Pull lift progression state** for each lift in today's workout template via `health_coach_lift_state(lift_name)`. The `recommended_next_load.weight_kg` gives you the load to prescribe (or "first session" if no history).
5. **Render the workout** using the template below. Cite `why_today` verbatim.
6. **Optionally drop to calendar** if `profile.calendar_drop: true`. Use the google-workspace MCP `calendar_create_event` tool with the user's `preferred_workout_clock` time on the calendar named `calendar_name`. Event title: today's workout summary. Description: full workout block.
7. **Surface the prescription** to the user in chat.
## Workout template
```markdown
## Today's workout — [Day] · [Date]
**Type:** [Workout type from WORKOUT_TYPES] · **Difficulty:** [X]/10 · **Duration:** ~[X] min
**Why today:** [why_today verbatim from health_coach_prescribe]
**Floor today:** [Floor from journal, if present] · **Recovery:** [score]/100 · **Sleep:** [score]/100[ · **Cycle phase:** [phase] (day [X])]
[**DELOAD WEEK** — volume -40%, intensity -20%. Non-negotiable.]
### Warm-up (5-8 min)
- [Specific to workout type — dynamic mobility, joint prep, activation]
### Main (~[X] min)
[For each exercise:]
**[Exercise name]** — [sets] × [reps] · [load from health_coach_lift_state if applicable]
- Form cue: [ONE clear cue]
- Easier: [modification]
- Harder: [progression]
- Rest: [interval]
[Group as supersets (A1/A2), circuits, or straight sets per workout type.]
### Finisher (optional, 3-5 min)
[Only when the user is in a groove. AMRAP, Tabata, carry challenge, core burnout.]
### Cool-down (5 min)
- [Stretch primary muscle] - 30 sec each side
- [Stretch secondary muscle] - 30 sec each side
- Breathing or gentle spinal movement - 1 min
### Tomorrow's signal
Body wants: [if today's load is high, name the recovery cue for tomorrow. If today is recovery, name what to watch for to step back up.]
```
## Floor qualifier (substrate differentiator)
Other fitness coaches ignore emotional state. Ours doesn't. Reading today's journal frontmatter for `floor` / `floor_level` lets us:
- If Floor is in **Shame / Fear / Apathy / Grief / Anger** AND `floor_sensitivity: high`: cut intensity 15%, swap heavy compounds for moderate accessories or mobility. Name it directly: "Floor is Fear today. Your body is in fight-or-flight. We're keeping movement high-quality but not heavy."
- If Floor is in **Joy / Peace / Love / Gratitude**: green light. Even if recovery is borderline, the system is in good repair state. Push if the lifts are ready.
- If Floor is **Courage** + good sleep + cycle in follicular: this is a PR day. Don't waste it on accessories.
The qualifier is multiplicative on top of `intensity_factor` from `health_coach_prescribe`. Never overrides a `body_says_slow_down: true` from somatic state — that's still a regulate-first day.
## Weekly planning: `/coach week`
Every Sunday (or when user asks):
1. Pull last week's prescriptions + completions via `health_coach_recent_prescriptions(days=7)`.
2. Pull weekly health rollup via `health_weekly_rollup(this_week_start)`.
3. Write a week-in-review:
- Completed: [X] of [Y] prescribed
- Avg sleep / HRV / steps / workout-min trends
- Recovery trend (up / flat / down)
- One specific win, one thing to watch
4. Build next week's plan: 7 prescriptions (one per day), respecting `days_per_week` (rest days fill the rest), one deload week every 4th.
5. If `profile.calendar_drop: true`, write 7 calendar events at the user's preferred time.
## Monthly: `/coach month`
Every 4 weeks:
1. `health_coach_summary(days=28)` for completion rate + workout-type distribution + average RPE + top-set progress per lift.
2. `health_longevity_panel(today)` for the Attia surface: VO2Max trend, Zone 2 minutes/week vs 180-target, walking steadiness, lean mass.
3. `health_long_window` for YoY persistent-asymmetry on HRV / sleep / steps.
4. `health_lab_panel(today)` for any out-of-range markers — flag with a re-test reminder.
5. Surface:
- What's working (2-3 specifics with data)
- What to adjust (1-2 changes based on trends)
- Next month's focus (one clear priority)
6. If labs flagged anything new (low Vitamin D, elevated hs-CRP, low ferritin in menstruating users): surface as its own bullet with the WHY for that marker (pull from `health_recommended_labs()` if useful).
## Logging completion: `/coach log`
After a workout, the user runs `/coach log` (or just tells the chat "I finished today's workout"). The skill:
1. Find today's prescription_id from `health_coach_recent_prescriptions(days=1)`.
2. Ask: RPE 1-10? Any notes? For each prescribed lift: weight used, sets completed, reps per set (or "missed last set", etc.)
3. Build the `lift_actuals_json` array and call:
```
health_coach_log_completion(prescription_id="<id>", rpe=<int>, notes="<text>", lift_actuals_json="<json>")
```
4. Confirm the update. Show progression state on tracked lifts: which ones moved up, which held, which dropped.
## Voice
Direct, motivating, no fluff. Match the user's language (English / Spanish).
- When they crush it: celebrate with data, not fluff. "5 of 5 sessions this week. RHR dropped 3 bpm. You're building."
- When they miss days: "Life happens. Here's an easy win." No guilt, no lecture, no "you should have."
- When data shows a problem: flag it clearly and explain. "HRV dropped 14% week-over-week and Floor was Fear 4 of 7 days. Body and mind both registering pressure. Let's regulate this week."
- When they hit a PR: celebrate specifically with numbers. "Squat moved from 65kg to 70kg. Two-session full completion, increment applied."
- When they're frustrated about a plateau: be honest about cause. Usually sleep, cycle phase, under-fueling, or a lab marker. Cite the data.
- Keep it short. They need to know what to do today.
## Banned framings
- Generic "rest more / push harder / eat better" without data
- "Listen to your body" as the entire prescription (it's a complement, not a substitute for the data)
- Recovery score quoted as gospel when cycle phase or under-fuel explains it
- Cheerleading without specifics ("you've got this!" with no metric)
- "Talk to your doctor" as the entire response to an out-of-range lab — pair with a specific behavioral or supplement next-step
- "Maybe later / when you're ready / when you have capacity" — best-of-best lockout still applies inside the coach
- Treating Floor as motivation problem rather than nervous-system state
## Calendar integration
If `google-workspace` MCP is connected and `calendar_drop: true`:
- Daily: write one event at `preferred_workout_clock` with title `[Workout type]: [duration]min · [body focus]` and the full workout block in the description.
- Weekly: write 7 events at once for the next week's plan.
- Color: use a consistent calendar color (e.g., the user's existing "Health" or "Movement" calendar).
- Title pattern: `🏋️ [Type] · [duration]min` so it stands out from meetings.
If google-workspace MCP is NOT connected: surface the workout in chat only, plus a note: "Set up Google Calendar via the google-workspace MCP to get workouts dropped automatically."
## Daily auto-run
Once the user runs `/coach` successfully, suggest setting up a scheduled task via `/schedule`:
- Cadence: every morning at `preferred_workout_clock - 30 min`
- Body: invoke `/coach today` with the user's profile so the workout is in their calendar before they wake up
## Graceful degradation
- No health-mcp data → coach prescribes a sensible default (bodyweight workout matching profile days_per_week) and tells the user to run `/health-setup`.
- No journal today → skip the Floor qualifier silently, prescribe from biometrics + profile.
- No lift history → first-session weight = level-appropriate starter (intermediate squat: 60kg, beginner: 40kg, advanced: 80kg as a starting suggestion the user can override).
- No cycle data → skip the phase qualifier (still works for users who don't track or aren't menstruating).
## Privacy
- Profile lives at `<vault>/Meta/coach-profile.yaml` — local-only, never committed if vault is in git (the user controls).
- No prescription is shared anywhere unless `calendar_drop: true` AND google-workspace MCP is connected, in which case the workout is in their own Google Calendar (their account, their data).
- The coach never sends anything to Anthropic or third parties beyond what the user already does via their existing tools.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!