🧪 Skills

Workout Track

Log a strength training session and insert it into the life_db database. Use when the user shares their gym session, exercises, sets, reps, weights, RPE, res...

v1.0.2
❤️ 0
⬇️ 134
👁 1
Share

Description


name: workout-track description: Log a strength training session and insert it into the life_db database. Use when the user shares their gym session, exercises, sets, reps, weights, RPE, rest times, session duration, feelings, or asks to record a workout. metadata: {"openclaw":{"requires":{"bins":["uv"]}}}

Workout Log

Parses strength training sessions from natural or structured input and inserts them into the sport schema of life_db.

Connection

Credentials are in ~/.openclaw/services/life-db/.env.

Workflow

1. Parse the user's message

Extract from free text or structured input:

Field Type Notes
session_date YYYY-MM-DD Default: today
duration_min int Total session duration
feeling 1–10 integer Overall session feeling
notes string Optional — program name, injuries, etc.
exercises[] array One object per exercise

Each exercise:

Field Type Notes
exercise_name string Normalize consistently (e.g. "Bench Press", "Squat", "Romanian Deadlift")
sets int Number of working sets
reps int Reps per set (use average if varied)
weight_kg float Working weight — null for bodyweight exercises
rpe float Rate of perceived exertion (1–10), optional
rest_sec int Rest between sets in seconds, optional
order_in_session int Order as mentioned
notes string Optional — tempo, drop sets, supersets, etc.

2. Confirm with the user

Show a summary before inserting:

📅 {DD/MM/YYYY} · Muscu · {duration} min · Feeling {feeling}/10
• {Exercise 1} — {sets}×{reps} @ {weight} kg
• {Exercise 2} — {sets}×{reps} bodyweight
• …

Save? (yes / no)

3. Insert

Only after confirmation, use the exec tool:

{
  "tool": "exec",
  "command": "bash -c 'set -a; source ~/.openclaw/services/life-db/.env; uv run --project ~/.openclaw {baseDir}/scripts/insert_workout.py <json>'"
}

Replace <json> with the minified JSON payload (no newlines, properly shell-escaped).

4. Confirm result

On OK — respond with exactly this format, nothing more:

✅ Muscu · {duration} min · Feeling {feeling}/10 · #{session_id}
{comment}

{comment} rules — 1 line, max 60 chars, no emoji:

  • feeling ≥ 8 → short hype line
  • feeling 5–7 → encouragement
  • feeling ≤ 4 → grind acknowledgement

On ERROR — report the error as-is, do not retry without user input.

Examples

User says Parsed session
"Gym 1h feeling 8. Bench 4x10 80kg, Squat 4x8 100kg, Curl 3x12 15kg" 3 exercises, 60 min, feeling 8/10
"45 min chest/shoulders. Bench press 5x5 90kg RPE 9, overhead press 4x8 40kg, lateral raises 3x15 10kg" 3 exercises, 45 min, feeling asked
"Quick session 30min: pull-ups 4x8 bodyweight, rows 4x10 60kg" 2 exercises, 30 min, feeling asked

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs