
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-icuAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 67 |
|---|---|
| repo stars | ★ 76 |
| Last updated | August 4, 2026 |
| Repository | vm0-ai/vm0-skills ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
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 inYYYY-MM-DDformat.
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>withYYYY-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>withYYYY-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_localmust 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 -4011. Create Manual Activity
Create a manual activity entry:
Note: Replace<athlete-id>with your athlete ID.start_date_localmust 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.