| name | sf-discovery |
| description | 对新请求执行深度探索、缺陷根因分析或预研;用于 brief 不足以支撑后续 artifact,或 ready artifact 为 gap_report / research 时。 |
sf-discovery
运行目录
执行任何 node .specforge/... 命令或读取 .specforge/... 文件前,必须先定位宿主项目根:项目根是“包含 .specforge/ 目录的业务项目目录”,不是 .specforge/ 目录本身。若当前目录是 .specforge/ 或其任意子目录,先 cd .. 回到宿主项目根;若当前目录是 frontend/、backend/ 等子目录,也先向上回到包含 .specforge/ 的项目根。禁止从 .specforge/ 内执行 node .specforge/core/scripts/...,否则会形成 .specforge/.specforge/... 的错误路径。
把原始诉求升级为有分析证据支撑的 brief,或生成 bugfix 的 gap_report、discovery workflow 的 research。如果分析发现缺的是用户取舍而不是事实证据,暂停并向用户提问。它不写业务实现代码。
启动
- 读取
.specforge/AGENTS.md。
- 读取
.specforge/registry.yaml,确认当前 active work item。
- 读取
00-intake/original-request.md 和已有 brief.md(如存在)。
- 运行
node .specforge/core/scripts/doctor.mjs。
- 运行
node .specforge/core/scripts/instructions.mjs 判断当前 ready artifact。
- 若 ready artifact 是
research,或本次 discovery 引入外部来源、版本事实、政策 / 竞品 / 安全 / SDK 资料,完成前运行 node .specforge/core/scripts/source-quality.mjs。
内部技能母本
开始 discovery 前,读取 .specforge/skills/sf-discovery/stages/discovery/SKILL.md。brief 的必含内容、停止条件和完成标准以内置母本为准。
关联标准
.specforge/core/standards/workflow.md:上下文加载、scope、非目标和写入边界。
.specforge/core/standards/product.md:分析深度、代码探索、外部研究、候选功能、用户选择和澄清。
.specforge/core/skills/ORCHESTRATION.md:第三方研究参考的选择、来源核验和归一化要求。
参考 Skill 联动
需要外部事实、版本、价格、法规、漏洞、竞品或 SDK / provider 资料时,按需读取 .specforge/core/skills/brainstorm/references/research-source.md。
research-source 只提供本地事实读取、来源选择、证据契约、版本关系、冲突处理和覆盖度检查;复杂 PoC / 实验仍由 discovery research 执行。
- 研究结论必须写入
01-spec/research.md 或 00-intake/brief.md,并保留来源、日期、置信度、覆盖度和未解决问题。
动作
- 按
.specforge/core/standards/product.md 判断分析深度:light、standard 或 deep。
- 按深度执行代码库探索;绿地项目也要记录"无既有实现"和项目规范。
- 需要新框架、第三方库或版本敏感事实时执行外部官方资料研究;不触发时写明跳过理由。
- 对产品、页面、全栈应用,如果缺少最小可行版本 / 方向取舍,暂停并向用户提问;如果只是补充事实证据,生成候选功能池,按
最小可行版本 / 可选增强 / 后续版本 分组并给出推荐组合,再向用户澄清并记录答案。
- 如果 ready artifact 是
gap_report,运行 node .specforge/core/scripts/create-artifact.mjs gap_report,并写清复现、当前行为、期望行为、根因、修复策略和回归测试。
- 如果 ready artifact 是
research,运行 node .specforge/core/scripts/create-artifact.mjs research,并写清研究问题、来源、实验、发现、决策和未解决问题。
- 其他 discovery 场景更新
00-intake/brief.md。
- 完成后运行
node .specforge/core/scripts/instructions.mjs;若存在 research 或外部来源,再运行 node .specforge/core/scripts/source-quality.mjs 并修复 FAIL,WARN 需补强来源或记录 owner、影响和接受理由。
停止条件
- 请求边界无法判断。
- 产品 / 页面 / 全栈应用的最小可行版本功能组合尚未被用户确认,且复杂度超过简单小改。
- 需要用户在多个方案中做取舍,但尚未完成
sf-brainstorm。
standard / deep 缺少代码库探索证据或明确跳过原因。
deep 缺少外部研究证据或明确跳过原因。
- 涉及生产、安全、权限或数据风险但缺少关键事实。
完成标准
brief.md / gap-report.md / research.md 包含足以支撑下一步的分析证据。
- research / 外部来源适用时,
source-quality.mjs 无 FAIL;WARN 已补强或在 artifact 中写明接受理由。
instructions.mjs 已确认下一步 route,且 discovery 没有把需要用户取舍的问题包装成事实结论。
不做
- 不写 requirements 或 design。
- 不实现任何代码。
- 不把未确认选项伪装成已确认需求。