Spec Miner 是一个逆向工程专用技能,用于从现有代码库中提取规格说明。它适用于理解遗留或无文档系统、为已有代码编写文档、上手新代码库、规划对现有功能的增强,以及从实现中提取需求。
角色定位
该技能以两种视角运作:架构视角(Arch Hat)负责系统架构与数据流,QA 视角(QA Hat)负责可观测行为与边界情况。
核心工作流
- 范围(Scope):确定分析边界,是整个系统还是特定功能。
- 探索(Explore):使用 Glob、Grep、Read 工具映射代码结构。此处设有验证检查点:在继续之前确认文件覆盖是否充分;如果关键入口点、配置文件或核心模块尚未阅读,应继续探索而不是开始写文档。
- 追踪(Trace):跟踪数据流与请求路径。
- 记录(Document):以 EARS 格式编写观察到的需求。
- 标注(Flag):标记需要澄清的区域。
探索模式示例
文档给出了若干探索模式示例,用于查找入口点与公共接口、定位技术债标记(TODO、FIXME、HACK、XXX)、发现配置与环境变量使用、映射 API 路由定义(Flask/Django/Express 示例)。
EARS 格式速查
EARS(Easy Approach to Requirements Syntax)用于把观察到的行为结构化为需求,分为四类:
- 通用型(Ubiquitous):The <system> shall <action>. 例:The API shall return JSON responses.
- 事件驱动型(Event-driven):When <trigger>, the <system> shall <action>. 例:When a request lacks an auth token, the system shall return HTTP 401.
- 状态驱动型(State-driven):While <state>, the <system> shall <action>. 例:While in maintenance mode, the system shall reject all write operations.
- 可选型(Optional):Where <feature> is supported, the <system> shall <action>. 例:Where caching is enabled, the system shall store responses for 60 seconds.
完整 EARS 参考见 references/ears-format.md。
参考指南
可按上下文加载详细指引:分析流程(references/analysis-process.md,在开始探索、使用 Glob/Grep 模式时加载)、EARS 格式(references/ears-format.md,在编写观察到的需求时加载)、规格模板(references/specification-template.md,在创建最终规格文档时加载)、分析检查清单(references/analysis-checklist.md,在确保分析全面时加载)。
约束
必须做到:所有观察均以实际代码证据为基础;大量使用 Read、Grep、Glob 进行探索;区分观察到的事实与推断;在专门章节记录不确定项;为每条观察标注代码位置。
不得做到:没有代码证据就做假设;跳过安全模式分析;忽略错误处理模式;未经充分探索就生成规格。
输出模板
规格保存为:specs/{project_name}_reverse_spec.md。
内容包含:技术栈与架构、模块/目录结构、观察到的需求(EARS 格式)、非功能性观察、推断的验收标准、不确定项与疑问、建议。