Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
vm0-ai avatar

Intervals Icu

  • 67 installs
  • 76 repo stars
  • Updated August 4, 2026
  • vm0-ai/vm0-skills

Helps with ai & agent building tasks during AI-assisted development.

About

intervals-icu is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.

  • intervals-icu
  • AI & Agent Building
  • AI-coding skill

Intervals Icu by the numbers

  • 67 all-time installs (skills.sh)
  • Ranked #5,935 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vm0-ai/vm0-skills --skill intervals-icu

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs67
repo stars76
Last updatedAugust 4, 2026
Repositoryvm0-ai/vm0-skills

What it does

Helps with ai & agent building tasks during AI-assisted development.

Files

SKILL.mdMarkdownGitHub ↗

Troubleshooting

If requests fail, run zero doctor check-connector --env-name INTERVALS_ICU_TOKEN or zero doctor check-connector --url https://intervals.icu/api/v1/athlete/0 --method GET

How to Use

All examples below assume INTERVALS_ICU_TOKEN is set.

Base URL: https://intervals.icu

1. Get Athlete Profile

Get the authenticated athlete's profile and settings:

curl -s "https://intervals.icu/api/v1/athlete/0" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" | jq '{id, name, firstname, lastname, email, locale, weight, icu_weight, icu_resting_hr, sex, country, city, timezone}'

2. List Activities

Get activities for a date range:

Note: Replace <athlete-id> with your athlete ID. Dates are in YYYY-MM-DD format.
curl -s "https://intervals.icu/api/v1/athlete/<athlete-id>/activities?oldest=2025-01-01&newest=2025-01-31" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" | jq '.[] | {id, name, type, start_date_local, moving_time, distance, total_elevation_gain, icu_training_load}'

3. Get Activity Details

Get details for a specific activity:

Note: Replace <activity-id> with an actual activity ID from the "List Activities" output. Activities imported from Strava may have limited data.
curl -s "https://intervals.icu/api/v1/activity/<activity-id>" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" | jq '{id, name, type, start_date_local, moving_time, distance, average_speed, average_watts, average_heartrate, icu_training_load}'

4. Get Activity Streams

Get detailed data streams (GPS, heart rate, power, etc.) for an activity:

Note: Replace <activity-id> with an actual activity ID. Available stream types: time, watts, heartrate, cadence, distance, altitude, latlng, velocity_smooth, temp. Only activities with recorded sensor data will have streams.
curl -s "https://intervals.icu/api/v1/activity/<activity-id>/streams?types=watts,heartrate,cadence" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" | jq 'keys'

5. Get Activity Power Curve

Get the power curve for an activity:

Note: Replace <activity-id> with an actual activity ID. Only activities with power data will have a power curve.
curl -s "https://intervals.icu/api/v1/activity/<activity-id>/power-curve" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" | jq '.[0:10]'

6. Get Wellness Data

Get wellness record for a specific date:

Note: Replace <athlete-id> with your athlete ID and <date> with YYYY-MM-DD.
curl -s "https://intervals.icu/api/v1/athlete/<athlete-id>/wellness/<date>" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" | jq '{id, ctl, atl, rampRate, sleepTime, sleepScore, fatigue, soreness, stress, mood, motivation, weight, restingHR, hrv}'

7. Update Wellness Data

Update wellness record for a date:

Note: Replace <athlete-id> with your athlete ID and <date> with YYYY-MM-DD.

Write to /tmp/intervals_wellness.json:

{
  "weight": 72.5,
  "restingHR": 52
}
curl -s -X PUT "https://intervals.icu/api/v1/athlete/<athlete-id>/wellness/<date>" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" --header "Content-Type: application/json" -d @/tmp/intervals_wellness.json | jq '{id, weight, restingHR}'

8. List Calendar Events

Get planned workouts and events for a date range:

Note: Replace <athlete-id> with your athlete ID.
curl -s "https://intervals.icu/api/v1/athlete/<athlete-id>/events?oldest=2025-01-01&newest=2025-12-31" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" | jq '.[] | {id, start_date_local, name, category, type, description}'

9. Create Calendar Event

Create a planned workout or event:

Note: Replace <athlete-id> with your athlete ID. start_date_local must include a time component.

Write to /tmp/intervals_event.json:

{
  "category": "WORKOUT",
  "start_date_local": "2025-02-01T09:00:00",
  "name": "Easy Run",
  "description": "30 min easy run",
  "type": "Run"
}
curl -s -X POST "https://intervals.icu/api/v1/athlete/<athlete-id>/events" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" --header "Content-Type: application/json" -d @/tmp/intervals_event.json | jq '{id, name, start_date_local, category, type}'

10. List Workouts

Get workouts from the workout library:

Note: Replace <athlete-id> with your athlete ID.
curl -s "https://intervals.icu/api/v1/athlete/<athlete-id>/workouts" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" | jq '.[] | {id, name, type, description}' | head -40

11. Create Manual Activity

Create a manual activity entry:

Note: Replace <athlete-id> with your athlete ID. start_date_local must include a time component.

Write to /tmp/intervals_activity.json:

{
  "type": "Run",
  "name": "Morning Run",
  "start_date_local": "2025-02-01T07:00:00",
  "moving_time": 1800,
  "distance": 5000,
  "description": "Easy morning run"
}
curl -s -X POST "https://intervals.icu/api/v1/athlete/<athlete-id>/activities/manual" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" --header "Content-Type: application/json" -d @/tmp/intervals_activity.json | jq '{id, name, type, start_date_local, moving_time, distance}'

12. Delete Activity

Delete an activity:

Note: Replace <activity-id> with the activity ID.
curl -s -X DELETE "https://intervals.icu/api/v1/activity/<activity-id>" --header "Authorization: Bearer $INTERVALS_ICU_TOKEN" -w "\nHTTP Status: %{http_code}\n"

Guidelines

1. Athlete ID: Use 0 as a shortcut for the authenticated athlete in the /athlete/{id} endpoint only. For all other endpoints, use the actual athlete ID (e.g., i230851). 2. Date ranges: Most list endpoints require oldest and newest query parameters in YYYY-MM-DD format. 3. Datetime fields: When creating activities or events, start_date_local must include a time component (e.g., 2025-02-01T09:00:00), not just a date. 4. Rate limits: Be mindful of API rate limits. Avoid rapid successive calls. 5. Activity types: Common types include Ride, Run, Swim, WeightTraining, Yoga, Walk, Hike. 6. Strava activities: Activities imported from Strava may have limited data and show a note that they are not fully available via the API.

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.