peon-ping-use について
現在の peon-ping チャットセッションで使うボイスパックを指定するスキルです。フックがパックを検証してセッションに割り当て、手動設定の代替手順も用意されています。
主な機能
- 01セッションごとのボイスパック選択
- 02指定パックの存在確認
- 03セッション上書きモードの有効化
- 04セッション単位でのパック割り当て保存
- 05手動設定の代替手順
活用シーン
- 01チャットに GLaDOS などのパックを設定
- 02コマンドフック失敗時の手動設定
- 03Cursor でのデフォルト割り当て
- 04セッションを設定済みローテーションに戻す
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ peonping/ peon-ping --skill peon-ping-useインストール後、Claude Code で/peon-ping-useを入力して読み込まれたか確認します。
詳細
peon-ping-use
現在のチャットセッションで再生する音声パック(キャラクターの音声)を設定します。
仕組み
ユーザーが /peon-ping-use <packname> と入力すると、beforeSubmitPrompt hook がコマンドがモデルに届く前にインターセプトし、即座に処理します。
- 指定されたパックが存在することを確認します
- config.json で
session_overrideローテーションモードを有効にします - 現在のセッション ID を .state.json 内の指定されたパックに対応付けます
- 即座に確認メッセージを返します(トークン使用量ゼロ)
フックがメッセージをブロックすると、Cursor は入力欄にカーソルを置いたままにするため、すぐに次のメッセージを入力できます。
フックスクリプト(scripts/hook-handle-use.sh および scripts/hook-handle-use.ps1)がすべての処理を行います。この SKILL.md ファイルは、/ コマンドのオートコンプリートメニューで見つけやすくするためだけに存在します。
使い方
ユーザーは次のように入力して実行できます。
/peon-ping-use peasant
/peon-ping-use glados
/peon-ping-use sc_kerrigan
フックがインストールされていない場合、または失敗した場合は、以下の手順に従って手動で実行できます。
手動での代替手順(フックが失敗した場合)
何らかの理由でフックがコマンドをインターセプトしない場合は、次の手順に従ってください。
1. パック名を解析する
ユーザーのリクエストからパック名を抽出します。一般的なパック名は次のとおりです。
peon— Warcraft の Peonglados— Portal の GLaDOSsc_kerrigan— StarCraft の Kerriganpeasant— Warcraft の Peasanthk47— Star Wars の HK-47
2. 利用可能なパックを一覧表示する
次のコマンドを実行して、インストール済みのパックを確認します。
bash "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/peon-ping/peon.sh packs list
出力を確認し、指定されたパックが存在することを確かめます。
3. セッション ID を取得する
セッション ID は環境変数 CLAUDE_SESSION_ID で確認できます。次のように読み取ります。
echo "$CLAUDE_SESSION_ID"
空の場合(Cursor ユーザー): session_packs のキーとして "default" を使用します。これにより、明示的な割り当てがないすべてのセッションにパックが適用されます。session_packs["default"] = {"pack": "PACK_NAME", "last_used": UNIX_TIMESTAMP} を追加します。
4. config を更新して session_override モードを有効にする
config ファイルを読み取ります。
cat "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/peon-ping/config.json
必須: pack_rotation_mode を "session_override" に設定します。パックは packs ディレクトリに存在している必要があります。割り当てられたパックが存在しないか無効な場合、peon-ping は default_pack にフォールバックし、古い割り当てを削除します。フックはパックを pack_rotation にも追加します(手動で代替する場合も同様にできます)。
設定後の config の例:
"pack_rotation_mode": "session_override",
"pack_rotation": ["peasant", "peon", "ra2_kirov"]
pack_rotation_mode が "random" または "round-robin" の場合は、"session_override" に変更します。指定されたパックが pack_rotation にない場合は追加します。
5. state を更新して、このセッションにパックを割り当てる
state ファイルを読み取ります。
cat "${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/hooks/peon-ping/.state.json
session_packs オブジェクトを更新し、このセッションを指定されたパックに対応付けます。session_packs が存在しない場合は作成します。
{
"session_packs": {
"SESSION_ID_HERE": "pack_name_here"
}
}
StrReplace を使用するか、JSON を編集してエントリを追加または更新します。
session_packsが存在する場合:セッション ID のキーを追加または更新しますsession_packsが存在しない場合:開始波括弧の後に追加します
6. ユーザーに確認する
次のようなメッセージで成功を伝えます。
Voice set to [PACK_NAME] for this session
Rotation mode: session_override
エラー処理
- パックが見つからない場合:利用可能なパックを一覧表示し、ユーザーに選択してもらいます
- セッション ID がない場合:この機能には Claude Code が必要であることをユーザーに伝えます
- ファイルの読み取り/書き込みエラー:エラーを報告し、手動で config を編集するよう提案します
やり取りの例
User: Use GLaDOS voice for this chat
Assistant: [Lists packs to verify glados exists]
Assistant: [Gets session ID]
Assistant: [Updates config.json to set pack_rotation_mode: "session_override"]
Assistant: [Updates .state.json to set session_packs[session_id] = "glados"]
Assistant: Voice set to GLaDOS for this session
Rotation mode: session_override
Cursor との互換性に関する注意
Cursor はセッション ID を公開しません。代わりに session_packs["default"] を使用します。手動で代替する場合は、"default": {"pack": "peasant", "last_used": 0} を session_packs に追加してください。これにより、明示的な割り当てがないセッション(Cursor のチャットを含む)に音声が適用されます。
デフォルトに戻す
このセッションで特定のパックを使用しないようにするには、.state.json の session_packs からセッション ID を削除するか、pack_rotation_mode を "random" または "round-robin" に戻します。