com um clique
create-workout
Create a workout for the Workouts app as JSON and share it as a
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Create a workout for the Workouts app as JSON and share it as a
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
| name | create-workout |
| description | Create a workout for the Workouts app as JSON and share it as a |
Two output formats exist. Pick based on what the user wants:
examples/, or Settings → Upload/Paste data). Holds many workouts, folders, and custom exercises.https://guen.pw/workouts/#share=<encoded>. Holds exactly one workout (plus any custom exercises it uses). Opening it shows a preview with an "Add to my workouts" button. This is what "query link" / "preview link" means.Every exercise is {"n", "c", "mode", "sets", "reps", "secs", "rest", "grp"?} — always include the first seven fields; grp only for supersets.
n and c must match an entry in EXLIB (js/10-exercise-data.js) exactly, or be declared in the same payload's customEx array as {"n", "c", "t"?} (t:1 = time-based by default). Library exercises get Garmin media and animated FIT export; custom ones are text-only. Always verify names against EXLIB — never guess.c must be an EXCAT key: squat, lunge, hinge, push, pull, press, arms, core, cardio, yoga, pilates, mobility.mode is "reps" (uses sets×reps) or "time" (uses sets×secs); fill the unused field with a sane default (reps 10 / secs 30).grp id alternate set-by-set (A1 B1 C1 A2 B2 C2…). Use this for circuits, per-side sequences (sets=2 → right side, left side), and yoga vinyasa transitions. grp and all ids must be alphanumeric only.{"app": "health-tracker", "sevV2": true,
"woFolders": [{"id": "fold01", "name": "My Folder", "open": true}],
"customEx": [{"n": "Chaturanga", "c": "yoga", "t": 1}],
"workouts": [{"id": "wo01", "folderId": "fold01", "name": "…", "exercises": [ … ]}]}
Workout ids must be unique and stable (import dedupes by id). folderId must reference a folder in the same file. See examples/ for complete files.
Payload: {"v": 1, "w": {"name", "ex": [ …exercises… ]}, "cx": [ …custom exercises used… ]} — note the workout has no id/folderId, and cx is only present if custom exercises are used. Encoding: JSON → deflate-raw → base64url, prefixed "z" (must match shareEncode in js/11-workouts.js; the hash must satisfy ^#share=[A-Za-z0-9_-]+$).
Don't hand-roll the encoding — run the bundled script:
node .claude/skills/create-workout/scripts/share-link.mjs <import-file.json> [workout-id]
It validates exercise names/categories against the real EXLIB, builds the payload (including cx), and prints one share URL per workout (or just the one matching workout-id).
Validate every n/c against EXLIB + customEx; confirm ids and grp values are alphanumeric and unique; for flows, mentally expand supersets (or read expandWorkout in js/11-workouts.js) to confirm the step order plays as intended; generate share URLs only via the script.