ClaudeMods
☰
JA
● 0 人がオンライン ・閲覧 0 回
スポンサー作品を投稿
GitHub リポジトリ · 投稿者 natea

move-coach

Claude Code にカメラペインを追加する mod です。MediaPipe の姿勢ランドマークを緑で描いたウェブカメラ映像、その横に対応する *Built to Move* のイラストを表示し、テスト中は音声でコーチングします。

natea@natea

natea/move-coach/tree/main/plugins/move-coach

翻訳済み

この mod について

Move Coach

Claude Code にカメラペインを追加する mod です。MediaPipe の姿勢ランドマークを緑で描いたウェブカメラ映像、その横に対応する Built to Move のイラストを表示し、テスト中は音声でコーチングします。

  • /move-coach [test] [camera#] でペインを開きます。テストを指定しなければ通常のカメラプレビューになります。/move-coach stop で実行を終了します。
  • ツール mcp__move-coach__camera_test で Claude がテストを実行できます。built-to-move-mobility-test スキルがこれを使います。
  • テスト: sit_and_rise、couch、airport_scanner、shoulder_rotation、squat、solec、old_man。

構成

  • helper/pose_coach.py:uv スクリプト(mediapipe 0.10.14、opencv)。カメラを取り込み、Pose Landmarker(モデルは ~/.cache/move-coach にキャッシュ)を実行し、テストごとに1つのステートマシンを動かします。合図を音声で伝え、JSON 行を mod にストリームします。
  • hooks/register.tsx:ペイン、スラッシュコマンド、ツール。Ghostty はカメラを PNG Image として描画し、Desktop アプリは JPEG フレームを埋め込み、その上にベクターの骨格を重ねた Svg として描画します。
  • assets/book/:任意のイラスト。書籍のイラストには著作権があり、同梱していません。自分のものを ~/.config/move-coach/book/ に置いてください(assets/book/README.md 参照)。なくてもペインは動きます。

音声

デフォルトでは、コーチは macOS 内蔵音声(say)で話すため、設定は不要です。 より自然な声にするには、プラグインの設定(/config → move-coach → "ElevenLabs API key"、セキュアストレージに保存)に ElevenLabs API キーを追加し、必要なら voice ID も指定します。キーは読み取り後に削除するプライベートファイルで helper に渡され、コマンドラインには出ません。ELEVENLABS_API_KEY=... を含む ~/.config/move-coach/keys.env も使えます。ElevenLabs が合図を再生できない場合、その合図は say にフォールバックします。音声クリップは ~/.cache/move-coach/tts にキャッシュされます。

要件

カメラ付きの macOS、uv(helper は初回実行時に自分で Python パッケージを入れる uv スクリプト)、Xcode コマンドラインツール(xcode-select --install、小さな "Move Coach Camera" アプリを一度ビルドするために使用)が必要です。任意で ffmpeg(カメラ名)、Muse ヘッドバンド、EEG 用の liblsl(brew install labstreaminglayer/tap/lsl)も使えます。

カメラの権限

Claude アプリはカメラの責任を持たない状態でセッションを開始するため、mod から直接起動した helper はカメラにアクセスできず、macOS も許可を求められません。そこで helper/launch.sh は小さな Move Coach Camera.app(helper/camera-app/ から ~/Library/Application Support/move-coach/ に作成)をビルドし、open でその中から helper を実行します。標準出力は FIFO で中継します。初回は macOS が "Move Coach Camera" のカメラ許可を表示し、許可は Claude の更新後も残ります。取り消すにはシステム設定 → プライバシーとセキュリティ → カメラを開きます。

任意:Muse ヘッドバンドから脳波を読む

/move-coach eeg(ペインの Connect Muse EEG ボタン、またはツールの eeg_start アクションでも可)は helper/eeg_stream.py を実行し、muse-lsl で Muse を読み取ります。すでに動いている LSL EEG ストリーム(muselsl stream)があれば接続し、なければ Bluetooth で Muse を探して muselsl stream を自分で開始します。/move-coach eeg Muse-1A2B で名前からヘッドバンドを選び、/move-coach eeg stop で終了します。

ペインには各チャンネル(TP9、AF7、AF8、TP10)の直近 4 s、センサーごとの接触ドット、直近 1 s の相対帯域パワーが表示されます。テスト中は、テスト期間の平均帯域パワー(eeg_mean_relative_band_power)も結果に含まれます。

カメラと同じく helper は "Move Coach Camera.app" 内で動くため、macOS が Bluetooth の許可を一度だけ尋ねます。pylsl には liblsl が必要です。wheel に含まれていなければ brew install labstreaminglayer/tap/lsl を実行してください。

インストール

まず作者の README で marketplace とプラグイン名を確認してください。コマンドはリポジトリの構成によって変わる場合があります。

claude plugin marketplace add natea/move-coach
claude plugin install move-coach
原文 / README

Move Coach

A Claude Code mod that adds a camera pane: your webcam feed with MediaPipe pose landmarks drawn in green, the matching Built to Move illustration beside it, and spoken coaching while you do the test.

  • /move-coach [test] [camera#] opens the pane. With no test it's a plain camera preview. /move-coach stop ends a run.
  • Tool mcp__move-coach__camera_test lets Claude run a test. The built-to-move-mobility-test skill uses it.
  • Tests: sit_and_rise, couch, airport_scanner, shoulder_rotation, squat, solec, old_man.

Pieces

  • helper/pose_coach.py: a uv script (mediapipe 0.10.14, opencv). It captures the camera, runs the Pose Landmarker (model cached in ~/.cache/move-coach), and runs one state machine per test. It speaks cues and streams JSON lines to the mod.
  • hooks/register.tsx: the pane, the slash command and the tool. Ghostty draws the camera as a PNG Image; the Desktop app draws it as an Svg that embeds the JPEG frame with a vector skeleton on top.
  • assets/book/: illustrations, optional. The book's illustrations are copyrighted and aren't shipped; put your own in ~/.config/move-coach/book/ (see assets/book/README.md). The pane works without them.

Voice

By default the coach speaks with the built-in macOS voice (say); nothing to set up. For a more natural voice, add an ElevenLabs API key in the plugin's settings (/config → move-coach → "ElevenLabs API key", stored in secure storage), and optionally a voice ID. The key reaches the helper in a private file it deletes on read, never on the command line. ~/.config/move-coach/keys.env with ELEVENLABS_API_KEY=... also works. If ElevenLabs fails for a cue, that cue falls back to say. Audio clips are cached in ~/.cache/move-coach/tts.

Requirements

macOS with a camera, uv (the helpers are uv scripts that install their own Python packages on first run), and the Xcode command-line tools (xcode-select --install, used once to build the small "Move Coach Camera" app). Optional: ffmpeg (camera names), a Muse headband and liblsl (brew install labstreaminglayer/tap/lsl) for EEG.

Camera permission

The Claude app starts its sessions with camera responsibility disclaimed, so a helper spawned straight from the mod can never get camera access (and macOS can't prompt for it). helper/launch.sh therefore builds a tiny Move Coach Camera.app (in ~/Library/Application Support/move-coach/, from helper/camera-app/) and runs the helper inside it with open, relaying its stdout through a FIFO. The first run shows the macOS camera prompt for "Move Coach Camera"; the grant then sticks across Claude updates. Revoke it in System Settings → Privacy & Security → Camera.

Optional: brain waves from a Muse headband

/move-coach eeg (or the pane's Connect Muse EEG button, or the tool's eeg_start action) runs helper/eeg_stream.py, which reads a Muse through muse-lsl. It attaches to an LSL EEG stream if one is already running (muselsl stream), and otherwise scans Bluetooth for a Muse and starts muselsl stream itself. /move-coach eeg Muse-1A2B picks a headband by name; /move-coach eeg stop ends it.

The pane draws the last 4 s of each channel (TP9, AF7, AF8, TP10), a contact dot per sensor, and relative band power over the last second. While a test runs, its result also carries the mean band power during the test (eeg_mean_relative_band_power).

The helper runs inside "Move Coach Camera.app", like the camera, so macOS asks once to allow Bluetooth. pylsl needs liblsl: if the wheel doesn't bundle it, brew install labstreaminglayer/tap/lsl.

関連作品