Community编程与开发github.com

wesleymatosdev/行为验证

在宣布工程工作完成之前,证明其行为符合预期。

行为验证 是什么?

该技能提供了一套严格的流程,用于在开发工作被宣布完成之前验证其行为是否真实可信。它特别针对以下场景设计:代理声称任务已完成、测试通过但对行为强度存疑、或静态审查与运行时验证的结果存在冲突。技能的核心是避免依赖如“绿色命令”或静态审查摘要等未经实际行为验证的证据。它遵循五个步骤:命名行为、选择最接近的接口、证明测试的有效性、运行并审查证据、以及处理冲突证据。此外,该技能还详细指出了常见的陷阱,如在Node环境下验证浏览器控制台行为,或使用空泛的测试结果。它支持通过真实的生产环境负载和端到端流程进行验证,适用于Claude Code、Cursor、Codex等代理平台,要求验证报告必须包含被证明的行为、具体操作和观察到的结果。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wesleymatosdev/skills/tree/main/standards/proof-bearing-verification

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

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

文档

行为验证 是做什么的?

在审查现有实现、委派工作或交付就绪性时使用。绿色命令、静态审查或代理摘要不能作为证据,除非它实际执行了所声称的行为。

何时使用

  • 代理声称任务已完成。
  • 测试通过,但其行为强度未知。
  • 错误修复、UI变更、集成或运维变更需要验证。
  • 静态审查与之前运行时验证过的行为存在冲突。

不要用它替代test-driven-development来编写新代码;用它来在实现之后或同时验证证据。

流程

  1. 命名被声称的行为。

    • 说明用户可见或外部可观察的断言结果。
    • 完成标准:无需参考实现细节即可测试该声明。
  2. 选择最近的真正接口。

    • 优先选择挂载组件的交互、集成请求、CLI调用、API调用或端到端流程,而不是仅限导入或快照的测试。
    • 使用真实负载和生产级固定数据。
    • 完成标准:探针能够到达被声称行为的代码路径。
  3. 证明探针有效。

    • 对于已更改或移除的行为,首先观察在没有该实现时(或在安全情况下使用故意的空操作)的失败。
    • 如果测试在被测试单元被绕过时仍保持绿色,则该测试是空洞的,不能作为证据。
    • 完成标准:探针能够区分正常工作行为与相关错误行为。
  4. 运行并检查证据。

    • 执行针对性的检查,然后执行项目适用的更广泛检查。
    • 阅读测试或代码本身,而不是相信其作者的摘要。
    • 完成标准:输出和实现都支持确切的声明。
  5. 处理冲突证据。

    • 将用户验证的运行时行为视为证据,除非有解释说明为何静态审查的建议可以取代它。
    • 追踪导致明显矛盾的框架、缓存、基础设施或运行时语义。
    • 完成标准:任何更改都应遵循最有力的可用证据,而不是审查者的信心。

陷阱

  • 不要用Node验证浏览器控制台行为。 Node的console.log不支持%c——它会将样式字符串视为普通参数并静默丢弃,因此Node/Python的测试框架会打印干净的网格,掩盖了DevTools渲染损坏的问题。要验证控制台输出,请通过CDP驱动真实浏览器(headless Chrome --remote-debugging-port + 捕获Runtime.consoleAPICalled的WebSocket脚本),或从实际控制台获取用户可见的证据。在不同控制台引擎上运行的测试框架不是证据。
  • 包含过多%c段的console.log会溢出DevTools。 控制台格式化程序逐个使用参数说明符;当单个调用中样式段过多(例如约193个),尾部的样式字符串不会被作为样式消费——它们会以未格式化的文本直接打印(经典的color:#...;font-family...垃圾转储)。根据Chrome文档的解决办法是:每行/每行一个console.log,每个包含有限数量的%c段。这就是为啥逐字符的ASCII艺术作为单个巨大的console.log('%c%s%c%s...')会泄漏样式。
  • “渲染时不抛出异常”、类型固定的测试、替换被测试单元的模拟测试以及.todo()测试不能证明行为。
  • 绝不为了满足浅层测试脚手架而改变生产行为。
  • 当外部依赖、UI交互或部署路径未被执行时,不要声称完成;报告未经验证的边界。

验证

完成报告必须包括:被证明的行为、使用的确切命令或操作、观察到的结果,以及任何仍然未经验证的边界。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能