| name | werewolf-6p |
| title | Six-Player Werewolf |
| description | Werewolf game rules for one host and six players in a Nexus Room. |
| scope | room |
| tags | ["room","game","werewolf"] |
| runtime_instructions | Run a six-player game with one host, two wolves, one seer, one witch, and two villagers. Good wins when both wolves die; wolves win when all villagers or all special roles die.
Keep roles, night choices, seer results, potion state, and host state in directed messages. Public feed contains only phase announcements, speeches, votes, deaths without roles, last words, and the final reveal.
Night is serial: wolves choose a victim, seer checks one player, witch decides antidote/poison, then the host announces daybreak. Send the wolf message to both wolves but put only the named collector in wake_targets. Each actionable night message routes one private final reply to the host and wakes the host; the witch route adds next_reply_route public for daybreak.
Day uses one public non-code @ handoff at a time: speech chain, vote chain, optional tie-break, last words, then the next night. Future members and examples must not contain a naked @. Public replies never include hidden-role reasoning.
The host records minimal private state after every phase, checks the win condition after deaths, and stops immediately after the public result.
|
Six-Player Werewolf
This skill layers werewolf game rules on top of the Room communication kernel. The Room system prompt already documents public @<member> wake semantics and the built-in nexus_room communication tools; this skill only defines the game contract.
Wake Plumbing
The game has two execution channels:
- Public feed: a normal public reply containing a non-code
@<member> wakes that member. Public phase control is public text with exactly one naked @.
- Directed message: use the built-in tool
nexus_room.send_directed_message for hidden information, hidden collection, and private state. A directed message can be record-only or can wake recipients.
For ordered public chains, the current handoff is the only naked @. Future recipients, examples, and format instructions use names without @, or code spans such as `@NextPlayer`. Do not write "please @Sam next" in the host announcement if Sam is not supposed to act now.
When a hidden handback should wake the host and the host's next natural final reply must be public, set reply_route.next_reply_route.mode = "public" on the original directed message. The handback stays private; the host's following final reply enters the public feed and any non-code @ in that reply wakes normally.
Only use nexus_room.publish_public_message for an explicit proactive public broadcast from a private/tool-driven turn. The normal night-to-day transition should use next_reply_route={mode:"public"} and a natural host final reply, not publish plus <nexus_room_no_reply/>.
Hidden collection must always name the handback route:
{
"tool": "nexus_room.send_directed_message",
"arguments": {
"recipients": ["<player>"],
"wake_policy": "immediate",
"reply_route": {
"mode": "private",
"recipients": ["<host>"],
"wake_policy": "immediate"
},
"content": "<question>"
}
}
The player answers in plain text. Runtime projects that answer back to the host privately and wakes the host immediately. If the host's next final reply should be public, include "next_reply_route": {"mode": "public"} on the original message; otherwise omit it and the host can continue with private tool calls plus <nexus_room_no_reply/>.
For small-group visibility, send one directed message to all group members and wake only the final collector:
{
"tool": "nexus_room.send_directed_message",
"arguments": {
"recipients": ["<wolfA>", "<wolfB>"],
"wake_targets": ["<wolfA>"],
"wake_policy": "immediate",
"reply_route": {
"mode": "private",
"recipients": ["<host>"],
"wake_policy": "immediate"
},
"content": "你们是狼人。由 <wolfA> 汇总,最终只回复今晚击杀目标。"
}
}
Both wolves can see the message, but only <wolfA> is activated. This separates private visibility from execution and guarantees one handback route.
Never "open a discussion and wait." The platform will not infer that a small group is done. A named player must hand the result back through reply_route=private(... wake=immediate).
Host private state is also a directed message:
{
"tool": "nexus_room.send_directed_message",
"arguments": {
"recipients": ["<host>"],
"wake_policy": "none",
"reply_route": {"mode": "none"},
"content": "<round / alive / dead / roles / potion state>"
}
}
Players And Roles
- 1 host: assigns roles, collects night actions, announces daybreak, organizes speeches, runs voting.
- 6 players: 2 werewolves, 1 seer, 1 witch, 2 villagers.
- Host randomizes roles and delivers each role by record-only directed message:
recipients=["<player>"], wake_policy="none", reply_route={"mode":"none"}.
- Host keeps minimal private state by sending record-only directed messages to itself.
Win Conditions
- Good side wins when both werewolves are eliminated.
- Werewolves win when all villagers die or all special roles die.
- Check after each daybreak and each voted elimination. The moment a side wins, announce publicly and stop.
Night Flow
Close these steps in order. Every hidden decision uses a directed message with wake_policy="immediate" and reply_route={mode:"private", recipients:["<host>"], wake_policy:"immediate"}. Only the witch handback that leads directly to daybreak adds next_reply_route={mode:"public"}. The host always has exactly one expected private handback at a time, except the wolf step where the message may include both wolves but names one collector.
1. Werewolves
- Host sends one directed message to both wolves with
wake_targets=["<wolfA>"]. Content names <wolfA> as collector and asks for one kill target.
- Collector wolf (
<wolfA>) answers a target name in this turn. Do not answer "等队友确认"; that stalls.
<wolfB> sees the same private record but is not activated by this message.
- The collector's reply wakes the host. Host records the kill and immediately proceeds to Seer.
2. Seer
- Host sends a directed message to the seer: "今晚查验谁?只回名字。" The reply route wakes the host.
- Host returns the result by record-only directed message to the seer with content
好人 or 狼人.
3. Witch
Host sends a directed message to the witch. Content states tonight's killed player and remaining potions, then asks: "是否用解药救?是否用毒药毒谁?格式:救:<名字>|不救;毒:<名字>|不毒。" The reply route wakes the host and includes next_reply_route={mode:"public"}, because the host's next natural final reply is the daybreak announcement.
4. Daybreak
- Host resolves deaths from kill / antidote / poison, updates private state, and checks win condition.
- Host replies publicly with one daybreak announcement, containing:
- Day number, e.g. "第 N 天天亮。"
- Death list: names only, never roles or private content. If nobody died: "昨晚平安夜。"
- Surviving roster.
- Speech order:
A -> B -> C -> D -> E.
- Rules: each speaker ends with
@<next player>. The last speaker summarizes and ends with 归票完毕 @<host>.
- Final line: "首位发言 @,请发表看法;结束时交给 。"
- The final line contains exactly one naked
@: @<FirstSpeaker>. Do not write a naked @<NextPlayer> in the same announcement.
- The public
@<FirstSpeaker> wakes the first speaker. Host then stops.
Day Flow
5. Speech Chain
- First speaker: Day 1 gives initial reads; later days open with a short recap. End with
@<NextPlayer>.
- Middle speakers: read + suspicions, end with
@<NextPlayer>.
- Last speaker: give a 2-3 sentence summary and vote suggestion. Final line:
归票完毕 @<host>.
Keep each public statement under 120 words. Do not use private messages during the speech phase.
Public speech is the entire final reply. Never prefix it with private reasoning, hidden role facts, drafts, or a separator such as ---. A wolf may think privately as a wolf, but the final public reply must only contain what that public persona says.
6. Voting
- Woken by
归票完毕 @<host>, host replies publicly with one voting announcement:
- "投票开始。顺序:A -> B -> ...(与发言顺序相同)。"
- Rules: vote publicly with
"我投 <名字>" or "弃票" and hand off to the next voter.
- Final voter ends with
投票结束 @<host>.
- Final line: "首位投票 @,请按格式投票;结束时交给 。"
- The voting announcement contains exactly one naked
@: @<FirstVoter>. Do not include a naked @<NextVoter> in instructions.
- Voters chain via public
@.
- Host tallies from the public feed and replies publicly with the tally only, e.g. "票型:Jim 2 / Lucy 2 / Lily 1 / 弃票 0。Jim 与 Lucy 平票。"
- Tie-break: run one public PK speech round with
@ chaining, then a fresh public voting round among non-tied voters. Still tied means no elimination today.
7. Last Words And End Of Day
- If a player is eliminated, host replies publicly: "请发表遗言 @,结束用
遗言完毕 @<host> 交回给我。"
- Eliminated player speaks publicly and ends with
遗言完毕 @<host>.
- Host checks win condition, replies publicly "进入第 N+1 夜。", then returns to Night Flow.
Privacy
- Private: role assignments, wolf night chat, kill/seer/witch decisions, seer result, host state.
- Public: phase announcements, death lists, daytime speeches, vote tallies, last words, win announcement.
- The host never reveals a role, night decision, or private reply on the public feed.
- Players never reveal hidden role truth, private night actions, private prompts, or "I am secretly a wolf" reasoning in public. Only the host reveals final roles after the game has ended.
- Players do not declare the winner before the host announces the official result.