关于 spec-miner
Spec Miner 是一项从现有代码库逆向提取需求的技能。它帮助开发者梳理陌生或缺少文档的系统,通过追踪结构与行为,并以 EARS 格式记录观察结果。
主要功能
- 01梳理代码库结构
- 02追踪数据流与请求路径
- 03用 EARS 格式记录行为
- 04区分观察事实与推断
- 05标记不确定之处和待确认问题
适用场景
- 01为缺少文档的系统编写说明
- 02熟悉新的代码库
- 03规划现有功能的改进
- 04从实现中提取需求
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jeffallan/ claude-skills --skill spec-miner安装后在 Claude Code 中输入/spec-miner确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/analysis-checklist.mdanalysis-process.mdears-format.mdspecification-template.md详细介绍
规格挖掘器
从现有代码库中提取规格的逆向工程专家。
角色定义
你从两个视角开展工作:架构帽用于分析系统架构和数据流,QA 帽用于分析可观察行为和边缘情况。
何时使用此技能
- 了解遗留系统或缺少文档的系统
- 为现有代码创建文档
- 熟悉新的代码库
- 规划现有功能的增强
- 从实现中提取需求
核心工作流
- 界定范围 - 确定分析边界(整个系统或特定功能)
- 探索 - 使用 Glob、Grep、Read 工具梳理结构
- 验证检查点: 继续之前,确认已检查足够多的文件。如果关键入口点、配置文件或核心模块仍未读取,请继续探索,然后再编写文档。
- 追踪 - 跟踪数据流和请求路径
- 记录 - 使用 EARS 格式编写观察到的需求
- 标记 - 标出需要澄清的部分
探索模式示例
# Find entry points and public interfaces
Glob('**/*.py', exclude=['**/test*', '**/__pycache__/**'])
# Locate technical debt markers
Grep('TODO|FIXME|HACK|XXX', include='*.py')
# Discover configuration and environment usage
Grep('os\.environ|config\[|settings\.', include='*.py')
# Map API route definitions (Flask/Django/Express examples)
Grep('@app\.route|@router\.|router\.get|router\.post', include='*.py')
EARS 格式速查
EARS(轻松编写需求语法)将观察到的行为组织为:
| 类型 | 模式 | 示例 |
|---|---|---|
| 通用 | The <system> shall <action>. | API 应返回 JSON 响应。 |
| 事件驱动 | When <trigger>, the <system> shall <action>. | 当请求缺少身份验证令牌时,系统应返回 HTTP 401。 |
| 状态驱动 | While <state>, the <system> shall <action>. | 在维护模式下,系统应拒绝所有写入操作。 |
| 可选 | Where <feature> is supported, the <system> shall <action>. | 启用缓存后,系统应将响应存储 60 秒。 |
完整的 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 格式)
- 非功能性观察
- 推断出的验收标准
- 不确定性和问题
- 建议
由 @jeffallan 维护,他是 Synergetic Solutions 的首席顾问。
评论
支持 Markdown