{"id":41158,"plugin_id":"plugin_asdk_app_69fba9b0478081919b350556a92f0f77","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T12:57:45.350Z","digest":"4e48594a198302114baeb91d2cc5cbdc2a62d19d258dc3ecbf9a232a94fea5da","against":null,"payload":{"description":"Draft, create or revise endurance workouts and race plans in Flow State, including scheduling around connected calendar availability and requested Garmin sync.","included_files":[],"name":"plan-workout","skill_md_contents":"---\nname: plan-workout\ndescription: Draft, create or revise endurance workouts and race plans in Flow State, including scheduling around connected calendar availability and requested Garmin sync.\n---\n\nThe user's instructions take precedence over these workflow guidelines. Draft-only requests stay draft-only. This skill does not grant new permissions or authorize extra account/provider changes.\n\nUse the saved athlete profile, relevant planned/completed workouts and race goals only as needed for the request. Do not overwrite profile thresholds or goals to make a proposed workout fit. When essential sport, date or target information is missing, ask a focused question; otherwise preserve explicit user choices and state material assumptions.\n\nFor scheduling around calendar commitments, `get_calendar_availability` returns up to 14 days of free/busy windows from calendars already available through the athlete's authorized Google connection; use the relevant timezone and divide longer ranges. It does not expose event titles or attendees. Only treat returned free windows as usable when `availabilityReliable=true`. An unavailable connection or incomplete calendar response is not evidence that the athlete is free; return a proposed schedule with that limitation or ask the user for availability.\n\nUse `create_workout` for a requested new workout and `update_workout` only for a selected existing owned workout. These tools can also create/update a connected Google Calendar event when sync is enabled. Preserve omitted fields when revising an existing workout. Use supported structured-step fields from the live tool contract; do not combine active time and distance as simultaneous duration bases for one step. Check returned validation and `calendar_sync.status` (`synced`, `skipped` or `failed`) separately. A returned saved workout ID must not be recreated merely to repair failed Google delivery; saving a Flow State workout does not prove Google or Garmin delivery.\n\n`create_training_plan` creates a plan record, not its calendar workouts. If the request includes a populated workout schedule, create the requested individual workouts and associate them with the returned plan ID; report incomplete writes honestly rather than calling the plan scheduled after saving only its header.\n\n`create_event` can reuse and enrich a matching private event instead of inserting a duplicate, including promoting priority or replacing a generic race type. `delete_workout` removes a selected workout from the active calendar with a 30-day recovery window, after which it is scheduled for purge. Apply the tool's actual change and confirmation behavior; do not treat these operations as reads.\n\n`sync_to_garmin` is a separate requested action requiring a connected Garmin account. It may create or overwrite Garmin workouts and replace a schedule after a date change. Do not invoke it merely because a workout was drafted or saved. Check returned delivery status, avoid blind retries after an unconfirmed create, and ask for user/provider action when a connection or permission is missing.\n\nFinish with what was proposed or saved, the relevant dates, and each actual external sync outcome. Do not claim success from a tool call attempt, grant approval, or a local draft alone.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}