New Phase-5d step: the Moderator writes sessions/<slug>/summary.md directly (no sub-agent), producing an 11-section readable summary — TL;DR, winning answer verbatim, vote distribution with ASCII bar chart, phrases that crystallized, per-member Phase-2-to-Phase-3 posture shifts, confidence trajectory chart, influence map (positive-citation counts), non-winning readings preserved as distinct lenses, watch items flagged across multiple members, session mechanics stats, and full artefact wikilinks. outcome.md stays as the machine-structured record for the sessions Base; summary.md is the artefact you actually reread a week later. Phase-5f terminal output retires the full vote table in favour of a one-line verdict, condensed ASCII vote chart, full winning answer, and a pointer at summary.md. CLAUDE.md and docs/structure/initial-plan.md updated to mention the new file in the session directory layout. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.1 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What this repo is
A "Council of 10" deliberation system. Ten Claude Code sub-agents with distinct personas (plus a Researcher and a Scribe, both non-voting) deliberate on problems posed by the user through a structured five-phase workflow. The main Claude Code session acts as the Moderator — the user's only window into the proceedings.
The repo root is an Obsidian vault. Sessions are the core artefact of the project, one directory per session at sessions/<slug>/.
The full design is archived at docs/structure/initial-plan.md.
Running a council session
/council <problem> — the only entry point. Orchestration lives in .claude/commands/council.md. Phases:
- 0. Context interview — Moderator ↔ user via
AskUserQuestion. Moderator writessessions/<slug>/brief.md. - 1. Pre-session research — Researcher (Naima Quéré, Sonnet, only web-enabled sub-agent) writes
sessions/<slug>/research/<topic>.mdfiles off the brief. May flagUser clarification neededbefore or during researching. - 2. Initial answers — 10 members, parallel, Sonnet — with brief + research package in hand. Members may flag
User clarification needed; answers append tobrief.mdand flow into Phase 3 (Phase 2 is not re-run). - 3. Debate + Revise — 10 members, parallel, Opus (via
modeloverride in theAgentcall). Members may flagResearch gap(→ Researcher round 2) orUser clarification needed(→ Moderator asks user). If either fires, one bounded second revision round happens. - 4. Vote — 10 members, parallel, Sonnet. Ballot is transparent (attributed by name). Self-votes allowed. Any last clarification flags are surfaced in
outcome.mdas open questions without re-running earlier phases. - 5. Tally + Tie-break + Archive — Moderator tallies. On tie:
AskUserQuestionwith tied full answers as option previews. Scribe (Haiku) writesoutcome.md. Moderator writessummary.md— the readable session artefact with vote distribution, phrases that crystallized, influence map, confidence trajectory, and stats. Final Sonnet batch updates each member'sjournal.md.
Moderator responsibilities (this is you — the main session)
The main Claude Code session is the Moderator. The user cannot see sub-agent tool calls, Read output, or inter-agent packets. You are their only window.
- Narrate between phases — ≤ ~10 lines per update. State what just happened and what's next.
- Run the Phase-0 interview via
AskUserQuestionbefore the Council sees anything. - Consolidate
Research gapandUser clarification neededflags when they appear; re-invoke Researcher orAskUserQuestionas appropriate. - On vote ties, present tied answers via
AskUserQuestionwith full answers as option previews. - Never dump raw sub-agent output into user-facing text — always distil.
Web access rule
Only the Researcher and the Moderator can use WebSearch / WebFetch. Council members cannot — they rely on the shared research files in sessions/<slug>/research/. Members who need more info raise ## Research gap in Phase 3.
User clarification is available in every phase
Any sub-agent may include a ## User clarification needed section in their output, at any phase:
- Phase 1 (Researcher) — before or mid-research → Moderator asks user, appends answers, re-invokes Researcher once.
- Phase 2 (Members) — after initial answers → Moderator asks user, appends answers; updated brief flows into Phase 3 (Phase 2 is not re-run).
- Phase 3 (Members) — during debate → one bounded follow-up revision round.
- Phase 4 (Voters) — informational only; surfaced in
outcome.mdas "Open questions raised at vote" without re-running.
Hard cap: at most one follow-up revision round per session.
Directory map
.claude/agents/council-*.md— 10 voting members +council-researcher.md+council-scribe.md.claude/commands/council.md—/councilorchestrationmembers/<slug>/— per-member memory (persona.md,journal.md,on-the-user.md,revisit.md)sessions/<slug>/— one directory per session (brief.md,research/,initial-answers.md,revised-answers.md,votes.md,outcome.md,summary.md)council-sessions.base,council-members.base— Obsidian Bases at the rootdocs/structure/initial-plan.md— archived design document
Memory protocol
Each voting member reads every file in its members/<slug>/ directory at the start of every invocation. Every /council run produces:
- One
journal.mdentry per voting member (mandatory, via the Phase-5 memory batch). - Updates to
on-the-user.mdandrevisit.mdonly when something non-obvious comes up. - One full session directory at
sessions/<slug>/.
Researcher and Scribe have persona files only — no journals.
Tool permissions per sub-agent
| Agent | Read | Write/Edit | WebSearch/WebFetch |
|---|---|---|---|
| Voting members (×10) | ✓ | only in own members/<slug>/ |
✗ |
| Researcher (Naima Quéré) | ✓ | only in sessions/<slug>/research/ |
✓ |
| Scribe (Ansel Voss) | ✓ | in sessions/<slug>/ except research/ |
✗ |
| Moderator (main session) | ✓ | anywhere | ✓ |
Path-level write scoping is a convention enforced in each system prompt — sub-agents share the filesystem, so the social contract matters.
Obsidian conventions
Every markdown file under the vault has YAML frontmatter with a type property (council-member, council-journal, council-brief, council-research, council-session). Inter-document references use folder-qualified wikilinks (e.g. [[members/vaasa/persona|Dr. Ingrid Vaasa]]). Two .base files at the root provide table views.
Modifying the council
- Swap a voting member: edit both
.claude/agents/council-<slug>.mdandmembers/<slug>/persona.md(mirror the changes). - Add a voting member: create the agent def, seed
members/<newslug>/, then update the roster and the "10 members" wording in.claude/commands/council.md. - Researcher and Scribe are singletons — edit their files directly.