Skip to content

Coach AI

Your coach, wherever your agent lives.

Coach AI is not an app you run — it's a portable coaching agent definition that installs into agent harnesses you already use (Claude Code and Codex CLI). A small coach CLI configures a coach personality, a set of skills (SKILL.md files), and live MCP connections to your fitness data. The harness's own reasoning, memory, and scheduling (/loop, /schedule) do the rest.

Get started Browse skills


How it works

There is no long-running "Coach AI process". At runtime there is just Claude Code or Codex CLI, configured with:

  1. A personality — coaching tone & philosophy, written into CLAUDE.md / AGENTS.md.
  2. Skills — step-by-step SKILL.md procedures for readiness checks, workout generation, training evaluation, plan adjustments, goal research, and personality setup.
  3. MCP servers — live connections to your fitness data (Garmin, Strava, Google/Outlook Calendar).
  4. A local data/ directory — goals, research notes, a thin daily plan, readiness logs, and the rendered coach personality. Nothing duplicates your workout history — your metrics source / calendar is the system of record.
flowchart TD
    A["Choose a path<br/><b>garmin</b> — or —<br/><b>strava</b> + google/outlook calendar"] --> B["coach CLI<br/>setup_source · install"]
    B --> C["Claude Code<br/>CLAUDE.md · .mcp.json · .claude/skills/"]
    B --> D["Codex CLI<br/>AGENTS.md · ~/.codex/config.toml · skills.config"]
    C --> E["Personality · capability-gated skills · MCP servers"]
    D --> E
    E <--> F["Metrics source<br/>(Garmin / Strava)"]
    E <--> G["Workout-calendar source<br/>(Garmin / Google / Outlook)"]
    E <--> H["Local data/<br/>goals · plan · readiness logs"]

Core principle: intelligence lives in the agent, not in Python

The Python in this repo only fetches, normalizes, and persists data (coach/analysis/assemble.py, coach/storage/store.py) — it never computes a fitness score or a "should I train today" verdict. That judgment is the agent's, every time, informed by your goals and the normalized data. See Architecture & principles for the full reasoning.


Supported paths & capabilities

Coach AI ships two functional paths. A path = one metrics source + one workout-calendar source (Garmin covers both). The installer resolves the union of your configured sources' capabilities and uses it to gate and tailor every skill — nothing is faked when a capability is missing.

Source Status Role(s) Capabilities
garmin functional metrics + workout_calendar readiness, hrv, sleep, body_battery, stress, training_load, vo2max, training_effect, structured_workouts
strava functional metrics (read-only) activity_streams, prs, training_load
google_calendar functional workout_calendar free_text_workouts
outlook_calendar functional workout_calendar free_text_workouts
apple_health / whoop scaffold metrics future — no MCP yet

The two paths are not equal, and the coach says so up front:

  • Garmin — full readiness/HRV/sleep/body-battery/training-load data, plus structured workouts pushed to the Garmin calendar and rescheduled in place.
  • Strava + Google/Outlook Calendar — Strava supplies activity streams and PRs; the calendar is the workout system-of-record, with each session written as a free-text event (description/body). No readiness/HRV/ sleep/body-battery — those steps are skipped, not faked.

See Capabilities & paths for the full capability matrix.


Where to go next

  • Installation


    Authenticate a source, run coach setup, install into your harness, and set up the daily loop.

    Installation guide

  • Architecture & principles


    The five design principles, the high-level architecture, and the harness installer contract.

    Concepts

  • Skills catalog


    What each skill does, when it runs, and how it behaves on each path.

    Skills

  • Daily workflow


    Onboarding, the daily loop, and annotated example conversations.

    Daily workflow