SuperAPI AI 工具集

grill-requirements

编程与开发

查看项目

更新于 10-17 16:22

技能介绍

用途

Grill Requirements 用于为 IEC 62304 项目定义或细化软件需求(REQ 条目)。它通过一次只问一个问题的访谈方式,与用户就某项能力达成共同理解,并在每条需求确定后立即写入需求台账。该技能还负责维护项目术语表和架构决策记录(ADR)。

主要能力

  • 一对一访谈:每条消息只问一个问题,每个问题都附带推荐答案及理由。能从环境(代码、文档、git 历史)查证的事实不询问用户,但每个决策仍交由用户确认。
  • 决策树遍历:逐一走完决策树的每个分支,一次解决一个决策之间的依赖。
  • 压力测试:用具体场景检验答案,构造边界情况以迫使精确边界。
  • 失败行为追问:对于 B 类和 C 类软件,针对每项能力追问“失败时必须发生什么?”,每个答案也是一条需求。C 类还会质疑软件项之间的边界。
  • 写入前探测:在需求确定前运行两个子代理探测——重叠探测和架构探测。重叠探测查找已覆盖该行为的条目,返回 ID、一行摘要和 file:line;架构探测查找 SAD 中的 SDD 和 LLR 条目,回答三个问题:是否已有软件项拥有该行为、需求措辞是否强制了 SAD 禁止的结构、满足它是否需要新软件项或新 SOUP。
  • 需求写入:逐条更新需求台账,不批量写入。新条目写入本次变更自己的文件 docs/requirements/<YYYY-MM-DD>-<slug>.md。条目形式为 **<ID>**: The software shall <single, testable behavior>.,ID 通过 .guardrails/scripts/new-id.sh REQ 获取,不手写。
  • 派生需求处理:仅因设计结果而存在的需求标记为 satisfies: derived,并移交 analyze-risks。实现风险控制的需求以 (implements: RC-…) 结尾。
  • 取代与退役:取代或退役通过注解记录,绝不删除。取代时旧条目加 superseded-by: <new ID>,新条目加 supersedes: <old ID>;退役时旧条目加 retired: YYYY-MM-DD — <reason>。被取代或退役的条目不再有效,不承担测试,也不履行任何覆盖。
  • 依赖声明:在多单元仓库中,添加 depends_on: 前需与用户逐一检查提供方的导出面、RMF、ADR、开放问题报告及其传递 SOUP。发现的缺口写为消费者 REQ,带 expects: <unit> 和 opened: YYYY-MM-DD。
  • 术语表维护:docs/CONTEXT.md 是项目术语表,只含定义。术语冲突立即指出,模糊或过载术语提出一个规范术语并将被拒同义词记入 _Avoid_。多单元时默认写入单元自己的术语表,接口术语升级到根术语表。
  • ADR 记录:仅对同时满足难以逆转、无上下文则令人意外、真实权衡结果三个条件的决策,提议记录 ADR。ID 通过 .guardrails/scripts/new-id.sh ADR 生成,每个文件一个决策。

使用方式

开始时宣布:“Using the grill-requirements skill to define requirements.” 前置条件:处于变更工作树中;从 .guardrails/config.yaml 读取 doc_srs、doc_sad 和 safety_class;若存在 .guardrails/units.yaml,则适用其中“声明依赖”和“术语表”下的单元规则。访谈期间不编写实现代码。

适用场景

适用于 IEC 62304 项目的软件需求定义与细化,尤其是需要严格追踪、可测试需求、术语一致性和架构决策记录的场景。也适用于多单元仓库中的依赖声明和跨单元术语管理。

限制

  • 不编写实现代码。
  • 不直接编辑 SAD;遇到矛盾移交给 design-architecture。
  • 不批量写入需求。
  • 不手写 ID。
  • 不删除需求条目,只取代或退役。
  • 不将缺口记录为提供方台账中的问题报告。
  • 不发明父需求。
  • 探测子代理的台账不得进入当前对话上下文。

完成条件

用户明确确认共同理解;探测发现的所有重叠、歧义或矛盾均已与用户解决;每条新增或变更的 REQ 都在 SRS 中,ID 来自 new-id.sh,且按所写可测试;术语表已更新;满足三部分测试的 ADR 已记录。移交:风险给 analyze-risks,设计给 design-architecture,实现规划给 plan-change,集成给 merge-change。