Community写作与编辑github.com

开发纪律

用于修复 Bug、回归或测试失败时;用于修改任何判断正确性的内容(测试、验证器、检测器、阈值、CI)、金钱或数值公式、迁移或认证时;用于测试变绿后、测试不稳定或想要编辑、跳过、削弱测试时;用于测试与规范冲突时;用于重试失败尝试时;用于将代码更改委托给子代理或接受其报告和数值时;用于部署时;用于检查块时。

开发纪律 是什么?

开发纪律(Dev-discipline)是一个以规则驱动的 AI 代理技能,设计用于在代码更改、调试和部署过程中强制执行严格的验证。它源于一个核心理念:“完成”应由外部信号而非内部信念来定义。该技能定义了一个完整的工作循环,从变更前测量开始,到根因修复、测试证明(通过 `prove_fix.py` 脚本)、门控(确保测试在 CI 中运行)、接受(基于最终运行摘要)和关闭(使用独立预言机验证)结束。它要求对于任何“判断”性的系统(测试、验证器、阈值、CI)、金钱/数值逻辑、迁移、认证和静默失败都应用此完整循环。本地修复由规范字面量和对缺陷类的 2–3 个手工编写的变异测试驱动。该技能还强调预言机与检查的代码不能共享任何代码,测试、快照和 CI 的更改必须遵循契约(例如用户请求或 ticket),并且永远不要调整代码以达到预期数值。它支持 Claude Code、Cursor 和 Codex 等平台,并通过“自治”原则允许代理默认自主推进,仅在涉及不可逆操作(安全、支付、数据写入、权限)或与目标冲突时才询问。最终报告包含每个标准的 `PASS | FAIL | NOT_PROVEN` 状态和详细证据,提交信息作为证据记录。该技能包含多个参考文件,如 `delegation.md`、`release.md`、`process-ledger.md` 和 `evidence.md`。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/volniy082-spec/dev-discipline/tree/HEAD

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

开发纪律 是做什么的?

“完成”由你未曾调整的外部信号来定论。 一条书面规则仅命名了一个失败类别;门控中的检查则阻止它。当某一类别复发时,在同一提交中添加检查。 $DD = 此文件旁边的 scripts/ 目录(退出码 0 表示通过,1 表示失败,2 表示未证明)。

按层面严格对待。 对判断性的部分(测试、验证器、阈值、CI)、金钱和数值公式、迁移、认证、静默失败应用完整循环。一个约10行的本地修复,附带规范字面量:prove_fix.py,2–3个手工编写的缺陷类别变异,针对一个你工作时未使用的输入运行一次。文本、UI 外观、文档、原型:运行测试和一次冒烟测试。没有测试或运行器:在自己的提交中添加一个最小测试(设置,而非削弱)。

循环

  1. 编辑前测量: 一个你将在前后比较的命令。从原始数据导出范围,而非摘要或记忆。列出整个类别:每一个共享根因的实例。→ references/debugging.md
  2. 修复缺陷所经路径上的根因。 顶部加防护不是修复。回归性缺陷:git bisect run。三次尝试失败后,改变方法或上下文。新实体、金钱/数据流或迁移:先写出5–10行设计笔记(debugging.md §10)。
  3. 证明测试: 在父提交上通过断言显示为红色(ImportError、收集错误、跳过 = 未证明),修复后为绿色,撤销代码更改后再次为红色:$DD/prove_fix.py。新检查在错误输入上触发,在正确输入上保持静默。对于金钱和数值,预期值为规范字面量(# 预言机:<来源>)。
  4. 门控: 测试在同一提交的 CI 中运行;跳过、超时和“0个测试”不算通过;排除列表只能缩小;对 glob 或注册表的循环断言找到了多少项。→ gate-integrity.md
  5. 接受 基于精确代码树上最终运行的运行器摘要行,而不是基于管道的 $?。
  6. 关闭 使用编写者未调整过的检查:其他数据、只读生产冒烟测试、独立预言机,并先写入预期。它发现的类别进入门控。→ proof-and-oracles.md

预言机及其保护

  • 预言机与其检查的代码不共享任何代码。黄金文件和自一致性证明的是一致性,而非正确性。
  • 验证脚本是待测试的代码:在好输入和坏输入上均运行;打印它检查了多少项。
  • 测试、快照、预期值和 CI 只能通过契约更改:简要说明,或者,在单独工作时,一个命名该更改的用户请求(新规范、ticket、值)以及在编辑前写入的一行(哪些测试更改,新值来自哪里)。“让它通过”不是契约:与规范冲突的测试保持原样,答案是 SPEC_CONFLICT。值更改放在单独的 test: 提交中。跳过、删除的断言、缩小的覆盖范围需要说明理由。 永远不要调整代码以达到预期数值。评判最终差异,而非编辑工具:$DD/guard_diff.py(首先作为建议)。检查阻止了合法工作则是缺陷:报告 BLOCKED,永远不要绕过。→ oracle-protection.md

自治

默认自主推进。仅在涉及不可逆操作(安全、支付、生产数据写入、权限)或与目标冲突时询问。遇到岔路时,选择一条,记录原因、两种读数的数值以及如何撤销,然后继续。被阻塞:完成所有独立部分,然后以一行命名所需操作和命令结束。

报告

  • 每条标准后跟 PASS | FAIL | NOT_PROVEN,附带命令、退出码和输出行;外加 not_checked。
  • 判定:DONE,BLOCKED(原因),SPEC_CONFLICT(测试, 来源),IMPOSSIBLE,NOT_REPRODUCED。诚实的未完成退出是成功;静默跳过是缺陷。命名部分状态(“防护已添加,根因仍存在”)。
  • 每个数值附上最终运行的命令。重新运行子代理报告的数值($DD/reexec_claims.py)。
  • 提交主体 = 证据记录:修改前/后测量、门控行、未完成的内容及其去向。

红旗

我发现我执行
没有父提交上的红色就直接变绿prove_fix.py
引用子代理的数值或我的记忆重新运行
没有契约就编辑测试或阈值契约行或 SPEC_CONFLICT
使用 skip、retry、sleep、noqa 来变绿找出原因,使其确定性(refactor-flaky.md)
即将询问可逆操作决定、记录、继续

更多:delegation.md(子代理、审查者、简要说明)、release.md(部署)、process-ledger.md、evidence.md。

相关技能