mcpField
D
dossier

dossier

github.com/alirezarezvani生产力28.9k320 次安装2 天前更新
代码仓库

关于 dossier

dossier 是面向决策准备的个人与组织研究技能。它围绕用户提出的假设,搜集支持与反驳证据,并生成带来源引用和交流切入点的 DOCX 报告。

主要功能

  1. 01围绕假设开展实体研究
  2. 02通过提问消除对象歧义
  3. 03分类搜集支持与反驳证据
  4. 04标注来源等级并记录审计日志
  5. 05生成含发现和交流切入点的 DOCX 报告

适用场景

  1. 01准备销售或合作会议
  2. 02检验投资或收购假设
  3. 03开展新闻调查或尽职调查

MCP 相关

可选的 BYOK MCP(包括 LinkedIn、Crunchbase、Apollo、Pitchbook 和 SimilarWeb)可补充研究来源。

安装

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

$npx skills add https://github.com/alirezarezvani/claude-skills --skill dossier

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

包含的文件

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

references/
conversation_hook_quality.md
hypothesis_testing_discipline.md
subject_type_source_matrix.md
scripts/
citation_tracker.py
disconfirming_evidence_balance.py
source_tier_classifier.py

详细介绍

Dossier — 决策级实体研究

**可移植性:**需要 WebSearch + WebFetch、安装了 docx 包的 Node.js,以及可选的 bash_tool + curl,用于调用免费 API(SEC EDGAR、GitHub、ProPublica)。BYOK MCP(LinkedIn、Crunchbase、Apollo、Pitchbook、SimilarWeb)可作为可选增强。在 Claude Code CLI 中可原生运行。

非通用定位 — 差异化所在

这项技能提供通过假设检验进行决策级实体研究。它拒绝回答“介绍一下 Microsoft”这类问题。每次调用都会要求用户在前置问题(Q4)中先明确自己的假设,以便 dossier 检验假设,而不是确认假设。

适用场景:

“我周二要向 Microsoft 推介。我假设他们正将 AI 支出整合到自有的 Foundry 平台上。请验证或证伪,并根据你的发现给我三个可用于交谈的切入点。”

不适用:

“介绍一下 Microsoft。”

强制性的 Q4——假设问题——是非通用定位的锚点。跳过它,这项技能就只会生成一份维基百科摘要。

规范参见 references/hypothesis_testing_discipline.md。

Agent 完整性规则(Research-Pack 惯例)

根据 PR #657 审计要求,逐字锁定。

  • **执行规范。**依次发起搜索调用。WebSearch + WebFetch 的速率限制比 Consensus 宽松,但仍需遵守每秒 1 次查询的规范。确认收到响应后再进行下一次调用。
  • **来源规范。**仅引用本次会话工具调用返回的来源。Wikipedia / 训练知识须标记为 [Background — verify before quoting],且不计入主要发现数量。
  • **三项计数跟踪。**已发送的查询数 / 已收到的来源数 / 已引用的来源数。此外还需按级别细分(主要 / 次要 / 第三方),这是 dossier 特有的要求。须在审计日志中呈现。
  • **重试策略。**发生故障 → 等待 3s → 重试一次 → 记录日志。连续失败 3 次后:停止并提醒用户。
  • **来源可靠性级别。**每条引文都须标注主要(官方、SEC、法院记录)/ 次要(主流新闻、行业媒体)/ 第三方(博客、论坛)。DOCX 中每条标记都须显示级别。

第 1 阶段:深入提问式信息收集(6 个强制问题,逐个提问)

Q1(根问题)— 主体身份

研究对象是谁?请提供准确名称;如果是公司,请提供其网站或 LinkedIn URL。如果是个人,请提供其 LinkedIn URL 或唯一标识(公司关联关系 + 职务)。

我为什么要问: 消除歧义。John Smith 有 47 位。名为 “Atlas” 的公司有 3 家。我需要明确的实体作为研究对象。

如果用户只提供了名称,需继续追问第二个标识。名称含糊不清时拒绝继续。

Q2(取决于 Q1)— 主体类型

这是什么类型的主体?请选择一项:个人 / 公司 / 非营利组织 / 政府机构 / 其他。

我为什么要问: 不同类型的主体适用不同的来源矩阵。对于个人,我会查 LinkedIn、GitHub、Scholar 和新闻;对于公司,我会查 SEC EDGAR(如果是上市公司)、Crunchbase、新闻,以及科技公司的 GitHub;对于非营利组织,我会在 ProPublica 上查 Form 990。

必须选择一项。“其他”须附上一句话说明。

Q3(取决于 Q2)— 目的

你在为哪种场景做准备?请选择一项:

  1. 销售会议 / 合作推介
  2. 投资尽调
  3. 收购尽调
  4. 新闻报道 / 尽职调查
  5. 求职面试准备
  6. 竞争情报
  7. 个人背景核查(约会对象、雇员、商业伙伴)
  8. 其他(请说明)

我为什么要问: 目的决定研究角度、深度和对风险信号的敏感度。销售准备需要对话切入点。投资尽调需要增长信号。个人背景核查则需要谨慎把握敏感度边界。

Q4(依赖 Q3)— 假设 — 必填

开始调查前,你有什么假设?你对这个主题已有何看法?希望验证或证伪什么?

提问原因: 这是关键问题。如果一份资料只证实你已有的看法,那就毫无价值。先说明你的假设,我就能同时搜寻可能证伪它的证据和支持它的证据,并给出真正能帮你做决定的结论。

示例:

  • “我认为 Microsoft 正在把 AI 支出集中到自有的 Foundry 上。请验证或证伪。”
  • “我觉得这位 CEO 能力不足——只会大谈 TAM,却没有实际进展。请检验这一点。”
  • “我认为这家非营利组织的管理费用占比有问题。请查看 990 表格。”
  • “我认为此人的技术能力足以胜任 CTO。请验证。”

必填。 如果用户说“我没有假设”,请反问一次:“那就猜一个。先表明立场,之后可以再调整。资料需要一个待检验的假设,否则就只是一份泛泛的人物简介,无法帮你做决定。”

如果用户仍然拒绝:退而采用隐含假设“我可能发现的最令人意外的事情是什么?”,并在审计日志中标明这是退而求其次的方案。

这个问题是非泛泛调查的核心锚点。跳过它,这项技能就会变成维基百科摘要。

Q5(依赖 Q3)— 深度

时间投入:5 分钟简报,还是 15 分钟、可用于决策的深度资料?

提问原因: 简报模式最多进行约 10 次搜索,并跳过人脉网络和声誉调查。决策级调查会深入研究每个部分。请根据这项决定对你的利害程度进行选择。

必须二选一。

Q6(仅在 Q3 ∈ {新闻调查,个人审查} 时询问)— 敏感信息

有没有需要排除的敏感内容?例如个人医疗信息、家庭详情、政治经历,或特定禁区?

提问原因: 有些调查场景有伦理限制。我宁愿事先了解,也不愿搜出你绝不会分享的内容。

销售/投资/收购/竞争情报场景下跳过(敏感度低);新闻调查/个人审查场景下询问(敏感度高)。

停止条件: 完成 Q6 后(或因依赖项跳过而提前结束时),确认信息并开始第 2 阶段。第 2 阶段开始后,绝不重新开启信息收集。

第 2 阶段:明确调查对象

进入第 3 阶段前,将调查对象确认为具体实体:

  • 对于个人:确认 LinkedIn URL,或(雇主 + 职位 + 城市)
  • 对于公司:确认域名,或(法定名称 + 注册司法管辖区)
  • 对于非营利组织:确认 EIN,或(法定名称 + 州)
  • 对于政府组织:确认官方 .gov URL

如果在 Q1 追问后仍无法消除歧义:暂停并重新询问 Q1,要求提供可用于消除歧义的标识信息。拒绝继续。

第 3 阶段:选择信息源矩阵

根据 Q2 中的调查对象类型进行路由。完整准则见 references/subject_type_source_matrix.md。

个人
  • LinkedIn(手动获取,或在 BYOK 的情况下使用 LinkedIn MCP)
  • 个人网站
  • Twitter/X(受速率限制;遇到问题时灵活调整)
  • GitHub(如果调查对象从事技术工作)
  • Google Scholar(如果是学术界人士)
  • 新闻(WebSearch + WebFetch)
  • 会议演讲文字稿、播客(WebSearch)
公司
  • 官方网站(关于、领导团队、新闻、招聘)
  • SEC EDGAR(免费 API;上市公司的 10-K、10-Q、8-K)
  • Crunchbase 免费版(或在 BYOK 的情况下使用 Crunchbase MCP)
  • 新闻(WebSearch + WebFetch)
  • GitHub(科技组织)
  • Glassdoor + Comparably(舆情;如果抓取受阻,则灵活调整)
  • LinkedIn 公司主页
非营利组织
  • ProPublica Nonprofit Explorer(免费;Form 990)
  • 官方网站
  • 新闻
  • GuideStar(如可访问)
政府组织
  • 官方 .gov 网站
  • 新闻
  • ProPublica(联邦机构)

如果已连接付费 MCP(Apollo、Pitchbook、SimilarWeb),请使用,但须在审计日志中将调查结果标记为通过 BYOK 获取。

阶段 4:假设驱动的搜索

每次阶段 4 搜索都 MUST 归类为以下两种之一:

  • 支持性证据(证实假设),或
  • 反证(可推翻假设)

**≥30% 的搜索预算分配给反证查询。**通过 scripts/disconfirming_evidence_balance.py 强制执行。

假设“Microsoft 正在将 AI 支出集中到 Foundry”时的示例:

  • 支持性:“Microsoft Foundry adoption 2026”、“Microsoft AI infrastructure consolidation”
  • 反证:“Microsoft OpenAI deal renegotiation”、“Microsoft AI vendor diversification”、“Microsoft third-party model partnerships 2026”

这正是让档案达到决策级、而非陷入确认偏误的关键。

每次搜索都要:

  • 通过 citation_tracker.py 记录,并注明分类(支持性 / 反证)
  • 使用 source_tier_classifier.py 为每个结果 URL 标注来源层级

阶段 5:12 个月活动时间线

活动时间线默认采用 12 个月窗口;对于奠定身份基础的信息,则追溯更久。

类别:

  • 新闻(收购、聘用、离职、产品发布)
  • 融资轮次 / 财务事件
  • 争议 / 法律事件
  • 公开声明 / 战略转变

按时间倒序排列。每条都添加超链接并标注层级。

阶段 6:关系网络与声誉信号

关系网络
  • **公司:**投资方(投出 / 获投)、具名客户、合作伙伴
  • **人员:**联合创始人、顾问、导师、雇主、董事会职务
  • **非营利组织:**资助方、董事会、领导层

列出 5–10 条,并按与假设的相关性排序。

声誉
  • 新闻报道中的情绪倾向(最近 12 个月)
  • 公司在 Glassdoor 上的评价(总体评分 + 3 条代表性评论)
  • 人们受到同行提及的情况
  • 注意:声誉数据噪声较大;应据此标注层级

阶段 7:红旗核查

指出问题,但不要危言耸听:

  • 诉讼(法院记录 → 一级来源)
  • 监管行动(SEC、DOJ、机构行动 → 一级来源)
  • 异常离职(关键人员在 90 天内离职)
  • 财务信号(10-K 中的持续经营说明 → 一级来源)
  • 声誉受损(持续的负面报道 → 二级来源)

**每项红旗都要标注层级。**DOCX 中每项红旗旁都要显示层级。

阶段 8:生成对话切入点

提供 3–5 个与实际发现相关的具体切入点,而非泛泛而谈。

规范请参阅 references/conversation_hook_quality.md。

❌ 泛泛而谈✅ 与发现相关
“问问他们的路线图”“提及他们近期收购了 [X]——这表明他们正在投资垂直领域 Y。建议说法:‘看到 [X] 的公告了——这会如何改变你们在 Y 方面的路线图?’”
“问问招聘情况”“他们的工程副总裁 3 周前离职了(LinkedIn)。建议说法:‘我注意到 [name] 离开了——工程领导层有什么计划?’”
“谈谈他们的价值观”“他们上周更新了定价页面(其官方网站)。建议说法:‘看到定价更新了——是什么促成了这次调整?’”

每个切入点包括:

  • 切入点(一句话)
  • 关联的发现(带超链接 + 层级)
  • 建议说法(用户可直接调整使用的原话)

第 9 阶段:生成 DOCX(9 个部分)

通过 Node.js + docx 库生成。

  1. 执行摘要 — 一段话:介绍对象是谁、为何重要、对假设的判断(SUPPORTED / PARTIALLY SUPPORTED / DISPROVEN / INCONCLUSIVE),以及 3 条须知要点。
  2. 身份事实表 — 创立/出生时间、所在地、规模/阶段、当前职位、重要关联。所有单元格均须注明来源;悬停文本中标注来源层级。
  3. 假设检验 — 原文陈述用户的假设。支持证据(3-5 条,附带超链接引用)。反驳证据(3-5 条,附带超链接引用)。判断段落(2-3 句话,说明证据权重)。
  4. 过去 12 个月活动时间线 — 新闻、融资、招聘、离职、产品发布、争议事件。按时间倒序排列。每条均附超链接。
  5. 人脉网络信号 — 合作者/投资者/关联人士。列出 5-10 项,按与假设的相关性排序。
  6. 声誉信号 — 新闻中的情绪倾向、公司的 Glassdoor 评价、同行对个人的提及。注意:声誉数据可能存在噪声。
  7. 风险点 + 隐藏模式 — 诉讼、监管行动、异常离职、财务信号、声誉受损事件。按层级分类。
  8. 对话切入点 — 3-5 个与研究发现相关的具体切入点。每项包含:切入点 + 发现 + 建议的表达方式。
  9. 来源溯源 + 审计日志 — 按来源列出清单并标注层级。搜索摘要表(#、查询、分类、返回的来源、引用的来源)。三项计数 + 各层级计数。失败的搜索。BYOK-MCP 使用标记。
样式

正文使用 Arial 12pt,标题使用海军蓝(#1a3a5c),表格标题行使用浅蓝色(#e8f0f8),风险提示框使用红色,对话切入点提示框使用绿色。

超链接格式
new ExternalHyperlink({
  link: "https://...",
  children: [new TextRun({ text: title, style: "Hyperlink" })],
});

第 10 阶段:交付

  • 保存至:<output-dir>/dossier_<entity-slug>_<YYYY-MM-DD>.docx
  • 聊天摘要:文件路径 + 对假设的判断 + 审计计数 + 层级细分 + 使用的 BYOK MCP(如有)
  • 验证:使用 python3 -c "import zipfile,sys; zipfile.ZipFile(sys.argv[1]).testzip()" <docx> 检查 zip 完整性(无输出 = 完整),然后确认所有必需部分均已包含

工具

脚本作用
scripts/citation_tracker.py三项计数审计 + 支持/反驳分类 + 在 ~/.dossier_sessions/<session>.json 中标注来源层级
scripts/disconfirming_evidence_balance.py验证 ≥30% 的搜索预算分配给反驳性查询;如果存在偏见则发出警告
scripts/source_tier_classifier.py通过域名启发式规则将 URL 分类为一手/二手/三手来源

参考资料

错误处理

失败情况处理方式
对象姓名有歧义拒绝继续。重新询问 Q1,并要求提供可消除歧义的标识信息。
用户拒绝陈述假设反问一次。如果仍拒绝,则退而采用“我能找到的最令人惊讶的事情是什么?”作为隐含假设。并在审计中标注。
对象没有任何公开信息明确指出。建议更换姓名或考虑其处于早期阶段。不要编造。
LinkedIn 抓取受阻在审计中注明;改用 WebSearch;建议用户手动核实。
SEC EDGAR 失败重试一次。如果仍失败,注明“未检索到公开申报文件”,然后继续。
情绪倾向数据稀少将声誉部分标记为“公开信号有限”;不要根据训练数据推断。
出现敏感话题(Q6 排除项)从 DOCX 中排除。在聊天中注明(不写入 DOCX),让用户知道已按要求排除。
连续 3 次工具调用失败停止,提醒用户,并分享目前收集到的内容。
DOCX 生成失败将原始数据保存为 JSON 备用文件。

应拒绝的反模式

  • 未强制提出 Q4 假设便生成档案
  • 分配给反证的搜索预算不到 30%
  • 批量提出背景信息问题
  • 接受含糊的对象名称
  • 使用泛泛的对话切入点(“问问他们的路线图”)
  • 渲染警示信号(应分级,而非妄加评论)
  • 忽略警示信号的来源可靠性等级
  • 在 LinkedIn 或抓取受阻时伪造覆盖范围
  • 使用 BYOK-MCP 数据却未在审计日志中标记
  • 纳入用户在 Q6 中排除的敏感话题
  • 得出带有确认偏见的结论(未认真考量反证就判定为“SUPPORTED”)

版本: 1.0.0 源规范: megaprompts/12-dossier-megaprompt.md(维护者本地的草案规范——已被 gitignore,不在公共仓库中) 构建模式: 路径 B(直接转换)。研究包同类方案,假设检验变体。

评论

支持 Markdown