Create, amend, or backprop bugs into SPEC.md at repo root. Sole mutator of the project spec. Triggers when the user asks to write a spec, start a new spec, distill a spec from existing code, add invariants, amend sections (§G, §C, §I, §V, §T, §B), or record a bug via backprop. Common phrasings: "write the spec for...", "new spec", "bug: ...", "amend §V.3", "distill spec from code", "spec this idea". Reads and follows FORMAT.md for the caveman encoding rules and pipe-table shape of §T and §B.
spec — 规格修改器
如果尚未加载,请读取仓库根目录下的 FORMAT.md。所有写入操作均遵循原始技能规则。
调度
检查用户请求和项目状态:
- 仓库根目录无
SPEC.md且参数描述想法 → 新建 - 无
SPEC.md且参数包含from-code→ 提炼 SPEC.md存在且参数以bug:开头 → 反向传播SPEC.md存在且参数以amend开头 → 修订SPEC.md存在且无参数 → 询问用户选择哪种模式
输入 — spec 是唯一修改器
其他动词产生材料;spec 负责写入。将其交接块整合到相应章节,显示差异,确认后写入:
- grill → 精炼的 §G + §C
- research → §R 行(若缺失则添加 §R 章节)
- review → 草拟的 §V 行 + 风险结论
- deepen → §I/§V/§T 修订
⊥ 不要重写交接未指定的章节。章节所有权(见 FORMAT.md)。
新建 — 想法 → 规格
输入:用户想法。如果模糊,建议先运行 grill。
步骤:
- 提取目标(一行,原始风格)。→ §G。
- 列出用户明确或隐含的约束。→ §C。
- 列出用户命名的外部接口。→ §I。
- 仅当 research 已运行时才添加 §R — 否则省略该章节(合理大小)。
- 提出初始不变量。→ §V(编号 V1…)。
- 将目标分解为有序任务。→ §T 管道表,所有状态为
.,ID 为 T1… - §B 章节仅包含表头行(
id|date|cause|fix)。
写入 SPEC.md。向用户显示完整文件。询问:“规格可以吗?高风险则 /review,否则 /build。”
提炼 — 代码 → 规格
遍历仓库。生成 §G(从 README/package.json/主入口推断),§C(从技术栈推断),§I(枚举公共 API/CLI/配置),§V(从测试和断言推导),§T(每个已知 TODO 或缺失测试对应一个任务),§B(空)。
处处使用原始风格。在文本中用 ? 标记不确定项,以便用户确认。
反向传播 — 缺陷 → §B + §V
输入:bug: <description>。
步骤:
- 解析缺陷描述。
- 找到根本原因(阅读相关代码)。
- 判断:新不变量能否防止复发?若能 → 草拟
V<next>。 - 在 §B 追加行:
B<next>|<date>|<cause>|V<N>。 - 在 §V 追加新不变量。
- 如果修复也改变行为 → 添加/更新 §T 行。
- 显示差异。仅在用户确认后应用。
规则:每个缺陷都有 §B 条目。不变量可选但推荐。
修订 — 定向编辑
输入:amend §V.3 或 amend §T 等。
读取该章节。显示当前内容。询问用户更改。写入。显示差异。
绝不静默重写用户未指定的章节。
输出规则
- 根据
FORMAT.md使用原始格式。 - 保留标识符、路径、代码原样。
- 编号单调递增 — 绝不重用 §V.N 或 §B.N。
- §T 行
cites列!列出 §V/§I 依赖:T5|.|impl auth mw|V2,I.api。
非目标
- 无子代理。主线程写入。
- 无仪表盘、无日志、除 SPEC.md 本身外无状态文件。
- 规格后不自动构建。用户显式调用构建。






