变更实现验证技能Skill openspec-verify-change

这个技能用于自动验证软件实现是否与变更工件(如规格、任务、设计)一致,确保变更的完整性、正确性和一致性,适用于软件开发中的测试和质量保证阶段。关键词:验证、变更实现、spec驱动、测试覆盖、自动化测试。

测试 0 次安装 0 次浏览 更新于 3/11/2026

name: openspec-verify-change description: 验证实现是否匹配变更工件。当用户想要在归档前验证实现是否完整、正确和一致时使用。 license: MIT compatibility: 需要 openspec CLI。 metadata: author: openspec version: “1.0” generatedBy: “1.0.0”

验证实现是否匹配变更工件(规格、任务、设计)。

输入:可选指定变更名称。如果省略,检查是否可以从对话上下文中推断。如果模糊或含糊,必须提示可用变更。

步骤

  1. 如果未提供变更名称,提示选择

    运行 openspec list --json 以获取可用变更。使用 AskUserQuestion 工具 让用户选择。

    显示具有实现任务(任务工件存在)的变更。 如果可用,包含每个变更使用的架构。 将具有未完成任务时的标记为“(进行中)”。

    重要:不要猜测或自动选择变更。始终让用户选择。

  2. 检查状态以了解架构

    openspec status --change "<名称>" --json
    

    解析 JSON 以理解:

    • schemaName:正在使用的工作流(例如,“spec-driven”、“tdd”)
    • 此变更存在哪些工件
  3. 获取变更目录并加载工件

    openspec instructions apply --change "<名称>" --json
    

    这返回变更目录和上下文文件。从 contextFiles 中读取所有可用工件。

  4. 初始化验证报告结构

    创建具有三个维度的报告结构:

    • 完整性:跟踪任务和规格覆盖率
    • 正确性:跟踪需求实现和场景覆盖率
    • 一致性:跟踪设计遵循和模式一致性

    每个维度可以有 CRITICAL、WARNING 或 SUGGESTION 问题。

  5. 验证完整性

    任务完成情况

    • 如果 tasks.md 存在于 contextFiles 中,读取它
    • 解析复选框:- [ ](未完成)对比 - [x](完成)
    • 计数完成与总任务
    • 如果存在未完成任务:
      • 为每个未完成任务添加 CRITICAL 问题
      • 推荐:“完成任务:<描述>” 或 “如果已实现,标记为完成”

    规格覆盖率

    • 如果增量规格存在于 openspec/changes/<名称>/specs/
      • 提取所有需求(标记为 “### Requirement:”)
      • 对每个需求:
        • 在代码库中搜索与需求相关的关键词
        • 评估实现是否可能存在
      • 如果需求似乎未实现:
        • 添加 CRITICAL 问题:“未找到需求:<需求名称>”
        • 推荐:“实现需求 X:<描述>”
  6. 验证正确性

    需求实现映射

    • 对每个来自增量规格的需求:
      • 在代码库中搜索实现证据
      • 如果找到,记录文件路径和行范围
      • 评估实现是否匹配需求意图
      • 如果检测到偏离:
        • 添加 WARNING:“实现可能偏离规格:<详细信息>”
        • 推荐:“针对需求 X 审查 <文件>:<行>”

    场景覆盖率

    • 对每个在增量规格中的场景(标记为 “#### Scenario:”):
      • 检查条件是否在代码中处理
      • 检查是否存在覆盖该场景的测试
      • 如果场景似乎未覆盖:
        • 添加 WARNING:“未覆盖场景:<场景名称>”
        • 推荐:“为场景添加测试或实现:<描述>”
  7. 验证一致性

    设计遵循

    • 如果 design.md 存在于 contextFiles 中:
      • 提取关键决策(查找类似 “Decision:”、“Approach:”、“Architecture:” 的部分)
      • 验证实现是否遵循这些决策
      • 如果检测到矛盾:
        • 添加 WARNING:“未遵循设计决策:<决策>”
        • 推荐:“更新实现或修订 design.md 以匹配现实”
    • 如果没有 design.md:跳过设计遵循检查,注明“没有 design.md 可验证”

    代码模式一致性

    • 审查新代码以与项目模式的一致性
    • 检查文件命名、目录结构、编码风格
    • 如果发现显著偏离:
      • 添加 SUGGESTION:“代码模式偏离:<详细信息>”
      • 推荐:“考虑遵循项目模式:<示例>”
  8. 生成验证报告

    总结计分卡

    ## 验证报告:<变更名称>
    
    ### 总结
    | 维度       | 状态           |
    |------------|----------------|
    | 完整性     | X/Y 任务, N 需求 |
    | 正确性     | M/N 需求覆盖    |
    | 一致性     | 遵循/问题       |
    

    按优先级的问题

    1. CRITICAL(归档前必须修复):

      • 未完成任务
      • 缺失需求实现
      • 每个有具体、可操作的推荐
    2. WARNING(应该修复):

      • 规格/设计偏离
      • 缺失场景覆盖率
      • 每个有具体推荐
    3. SUGGESTION(最好修复):

      • 模式不一致
      • 次要改进
      • 每个有具体推荐

    最终评估

    • 如果有 CRITICAL 问题:“找到 X 个关键问题。归档前修复。”
    • 如果只有警告:“无关键问题。考虑 Y 个警告。可归档(附注改进)。”
    • 如果全部清除:“所有检查通过。可归档。”

验证启发式

  • 完整性:专注于客观检查项(复选框、需求列表)
  • 正确性:使用关键词搜索、文件路径分析、合理推断 - 不需要完美确定性
  • 一致性:寻找明显的不一致,不要吹毛求疵风格
  • 假阳性:不确定时,优先 SUGGESTION 而非 WARNING,WARNING 而非 CRITICAL
  • 可操作性:每个问题必须有具体的推荐,适用时提供文件/行引用

优雅降级

  • 如果只有 tasks.md 存在:仅验证任务完成情况,跳过规格/设计检查
  • 如果任务 + 规格存在:验证完整性和正确性,跳过设计
  • 如果完整工件:验证所有三个维度
  • 始终注明跳过了哪些检查及原因

输出格式

使用清晰的 markdown:

  • 表格用于总结计分卡
  • 分组列表用于问题(CRITICAL/WARNING/SUGGESTION)
  • 代码引用格式:file.ts:123
  • 具体、可操作的推荐
  • 无模糊建议如“考虑审查”