360 Secure SkillHub
360 安全技能中心

workout-claw

该 Skill 通过本地 workout-claw CLI 记录健身训练,使用 JSON 按日存储;支持记录动作、组数、次数、重量和有氧,查询历史、计算 PR、按肌肉群统计容量,并可查看、删除或编辑训练课次。运行需 Node 20+,不依赖云账户。

dsdevq
dsdevq
热度 58.51
最近更新 2026-10-08 01:56:36
分类:生活依赖:代码执行 / 读写文件应用场景:健康 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add workout-claw
Metadata
name
workout-claw
description
Log workouts, track progress, compute PRs, edit/delete sessions via a local CLI. Local-first, JSON storage.
author
Denys Sychov
version
0.3.1
metadata
{"openclaw":{"requires":{"bins":["workout-claw"]}}}
triggers
["log workout","log my workout","track exercise","gym session","what's my PR","what is my PR","workout history","lift history","today's workout","last workout","show last session","delete workout","remove session","edit workout","fix my workout","back volume","chest volume","leg volume","how much volume","muscle volume","weekly volume"]

workout-claw

Local-first gym workout tracker. Plain-JSON storage at ~/.workout-claw/. Invokable as a CLI by an agent — no MCP server, no daemon.

Setup

This skill ships a SKILL.md manifest via ClawHub, but the workout-claw CLI binary lives on npm. Both layers are required.

openclaw skills install workout-claw    # installs this SKILL.md
npm install -g workout-claw             # installs the CLI binary

Requires Node >= 20. Once both are installed, the CLI is on PATH and other skills can invoke it.

When to invoke

User describes a workout session, asks about progress, or wants to see a PR. Examples that should trigger this skill:

  • "I just did chest day — bench 4x10 at 60, incline DB 4x12 at 20, triceps 4x12 at 40"
  • "Log today's workout"
  • "What's my bench PR?"
  • "Show my back workouts from the last 4 weeks"
  • "What did I do at the gym today?"

How to invoke

Use the workout-claw CLI via Bash. All commands output YAML to stdout, errors to stderr.

Log a workout

workout-claw log "bench 4x10@60, incline-db-press 4x12@20, triceps-pushdown 4x12@40"

Optional flags:

  • --muscle <group> — back | legs | chest | shoulders | arms | core | full | cardio | other. If omitted, inferred from the exercises (most sets wins; a tie is full; cardio-only is cardio), unless the user has an optional ~/.workout-claw/config.json weekday split ({"split":{"mon":"back","wed":"legs"}}), which then applies on those days.
  • --cardio "<entry>" — e.g. "incline-walk 20min @4.5kmh i6" (minutes, speed kmh, incline)
  • --note "<text>" — free-text note
  • --date YYYY-MM-DD — date to log under (default: today in local time). Pass it explicitly when the user logs a past session or it is just after midnight. Anything that is not a real date is rejected.
  • --time HH:MM — override time

Input syntax

<exercise> <sets>x<reps>@<weight> per entry, comma-separated for multiple exercises. Also accepted: a kg/lb suffix (bench 3x8@60kg, lb is stored as kg), spaces in names (bench press 3x8@60), and uneven sets: bench 8,8,6@60 (per-set reps, one weight) or bench 8@60,6@65 (per-set reps and weights).

  • Multi-word exercise names use dashes: incline-db-press, barbell-row
  • Bodyweight: pullups 4x10@bw
  • All weights in kg

Query history

workout-claw history --muscle chest --weeks 4
workout-claw history --exercise bench

Get a PR

workout-claw pr bench

Returns best estimated 1RM via Epley formula: weight × (1 + reps/30).

Cross-day muscle volume (v0.3+)

workout-claw volume --muscle back --weeks 4
workout-claw volume --muscle chest --weeks 8

Aggregates volume per exercise, not per session. Pullups on chest day count toward back volume; triceps-pushdown counts toward arms. Returns total kg lifted, sets, reps, days trained, and a per-date breakdown.

This is the right query for tracking weekly volume per muscle group — far more accurate than history --muscle X which is session-grain.

Summary of today

workout-claw summary
workout-claw summary --date 2026-05-15

Most recent session

workout-claw last

Returns the latest session across all dates — useful for "what did I do at the gym?" without naming a date.

Delete a session

workout-claw delete <session-id>

Session IDs come from the id field in any log / summary / last output. No confirmation prompt — the CLI is non-interactive by design.

Edit a session

workout-claw edit <session-id>

Opens the session JSON in $EDITOR (defaults to vi). On save: validates JSON, refuses to save if the id was changed. On parse error: original session unchanged. Useful for fixing typos in exercise names or set counts without a full delete + re-log.

Agent note: edit requires an interactive editor, so the agent should not invoke this in a Telegram round-trip. Instead, when a user asks to fix a logged workout via Telegram, prefer delete + log again, or hand back the session ID and tell the user to run workout-claw edit <id> from their terminal.

Data location

  • ~/.workout-claw/logs/<date>.json — one JSON file per day, array of sessions
  • Schema: see src/lib/types.ts in the workout-claw repo

Notes for the agent

  • After logging, relay the YAML summary back to the user in a readable form (don't dump raw YAML)
  • Exercise names may contain spaces or dashes (stored with dashes), so pass the user's wording through ("incline DB press" → incline-db-press)
  • If the CLI reports corrupt JSON, stop and tell the user: the file is left untouched, and nothing was logged. Do not retry or recreate it.
  • Session-level --muscle is inferred from the exercises — only set explicitly if the user names a split that differs from what was lifted. Per-exercise muscle tags are inferred automatically at log time via name lookup (pullups→back, bench→chest, etc.), so no extra input is needed.
  • When user describes cardio separately, use --cardio flag. When they describe both lifting + cardio in one breath, use both.
  • For "how much back/chest/leg volume?" questions, prefer volume --muscle X over history --muscle X — volume aggregates per-exercise, history filters per-session.