← Shape CalendarCONTENT HISTORY
WHAT CHANGED
Update to Shape Calendar
Snapshot Oct 31, 2026 · 12:11 UTC · version 1.0.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Shape Calendar and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Plan, create, import, reschedule, pair or remove workouts in the user's connected Shape calendar. Use for requests to save a training week, build structured running/cycling/swimming sessions, move workouts, or match completed sessions to their plans. A request for ideas alone does not authorize calendar changes.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 414
},
{
"relative_path": "references/workout-details.md",
"size_in_bytes": 3585
}
],
"name": "shape-plan-training",
"skill_md_contents": "---\nname: shape-plan-training\ndescription: Plan, create, import, reschedule, pair or remove workouts in the user's connected Shape calendar. Use for requests to save a training week, build structured running/cycling/swimming sessions, move workouts, or match completed sessions to their plans. A request for ideas alone does not authorize calendar changes.\n---\n\n# Plan training in Shape\n\nUse the connected Shape tools and their current input schemas. Follow the user's stated scope, dates, units and constraints. Do not request API tokens or use a separate connection. If the tools are unavailable, explain that Shape needs to be connected and stop before claiming a calendar change. If a tool answers that no device is connected or nothing is synced, switch to `connect_device` (see the shape-setup skill) before planning anything.\n\n## Establish the plan\n\n- Resolve dates in the athlete's local calendar. Ask when a date, sport or material target is ambiguous. Keep titles short and workout-specific.\n- For a new block or a change to planned training, call `get_training_status` with no `from` or `to`. Read readiness drivers, load and the existing projection. Use `list_activities` over the affected date range to avoid scheduling conflicts or duplicating sessions; page through results if `total` exceeds the returned count.\n- Respect the athlete's stated restrictions, availability and race priorities. Ask for missing constraints when they materially affect the plan.\n- A request to create or move a specified workout authorizes that change. When the user asks only for advice or a proposed plan, present the proposal and wait for an instruction to save it. Clarify the exact affected workouts before an ambiguous deletion. Do not repeat a confirmation already supplied for the same identified change.\n\n## Create and change workouts\n\n- Use `create_activity` for one session and `batch_create_activities` for several. Use `update_activity` or `batch_update_activities` for existing sessions, sending their actual ids and only fields that should change. Keep each batch between 1 and 100 entries.\n- `date`, `title` and `sportType` are required to create a workout. `date` is `YYYY-MM-DD`. Include `startTime` as local `HH:mm` only when the user specifies a start time; do not infer one or attach an offset.\n- Sport values include `run`, `bike`, `swim`, `hike`, `yoga`, `tennis`, `skiing`, `nordicski`, `strength`, `surf` and `other`. Use values accepted by the live schema.\n- Convert distance to meters and duration to seconds before saving. Choose `target: \"distance\"` for a distance target, `\"time\"` for a duration, `\"pace\"` when both are specified, and `\"steps\"` for a structured interval session. A target alone supplies no distance or duration.\n- Set `completed: false` for a planned session. Mark a workout completed only when the user says it was done. Do not turn a planned prescription into an invented recording.\n- Rest days have no workout. Skip them when importing a plan; do not add zero-distance rest placeholders. Simple easy sessions do not need invented interval steps.\n- Set an estimated `load` for planned endurance workouts so they appear in the projection. Use `(duration_seconds / 3600) × effort² × 100`: recovery 0.25, easy 0.5, tempo 0.75, threshold 1.0, VO2 1.25, race 1.5. A 60-minute easy run is 25. Label estimates as estimates. If duration or intended effort cannot reasonably be established, ask rather than silently assigning one. Do not overwrite a completed workout's recorded load with this estimate.\n- Recompute planned load when changing duration or intensity. Moving only the date does not require a new load estimate. For structured workouts with several intensities, estimate the component loads rather than treating every minute as the hardest interval.\n- Before writing structured intervals or a swim, read [Workout details](references/workout-details.md) for repeat groups, pace targets and swim-specific fields.\n\n## Pair and remove sessions\n\n- A completed row's `plannedActivityId` points to its separate prescription. Read that planned row with `get_activity` when comparing or editing the plan. Do not assume the completed row contains planned steps.\n- Use `pair_activities` with `completedActivityId` and `plannedActivityId` to match a performed workout to the plan it fulfills. Resolve both ids from returned data and verify their completed/planned states. If an existing pairing conflicts, explain it and obtain authorization before removing it.\n- Use `unpair_activity` with `activityId` to remove an identified pairing without deleting either workout.\n- Use `delete_activity` for one identified workout, or `batch_delete_activities` with `ids` for several. Individual deletion removes its pairing; batch deletion does not remove links on surviving paired workouts. If a counterpart will remain, include the pairing removal in the described deletion scope and use `unpair_activity` first when authorized.\n- Calendar changes may also affect workouts on the user's connected devices. Report a saved change as saved; do not claim device delivery unless a returned result establishes it.\n\n## Check and report\n\nAfter creating, moving, changing or deleting planned workouts, call `get_training_status` again without a history range. Explain the returned next-week `series` and peak `projection` where relevant. Shape labels ratios above 1.5 as High; explain the change without treating that band as a medical verdict. Readiness cannot be projected into the future.\n\nReport the workouts actually saved, moved, paired or removed, with dates and readable units. Preserve any unrelated sessions. If a write fails, stop dependent steps. If its outcome is uncertain, inspect the affected calendar before retrying a creation so a repeated call does not create duplicates. Relay connection, access and missing-data messages rather than claiming success.\n"
}SHA-256 of public snapshot: 0e736e7d2a91a2ad098aaf881665320fbf0489192445a5dab15bdca68a936ca3