claude

running-coach

Adaptive running training plugin: VDOT-based pace prescription, polarized 80/20 periodization, post-workout iteration.

0 on GitHubby Wilson Wangv0.3.0MITupdated 5 months ago
/

Plugin running-coach from marketplace josix-claude-running-coach in josix/claude-running-coach. Commands read from the repo's manifest — 1 month ago.

This plugin runs code on your machine — its hooks fire automatically on events like tool use. The exact commands are listed below; read them before installing.

What it installs

Skills (14)

  • adapt-plan

    Applies 1/2/3-strike adjustment rules to plan.json based on a single workout's analysis dict. Mutates plan only when thresholds fire. Called after every workout log.

  • analyze-workout

    Computes adherence delta between actual and prescribed workout: pace deviation %, completion %, HR drift, RPE delta. Returns a structured signal dict. Called automatically after log-workout or fetch-strava-activity.

  • build-training-plan

    Generates a complete macrocycle (base/build/peak/taper) from a runner's goal, target race date, available training days, and current VDOT. Writes plan.json. Use during /run-init and /run-replan.

  • compute-vdot

    Translates a recent race result (distance + time) into a VDOT fitness score and the corresponding training pace table (E/M/T/I/R per km). Use during /run-init and /run-race-recap when the user has a fresh race or time-trial result.

  • fetch-garmin-activity

    Pulls recent run activities from the garmin-givemydata MCP server: triggers garmin_sync to refresh the local SQLite, queries activity IDs in the requested date range, fetches per-activity detail (with splits, HR zones, weather, running dynamics), normalizes to workouts.json schema via garmin_normali

  • fetch-strava-activity

    Pulls recent run activities from the Strava MCP server, normalizes them to the workouts.json schema using strava_normalize.py helpers, deduplicates by strava_activity_id with preferred_source tiebreaker, and runs the same analyze-workout + adapt-plan pipeline as manual logging. Requires users.integr

  • generate-daily-workout

    Renders today's workout card from plan.json and daily_state.json as a Markdown block. Use for every /run-today invocation. No writes — pure read-and-render.

  • log-workout

    Conversationally captures a completed workout (duration, distance, RPE, HR, splits, notes) and writes it to workouts.json. Triggers analyze-workout and adapt-plan downstream. Use for /run-log.

  • probe-garmin-connection

    Verify Garmin Connect MCP connectivity and capture user identity before flipping the integrations.garmin.connected flag. Returns ok+garmin_user_id on success, classified error on failure.

  • probe-strava-connection

    Verify Strava MCP connectivity and capture athlete identity before flipping the integrations.strava.connected flag. Returns ok+athlete_id on success, classified error on failure.

  • recovery-protocol

    Inserts a post-race or injury-flag recovery block into plan.json: 4 days rest + 3 easy jog days (post-race), or 3 rest + 1 recovery (red-flag-fatigue), or 7 rest days (injury). Use after /run-race-recap or when adapt-plan returns red_flag_recovery.

  • research-methodology

    Web-search-backed Q&A for novel coaching questions outside the plan's standard logic: heat acclimation, recovery from illness, pacing strategies for unique courses. Use for /run-research and when the Coach cannot answer from training data alone.

  • taper-protocol

    Specialized logic for the final 2-3 weeks before race day: -20%/-40%/-60% volume curve, intensity preservation in race-week-minus-1, race-day shakeout. Called by build-training-plan during plan generation and triggerable mid-cycle if race date changes.

  • weekly-review

    Aggregates the past 7 days of completed workouts: total mileage, quality session adherence, fatigue indicators (RPE creep, HR drift). Decides hold/advance/recovery for the next week. Use for /run-week.

Slash commands (9)

  • /running-coach:run-init

    One-time onboarding — interview the runner about goal, fitness, training days, lifestyle. Generates users.json + plan.json. Optionally connect Strava with --connect strava.

  • /running-coach:run-log

    Manually log a completed workout. Triggers adaptive plan iteration.

  • /running-coach:run-plan

    Show the current macrocycle (read-only summary).

  • /running-coach:run-race-recap

    Post-race recap — log race result, recompute VDOT, insert recovery protocol.

  • /running-coach:run-replan

    Force a full plan regeneration (use after injury, life event, or race change).

  • /running-coach:run-research

    Free-form coaching question, web-search backed.

  • /running-coach:run-sync

    Pull recent activities from the connected provider (Strava or Garmin Connect) and apply the same adaptive pipeline as /run-log. Requires at least one connection (run /run-init --connect strava|garmin first).

  • /running-coach:run-today

    Show today's workout card.

  • /running-coach:run-week

    Weekly review — past 7 days rollup, fatigue check, hold/advance/recovery decision.

Subagents (3)

  • Coach

    Head coach — owns macrocycle planning, daily prescription, weekly review, methodology research, and adaptive plan iteration. Handles the one-shot Strava and Garmin probes at /run-init time (DataFetcher owns ongoing activity reads). Invoked by /run-init, /run-today, /run-week, /run-replan, /run-plan,

  • DataFetcher

    Pulls recent activities from Strava or Garmin MCP, normalizes to internal workout schema using provider-specific helper scripts, deduplicates by activity id with preferred_source tiebreaker, then runs the same analyze + adapt pipeline as manual logging. Invoked by /run-sync.

  • WorkoutLogger

    Captures one completed workout via interview, normalizes to schema, writes to workouts.json, and triggers analyze + adapt downstream. Invoked by /run-log.

Hooks (2)

  • SessionStart

    bash ${CLAUDE_PLUGIN_ROOT}/hooks/unlogged-workouts.sh

  • PostToolUse

    bash ${CLAUDE_PLUGIN_ROOT}/hooks/plan-integrity-check.sh

View source on GitHub

Similar plugins

diff

claude

The diff pane as a plugin: /diff opens the session's uncommitted changes beside the transcript, file by file with their hunks, refreshed as Claude edits and runs commands; the first edit opens it where the terminal is wide enough, and a file's ask button rides its hunks on the next prompt.

anthropics/claude-code 155,476

nextjs

claude

Official Next.js skills: adopt and optimize Cache Components, adopt Partial Prefetching, and verify runtime behavior against a running dev server.

6 skills

vercel/next.js 143,495

career-ops

claudecodex

Open-source AI job search that runs locally in your AI coding CLI: scan job portals, evaluate listings into a structured A-H report with a 1-5 score, tailor your CV, track applications

5 skills · hooks

career-ops-hq/career-ops 82,253

Run ruflo swarm agents on your own ruOS cloud desktops via the tenant-authenticated fleet MCP or per-tenant SSH; optional, removable

1 skill · 4 commands · 1 agent

ruvnet/ruflo 81,589

Claude Code mod: watch Headroom snip tokens off every request, with an animated band, a /headroom log and a running total.

headroomlabs-ai/headroom 79,508

Generate natively editable PPTX from PDF / DOCX / URL / Markdown — real DrawingML shapes, text boxes, charts, and animations. Note: run `pip install -r requirements.txt` inside the installed plugin directory for the Python post-processing scripts to work.

1 skill

hugohe3/ppt-master 76,375

Maintain running-coach?

This page updates itself from your repo. Add the badge to your README, or get it Featured to pin it above the organic results with a followed link to your site.

claude & codex pluginslisted