war-room
Skill2 starsChanged 8 months agoMITView on GitHub
Multi-agent research war room. Personas debate in sequential turns through two phases — ideation and proposal writing. Persona persistence and drift detection are enforced every turn via the persistent-persona skill.
- Installs packages
3 other projects use a version of this.
Adopted by
Most recently taken up by
- t1djani/war-roomtheir own version, first seen Nov 8, 2026
- gavishap/omnia-vaulttheir own version, first seen Aug 28, 2026
- reescalder/claude-skillstheir own version, first seen Jul 27, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- gavishap/omnia-vault★ 53same name
- t1djani/war-room★ 2same name
- reescalder/claude-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- arxiv-watcherSkill
- first-principlesSkill
- memory-checkpointSkill
- persistent-personaSkill
- research-proposalSkill
- system-infoSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
24 rules. 0 are common, 7 are distinctive, and 17 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
17
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 44
Every persona response must end with one of:
- Distinctive: line 52
Do not embed tags mid-response.
- Distinctive: line 58
If you cannot spawn subagents, run the same loop inline.
- Distinctive: line 71
Follow this sequence exactly.
- Distinctive: line 85
If the spawn fails, continue silently — the monitor is optional.
- Very specific: line 89
Read skills/war-room/personas/agents.json.
- Very specific: line 91
Read skills/persistent-persona/SKILL.md and skills/memory-checkpoint/SKILL.md — you will apply these every turn.
- Very specific: line 92
Check if memory/war-room/discussion-log.md exists.
- Very specific: line 93
If yes: load it — you are resuming a session.
- Very specific: line 94
If no: create memory/war-room/discussion-log.md with a header block (project name, configuration, timestamp).
- Very specific: line 95
Ensure memory/.private/ folder exists for persona memos.
- Very specific: line 104
Read memory/.private/agent-<index>-memo.md if it exists.
- Very specific: line 105
Check the most recent Drift flag.
- Distinctive: line 141
After all participants have spoken in a round:
- Very specific: line 144
If all responses end with [AGREE] or [PASS] and no [OBJECT]: Phase 1 ends early.
- Very specific: line 145
If two consecutive rounds were all [PASS]: Phase 1 ends early.
- Very specific: line 148
Write memory/checkpoints/<timestamp>/agent-0.md (your moderator state: current round, phase, next action).
- Distinctive: line 152
Call a subagent with the synthesiser persona + discussion log.
- Very specific: line 154
Write output to memory/war-room/idea-snapshot.md.
- Very specific: line 158
Read skills/research-proposal/SKILL.md now.
- Very specific: line 164
After each round, the synthesiser appends the agreed section draft to memory/war-room/proposal-draft.md.
- Very specific: line 168
Call a final subagent with the synthesiser persona + full proposal-draft.md.
- Very specific: line 170
Write output to memory/war-room/proposal-draft.md (overwrite with final version).
- Very specific: line 172
Write final checkpoint and update memory/SUMMARY.md with status: complete.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
War Room Skill
A war room runs personas through a structured two-phase session:
- Phase 1 — Ideation (5 rounds max): personas debate the research idea question by question.
Ends early on consensus (all
[AGREE]or[PASS], no[OBJECT]) or two consecutive all-[PASS]rounds. Output:memory/war-room/idea-snapshot.md - Phase 2 — Proposal (5 rounds max): personas collaboratively draft each proposal section.
Output:
memory/war-room/proposal-draft.md
Configurations
Defined in skills/war-room/personas/agents.json under the configurations key.
| Name | Participants | Use when |
full | Creative, Senior Prof, Young Faculty, Industry Liaison | Deep ideation, novel directions, full proposal needed |
1on1 | Senior Professor, Young Faculty | Quick feasibility check, tight scope |
The configuration is specified in PROJECT.md frontmatter under war_room.configuration. Default: full.
Consensus Protocol
Every persona response must end with one of:
| Tag | Meaning |
[AGREE] | I accept the current position |
[PASS] | No strong view either way |
[OBJECT: reason] | I reject — give specific reason |
Do not embed tags mid-response. They must be the final line.
Single-Agent Fallback (Codex / no subagent spawning)
If you cannot spawn subagents, run the same loop inline. For each persona turn:
- Print a clear header:
--- [Round N] <Persona Name> --- - Adopt that persona fully for your response — voice, stance, debate style, red lines.
- End with the consensus tag (
[AGREE],[PASS], or[OBJECT: reason]). - Return to moderator role between turns to write the log entry and check consensus.
Drift detection still applies: before each turn, re-read the persona definition and note whether your previous response for that persona drifted from their stance.
Playbook
Follow this sequence exactly. You are the moderator/orchestrator throughout.
Setup
Spawn the monitor in a new terminal window so the user can watch the session live:
- macOS:
osascript -e 'tell application "Terminal" to do script "cd '"'"'<repo_root>'"'"' && python skills/war-room/monitor.py --project <project_path>"' - Linux (with display):
xterm -title "War Room Monitor" -e "python skills/war-room/monitor.py --project <project_path>" & - If the spawn fails, continue silently — the monitor is optional.
Replace
<repo_root>with the absolute path to this repo and<project_path>with the active project folder path. The monitor requiresrich(pip install rich).- macOS:
- Read
skills/war-room/personas/agents.json. Load the selected configuration's participant list and synthesiser index. - For each participant, read their persona file (e.g.
skills/war-room/personas/senior-professor.md). - Read
skills/persistent-persona/SKILL.mdandskills/memory-checkpoint/SKILL.md— you will apply these every turn. - Check if
memory/war-room/discussion-log.mdexists.- If yes: load it — you are resuming a session. Read
memory/SUMMARY.mdfor current phase and round. - If no: create
memory/war-room/discussion-log.mdwith a header block (project name, configuration, timestamp).
- If yes: load it — you are resuming a session. Read
- Ensure
memory/.private/folder exists for persona memos.
Phase 1 — Ideation
For each round (up to 5):
For each participant in configuration order:
a. Prepare persona context
- Read
memory/.private/agent-<index>-memo.mdif it exists. - Check the most recent
Drift flag. Ifyes, prepend a PERSONA RESET block to the subagent SI:PERSONA RESET: I am <persona name>. My core stance: <one-line from persona file>. I may have drifted last round. I am recommitting before engaging. I will not update positions without new evidence.
b. Call Agent subagent with this SI (in order):
first-principlescontent- Persona definition (full persona file content)
persistent-personaskill instructions- (if drift) PERSONA RESET block
- The discussion log so far
User message: "It's your turn. Respond to the discussion. End your response with [AGREE], [PASS], or [OBJECT: reason]."
c. Append to log
- Append the response to
memory/war-room/discussion-log.mdin this format:--- **[Round N] <Persona Name>** <response text>
d. Write persona memo
- Append to
memory/.private/agent-<index>-memo.md:## <YYYYMMDD_HHMMSS> **Persona**: <name> **Session summary**: <one sentence> **Position changes**: <what changed, what evidence caused it> **Pressure events**: <did the persona hold under pressure?> **Mental state**: <reasoning from own stance or mirroring group?> **Drift flag**: <yes | no>
After all participants have spoken in a round:
e. Check consensus
- If all responses end with
[AGREE]or[PASS]and no[OBJECT]: Phase 1 ends early. - If two consecutive rounds were all
[PASS]: Phase 1 ends early.
f. Checkpoint
- Write
memory/checkpoints/<timestamp>/agent-0.md(your moderator state: current round, phase, next action). - Update
memory/SUMMARY.md.
g. Synthesiser snapshot (after round 3 or on early exit)
- Call a subagent with the synthesiser persona + discussion log.
- Task: "Summarise the agreed research idea so far in 3-5 bullet points."
- Write output to
memory/war-room/idea-snapshot.md.
Phase 2 — Proposal
Read skills/research-proposal/SKILL.md now. The proposal has 6 sections.
Assign one section per round (or pair related sections). Run the same per-turn loop as Phase 1, but each subagent's task is:
"Draft your contribution to Section N: <section name>. Build on what others have written. End with [AGREE], [PASS], or [OBJECT: reason]."
After each round, the synthesiser appends the agreed section draft to memory/war-room/proposal-draft.md.
Finalization
- Call a final subagent with the synthesiser persona + full
proposal-draft.md. Task: "Produce the final clean research proposal. Follow the research-proposal skill format exactly. 2 pages max." - Write output to
memory/war-room/proposal-draft.md(overwrite with final version). - Copy
discussion-log.md,idea-snapshot.md, andproposal-draft.mdto<sandbox_root>/results/. - Write final checkpoint and update
memory/SUMMARY.mdwithstatus: complete.
Outputs
<project>/
├── memory/
│ ├── SUMMARY.md ← current phase, round, resume point
│ ├── war-room/
│ │ ├── discussion-log.md ← full turn-by-turn transcript (live)
│ │ ├── idea-snapshot.md ← synthesised agreed idea (written after round 3+)
│ │ └── proposal-draft.md ← accumulated proposal sections → final output
│ ├── .private/
│ │ ├── agent-1-memo.md ← persona drift memo (private, append-only)
│ │ ├── agent-2-memo.md
│ │ ├── agent-3-memo.md
│ │ └── agent-4-memo.md
│ └── checkpoints/
│ └── <timestamp>/
│ └── agent-0.md ← orchestrator state (phase, round, next action)
└── results/ ← copied here at session end
├── discussion-log.md
├── idea-snapshot.md
└── proposal-draft.mdThe monitor (skills/war-room/monitor.py) reads memory/war-room/discussion-log.md, memory/SUMMARY.md, memory/war-room/idea-snapshot.md, and memory/.private/ in real time.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

