关于 drill
drill 是一项通过结构化访谈审视计划与设计的技能,面向编码 Agent。它结合项目上下文检验假设,并在实施前梳理决策、形成已定稿或草案规格。
主要功能
- 01结构化设计访谈
- 02检查项目上下文与 ADR
- 03比较决策方案及取舍
- 04核对术语与词汇表
- 05编写定稿或草案规格
适用场景
- 01澄清复杂功能需求
- 02根据项目代码检查设计
- 03将未解决的设计记录为草案
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pwguler/ skills --skill drill安装后在 Claude Code 中输入/drill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/decision-record.mddesign-red-flags.mddraft-spec.mdexhaust-the-design-space.mdexperience-first.mdredesign-from-first-principles.mdspec-format.mdterms.md详细介绍
针对正在讨论的计划或设计运行 core-interview 技能。访谈还会根据项目的领域模型检验计划。
快速路径:如果 docs/specs/ 中已有定稿规范涵盖此请求,直接进入 implement。否则,先在内部明确请求。思考顶尖专家会如何处理:使用哪些资料、采用哪些方法,以及用什么外部检查来证明结果。外部检查是来自工作之外的证据:测试运行器、在线系统或独立来源。弄清楚用户真正想要什么,以及请求是说得太多还是太少。删去无助于实现目标的约束。只添加能改善结果的内容,不要扩大工作范围。将属于用户的选择留给用户。不要向用户展示改写后的请求,只展示下面那句计划。然后判断请求的规模。没有真正决策树的请求显而易见。例如,一项显而易见的改动、一个小型 diff,或一句话就能说明的标准。说明请求显而易见,并将那句话作为计划直接进入 implement。这句话应将外部检查作为验收标准。显而易见的改动不要编写规范。快速路径仍需检验这句话:先陈述这句话,再进行检验。如果无法陈述这句话,或者这句话表明仍有待做出的决策,那么请求就不显而易见。此时运行访谈。
- 在提出第一个问题前,先阅读项目背景:代码、文档和近期提交。
- 在提出第一个问题前,查找根目录下的
CONTEXT.md。还要查找CONTEXT-MAP.md及其列出的每个CONTEXT.md。查找docs/adr/下的 ADR,也要查找仅适用于单一上下文的 ADR。 - 对于没有
CONTEXT.md的非简单代码库,主动提出从代码和文档中收集候选术语。在访谈中逐个向用户确认。只有用户确认后,才能将术语加入术语表。 - 如果请求包含多个相互独立的部分,说明这一点。先深入讨论第一部分,其余部分留待后续。
- 在选择方向前,先展示 2 或 3 种不同方案及其取舍,而不是同一方案的不同变体。按照 穷尽设计空间 的说明,将推荐方案放在首位。当新需求加入现有设计时,其中一个方案应为从第一性原理重新设计。根据设计警示信号检查每种架构形态。有些决策取决于文字无法确定的外观、感受或流程。对此,运行
prototype技能构建一次性原型,让用户作出反馈。用户选定方向后,将原型丢弃。 - 当决策树中的每个分支都解决后,本次会话即告结束。然后简要总结定稿的设计。在开始任何实现前,取得用户的明确同意。
- 如果定稿设计涉及实现工作,在目标项目中将规范写入
docs/specs/<slug>.md。使用 spec-format.md:目标、非目标、可验证的验收标准、验证命令,以及分阶段迁移时的各个阶段。将快速路径中的外部检查纳入验证命令。 - 有时本次会话无法解决决策树中的问题。决策可能需要在此上下文之外进行研究后才能确定,或者决策树对单次会话来说过于庞大。这时,不要为尚未定稿的设计编写定稿规范。应将规范写为草稿:draft-spec.md。
规则:
- 从设计中移除所有既定约束未要求的内容。根据体验优先检查保留的内容。当产品范围、用户体验或界面方面的取舍将易于实现置于用户体验之上时,请阅读该文档。
- 仅在文件有内容时才创建文件。确定第一个术语后,创建
CONTEXT.md;完成第一个 ADR 后,创建docs/adr/。 - 在访谈中,**要求用户遵循术语表。**如果用户赋予某个词的含义与
CONTEXT.md中的不同,请立即指出。例如:“术语表中,退款指的是 X。你似乎指的是 Y。到底是哪一个?” - 在访谈中,**替换含糊的词。**遇到含糊的词或有多种含义的词时,给出一个确切术语。例如:“你说的‘用户’是指账户持有人还是操作员?两者不同。”
- 在访谈中,**用具体案例验证。**当两个概念交界时,挑选一个处于两者边界的具体案例,并询问会发生什么。
- 在访谈中,**对照代码核实说法。**用户描述某项功能如何运作时,请查看代码,并指出每一处差异。例如:“代码会退还整笔付款。你描述的是部分退款。哪种说法正确?”
- 在访谈中,**术语确定后立即记录。**术语一旦确定,就更新
CONTEXT.md,不要等到最后。它只是术语表:不得包含计划、备注或实现选择。使用 terms.md 中的格式。 - 在访谈中,**尽量少创建 ADR。**只有符合 decision-record.md 中三项标准的决策,才提出创建 ADR:该决策难以撤销、从代码中难以理解,而且是经过权衡真实备选方案后作出的。
- **后续会话基于草稿开展。**如果会话打开的规范仍包含
## Open decisions部分,请遵循 draft-spec.md。
评论
支持 Markdown