war-room — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited war-room (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A war room runs personas through a structured two-phase session:
Ends early on consensus (all [AGREE] or [PASS], no [OBJECT]) or two consecutive all-[PASS] rounds. Output: memory/war-room/idea-snapshot.md
Output: memory/war-room/proposal-draft.md
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.
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.
If you cannot spawn subagents, run the same loop inline. For each persona turn:
--- [Round N] <Persona Name> ---[AGREE], [PASS], or [OBJECT: reason]).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.
Follow this sequence exactly. You are the moderator/orchestrator throughout.
osascript -e 'tell application "Terminal" to do script "cd '"'"'<repo_root>'"'"' && python skills/war-room/monitor.py --project <project_path>"' xterm -title "War Room Monitor" -e "python skills/war-room/monitor.py --project <project_path>" &Replace <repo_root> with the absolute path to this repo and <project_path> with the active project folder path. The monitor requires rich (pip install rich).
skills/war-room/personas/agents.json. Load the selected configuration's participant list and synthesiser index.skills/war-room/personas/senior-professor.md).skills/persistent-persona/SKILL.md and skills/memory-checkpoint/SKILL.md — you will apply these every turn.memory/war-room/discussion-log.md exists.memory/SUMMARY.md for current phase and round.memory/war-room/discussion-log.md with a header block (project name, configuration, timestamp).memory/.private/ folder exists for persona memos.For each round (up to 5):
For each participant in configuration order:
a. Prepare persona context
memory/.private/agent-<index>-memo.md if it exists.Drift flag. If yes, 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-principles contentpersistent-persona skill instructionsUser message: "It's your turn. Respond to the discussion. End your response with [AGREE], [PASS], or [OBJECT: reason]."
c. Append to log
memory/war-room/discussion-log.md in this format: ---
**[Round N] <Persona Name>**
<response text>d. Write persona memo
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
[AGREE] or [PASS] and no [OBJECT]: Phase 1 ends early.[PASS]: Phase 1 ends early.f. Checkpoint
memory/checkpoints/<timestamp>/agent-0.md (your moderator state: current round, phase, next action).memory/SUMMARY.md.g. Synthesiser snapshot (after round 3 or on early exit)
memory/war-room/idea-snapshot.md.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.
proposal-draft.md.Task: "Produce the final clean research proposal. Follow the research-proposal skill format exactly. 2 pages max."
memory/war-room/proposal-draft.md (overwrite with final version).discussion-log.md, idea-snapshot.md, and proposal-draft.md to <sandbox_root>/results/.memory/SUMMARY.md with status: complete.<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.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.