mcpField
W
workout-tracker

workout-tracker

github.com/marswangyang其他1209 次安装39 周前更新
代码仓库

关于 workout-tracker

Workout Tracker 是一项将健身活动记录到本地 SQLite 数据库并查看过往表现的技能。它可根据以往训练自动补全休息时间,还能识别图片中的健身器材并建议练习项目。

主要功能

  1. 01将运动详情记录到 SQLite
  2. 02查看训练历史
  3. 03根据过往训练补全休息时间
  4. 04识别图片中的健身器材
  5. 05生成图像报告

适用场景

  1. 01训练后记录组数、次数和重量
  2. 02查看特定练习的进展
  3. 03识别器材后记录训练
  4. 04分享适合手机查看的训练报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/marswangyang/workout-tracker --skill workout-tracker

安装后在 Claude Code 中输入/workout-tracker确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
.gitignore
README.md
_meta.json
scripts/
pyproject.toml
log.py
render.py
models.py
main.py
report.py

详细介绍

Workout Tracker

一项使用本地 SQLite 数据库记录和跟踪健身活动的技能。

功能

  1. 记录训练: 记录锻炼详情。
  2. 查看历史记录: 查看以往的训练表现。
  3. 智能休息时间: 如果未提供休息时间,则根据之前的训练自动填充。
  4. 视觉识别: 可从图片中识别健身器材并推荐相应锻炼。

用法

1. 记录训练

当用户说“我用 60kg 做了 5 组卧推,每组 8 次”时,解析详情并运行:

cd skills/workout-tracker/scripts && uv run log.py \
  --exercise "Bench Press" \
  --weight 60 \
  --unit kg \
  --sets 5 \
  --reps 8 \
  --body_part "Chest" \
  --rest_time 90  # Optional: User provided or leave empty to auto-fill
  --notes "Optional notes"

参数:

  • --exercise(必填):动作名称。
  • --body_part:**(新增)**目标肌群(例如 Chest、Back、Legs)。如果未提供,请推断(例如 Bench -> Chest)。
  • --weight(必填):重量数值。
  • --unit:'kg' 或 'lb'(默认 kg)。
  • --sets:组数。
  • --reps:每组次数。
  • --rest_time:秒数。**如果用户没有指定,请省略此项。**脚本会根据历史记录自动填充。
2. 查看历史记录

当用户询问“我的深蹲进步如何?”或“显示最近的训练记录”时:

cd skills/workout-tracker/scripts && uv run render.py --exercise "Squat"

然后发送生成的图片: message(action="send", filePath="/tmp/workout_report.png", message="Here is your report:")

3. 图片识别(视觉)

如果用户上传图片(例如器械图片):

  1. 使用视觉能力分析图片。
  2. 识别器材(例如“腿举机”“哑铃”)。
  3. 询问用户:“这看起来是台腿举机。要记录一组吗?重量是多少?”
  4. 用户回复后,照常使用 log.py 脚本。

设计与行为规则(用户偏好)

1. 用户档案
  • 类型: 普通用户(休闲)。
  • 交互方式: 使用自然语言。除非动作存在歧义,否则应根据动作名称自动推断 body_part(例如,“Bench Press” -> “Chest”),无需询问。
2. 显示格式(手机竖屏)
  • 首选输出: 始终使用 render.py 为报告生成图片。
  • 样式: 采用适合手机屏幕的竖向纵横比。
  • 布局:
    • 窄宽度(figsize 宽度约为 6)。
    • “Notes”列中的长文本换行显示。
    • 如果按单个动作筛选,则隐藏“Exercise”列(标题已足够说明上下文)。
    • 在当天/同一训练时段内按时间顺序排列(从最早到最新)。
3. 记录逻辑
  • 递减组: 必须作为单独的行记录,以确保数据准确。
    • 休息时间: 递减组各阶段之间设为 0。
    • 备注: 标记为“Drop set part X/Y”,以便清楚识别。
  • 单位: 用户偏好使用 lb(磅)。

数据库

数据存储在 skills/workout-tracker/workout.db(SQLite)中。 架构包含 date、exercise、weight、unit、sets、reps、rest_time 和 notes。

技术设置(维护)

此技能使用 uv 进行 Python 包管理。

安装
  1. 确保已安装 uv:brew install uv
  2. 同步依赖:
    cd skills/workout-tracker/scripts
    uv sync
    
数据库架构(SQLModel)

SQLite 数据库(workout.db)使用以下架构:

  • id:整数(PK)
  • date:ISO8601 字符串
  • exercise:字符串
  • body_part:字符串(目标肌群)
  • weight:浮点数
  • unit:字符串(默认 "kg")
  • sets:整数
  • reps:整数
  • rest_time:整数(秒,可选)
  • notes:字符串(可选)

评论

支持 Markdown