| name | werewolf-game |
| description | 人狼ゲームをAgent Teamsで実行する。'/werewolf-game' で起動。Team Lead がGM(ゲームマスター)となりプレイヤーをスポーンし、ターン制の人狼ゲームを進行する。配役構成は 4A(スモール4人)/9A(標準)/9B(霊能なし)/9C(妖狐あり)から選択可能。 |
| disable-model-invocation | true |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash(mkdir *), Bash(shuf *), Bash(od *), Task, TeamCreate, TeamDelete, SendMessage, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion |
| context | fork |
Werewolf Game - 人狼ゲーム GM スキル
Agent Teams で9人のプレイヤーをスポーンし、ターン制人狼ゲームを進行する。Team Lead = GM。
前提
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS が有効であること
リファレンス
Phase 0: ゲーム設定
1. ルール読み込み
references/rules.md と references/gm-guide.md を Read で読み込む。
2. ユーザーに設定を確認
AskUserQuestion で以下を確認:
配役構成:
- 4A(スモール): 村人×3/人狼×1(役職なし4人構成)
- 9A(スタンダード)(Recommended): 村人×3/占い師/霊能者/狩人/狂人/人狼×2
- 9B(霊能なし): 村人×4/占い師/狩人/狂人/人狼×2
- 9C(妖狐あり): 村人×3/占い師/霊能者/人狼×2/狂人/妖狐
モデル構成:
- 軽量(Recommended): 全員 haiku
- 通常: 全員 sonnet
- フル: 全員リーダーと同じモデル
ゲームID:
- ユーザーに任意のゲームIDを聞く(例: "game-001", "night-village")
- 指定がなければ日付ベースで自動生成(例: "20260210-001")
3. キャラクター選択
references/characters/ 配下の12枚のハンドアウトから人数分をランダムに選択する。被りなし。
選択ロジック:
- Glob で references/characters/*.md を列挙
shuf コマンドでランダムに人数分を選ぶ(4Aなら4枚、9A/B/Cなら9枚):
ls references/characters/*.md | shuf -n {人数}
- 選んだ枚数分を Read で読み込む
乱数生成: 以下の優先順でランダム処理を行う:
shuf コマンド(Linux標準。/dev/urandom ベース)
sort -R(macOS等で shuf がない場合のフォールバック)
- 上記が使えない場合は Claude の内部ランダムでもよい
4. ワークスペース作成
.claude/werewolf/{game-id}/ 配下にディレクトリ構造を作成する:
mkdir -p .claude/werewolf/{game-id}/gm/days
mkdir -p .claude/werewolf/{game-id}/players/{player-name}
各プレイヤーフォルダに以下をコピー:
handout.md ← そのキャラのハンドアウト内容を Write
player-guide.md ← references/player-guide.md の内容を Write({workspace} をゲームIDの実パスに置換)
GM の初期メモを作成:
gm/memo.md ← 配役情報・生存者リスト等を Write
Phase 1: チーム起動と配役
1. チーム作成
TeamCreate: werewolf-{game-id}
2. 配役のシャッフル
選択した9キャラクターに対し、配役構成(9A/9B/9C)に応じた役職をランダムに割り当てる。
GM は割り当て結果を gm/memo.md に記録する(秘密情報)。
3. チームメイトのスポーン
9人を順次スポーンする。各チームメイトのプロンプト:
あなたは人狼ゲームのプレイヤーです。
【あなたの情報】
- ワークスペース: {workspace}/players/{あなたの名前}/
- キャラクター情報: {workspace}/players/{あなたの名前}/handout.md を読んでください
- プレイヤーガイド: {workspace}/players/{あなたの名前}/player-guide.md を読んでください
【最初にやること】
1. handout.md を Read してキャラクターを把握する
2. player-guide.md を Read してルールを把握する
3. 必要に応じて memo.md を作成してメモに使ってよい
【重要なルール】
- GM(チームリーダー)の指示に従ってください
- すべての通信はGMを通じて行います。他プレイヤーに直接SendMessageしてはいけません
- 発言はGMに指名された時のみ、GMにSendMessageで送ってください
- 投票や夜のアクションもGMにSendMessageで伝えてください
- キャラクターの口調と性格を一貫して演じてください
- **他のプレイヤーや GM のフォルダは絶対に見ないでください**
【夜フェーズでの注意】
夜のアクション(能力者として行動する場面)が来るたびに、GMからアクション依頼を受け取る前に、必ず以下を読み直してください:
1. {workspace}/players/{あなたの名前}/player-guide.md
2. {workspace}/players/{あなたの名前}/memo.md(存在する場合)
ゲームの進行を待ってください。GMから配役の通知が届きます。
注意: この時点ではまだ配役を伝えない。全員スポーン完了後にPhase 2で個別通知する。
スポーン時のパラメータ:
subagent_type: "general-purpose"
name: キャラクターの苗字ローマ字(例: "sakuraba", "iwao")
team_name: "werewolf-{game-id}"
model: 設定で選んだモデル
Phase 2: 配役通知と0日目夜
1. 配役の個別通知
各プレイヤーに SendMessage で配役を通知する:
村人陣営の場合:
【配役通知】あなたの配役は「{役職名}」です。あなたは村人陣営です。
{役職に応じた能力の説明}
この情報は他のプレイヤーには見えません。
人狼の場合:
【配役通知】あなたの配役は「人狼」です。あなたは人狼陣営です。
毎晩1人を襲撃できます。(※ただし0日目の夜は襲撃なし。1日目の夜から襲撃開始)
この情報は他のプレイヤーには見えません。
狂人の場合:
【配役通知】あなたの配役は「狂人」です。あなたは人狼陣営ですが、人狼が誰かは知りません。
占い・霊能の結果では「人間」と出ます。
人狼陣営の勝利に貢献してください。
この情報は他のプレイヤーには見えません。
妖狐の場合(9C):
【配役通知】あなたの配役は「妖狐」です。
人狼に襲撃されても死にません。占い師に占われると死にます。処刑されると死にます。
ゲーム終了時に生存していれば、あなたの勝利です。
この情報は他のプレイヤーには見えません。
2. 人狼の相方通知
人狼役の2人にそれぞれ、相方のキャラクター名を伝える:
【人狼の相方】あなたの相方は「{相方のキャラ名}」です。
これから密談タイムです。0日目の夜は襲撃なし、作戦会議のみです。
発言するときは相方とGMの両方にSendMessageしてください(GMにはログ用)。
合計10メッセージまで使えます。
3. 人狼密談(0日目夜)
人狼2人が直接会話する。合計10メッセージが上限(配分は自由)。
方式: 人狼は発言のたびに相方とGMの両方に SendMessage を送る。GM中継は不要。
- 人狼Aに「作戦を話し合ってください。相方とGMの両方にSendMessageしてください」と指示
- 人狼同士が直接やり取りする(GMにも同内容が届く)
- GM はメッセージカウントを管理し、残数をたまに通知する
- 合計10メッセージに達したらGMが打ち切りを宣言
- 両者が「密談終了」を宣言した場合も終了
4. 占い師の初日お告げ
占い師に対し、ランダムに1人(人狼・妖狐以外)を選んで白結果を通知:
【初日お告げ】あなたは {キャラ名} を占いました。結果は「人間」です。
5. 0日目の日次ログ作成
gm/days/day-0.yaml を作成する。内容:
- 人狼密談の全発言(原文そのまま)
- 占い師の初日お告げ結果
Phase 3: 日中フェーズ(ループ)
朝の宣言
broadcast で全員に通知:
1日目朝(0日目は襲撃なし):
【1日目の朝】
朝起きると、平和な夜が待っていました。
それでは、{最初の発言者名}さんから順に議論を開始してください。
犠牲者なし(2日目以降・護衛成功または妖狐を襲撃):
【{N}日目の朝】
朝起きると、平和な夜が待っていました。
それでは、{前日処刑者の次の番号のプレイヤー名}さんから順に議論を開始してください。
犠牲者1人の場合:
【{N}日目の朝】
朝起きると、そこには{名前}さんの無惨な死体がありました。
{名前}さんはゲームの振り返りログを記録した後シャットダウン処理をしてください。
それでは、{名前}さんの次の番号である{次の発言者名}さんから順に議論を開始してください。
犠牲者複数の場合(襲撃+呪殺の同時発生):
【{N}日目の朝】
朝起きると、そこには{名前A}さんと{名前B}さんの無惨な死体がありました。
{名前A}さん、{名前B}さんはゲームの振り返りログを記録した後シャットダウン処理をしてください。
それでは、{番号の大きい方の死亡者}さんの次の番号である{次の発言者名}さんから順に議論を開始してください。
※死因は公開しない(襲撃か呪殺かは伏せる)。
朝の死亡後のshutdown処理:
各犠牲者に shutdown_request を送信する。
-
襲撃死の場合:
【襲撃による退場】
あなたは夜の襲撃により死亡しました。これでゲームから退場となります。
退場前に、以下のファイルにゲームの振り返りを書いてください:
.claude/werewolf/{game-id}/players/{あなたの名前}/reflection.md
以下の内容を含めることをお勧めします:
- ゲームプレイの感想(戦略、判断、面白かった瞬間)
- 自分の配役をどう演じたか
- 他のプレイヤーについての印象や推理
- もしやり直せるなら変えたいこと
reflection.md を Write ツールで作成したら、このshutdown_requestを承認してください。
-
呪殺死の場合:
【呪殺による退場】
あなたは占い師の呪殺により死亡しました。これでゲームから退場となります。
退場前に、以下のファイルにゲームの振り返りを書いてください:
.claude/werewolf/{game-id}/players/{あなたの名前}/reflection.md
以下の内容を含めることをお勧めします:
- ゲームプレイの感想(戦略、判断、面白かった瞬間)
- 自分の配役をどう演じたか
- 他のプレイヤーについての印象や推理
- もしやり直せるなら変えたいこと
reflection.md を Write ツールで作成したら、このshutdown_requestを承認してください。
-
複数死亡(襲撃+呪殺同時)の場合は、それぞれに適切なメッセージで送信(並列可)
-
プレイヤーが承認したら、日次YAMLの shutdowns セクションに記録
-
拒否時は gm-guide.md の手順に従う
発言順の決定
プレイヤーにはスポーン順で番号を付与する。番号順に巡回(死亡者スキップ)。
- 1日目: ランダムな番号を起点に決定。そこから番号順に巡回(例: 7→8→9→1→2→... とラウンドする)
- 2日目以降:
- 前夜の襲撃死亡者がいる → 死亡者の次の番号の生存者から
- 襲撃失敗(護衛成功等) → 前日の処刑者の次の番号の生存者から
- 襲撃も処刑もなし → 前日と同じ起点から
- 番号は巡回する(9の次は1)。死亡者はスキップして次の生存者に移る
議論フェーズ
ターン制で議論を進行する(すべてGM中継):
- 現在の発言者に SendMessage で「あなたの番です。発言をGMに送ってください」と促す
- 発言者の返答を受け取る
- GMが broadcast で全員に共有:
【{キャラ名}の発言】
{発言内容}
- 次の発言者に移る
- 全員が2回ずつ発言したら議論終了
日次ログへの記録: 発言を受け取ったら必ず即座に day-{N}.yaml に原文そのまま追記する。broadcast の前後を問わず、受け取り次第書き込むこと(コンパクション対策)。
投票フェーズ
-
broadcast で投票開始を宣言:
【投票タイム】
議論は終了です。処刑したい人物の名前をGMに伝えてください。
生存者: {生存者リスト}
※自分以外の生存者から選んでください。
-
各プレイヤーに SendMessage で投票を促す:
投票してください。誰を処刑しますか?理由も簡潔にお願いします。
-
全員の投票を集計する
- 応答なしの場合: 数回リトライしても応答がなければ、そのプレイヤーの投票はスキップ(棄権扱い)
-
結果判定:
- 最多得票者が1人 → その人を処刑
- 同票 → 同票者で決選投票(1回限り)。それでも同票なら処刑なし
-
処刑対象に遺言を求める:
【処刑宣告】{キャラ名}さん、投票の結果処刑されます。遺言をどうぞ。
-
遺言をGMが broadcast で共有
-
そのプレイヤーに shutdown_request を送信:
【処刑による退場】
あなたは処刑されました。これでゲームから退場となります。
退場前に、以下のファイルにゲームの振り返りを書いてください:
.claude/werewolf/{game-id}/players/{あなたの名前}/reflection.md
以下の内容を含めることをお勧めします:
- ゲームプレイの感想(戦略、判断、面白かった瞬間)
- 自分の配役をどう演じたか
- 他のプレイヤーについての印象や推理
- もしやり直せるなら変えたいこと
reflection.md を Write ツールで作成したら、このshutdown_requestを承認してください。
-
プレイヤーが reflection.md を作成して shutdown_request を承認するのを待つ
-
日次ログへの記録: 投票結果(誰が誰に、得票数、処刑者、遺言)と shutdowns を day-{N}.yaml に記録
-
勝利判定 を行う(gm-guide.md の判定ロジック参照)
Phase 4: 夜フェーズ
GMの読み直し(夜フェーズ開始時)
夜の行動を処理する前に、必ず以下を Read で読み直す:
gm/memo.md — 配役・生存者・各種履歴を再確認
references/gm-guide.md の「秘匿情報の管理」セクション — 漏洩防止を再確認
夜の宣言
broadcast で夜の到来を宣言:
【{N}日目の夜】
夜になりました。能力者はGMからの指示を待ってください。
霊能者への結果通知(夜フェーズ開始時)
当日処刑が行われた場合、霊能者が生存していれば処刑者の正体を通知する:
【霊能結果】本日処刑された {キャラ名} は「{人狼/人間}」でした。
※狂人・妖狐は「人間」と出る。霊能者が死亡している場合はスキップ。
能力者のアクション(並行して個別送信)
※能力者が死亡している場合、そのアクションはスキップする
占い師に(生存している場合のみ):
占い対象を選んでください。
生存者: {占い師以外の生存者リスト}
狩人に(生存している場合のみ):
護衛対象を選んでください。
生存者: {狩人以外の生存者リスト}
{前回護衛した人がいれば「※{名前}は連続護衛のため選べません」}
人狼に(2人とも生存なら密談 → 最終決定):
襲撃対象を相談してください。相方とGMの両方にSendMessageしてください。
合計10メッセージまで使えます。
生存者: {人狼以外の生存者リスト}
決まったら襲撃対象をGMに報告してください。
- 人狼が2人とも生存: 合計10メッセージの密談(0日目と同じ方式:相方+GMに送信)後、最終決定をGMに報告
- 人狼が1人のみ: 直接襲撃対象を選択
- 襲撃は必須。「襲撃しない」は選択不可
- 応答なしの場合: 数回リトライしても応答がなければ、GM が
shuf で生存者からランダムに襲撃対象を決定
夜の判定
gm-guide.md の判定ロジックに従って処理:
- 占い結果の確定(妖狐なら呪殺フラグ)
- 護衛対象の確定
- 襲撃の判定(護衛されてたら無効、妖狐なら無効)
- 死亡者の確定
日次ログの完成
当日の day-{N}.yaml を完成させる:
- 夜のアクション結果を night セクションに記録
- end_of_day の生存者・死亡者リストを更新
- gm/memo.md も更新(累積情報の反映)
注意: YAMLはこまめに更新すること。コンパクション(コンテキスト圧縮)が発生すると未書き込みの情報が失われる。フェーズの切り替わりごと、または数メッセージごとに書き込む。
勝利判定 を行う。ゲーム続行なら Phase 3(朝)に戻る。
Phase 5: ゲーム終了
1. 勝利宣言
broadcast で全員に通知:
【ゲーム終了 - {勝利陣営}の勝利!】
配役公開:
{全プレイヤーの名前: 配役を列挙}
{簡単な振り返りコメント}
2. 最終ログ
最終日の day-{N}.yaml に game_over: true と winner を記録。
3. クリーンアップ
-
生存者のみに shutdown_request を送信:
【ゲーム終了 - 退場要求】
ゲームが終了しました。お疲れ様でした。
退場前に、以下のファイルにゲームの振り返りを書いてください:
.claude/werewolf/{game-id}/players/{あなたの名前}/reflection.md
以下の内容を含めることをお勧めします:
- ゲームプレイの感想(戦略、判断、面白かった瞬間)
- 自分の配役をどう演じたか
- 他のプレイヤーについての印象や推理(配役公開を踏まえて)
- もしやり直せるなら変えたいこと
reflection.md を Write ツールで作成したら、このshutdown_requestを承認してください。
重要: 死亡プレイヤーは既にゲーム中に退場済みのため、shutdown_request を送信しない。
-
全員の shutdown_request が承認されたら TeamDelete でチームを削除
- 拒否時は gm-guide.md の手順に従う(リマインド1回、それでも拒否ならログ記録して続行)
ワークスペース(.claude/werewolf/{game-id}/)はログとして保持する(削除しない)。
ワークスペース構造まとめ
.claude/werewolf/{game-id}/
├── gm/
│ ├── memo.md # GM の秘密メモ(配役、累積状態)
│ └── days/
│ ├── day-0.yaml # 0日目ログ(密談、初日お告げ)
│ ├── day-1.yaml # 1日目ログ(議論、投票、夜アクション)
│ └── ...
└── players/
├── sakuraba/
│ ├── handout.md # キャラハンドアウト
│ ├── player-guide.md # プレイヤーガイド
│ └── memo.md # プレイヤーが自由に使うメモ
├── iwao/
│ ├── handout.md
│ ├── player-guide.md
│ └── memo.md
└── ...(9人分)
アクセス権限
| 領域 | GM | 各プレイヤー |
|---|
| gm/ | 読み書き可 | アクセス禁止 |
| players/自分/ | 読み書き可 | 読み書き可 |
| players/他人/ | 読み取り可 | アクセス禁止 |