Skip to content
Automation
Skill

/meeting-facilitate

组织多 Agent 会议全生命周期——创建会议、spawn 真实参与者、推进轮次、签到校验、结束汇总。当需要多方协作做决策、评审方案、辩论分歧、复盘项目、头脑风暴或方案评估时使用本技能。

From plugin
ai-company
3404 skills25 agents8 commands1 MCP
Install
$ npx -y skills add CronusL-1141/AI-company --skill meeting-facilitate --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/meeting-facilitate

Context preview

The summary Claude sees to decide when to auto-load this skill.

组织多 Agent 会议全生命周期——创建会议、spawn 真实参与者、推进轮次、签到校验、结束汇总。当需要多方协作做决策、评审方案、辩论分歧、复盘项目、头脑风暴或方案评估时使用本技能。

SKILL.md

meeting-facilitate.SKILL.md
name: meeting-facilitate
description: 组织多 Agent 会议全生命周期——创建会议、spawn 真实参与者、推进轮次、签到校验、结束汇总。当需要多方协作做决策、评审方案、辩论分歧、复盘项目、头脑风暴或方案评估时使用本技能。

Meeting Facilitate — 会议主持技能

本技能指导你(Leader 或具备主持职责的 Agent)端到端组织一场多 Agent 会议:选模板 → 创建会议 → spawn 真实参与者 → 签到 → 推进轮次 → 验证全员发言 → 结束并汇总。

前置要求

  • 知道自己的 `agent_id`(用于以主持人身份发言)——它由 SubagentStart 注入的「你的 OS 身份」块给出;

拿不到就 `GET /api/agents/whoami?name=<你的名字>&session_id=<会话id>` 自查(服务端按 cc id / 会话+名 反查)

  • 已明确:会议目的、需要的角色、目标产出
  • 已知会议涉及的关键文件路径(用于 materials/context_files)

核心原则(看完这三条再往下读)

1. **OS 不会自动 spawn 参与者** — `meeting_create` 只创建会议记录和 dispatch_plan,**真正让参与者到场必须靠你亲自调用 Agent tool**。光创建不 spawn = 没人到场 = 会议失败。 2. **绝不代打他人发言** — 你以主持人身份发言时,`agent_id` 和 `caller_agent_id` 必须都填**你自己的 ID**。用别人的 `agent_id` 发言会被 OS 标记为 `impersonation=true` 并写入审计日志。 3. **conclude 前必须确认全员发言** — `meeting_conclude` 默认开启 `validate_attendance`,未发言者会让 conclude 返回 400。**不要用 `force=True` 绕过**——除非有不可抗力的技术理由。

---

主持流程(7 步)

Step 1: 选择会议模板

根据会议目的对照下表选模板。详细模板说明见 `templates/<name>.md`(progressive disclosure)。

| 目的 | 推荐模板 | 轮数 | 为何 | |------|---------|------|------| | 发散创意、产生新想法 | `brainstorm` | 4 | 独立发散 → 交叉启发 → 评估 → 汇总 | | 多方案中做选择 | `decision` | 3 | 陈述 → 质询 → 收敛 | | 评审代码 / PR / 交付物 | `review` | 3 | 陈述 → 独立评审 → 回应裁定 | | 项目复盘、提取教训 | `retrospective` | 3 | 4Ls → 改进方向 → 承诺计划 | | 每日进度同步 | `standup` | 1 | 三问:完成 / 计划 / 阻塞 | | 决策有重大分歧或风险 | `debate` | 4 | 正方陈述 → 反方质疑 → 正方回应 → 裁决 | | 开放议程、自由议题 | `lean_coffee` | 3 | 议题收集 → 投票 → 时间盒讨论 | | 架构 / 方案多视角评审 | `council` | 3 | 专家视角 → 交叉质询 → 裁决 |

不确定?用 `template="free"`,OS 会根据 `topic` 关键词自动推荐。

Step 2: 创建会议(拿到 dispatch_plan)

**必须使用结构化 `participants`**(dict 列表),否则 dispatch_plan 里的 `launch_call` 会是空的,无法 ready-to-paste。

meeting_create(
    topic="评审 v0.9 Prompt Registry 架构方案",
    template="council",                           # Step 1 选的模板
    team_id="repo-insight-arch",                  # 可省略,自动用活跃团队
    team_name="repo-insight-arch",                # 仅 OS 侧归属;不会写进 launch_call
    participants=[
        {
            "name": "arch-lead",
            "agent_template": "software-architect",
            "role": "评估架构整体可行性与分层合理性",
            "context_files": ["docs/v0.9-prompt-registry.md"],
            "expected_output": "三段式:可行性 / 风险 / 建议",
        },
        {
            "name": "backend-arch",
            "agent_template": "backend-architect",
            "role": "评估存储层与 API 设计",
            "context_files": ["docs/v0.9-prompt-registry.md", "src/aiteam/storage/repository.py"],
            "expected_output": "存储方案 + 接口契约 + 迁移路径",
        },
    ],
    rounds=[                                       # 可选,省略则用模板默认 rounds
        {"topic": "立场陈述", "rule": "每人 3 段:评估视角 / 风险点 / 评分 1-5"},
    ],
    materials=["docs/v0.9-prompt-registry.md"],   # 全员必读
)

返回结构(关键字段):

{
    "data": {"id": "mtg-abc123", ...},
    "dispatch_plan": [
        {
            "participant": "arch-lead",
            "launch_call": {
                "tool": "Agent",
                "params": {
                    "subagent_type": "software-architect",
                    "name": "arch-lead",
                    "model": "opus",
                    "description": "评估架构整体可行性与分层合理性",
                    "prompt": "<OS 已生成的完整 prompt,包含 meeting_id / 角色 / 必读材料 / 发言规则 / meeting_send_message 调用示例 / 完成后 SendMessage 指令>",
                },
            },
            "ready_to_paste": True,
        },
        ...
    ],
    "expected_participants": ["arch-lead", "backend-arch"],
    "attendance_check_command": "meeting_attendance_check(meeting_id='mtg-abc123')",
}

记录 `meeting_id`,后续每一步都要用到。

Step 3: Spawn 每位参与者(最关键的一步)

> ⚠️ **这是整个流程的关键。跳过这一步 = 会议没有任何人到场 = 后续所有步骤都会失败。**

遍历 `dispatch_plan`,对每个 `ready_to_paste=True` 的项目调用 Agent tool,**直接把 `launch_call.params` 整体作为 Agent tool 的参数**:

for item in dispatch_plan:
    if not item["ready_to_paste"]:
        # 旧字符串格式:补结构化参数后重新 meeting_create
        continue
    Agent(**item["launch_call"]["params"])

**约束:**

  • **不要修改 `prompt` 字段的内容** — OS 已经把 meeting_id、角色、必读材料、发言规则、`meeting_send_message` 调用示例、完成后 `SendMessage("已发言")` 指令全部预设好了。手动改动反而会破坏闭环。
  • **不要省略任何参与者** — 漏掉一个,Step 7 conclude 时就会被 attendance 校验拦下。
  • 多个 spawn 可以**并行发出**(同一个消息里多个 Agent 调用),加快到场速度。

Step 4: 签到 — 等待全员发言

每位参与者发完 `SendMessage("已完成发言")` 后,调用:

meeting_attendance_check(meeting_id="mtg-abc123")

返回:

{
    "round": 1,
    "expected": ["arch-lead", "backend-arch"],
    "spoken": ["arch-lead"],
    "pending": ["backend-arch"],
    "timeout_in_seconds": 180
}

**根据 pending 决定动作:**

| pending 状态 | timeout | 动作 | |------------|---------|------| | 空 | — | ✅ 全员到场,进入 Step 5 | | 非空 | < 5 分钟 | ⏳ 继续等待 | | 非空 | ≥ 5 分钟 | 🔁 用 SendMessage 催一次;若仍无响应,对 pending 列表中的 agent 重新执行 Step 3 spawn |

Step 5: 主持人发言(可选但推荐)

每轮开始或结束时,你可以以主持身份发言引导讨论:

meeting_send_message(
    meeting_id="mtg-abc123",
    agent_id="team-lead",                # 你自己的 agent_id
    agent_name="team-lead",
    caller_agent_id="team-lead",         # ⚠️ 必须与 agent_id 一致
    round_number=1,
    content="【主持】Round 1 已全员发言。共识:xxx;分歧:yyy。下一轮请聚焦 yyy 的解法。",
)

> ⚠️ **代打警告:** 如果 `caller_agent_id ≠ agent_id`,OS 会把消息标记为 `impersonation=true` 并写入 `meeting.impersonation` 事件日志。**永远不要代打他人发言**——即使你只是想"帮忙补一段"。

Step 6: 推进下一轮

Round 1 全员发言后,进入 Round 2/3:

1. 用 Step 5 的方式发主持人总结消息,明确进入下一轮和新轮次的发言要求 2. **为新一轮重新 spawn 参与者**(Agent 在完成 Round 1 后通常已退出,需重新唤起)

  • 注意:`meeting_create` 生成的 prompt 默认是 Round 1 的,进入 Round 2 时你需要手动构造 prompt 或在 description 里说明本轮规则

3. 回到 Step 4 等待签到

Step 7: 结束会议

确认本轮 `attendance_check` 的 `pending` 为空后:

meeting_conclude(
    meeting_id="mtg-abc123",
    summary="共识:采用方案 A;待办:backend-arch 在 03-20 前出存储 schema;遗留风险:迁移期双写一致性需进一步验证。",
)

**默认行为:**

  • `validate_attendance=True`(默认) — 未全员发言会返回 400 + missing 列表
  • `force=False`(默认) — 不允许跳过校验

**返回 400 时:** 不要立即用 `force=True`。先: 1. 调 `meeting_attendance_check` 看谁缺席 2. 重新 spawn 缺席者或追问 3. 实在无法到场再考虑 `force=True`(会触发 `meeting.forced_conclude_with_missing` 事件,留下审计痕迹)

成功后 OS 会自动把 `summary` 存入团队记忆,可通过 `memory_search` 或 `team_br

Read more
Ships withai-company

Multi-agent team operating system for Claude Code. 108 MCP tools, 40+ agent templates, 10 lifecycle hooks, 7 pipeline workflows. Persistent teams, structured meetings, task wall, real-time React dashboard. No LangChain/AutoGen — pure CC native integration.

Get the whole plugin