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

詳細

ワークアウトトラッカー

ローカルの SQLite データベースを使って、フィットネス活動を記録、追跡するスキルです。

機能

  1. ワークアウトの記録: エクササイズの詳細を記録します。
  2. 履歴の表示: 過去のパフォーマンスを確認します。
  3. 休憩時間の自動設定: 指定がない場合、以前のセッションに基づいて休憩時間を自動入力します。
  4. 画像認識: 画像からジムの器具を特定し、エクササイズを提案できます。

使用方法

1. ワークアウトの記録

ユーザーが「ベンチプレスを60kgで8レップ、5セットやりました」と言った場合、詳細を解析して次を実行します。

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:1セットあたりのレップ数。
  • --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 を自動的に推測します(例:「ベンチプレス」→「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 が含まれます。

技術的なセットアップ(メンテナンス)

このスキルは、Python パッケージ管理に uv を使用します。

インストール
  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:文字列(任意)

コメント