关于 grill-with-docs
用于澄清设计并达成共同理解的规划技能,会逐个提出问题并检查代码库与现有文档。它会指出含糊术语、核对实现,并将已确认的领域词汇写入 CONTEXT.md。
主要功能
- 01逐一提出设计问题
- 02探索代码与文档
- 03质疑含糊的领域术语
- 04对照实现核验陈述
- 05随术语确认更新 CONTEXT.md
- 06有选择地建议 ADR
适用场景
- 01澄清软件设计计划
- 02统一代码库中的领域术语
- 03根据代码检查设计假设
- 04记录已达成共识的词汇
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ polya20/ grill-me --skill grill-with-docs安装后在 Claude Code 中输入/grill-with-docs确认已加载。
附带文件ADR-FORMAT.mdCONTEXT-FORMAT.md
详细介绍
请针对这份计划的方方面面不断追问我,直到我们达成共识。逐一梳理设计树中的每个分支,依次理清各项决策之间的依赖关系。每个问题都请给出你的推荐答案。
每次只问一个问题,等待我回答后再继续。
如果某个问题可以通过探索代码库来回答,就直接探索代码库。
领域认知
探索代码库时,也要查找现有文档:
文件结构
大多数代码库只有一个上下文:
/
├── CONTEXT.md
├── docs/
│ └── adr/
│ ├── 0001-event-sourced-orders.md
│ └── 0002-postgres-for-write-model.md
└── src/
如果根目录中存在 CONTEXT-MAP.md,说明代码库包含多个上下文。该映射文件会指出每个上下文所在的位置:
/
├── CONTEXT-MAP.md
├── docs/
│ └── adr/ ← system-wide decisions
├── src/
│ ├── ordering/
│ │ ├── CONTEXT.md
│ │ └── docs/adr/ ← context-specific decisions
│ └── billing/
│ ├── CONTEXT.md
│ └── docs/adr/
按需创建文件——只有在有内容可写时才创建。如果不存在 CONTEXT.md,则在首次确定术语时创建。如果不存在 docs/adr/,则在首次需要 ADR 时创建。
交流过程中
对照术语表进行核对
当用户使用的术语与 CONTEXT.md 中已有的说法冲突时,立即指出:“你的术语表将‘取消’定义为 X,但你似乎指的是 Y——究竟是哪一个?”
明确模糊表述
当用户使用含糊或含义过多的词语时,提出一个精确的规范术语。“你说的是‘账户’——指的是客户(Customer)还是用户(User)?两者并不相同。”
讨论具体场景
讨论领域关系时,通过具体场景进行压力测试。设想一些能探查边界情况、促使用户明确概念边界的场景。
与代码交叉核对
当用户描述某项功能的运作方式时,检查代码是否一致。如果发现矛盾,指出来:“你的代码会取消整个订单,但你刚才说可以部分取消——哪一种才是正确的?”
直接更新 CONTEXT.md
术语确定后,立即更新 CONTEXT.md。不要等到最后再集中处理——应在讨论过程中及时记录。使用 CONTEXT-FORMAT.md 中的格式。
CONTEXT.md 不应包含任何实现细节。不要把 CONTEXT.md 当作规范、草稿或实现决策记录。它只是术语表。
谨慎提出 ADR
只有同时满足以下三个条件时,才提出创建 ADR:
- 难以撤销——日后改变决定的成本不可忽视
- 缺少背景时会令人意外——未来的读者会疑惑“为什么要这样做?”
- 源于真实的权衡取舍——确实存在其他可行方案,且你基于具体理由选择了其中一种
只要缺少其中任何一项,就不要创建 ADR。请使用 ADR-FORMAT.md 中的格式。