关于 dossier
dossier 是面向决策准备的个人与组织研究技能。它围绕用户提出的假设,搜集支持与反驳证据,并生成带来源引用和交流切入点的 DOCX 报告。
主要功能
- 01围绕假设开展实体研究
- 02通过提问消除对象歧义
- 03分类搜集支持与反驳证据
- 04标注来源等级并记录审计日志
- 05生成含发现和交流切入点的 DOCX 报告
适用场景
- 01准备销售或合作会议
- 02检验投资或收购假设
- 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.mdhypothesis_testing_discipline.mdsubject_type_source_matrix.mdscripts/citation_tracker.pydisconfirming_evidence_balance.pysource_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)— 目的
你在为哪种场景做准备?请选择一项:
- 销售会议 / 合作推介
- 投资尽调
- 收购尽调
- 新闻报道 / 尽职调查
- 求职面试准备
- 竞争情报
- 个人背景核查(约会对象、雇员、商业伙伴)
- 其他(请说明)
我为什么要问: 目的决定研究角度、深度和对风险信号的敏感度。销售准备需要对话切入点。投资尽调需要增长信号。个人背景核查则需要谨慎把握敏感度边界。
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 库生成。
- 执行摘要 — 一段话:介绍对象是谁、为何重要、对假设的判断(SUPPORTED / PARTIALLY SUPPORTED / DISPROVEN / INCONCLUSIVE),以及 3 条须知要点。
- 身份事实表 — 创立/出生时间、所在地、规模/阶段、当前职位、重要关联。所有单元格均须注明来源;悬停文本中标注来源层级。
- 假设检验 — 原文陈述用户的假设。支持证据(3-5 条,附带超链接引用)。反驳证据(3-5 条,附带超链接引用)。判断段落(2-3 句话,说明证据权重)。
- 过去 12 个月活动时间线 — 新闻、融资、招聘、离职、产品发布、争议事件。按时间倒序排列。每条均附超链接。
- 人脉网络信号 — 合作者/投资者/关联人士。列出 5-10 项,按与假设的相关性排序。
- 声誉信号 — 新闻中的情绪倾向、公司的 Glassdoor 评价、同行对个人的提及。注意:声誉数据可能存在噪声。
- 风险点 + 隐藏模式 — 诉讼、监管行动、异常离职、财务信号、声誉受损事件。按层级分类。
- 对话切入点 — 3-5 个与研究发现相关的具体切入点。每项包含:切入点 + 发现 + 建议的表达方式。
- 来源溯源 + 审计日志 — 按来源列出清单并标注层级。搜索摘要表(#、查询、分类、返回的来源、引用的来源)。三项计数 + 各层级计数。失败的搜索。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 分类为一手/二手/三手来源 |
参考资料
references/hypothesis_testing_discipline.md— ≥30% 规则 + 决策级与百科全书式来源(7+ 个来源)references/subject_type_source_matrix.md— 个人/公司/非营利组织/政府来源矩阵(7+ 个来源)references/conversation_hook_quality.md— 与发现相关的切入点规范(7+ 个来源)
错误处理
| 失败情况 | 处理方式 |
|---|---|
| 对象姓名有歧义 | 拒绝继续。重新询问 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(直接转换)。研究包同类方案,假设检验变体。