AI Meeting Skill
Run structured multi-agent decision reviews with Codex, Claude Code, and adapter-based CLI agents.
Documentation
AI Meeting Skill
English | δΈζ
ai-meeting is a portable SKILL.md-based agent skill for structured multi-agent meetings. It helps Codex, Claude Code, and other CLI-capable agents review plans, product ideas, technical designs, implementation proposals, and risky decisions across multiple roles.
The skill runs a local orchestrator that:
- creates a meeting ledger under
meetings/<id>/ - injects the brief and controlled materials into each agent prompt
- preserves provider session IDs when available
- runs independent analysis and cross-questioning rounds
- writes a final Markdown decision report with provenance
Status
- Primary providers: Codex and Claude Code.
- Experimental providers: Qoder, OpenCode, Cursor, Gemini, and Hermes are included as opt-in adapters. The project does not block other agent tools by brand; any CLI agent can participate once its provider adapter reports usable auth, prompt transport, session handling, and permission boundaries through
doctor. - Skill folder/name:
ai-meeting. - Display name:
AI Meeting.
Install
Option A: Ask Your Agent To Install It
Copy this into Codex:
Install the ai-meeting skill from this GitHub repository:
https://github.com/bin1874/ai-meeting-skill
Option B: Install In Claude Code As A Plugin
In Claude Code, run:
/plugin marketplace add bin1874/ai-meeting-skill
/plugin install ai-meeting@ai-meeting-skill
The marketplace points to the repository's ai-meeting/ skill folder.
Option C: Ask Claude Code To Install It
Copy this into Claude Code:
Install the ai-meeting skill from this GitHub repository:
https://github.com/bin1874/ai-meeting-skill
If your agent supports installing skills directly from a GitHub URL, the only input it needs is:
https://github.com/bin1874/ai-meeting-skill
Option D: Manual Install
Clone the repository:
git clone [email protected]:bin1874/ai-meeting-skill.git
cd ai-meeting-skill
Install for Codex:
mkdir -p ~/.codex/skills
ln -s "$(pwd)/ai-meeting" ~/.codex/skills/ai-meeting
Install for Claude Code:
mkdir -p ~/.claude/skills
ln -s "$(pwd)/ai-meeting" ~/.claude/skills/ai-meeting
If your host does not support symlinked skills, copy the folder instead:
cp -R ai-meeting ~/.codex/skills/ai-meeting
# or
cp -R ai-meeting ~/.claude/skills/ai-meeting
Check available providers:
node ai-meeting/scripts/ai-meeting.mjs doctor --json
How To Use The Skill In Chat
After installation, ask your host agent to use the skill:
Use the ai-meeting skill to organize Codex and Claude to review this feature plan. Run two rounds and produce a final decision report.
You can also ask for a specific agent set:
Use ai-meeting with builder:codex, critic:claude, architect:codex. Evaluate whether we should ship this design.
Copyable CLI Examples
See docs/example-final-report.md for a shortened final report example.
Example 1: Quick Product Decision Review
cat > /tmp/ai-meeting-brief.md <<'EOF'
# Decision
Should we add team workspaces to the app in the next release?
# Context
- Users currently share one personal workspace.
- Enterprise prospects ask for shared projects and role-based access.
- The team has two weeks before feature freeze.
# Evaluation Criteria
- Real user value
- Implementation cost
- Security and permission risk
- Whether a smaller MVP exists
EOF
MEETING_DIR=$(node ai-meeting/scripts/ai-meeting.mjs create \
--topic "Team workspaces release decision" \
--brief-file /tmp/ai-meeting-brief.md \
--agents builder:codex,critic:claude,architect:codex \
| tee /tmp/ai-meeting-create.json \
| node -e 'let s=""; process.stdin.on("data", d => s += d); process.stdin.on("end", () => console.log(JSON.parse(s).meetingDir));')
node ai-meeting/scripts/ai-meeting.mjs round --meeting-dir "$MEETING_DIR" --round 1
node ai-meeting/scripts/ai-meeting.mjs round --meeting-dir "$MEETING_DIR" --round 2
node ai-meeting/scripts/ai-meeting.mjs synthesize --meeting-dir "$MEETING_DIR"
Open the final report:
sed -n '1,220p' "$MEETING_DIR/synthesis/final.md"
Example 2: Review A Development Document With Materials
cat > /tmp/ai-meeting-brief.md <<'EOF'
# Decision
Review the proposed API redesign and decide whether it is ready for implementation.
# What To Focus On
- Developer experience
- Backward compatibility
- Migration risk
- Test coverage
- Simpler alternatives
EOF
mkdir -p /tmp/ai-meeting-materials
cat > /tmp/ai-meeting-materials/api-redesign.md <<'EOF'
# API Redesign
Replace the old `/v1/tasks` response envelope with a flatter `/v2/tasks` shape.
Support both versions for one release. Add migration warnings to SDKs.
EOF
cat > /tmp/ai-meeting-materials/migration-plan.md <<'EOF'
# Migration Plan
1. Ship `/v2/tasks` behind a beta flag.
2. Add SDK compatibility helpers.
3. Deprecate `/v1/tasks` after telemetry shows 90% migration.
EOF
MEETING_DIR=$(node ai-meeting/scripts/ai-meeting.mjs create \
--topic "API redesign readiness review" \
--brief-file /tmp/ai-meeting-brief.md \
--material README.md \
--material /tmp/ai-meeting-materials/api-redesign.md \
--material /tmp/ai-meeting-materials/migration-plan.md \
--agents builder:codex,critic:claude,user-advocate:codex,architect:claude \
| tee /tmp/ai-meeting-create.json \
| node -e 'let s=""; process.stdin.on("data", d => s += d); process.stdin.on("end", () => console.log(JSON.parse(s).meetingDir));')
node ai-meeting/scripts/ai-meeting.mjs round --meeting-dir "$MEETING_DIR" --round 1
node ai-meeting/scripts/ai-meeting.mjs round --meeting-dir "$MEETING_DIR" --round 2
node ai-meeting/scripts/ai-meeting.mjs synthesize --meeting-dir "$MEETING_DIR"
Materials are copied into the meeting directory and injected into prompts as untrusted data blocks. Large materials are marked with truncatedForPrompt=true; the final report must treat that as an evidence gap.
Example 3: Preview Prompts Before Spending Tokens
cat > /tmp/ai-meeting-brief.md <<'EOF'
# Decision
Should we refactor the background job system now or defer it?
# Criteria
- Reliability improvement
- Risk of regressions
- Amount of code churn
- Operational impact
EOF
MEETING_DIR=$(node ai-meeting/scripts/ai-meeting.mjs create \
--topic "Background job refactor decision" \
--brief-file /tmp/ai-meeting-brief.md \
--material README.md \
--agents builder:codex,critic:claude,security-reliability:codex \
| tee /tmp/ai-meeting-create.json \
| node -e 'let s=""; process.stdin.on("data", d => s += d); process.stdin.on("end", () => console.log(JSON.parse(s).meetingDir));')
node ai-meeting/scripts/ai-meeting.mjs round \
--meeting-dir "$MEETING_DIR" \
--round 1 \
--dry-run
sed -n '1,220p' "$MEETING_DIR/dry-run/round-1/builder.codex.prompt.md"
--dry-run writes preview prompts under dry-run/ and does not mutate official round state.
Example 4: Continue A Meeting With A Third Round
node ai-meeting/scripts/ai-meeting.mjs round --meeting-dir "$MEETING_DIR" --round 1
node ai-meeting/scripts/ai-meeting.mjs round --meeting-dir "$MEETING_DIR" --round 2
# Add one more cross-questioning round if the first two rounds expose unresolved disagreement.
node ai-meeting/scripts/ai-meeting.mjs round --meeting-dir "$MEETING_DIR" --round 3 --max-rounds 5
node ai-meeting/scripts/ai-meeting.mjs synthesize --meeting-dir "$MEETING_DIR"
Example 5: Use Claude As The Final Judge
node ai-meeting/scripts/ai-meeting.mjs synthesize \
--meeting-dir "$MEETING_DIR" \
--provider claude
Output Layout
meetings/<id>/
brief.md
materials/
state.json
workspaces/
rounds/
synthesis/
round-1-summary.md
round-2-summary.md
final.md
If synthesis returns an invalid report, the orchestrator writes synthesis/final.draft.md, records missing sections in state.json, and does not write official final.md.
Safety Model
- Child agents cannot recursively run
ai-meeting. - Codex defaults to read-only sandbox configuration.
- Claude Code defaults to
--safe-modeand no tools. - Child agent cwd is an agent-scoped isolated workspace under the meeting directory, not the project root.
- Briefs, materials, peer outputs, and model outputs are treated as untrusted data.
state.jsonis written atomically.- Official artifacts are written with owner-only
0600file permissions. - Session IDs are redacted in stdout and omitted from final report provenance.
- Provider availability is decided by each adapter's
doctorchecks. New agent tools are welcome through provider adapters, but adapters must report auth, prompt transport, session handling, and permission boundaries honestly.
Test
node --check ai-meeting/scripts/ai-meeting.mjs
node --test tests/ai-meeting.test.mjs
python3 /home/ben/.codex/skills/.system/skill-creator/scripts/quick_validate.py ai-meeting
node ai-meeting/scripts/ai-meeting.mjs doctor --json
License
MIT