mcpField
M
meeting-prep

meeting-prep

github.com/nimbleway生产力6186 次安装4 天前更新
代码仓库

关于 meeting-prep

meeting-prep 是用于会前准备的研究技能,可生成参会者和公司简报。它结合 Nimble 网络研究、已保存的资料和按会议类型定制的定位内容。

主要功能

  1. 01研究参会者及其公司
  2. 02复用已保存的人物和公司资料
  3. 03发现 Web Search Agents
  4. 04按会议类型定制简报
  5. 05将研究保存到本地记忆

适用场景

  1. 01准备销售探索会议
  2. 02会前了解参会者背景
  3. 03用近期新闻更新公司情况

MCP 相关

该技能可在会话开始时选择通过 CLI 或 MCP 使用 Nimble。还可使用可用的日历 MCP 工具查找会议。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nimbleway/agent-skills --skill meeting-prep

安装后在 Claude Code 中输入/meeting-prep确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
attendee-agent-prompt.md
memory-and-distribution.md
nimble-playbook.md
profile-and-onboarding.md

详细介绍

会议准备

通过研究和参会者情报及公司背景,做好会议准备。

用户请求:$ARGUMENTS

运行任何命令之前,请阅读 references/nimble-playbook.md,了解 Claude Code 的限制(无 shell 状态、不可使用 &/wait、子 Agent 权限、沟通风格)。


说明

步骤 0:预检

遵循 references/nimble-playbook.md 中的传输方式选择和标准预检流程——在会话开始时选择 CLI 或 MCP,然后并行运行标准预检调用(日期计算、今天、个人资料、记忆索引)。

根据结果:

  • 缺少 CLI 或未设置 API 密钥 → 阅读 references/profile-and-onboarding.md,然后停止
  • 为所有 nimble CLI 调用添加标记:nimble --client-source nimble-agent-skills <subcommand>。MCP 请求在传输层进行归因——参见 references/nimble-playbook.md。
  • 如果存在个人资料 → 阅读 ~/.nimble/memory/people/index.md,识别已有的人员资料。在会前加载参会者相关的 ~/.nimble/memory/people/ 文件——跳过重复搜索,并展示先前的会议记录。遵循人员文件中的 [[path/entity]] 交叉引用:如果某位参会者的文件链接到 [[competitors/widgetco]],则加载该竞争对手文件,以获取更丰富的背景信息(例如,竞争对手情报运行中最近获得的情报)。同时检查 ~/.nimble/memory/companies/,查看缓存的公司研究资料。 不要检查当天是否已有报告——会议准备针对每场会议,而非每天。用户可能在一天内为多场会议做准备。改为检查实体资料的新鲜度:如果人员/公司资料在过去 24 小时内更新过,请提供复用选项:「我今天早些时候已为**[姓名]**创建了近期资料。要使用该资料,还是重新整理?」
  • 如果没有个人资料 → 没关系。会议准备不需要完成引导设置。继续步骤 1。
步骤 1:收集会议背景

从 $ARGUMENTS 中解析会议详情,或询问用户。

日历快捷方式: 如果用户未指定与会者,且日历连接器可用——日历 MCP 工具(在工具列表中查找 list_events)或 gws CLI(gws calendar +agenda --today)——则主动提出调取今天的会议,让用户选择。如果两者都不可用,则静默跳过。

如果信息明确(例如:“帮我准备明天与 WidgetCo 的 Alex Kim 的会议”):

  • 提取:与会者姓名、公司、会议日期/时间(如有)
  • 简短确认:“正在为您准备与 WidgetCo 的 Alex Kim 的会议简报……”

如果信息不完整(例如:“帮我准备明天的会议”):

  • 用纯文本提问一个澄清问题:

    “您要和谁开会?(如有,请提供姓名、职位和公司)”

如果只提供了一个人名(例如:“调查 John Smith”):

  • 直接以此人为对象继续。尝试从搜索结果中推断其公司。

提取以下字段:

字段必填来源
与会者姓名是用户输入或日历事件
公司最好提供用户输入或从搜索中推断
与会者职位可选用户输入或在步骤 2 中发现
会议类型必填用户输入、推断或询问(探索、演示、跟进、面试、合作、内部会议)
会议日期/时间可选用户输入
其他背景信息可选用户备注(“他们正在评估我们的产品”“董事会成员引荐”)

会议类型判定——如果用户未指定,请根据上下文线索推断:

线索推断的类型
“潜在客户”“演示”“销售电话”销售 / 探索
“面试”“候选人”面试
“董事会”“投资者”董事会 / 投资者
“合作伙伴”“集成”合作
与同事进行“跟进”“同步”“1:1”内部会议
没有线索询问(见下文)

如果没有线索——不要猜测为“常规外部会议”。会议类型决定是否生成价值定位部分,因此值得问一个问题。使用 AskUserQuestion:

这次会议的目标是什么?

  • 销售 / 探索 — 推介、演示、探索合作契合度
  • 合作 — 集成、联合销售、合资
  • 董事会 / 投资者 — 董事会会议、投资者更新、融资
  • 面试 — 评估候选人
  • 常规 / 其他 — 拓展人脉、叙旧,或不确定

根据回答映射会议类型。如果用户选择“常规 / 其他”,则按常规外部会议处理(不生成价值定位部分)。

会议类型会影响简报重点——具体而言,它决定是否生成价值定位部分(步骤 4.5 + 步骤 6)。以下类型会启用价值定位:销售/探索、合作、董事会/投资者。以下类型会跳过价值定位:面试、内部会议、常规外部会议。

步骤 2:WSA 探索

针对每位与会者所在公司的域名,发现可用的 WSA:

nimble extract:templates list --limit 100  # then filter items for "{company-domain}"

对每家不同的公司同时执行一次搜索。筛选 SERP/PDP WSA,优先选择 managed_by: "nimble",并使用 nimble extract:templates get --extract-template-name {name} 进行验证。 缓存发现的名称和参数。将其传递给步骤 3 中的与会者 Agent,以获取更丰富的数据。如果未找到 WSA,则仅使用 nimble search 继续。

第 3 步:逐位与会者研究(子 Agent)

阅读 references/attendee-agent-prompt.md,了解完整的 Agent 提示词模板。 遵循 references/nimble-playbook.md 中的子 Agent 启动规则 (bypassPermissions、每批最多 4 个、明确的 Bash 指令、失败时回退)。

先检查记忆。 对每位与会者,检查 ~/.nimble/memory/people/[name-slug].md。 如果存在个人资料且更新时间距今不到 30 天,将其作为已知背景加载并传给 Agent,让它专注于新信息。如果超过 30 天,则进行全面更新。

启动 nimble-researcher Agent(agents/nimble-researcher.md),并设置 mode: "bypassPermissions"。每位与会者对应一个 Agent。将第 2 步中发现的 WSA 名称传给每个 Agent,以便补充信息。

重要: Nimble API 的每个 API 密钥每秒最多可调用 10 次。每个 Agent 会进行 4–5 次搜索,因此每批并发 Agent 限制为 2 个。与会者达到 3 人或以上时,每批安排 2 人。

调用量估算与规模化执行: 启动 Agent 前,估算 API 调用总量:每位与会者约 5 次搜索 + 约 4 次公司搜索 + 3–5 次提取 = 约 (5 × N) + 9 次调用。与会者达到 3 人或以上(15 次以上调用)时,告知 Agent 使用 extract-batch 批量提取页面,而非逐次调用。有关层级选择,请参阅 references/nimble-playbook.md 中的规模化执行模式。

第 1 批(同时运行 2 个 Agent):

  • 研究与会者 1
  • 研究与会者 2

第 2 批(如有需要):

  • 研究与会者 3
  • 研究与会者 4

单人优化: 如果只有一位与会者,直接在主上下文中运行搜索,而不是启动 Agent,以减少开销。

回退: 如果任何 Agent 失败或返回空结果,直接在主上下文中运行相应搜索。不要让简报留下信息空缺。

第 3.5 步:检查信息缺口

继续之前,确认每位与会者至少有已确认的职位和公司。

对于结果少于 3 条有意义信息或“职位未知”的任何与会者:

  1. 直接运行 --focus social 回退搜索(此搜索会检索社交平台上的人物索引,是查找某人的最可靠方式): nimble search --query "[Name] [Company]" --focus social --max-results 5 --search-depth lite
  2. 如果无法使用 --focus social,则改用: nimble search --query "[Name]" --include-domain '["linkedin.com"]' --max-results 5 --search-depth lite
  3. 尝试不同的姓名组合:“[名] [姓]”、“[全名] [公司] [已知职位]”

不要在简报中将职位标为“未知”——先穷尽社交平台搜索。如果尝试回退方法后仍一无所获,请如实说明:“公开资料有限——无法确认职位。可以考虑询问对方的 LinkedIn 个人资料 URL。”

如果尚未找到,也请在此步骤中收集每位与会者的 LinkedIn 个人资料 URL。这些信息对于最终简报和 Notion 分发很有价值。

第 4 步:公司调研

调研与会者所在公司,了解与会议相关的背景信息。这是公司深度调研的精简版 ——重点关注对谈话有用的信息,而非全方位调查。

引用公司名称: 如果公司名称包含容易产生大量无关结果的常见词(例如,“Acme Supply”“Nova Dynamics”“Global Industries”),请用转义引号括起来:"\"Acme Supply\" news"。也可以使用 --include-domain '["[domain]"]' 作为替代锚点。

同时执行以下 Bash 调用:

  • nimble search --query "\"[Company]\" news" --focus news --start-date "[14-days-ago]" --max-results 8 --search-depth lite
  • nimble search --query "\"[Company]\" product launch OR announcement" --focus news --start-date "[14-days-ago]" --max-results 5 --search-depth lite
  • nimble search --query "about" --include-domain '["[domain]"]' --max-results 3 --search-depth lite
  • nimble search --query "\"[Company]\" funding OR raised OR investors" --max-results 5 --search-depth lite

如果存在用户所在公司的资料,也请执行:

  • nimble search --query "[Company] [UserCompany] OR [user-domain]" --max-results 5 --search-depth lite

这能发现两家公司之间已有的关联,例如过往合作、相关提及、共同投资者或竞争重叠。

如果新闻搜索结果少于 3 条,请在不使用 --start-date 的情况下重试。

日期验证: 在简报中提及公司新闻时,请确认事件日期(实际发生的时间)是近期的,而不只是文章发布日期。详情请参阅 references/nimble-playbook.md → “Signal Date Validation”。如果摘要使用“去年”或“在第 3 季度”之类的过去时表述,应将其视为背景信息,而非近期新闻。

如果已经调研过该公司(资料位于 ~/.nimble/memory/companies/),请加载现有资料,并仅搜索最新新闻。

步骤 4.5:价值定位研究

如果会议类型是面试、内部会议或一般外部会议,请跳过此步骤。

此步骤会将你在步骤 4 中了解到的参会者公司信息与用户自身的业务资料交叉对照,以找到具体的定位角度。如果存在 business-profile.json,且至少包含 company.name 和 company.domain,此步骤的效果最佳。

如果不存在资料,请跳过引用用户公司或竞争对手的搜索(搜索 2、4、5),并依靠通用研究(搜索 1、3)获取定位见解。 使用步骤 2 中发现的任何 WSA,以获取更丰富的参会者公司信息。 价值定位部分会比较精简,但仍然有用——即使没有资料,也可以进行痛点到解决方案的映射并发现技术栈。

从 ~/.nimble/business-profile.json 加载用户的销售背景信息:

  • sales_context.key_differentiators — 用户产品的独特之处
  • sales_context.integration_partners — 用户产品可连接的工具
  • sales_context.case_studies — 类似客户及其取得的成果
  • sales_context.common_objections — 预先准备的异议回应
  • competitors — 已跟踪的竞争对手(检查参会者的公司是否在使用其中任何一家)

如果资料中不存在 sales_context,此技能仍然可用——价值定位部分将仅依靠网络研究,而不使用资料补充的信息。 请在末尾提及:“提示:下次可在资料中添加销售背景信息,以获得更丰富的定位内容。”

同时执行以下 Bash 调用(根据可用数据进行 3–5 次搜索):

  1. nimble search --query "\"[AttendeeCompany]\" tech stack OR tools OR platform OR uses" --max-results 5 --search-depth lite → 查找他们使用的工具/平台——与 integration_partners 对照

  2. nimble search --query "\"[AttendeeCompany]\" [UserCompany] OR [user-domain]" --max-results 5 --search-depth lite → 查找现有关系、提及或竞争重叠情况(如果已在步骤 3 中运行过,则跳过)

  3. nimble search --query "\"[AttendeeCompany]\" challenges OR pain points OR struggling OR migrating" --max-results 5 --search-depth lite → 查找痛点信号,以便与用户的价值主张进行映射

4.(如果存在 competitors 列表)nimble search --query "\"[AttendeeCompany]\" [CompetitorName1] OR [CompetitorName2]" --max-results 5 --search-depth lite → 检查他们是否在使用竞争对手的产品——这对替代定位至关重要

5.(如果 case_studies 中存在行业匹配的案例)nimble search --query "[UserCompany] [attendee-industry] case study OR customer story" --max-results 5 --search-depth lite → 查找参会者所在行业已发布的案例研究,以供引用

从结果中提取:

  • 他们使用的工具/平台(用于建立集成切入点)
  • 痛点信号或挑战(用于价值映射)
  • 竞争对手的使用情况(用于替代定位)
  • 行业与现有案例研究的匹配情况(用于提供社会认同)

这些数据将直接用于步骤 5 的价值定位部分。

步骤 5:深度提取

从步骤 3–4.5 的所有结果中,找出信息量最大的 3–5 个 URL。 优先选择:

  • 参会者本人发布的 LinkedIn 帖子、文章或演讲
  • 与会议直接相关的近期公司公告
  • 关于参会者的访谈或人物简介
  • 公司关于/团队页面(如果未找到参会者的职务)
  • (如果启用了价值定位)揭示其技术栈或工具使用情况的页面
  • (如果启用了价值定位)介绍其挑战或迁移计划的文章

针对每个 URL 各执行一次 Bash 调用,并同时运行:

nimble extract --url "https://..." --format markdown

如果提取失败,请按照 references/nimble-playbook.md 中的备用方案处理。

**单个参会者 + 已知公司:**跳过公司内容提取,重点关注个人 URL。 **多位参会者:**优先选择个人相关的 URL,而非公司层面的 URL。

步骤 6:撰写简报

将输出整理为会议准备简报。根据会议类型调整重点。

# Meeting Prep: [Company Name]
*[Meeting date/time if known] | Prepared [today's date]*

## Quick Take
[2-3 sentences: who you're meeting, why it matters, and the one thing to know
going in. This is the "read nothing else" paragraph.]

## Attendees

### [Name] — [Title]
**Background:** [Current role, time in position, career trajectory highlights]
**Recent Activity:** [What they've been posting, speaking about, or working on.
  Direct quotes from posts/talks when available.]
**Conversation hooks:** [2-3 specific things to reference — shared connections,
  their recent project, a post they wrote, a talk they gave]
**Notes from prior meetings:** [If exists in memory — what was discussed, their
  preferences, open items. "No prior meetings on file" if none.]

[Repeat for each attendee]

## Relationship Map
[Cross-attendee connections — shared employers, mutual connections, overlapping
  interests, organizational dynamics between attendees. Skip if single attendee.]

## Company Context
- **What they do:** [One line]
- **Size / Stage:** [Employees, funding stage, HQ]
- **Recent news:** [Top 2-3 items, dated with source]
- **Relevant to your meeting:** [How their company context connects to your
  discussion — e.g., recent product launch you might discuss, funding that
  signals growth, leadership change affecting priorities]

## Value Positioning
*[Only for sales/discovery, partnership, and board/investor meetings. Omit entirely
  for interview, internal, and general external meetings.]*

### Value Mapping
[Match their specific needs/pain points to your capabilities. Every mapping must
  be grounded in research from Step 4.5, not generic claims.
  Format: "They [specific finding with source] → Your product [specific capability]"]

### Integration Hooks
[Tools/platforms they use that your product integrates with. Only include
  integrations confirmed from research (their tech stack) AND your profile
  (integration_partners). If no overlap found, say so honestly.]

### Recommended Positioning
[2-3 sentences on how to frame your pitch for THIS specific company and person.
  Consider: their company stage, recent news, the attendee's role and priorities,
  and any competitive displacement opportunity. This is the "elevator pitch
  calibrated to this meeting" paragraph.]

### Reference Customers
[Similar companies from your case_studies that match their industry, size, or
  use case. Include the outcome/metric if available. If no matching case studies,
  omit this subsection rather than forcing a weak match.]

## Talking Points
[3-5 specific, actionable conversation starters grounded in the research.
  Not generic "ask about their priorities" — specific: "Ask about their
  migration from [old tool] to [new tool] that they announced last month."
  When value positioning is active, weave 1-2 positioning angles into the
  talking points naturally — don't make every talking point a sales pitch.]

## Watch Out For
[1-3 things to be aware of — sensitive topics (recent layoffs, bad press),
  potential awkward overlaps, information gaps you couldn't fill.]

## Sources
[Numbered list of key URLs cited in the briefing]

按会议类型调整:

类型侧重点在简报中添加价值定位
销售 / 需求探索买方决策权、痛点信号、竞品技术栈“资格信号”部分是 — 完整部分
合作伙伴关系互惠信号、集成机会“合作契合机会”部分是 — 聚焦集成切入点
董事会 / 投资者财务背景、市场地位、投资组合重叠“可引用的关键指标”部分是 — 聚焦建议的定位方式
面试候选人的工作经历深度、文化信号“评估角度”部分否
内部会议跳过公司调研,聚焦此人的近期工作精简格式,不含公司部分否
一般外部会议均衡覆盖所有维度上述标准格式否

核心规则:

  • 关于外部公司或个人的每项事实陈述都必须附带来源 URL。 来自用户自身业务档案的数据(差异化优势、集成、案例研究)应注明来源为该档案,无需外部来源。
  • 将快速概览放在最前面——大多数读者只会看到这里。
  • 谈话要点必须针对本次会议,并以调研结果为依据。 切勿生成泛泛的对话开场白。
  • 如果没有关于某人的公开信息,应写明“未找到公开信息”,不要臆测其 职位或背景。
  • 如果记忆中有此前的会议记录,应醒目呈现待处理事项和延续性要点——这是最有价值的内容。
  • 价值定位必须以步骤 4.5 的调研结果为依据。切勿生成“突出产品优势”之类泛泛的定位建议。 每项价值映射都必须关联一项关于参会者所在公司的具体发现,以及用户档案或调研中的一项具体能力。
  • 如果档案中缺少 sales_context,请在“价值定位”部分末尾注明一次:“提示:编辑 ~/.nimble/business-profile.json 中的档案,添加销售背景信息(差异化优势、 集成、案例研究),以便下次提供更有针对性的定位建议。”
步骤 7:保存到记忆

同时执行所有 Write 调用:

  • 报告 → ~/.nimble/memory/reports/meeting-prep-[company-slug]-[date].md
  • 每位参会者 → ~/.nimble/memory/people/[name-slug].md (使用 references/memory-and-distribution.md 中的格式)。添加指向参会者雇主的 [[path/entity]] 交叉引用(例如 [[competitors/widgetco]] 或 [[companies/widgetco]]),以及发现的其他关联。
  • 公司档案 → 如果发现了新的公司数据,则更新 ~/.nimble/memory/companies/[company-slug].md。 添加指向已调研人员的反向交叉引用(例如 [[people/alex-kim]])。
  • 档案 → 更新 ~/.nimble/business-profile.json 中的 last_runs.meeting-prep (仅当档案存在时)
  • 按照 references/memory-and-distribution.md 中的 Wiki 更新模式操作:更新 index.md 中所有受影响实体文件对应的行,并在 log.md 中追加一条本次运行的记录。

people/ 中的个人档案应包含结构化的关键信息(职位、背景、兴趣、沟通风格), 以便未来的会议准备运行加载。

步骤 8:分享与分发

始终提供分发选项——不要跳过此步骤。 按照 references/memory-and-distribution.md 检测连接器、执行分享流程并确保来源链接完整。

步骤 9:后续事项
  • 深入了解某位参会者 → 更有针对性地研究此人
  • 添加参会者 → 研究其他将参加会议的人
  • “那 [主题] 呢?” → 针对特定维度进行搜索
  • “看起来不错” → 完成
  • 相关技能: company-deep-dive 用于全面了解公司, competitor-intel 用于跟踪竞争对手,competitor-positioning 用于在销售会议前比较宣传信息

Agent 团队模式(双模式)

启动时检查:echo $CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS

团队模式(已设置标记):生成队友而不是子 Agent。每位队友 负责研究一位参会者,并可在发现交叉关联时联系其他队友。

队友重点交叉核对对象
参会者 1 研究员全面研究参会者 1 及其公司所有其他队友(共同雇主、关系等)
参会者 2 研究员全面研究参会者 2 及其公司所有其他队友
[每位额外参会者对应一位]......

跨参会者信息的发现方式:

  1. 每位队友独立研究分配给自己的参会者
  2. 当队友发现与另一位参会者重叠的工作单位、学校或关系时,会向那位队友发送消息:“我的参会者 [Name] 在 [Company] 工作过,时间是 2019-2022 年——你的参会者有重叠吗?”
  3. 收到消息的队友进行核实并回复
  4. 负责人(你)收集所有交叉引用,并编写“关系图谱”部分

与单人模式相比,这种方式能生成质量更高的关系图谱,因为队友会主动寻找关联,而不只是事后比较结果。

单人模式(未设置标记):采用步骤 3 中的标准子 Agent 流程。


此技能不适用于

  • 不是竞争对手监控——跟踪竞争对手请使用 competitor-intel
  • 不是公司深度分析——无需参会者信息的研究请使用 company-deep-dive
  • 不是 CRM——收集网络情报,不管理联系人或销售管道
  • 不是日历应用——读取日程以获取上下文,但不管理日程

错误处理

标准错误表请参阅 references/nimble-playbook.md。此技能特有的错误:

  • 找不到此人: 尝试不同的姓名写法(全名、名+姓、加上公司名)。如果仍然 找不到:“找不到 [Name] 的公开信息。你能提供他们的职位或 LinkedIn 资料吗?”
  • 姓名有歧义: 列出最匹配的候选人及其公司或职位信息,并询问用户。
  • 公司搜索结果为空: 说明这一点,并重点介绍参会者层面的发现。

评论

支持 Markdown