mcpField
H
hevy

hevy

github.com/jakubrohlederOther242 installsUpdated 5w ago
Repository

About hevy

hevy is a skill for turning workout plans into Hevy routines through its CLI. It explains exercise lookup, routine formatting, set types, and common API errors.

Key features

  1. 01Parse exercises, sets, reps, and rest
  2. 02Find exercise IDs before use
  3. 03Build routines from JSON templates
  4. 04Match set fields to exercise types
  5. 05Handle supersets and workout formats
  6. 06Troubleshoot API errors and limits

Use cases

  1. 01Convert a written workout plan into a routine
  2. 02Import multiple routines from a training program
  3. 03Resolve exercise matches and equipment variants

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/jakubrohleder/agent-toolkit --skill hevy

After installing, type/hevyin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

README.md
bin/
hevy
commands/
auth.sh
cache.sh
exercises.sh
folders.sh
routines.sh
workouts.sh
lib/
api.sh
cache.sh
common.sh
date-parser.sh
pagination.sh
templates/
routine.json
tests/
auth.bats
cache.bats
error-handling.bats
exercises.bats
folders.bats
global-flags.bats
routines.bats
test_helper.bash
workouts.bats

Details

From the project README

Hevy Routine Creator

Quick Start

<skill-dir>/bin/hevy auth <key>           # Authenticate (get key from hevy.com/settings)
<skill-dir>/bin/hevy exercises search "squat"
<skill-dir>/bin/hevy routines template > routine.json
# Edit routine.json
<skill-dir>/bin/hevy routines create routine.json

For all commands: <skill-dir>/bin/hevy --help

Workflow

  1. Parse workout plan - extract exercises, sets, reps, weights, rest times
  2. Look up exercise IDs - hevy exercises search <name>
  3. Build routine JSON - start with hevy routines template
  4. Create routine - hevy routines create file.json

Critical Rules

  • NEVER use @ in notes (causes silent 400 errors)
  • ALWAYS wrap: {"routine": {...}} not bare object
  • ALWAYS match set properties to exercise type:
    • weight_reps → weight_kg, reps
    • reps_only → reps only (NO weight!)
    • duration → duration_seconds
    • distance_duration → distance_meters, duration_seconds
    • short_distance_weight → distance_meters, weight_kg (Farmers Walk, Sled Push/Pull)
  • NEVER guess IDs - always hevy exercises search

Exercise Type Decision

User describes...Exercise TypeSet Properties
Weight + reps ("3x10 @ 135lb")weight_repsweight_kg, reps
Just reps ("3x12 pull-ups")reps_onlyreps only
Time hold ("60s plank")durationduration_seconds
Distance + time ("500m row")distance_durationdistance_meters, duration_seconds
Distance + weight ("50m farmers walk @ 80kg")short_distance_weightdistance_meters, weight_kg

When unsure: hevy exercises get <id> shows the exercise type.

Interpreting Workout Plans

Supersets:

  • "A1/A2", "superset", "paired" → same superset_id (integers: 0, 1, 2...)
  • "Circuit" or "EMOM" → all exercises share one superset_id
  • Separate exercises → superset_id: null

Rest: Goes on LAST exercise of superset only

AMRAP/Max effort: Use "reps": null

Example superset structure:

{
  "exercise_template_id": "79D0BB3A",
  "superset_id": 0,
  "rest_seconds": null,
  "sets": [{"type": "normal", "weight_kg": 80, "reps": 10}]
},
{
  "exercise_template_id": "1B2B1E7C",
  "superset_id": 0,
  "rest_seconds": 90,
  "sets": [{"type": "normal", "reps": 8}]
}

Common Exercise IDs

Use hevy exercises search for current IDs. These are reference examples:

ExerciseIDType
Squat (Barbell)D04AC939weight_reps
Deadlift (Barbell)C6272009weight_reps
Bench Press (Barbell)79D0BB3Aweight_reps
Overhead Press (Barbell)AE23FF09weight_reps
Pull Up1B2B1E7Creps_only
Push Up392887AAreps_only
Rowing Machine0222DB42distance_duration
Stretching527DA061duration
Farmers Walk49742539short_distance_weight

Before Creating Custom Exercises

  1. Search partial names ("row" not "cable row")
  2. Check equipment variants (Barbell, Dumbbell, Cable, Machine)
  3. Try alternate names ("Skull Crushers" = "Lying Tricep Extension")

Unit Conversion

User provides lbs → convert to kg: weight_kg = lbs / 2.205

Round to nearest 0.5 kg for practical loading.

Handling Search Results

ScenarioAction
Exact matchUse that ID
Multiple similar (e.g., "Squat" returns Barbell, Dumbbell, Smith)Pick equipment variant matching user's context
No resultsTry shorter term ("tricep" not "tricep pushdown cable")
Still nothingCreate custom exercise only as last resort

Bulk Import Strategy

For programs with 10+ routines:

  1. Build all JSON files first
  2. Create one routine, verify it appears correctly in app
  3. Create remaining with 2-second delays between calls
  4. If 429 error: wait 60s, resume from failed routine

Troubleshooting

ProblemCauseFix
HTML response@ in notesReplace with "at"
Exercise not foundTypoSearch partial name
401 UnauthorizedBad API keyhevy auth test
429 Rate limitToo many requestsWait 60s, then retry
400 Bad RequestWrong set properties for exercise typeCheck exercise type with hevy exercises get <id>
Field not allowedRead-only field in updateRemove id, created_at, updated_at fields
Sets rejectedweight_kg on reps_only exerciseRemove weight, use only reps

CLI vs This File

NeedUse
Exact command syntax, all flagshevy <command> --help
Workflow, gotchas, interpretation rulesThis file
Exploring all capabilitieshevy --help

Comments

Markdown supported