/gaia-meeting
user-facingWhat it does
/gaia-meeting runs a structured peer-to-peer multi-agent meeting with a seven-phase lifecycle: Invite, Charter, Research, Discuss, Close, Review, and Save. Unlike Party Mode, meetings require a charter that defines the decision to be made. The default mode is "decide" -- the meeting drives toward a concrete decision.
Interactivity model
A meeting is interactive across top-level user turns, not within a single turn. The skill pauses at five fixed yield boundaries and waits for your next message before continuing. At each boundary you see this prompt:
[c]ontinue / [p]ause / [i]nterject "..." / [w]rap-up / [a]bort
The five yield boundaries are:
- Post-CHARTER -- after the charter is validated and invitees are resolved.
- Post-RESEARCH -- after participants share their cited findings.
- Every N DISCUSS turns -- default every 4 rounds; configurable via
meeting.checkpoint_every_n_turns(clamped to 1--10). - Pre-CLOSE -- before the decision is recorded.
- Pre-SAVE -- before decisions and action items are persisted to memory.
If you supply --charter with no other input and never respond to yields, the meeting runs end-to-end in a single turn with no user participation. This is almost never what you want -- see Troubleshooting.
When to use it
- You need a structured discussion that drives to a decision, not just exploration.
- You want meeting notes with action items and decision records automatically captured.
Prerequisites
- No strict prerequisites. Works best when planning artifacts exist for context.
Orchestration mode
When /gaia-meeting starts in subagent mode (Mode A -- the default), the framework emits a one-shot warning to stdout:
────────────────────────────────────────────────────────────────────────────
GAIA orchestration: running in subagent mode (Mode A)
The skill you're invoking belongs to a class (heavy-procedural or
conversational) whose output benefits from cross-step context. Mode A
dispatches each sub-agent in its own forked context, so context may
be lossy between steps — sub-agents return summaries, not full reasoning.
For the full-fidelity experience, enable Mode B (Agent Teams):
1. Set CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 in your environment.
2. Add orchestration.mode: team to .gaia/config/project-config.yaml.
Mode B uses persistent teammates that preserve in-conversation state
across dispatches.
This warning is shown once per session.
────────────────────────────────────────────────────────────────────────────
Why Mode B matters for meetings
The /gaia-meeting skill declares orchestration_class: conversational in its SKILL.md frontmatter. Conversational skills produce output that benefits from cross-step context -- every per-turn agent dispatch in the DISCUSS and RESEARCH phases would lose the live reasoning trace of every prior turn when forked in Mode A. Mode B uses persistent teammates that retain in-conversation state across dispatches, so each agent's turn can build on what was said before instead of receiving only a summary.
How to enable Mode B
Both steps are required. If either is missing, the framework falls back silently to Mode A and the warning fires again on the next session.
Step 1 -- set the environment variable:
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
Add this to your shell rc file to persist across sessions, or set it in Claude Code's settings.json.
Step 2 -- add the YAML block to .gaia/config/project-config.yaml:
orchestration:
mode: team
One-shot semantics
The warning is emitted once per Claude Code session. A marker file at _memory/checkpoints/orchestration-warning-shown.<session-id> suppresses the warning for the rest of the session. Starting a new session re-emits the warning once.
How to invoke
/gaia-meeting --charter "Decide the database technology for the user service" --invitees Theo,Soren
Resuming a paused session
If you chose [p]ause at a yield boundary, the session is persisted to _memory/meeting-sessions/{date}-{slug}.yaml. Resume it with one of the following:
/gaia-meeting --resume <session-id> --continue
/gaia-meeting --resume <session-id> --interject "I want to revisit the caching concern"
/gaia-meeting --resume <session-id> --wrap-up
How you participate
You are NOT auto-added as an attendee. By default, the user is an interjector -- you observe the meeting and can speak at yield boundaries, but agents do not address you as a participant.
There are two ways to participate:
| Surface | How | Effect |
|---|---|---|
| Attendee | Include yourself in --invitees (e.g., --invitees Theo,Julien). Requires a stakeholder file -- create one first via /gaia-create-stakeholder, since --invitees takes agent or stakeholder identifiers, not free-form names. | Agents address you by name, wait for your contributions during discussion rounds, and treat your input as first-class. |
| Interjector | Type i "your message" at any yield boundary. | Your message is injected into the transcript. Agents respond to it in the next phase, but you are not a named participant. |
If you use --mode decide (the default) with no --invitees, the resolved attendee set is empty. The meeting will narrate around your absence. Always specify --invitees in decide mode.
What it does step by step
- Charter gate Validates that a charter was provided. The meeting cannot start without one.
- Invite participants Selects relevant agents based on the charter topic.
- Research phase Participants load relevant context from project artifacts and share cited findings.
- Discussion rounds Sequential turns with cite-or-flag enforcement -- every claim must cite a source or be flagged as unverified.
- Close phase Records the decision, captures action items, and writes meeting notes to
.gaia/artifacts/creative-artifacts/meeting-notes/meeting-{date}.md. - Save to memory Persists decisions and action items to agent memory sidecars.
Inputs
| Input | Source | Required | Description | Example |
|---|---|---|---|---|
--charter |
Command argument | Yes (new session) | A one-to-three-sentence framing for the meeting that defines the decision to be made. | --charter "Decide the database technology for the user service." |
--mode |
Command argument | No (defaults to decide) |
Meeting mode. Each mode biases the closing artifact differently. See the mode reference below this table. | --mode decide, --mode explore, --mode red-team, --mode clarify |
--invitees |
Command argument | No | Comma-separated list of agent or stakeholder identifiers to invite. In decide mode with no invitees, the attendee set is empty. To participate as an attendee, include your own stakeholder identifier here. |
--invitees Theo,Soren |
--invitees-override |
Command argument | No (use with --invitees) |
When set alongside --invitees, the user-specified CSV is authoritative -- mode-default invitees are NOT auto-added. The saved frontmatter records invitees_override: true. |
--invitees "Derek,Nate" --invitees-override |
--skip-research |
Command argument | No | Omit the RESEARCH phase entirely. The SAVE phase writes research_phase: skipped into the meeting-notes frontmatter. |
--skip-research |
--no-web |
Command argument | No | Exclude WebSearch and WebFetch from the RESEARCH phase tool allowlist. The SAVE phase writes web_search: disabled into the meeting-notes frontmatter. Recommended for sensitive charters. |
--no-web |
--resume |
Command argument | Yes (resuming) | Session ID of a paused meeting to resume. Sessions are stored under _memory/meeting-sessions/{date}-{slug}.yaml. |
--resume 2026-05-18-database-decision |
--continue |
Command argument | No (resume only) | Used with --resume. Continue the meeting from where it was paused. Mutually exclusive with --interject and --wrap-up. |
--resume <id> --continue |
--interject |
Command argument | No (resume only) | Used with --resume. Inject a message into the transcript before continuing. Mutually exclusive with --continue and --wrap-up. |
--resume <id> --interject "Revisit the caching concern" |
--wrap-up |
Command argument | No (resume only) | Used with --resume. Skip remaining discussion and move directly to the Close phase. Mutually exclusive with --continue and --interject. |
--resume <id> --wrap-up |
Mode reference
Ten canonical modes are available. The mode you pick sets the goal of the meeting and the shape of its closing artifact, and (unless --invitees-override is set) auto-injects a default set of expert invitees suited to that goal. Pick the mode whose purpose matches what you actually need out of the session.
What each mode is for
decide(default)- Make a decision. Use when you have a question with options and need to land on one, with the trade-offs and rationale recorded. Produces a decision-record. No default invitees — you choose who weighs in.
explore- Open up a problem space. Use when you are not ready to decide and want to surface options, angles, and unknowns before narrowing. Produces an opportunity-map. No default invitees.
align- Get people on the same page. Use to reconcile differing understandings, confirm scope, or settle who-owns-what before work starts. Produces an alignment-summary. Default invitees: Derek (PM), Nate (Scrum Master).
red-team- Attack the plan to find weaknesses. Use to stress-test a design, decision, or rollout by deliberately hunting for risks, failure modes, and security gaps. Produces a risk-register. Default invitees: Zara (Security), Sable (Test Architect), Nova (Problem-Solver).
ac- Write acceptance criteria. Use to turn a feature or story into concrete, testable acceptance criteria. Produces a machine-readable acceptance-criteria list. Default invitees: Vera (QA), Sable (Test Architect).
brainstorm- Generate new ideas. Use for divergent, quantity-first idea generation before any filtering. Produces a brainstorming-document. Default invitees: Rex, Orion, Lyra, Elara, Vermeer (creative / innovation personas).
design(aliasux)- Work through a UX / product design. Use to design flows, screens, and interaction patterns, balancing usability and the design system. Produces ux-design-notes. Default invitees: Christy, Suki, Layla, Talia, Tariq, Lena, Cleo, Freya (design / front-end personas).
architecture- Make a technical / architectural call. Use to choose technologies, define component boundaries, or record an architecture decision and its consequences. Produces architecture-decisions. Default invitees: Theo, Soren, Milo, Juno, Omar, Priya (architecture / platform personas).
sprint- Adjust the current sprint. Use to re-plan scope, re-prioritize, or resolve blockers mid-sprint. Produces sprint-adjustments. Default invitees: Nate (Scrum Master), Derek (PM), Rafael.
clarify(aliasesclarification,questions)- Get a question answered / explained. Use purely to understand something — experts answer your question from different angles and explain it. This mode is not for deciding and not for brainstorming; it produces clarification-notes (questions, expert answers, agreements/disagreements on the explanation, and open follow-ups), never a decision record. No default invitees — invite the experts relevant to your topic with
--invitees.
At a glance
| Mode | Goal | Alias | Default invitees | Closing-artifact bias |
|---|---|---|---|---|
decide (default) | Make a decision | (none) | decision-record | |
explore | Open up a problem space | (none) | opportunity-map | |
align | Get on the same page | Derek, Nate | alignment-summary | |
red-team | Find risks / weaknesses | Zara, Sable, Nova | risk-register | |
ac | Write acceptance criteria | Vera, Sable | machine-readable-ac-list | |
brainstorm | Generate ideas | Rex, Orion, Lyra, Elara, Vermeer | brainstorming-document | |
design | Design UX / product | ux | Christy, Suki, Layla, Talia, Tariq, Lena, Cleo, Freya | ux-design-notes |
architecture | Make a technical call | Theo, Soren, Milo, Juno, Omar, Priya | architecture-decisions | |
sprint | Adjust the sprint | Nate, Derek, Rafael | sprint-adjustments | |
clarify | Get a question answered | clarification, questions | (none) | clarification-notes |
Outputs
| Output | Location | Description |
|---|---|---|
| Meeting notes | .gaia/artifacts/creative-artifacts/meeting-notes/ | The saved meeting-notes document (meeting-{date}-{slug}.md). |
Example session
> /gaia-meeting --charter "Decide the database for user service" --invitees Theo,Soren
Charter accepted.
Inviting: Theo (Architect), Soren (DevOps)
[c]ontinue / [p]ause / [i]nterject "..." / [w]rap-up / [a]bort
> c
Research phase...
[Theo] PostgreSQL aligns with our stack (source: architecture.md S5)
[Soren] Redis caching layer needed regardless (source: infra-design.md S3)
[c]ontinue / [p]ause / [i]nterject "..." / [w]rap-up / [a]bort
> i "What about DynamoDB? We have AWS credits expiring Q3."
Discussion:
Round 1: [Theo] DynamoDB would require a new data access layer...
[Soren] Operational cost is lower but lock-in risk is high...
Round 2-4: ...
[c]ontinue / [p]ause / [i]nterject "..." / [w]rap-up / [a]bort
> p
Session paused. ID: 2026-05-07-database-decision
Resume with: /gaia-meeting --resume 2026-05-07-database-decision --continue
Resuming
> /gaia-meeting --resume 2026-05-07-database-decision --continue
Resuming session 2026-05-07-database-decision at pre-CLOSE...
Decision: PostgreSQL with Redis caching layer.
Action items: Theo to update architecture.md.
Written to .gaia/artifacts/creative-artifacts/meeting-notes/meeting-2026-05-07.md
What to run next
/gaia-action-items-- extract and track the meeting's action items and decisions.
Troubleshooting
My meeting ran end-to-end without me -- I never got to participate
Two root causes:
- No invitees in decide mode. With
--mode decide(the default) and no--invitees, the resolved attendee set is empty. The skill has no participants to yield to, so it narrates the entire meeting in one pass. Fix: always pass--inviteesin decide mode. - You are not on the invitee list. The user is not auto-added as an attendee. Without your name in
--invitees, agents treat you as absent. Fix: create a stakeholder for yourself via/gaia-create-stakeholder, then include your identifier in--invitees. Alternatively, use[i]nterject "..."at each yield boundary to participate without being a named attendee.
I keep seeing the GAIA orchestration warning every time I start this command
The warning is shown once per session, so if it fires again that's a new session -- not a per-skill repeat. If you want to silence it entirely, enable Mode B (full-fidelity orchestration via Agent Teams). Both of these conditions must be true:
echo $CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMSreturns1(not empty).gaia/config/project-config.yamlcontains:orchestration: mode: team
If either is missing the framework silently uses Mode A and re-emits the warning each session.
Charter not provided
The meeting will HALT with status BLOCKED before invitees are notified. Supply --charter "..." to define the decision to be made.