workout-tracker について
Workout Tracker は、運動内容をローカルの SQLite データベースに記録し、過去の実績を確認するスキルです。以前のセッションをもとに休憩時間を補完し、画像から器具を識別してエクササイズを提案できます。
主な機能
- 01運動内容を SQLite に記録
- 02ワークアウト履歴の表示
- 03過去の記録から休憩時間を補完
- 04画像内の器具を認識
- 05画像レポートの生成
活用シーン
- 01トレーニング後にセット数、回数、重量を記録
- 02特定のエクササイズの進捗を確認
- 03器具を識別してワークアウトを記録
- 04モバイル向けのワークアウトレポートを共有
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ marswangyang/ workout-tracker --skill workout-trackerインストール後、Claude Code で/workout-trackerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSE.gitignoreREADME.md_meta.jsonscripts/pyproject.tomllog.pyrender.pymodels.pymain.pyreport.py詳細
ワークアウトトラッカー
ローカルの SQLite データベースを使って、フィットネス活動を記録、追跡するスキルです。
機能
- ワークアウトの記録: エクササイズの詳細を記録します。
- 履歴の表示: 過去のパフォーマンスを確認します。
- 休憩時間の自動設定: 指定がない場合、以前のセッションに基づいて休憩時間を自動入力します。
- 画像認識: 画像からジムの器具を特定し、エクササイズを提案できます。
使用方法
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. 画像認識(ビジョン)
ユーザーが画像(例:マシンの画像)をアップロードした場合:
- ビジョン機能を使って画像を解析します。
- 器具を特定します(例:「レッグプレスマシン」、「ダンベル」)。
- ユーザーに尋ねます:「これはレッグプレスのようです。セットを記録しますか?重量はいくつですか?」
- ユーザーの返答後、通常どおり
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 を使用します。
インストール
uvがインストールされていることを確認します:brew install uv- 依存関係を同期します:
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 対応