[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6RVR7S22PXKD5CXDHM7CM18":3,"skill-same:01M6RVR7S22PXKD5CXDHM7CM18":55},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":38,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M6RVR7S22PXKD5CXDHM7CM18","verification-before-completion",null,"在宣称工作完成、已修复或测试通过之前使用，在提交或创建 PR 之前——必须运行验证命令并确认输出后才能声称成功；始终用证据支撑断言","rzx007\u002FVykor","rzx007","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F22313722?v=4","01M6RVGB3GJ05PGEFHQ34TV6T0","Danovan","01M6RVGB7F20SDKPMEN9RS3N0N",3,"MIT","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",[],[19,20,21,22,23],"verification","verification before completion","testing","pr","quality","2026-11-10 10:12:30",false,"---\nname: verification-before-completion\ndescription: 在宣称工作完成、已修复或测试通过之前使用，在提交或创建 PR 之前——必须运行验证命令并确认输出后才能声称成功；始终用证据支撑断言\nversion: \"1.0.0\"\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [quality, verification]\n---\n\n# 完成前验证\n\n## 概述\n\n**核心原则：** 始终用证据支撑结论。\n\n**对这条规则敷衍了事，就等于违背了它的精神。**\n\n## 铁律\n\n```\n没有新鲜的验证证据，不许宣称完成\n```\n\n如果你在这条消息中没有运行验证命令，就不能声称测试通过。\n\n## 门控函数\n\n```\n在宣称任何状态或表达满意之前：\n\n1. 确定：什么命令能证明这个结论？\n2. 运行：执行完整命令（重新运行，完整执行）\n3. 阅读：完整输出，检查退出码，统计失败数\n4. 验证：输出是否支持这个结论？\n   - 如果否：用证据说明实际状态\n   - 如果是：带证据陈述结论\n5. 只有这时：才能做出结论\n\n跳过任何一步 = 说谎，不是验证\n```\n\n## 常见失败模式\n\n| 结论 | 需要 | 不够格 |\n|------|------|--------|\n| 测试通过 | 测试命令输出：0 failures | 之前的运行结果、\"应该会通过\" |\n| Linter 无报错 | Linter 输出：0 errors | 部分检查、推断 |\n| 构建成功 | 构建命令：exit 0 | linter 通过、日志看起来没问题 |\n| Bug 已修复 | 测试原始症状：通过 | 代码改了，假设已修复 |\n| 回归测试有效 | 红-绿循环已验证 | 测试只通过了一次 |\n| 代理已完成 | VCS diff 显示变更 | 代理报告\"成功\" |\n| 需求已满足 | 逐项核对清单 | 测试通过 |\n\n## 红线——停下来\n\n- 使用\"应该\"、\"大概\"、\"似乎\"\n- 验证前就表达满意（\"太好了！\"、\"完美！\"、\"搞定！\"等）\n- 即将提交\u002F推送\u002F创建 PR 却没有验证\n- 信任代理的成功报告\n- 依赖部分验证\n- 想着\"就这一次\"\n- 累了想赶紧收工\n- **任何暗示成功但实际未运行验证的措辞**\n\n## 防止合理化\n\n| 借口 | 现实 |\n|------|------|\n| \"应该能行了\" | 运行验证命令 |\n| \"我有信心\" | 信心 ≠ 证据 |\n| \"就这一次\" | 没有例外 |\n| \"Linter 通过了\" | Linter ≠ 编译器 |\n| \"代理说成功了\" | 独立验证 |\n| \"我累了\" | 疲劳 ≠ 借口 |\n| \"部分检查就够了\" | 部分检查什么也证明不了 |\n| \"换个说法这条规则就不适用了\" | 精神大于字面 |\n\n## 关键模式\n\n**测试：**\n```\n✅ [运行测试命令] [看到：34\u002F34 pass] \"全部测试通过\"\n❌ \"应该能通过了\" \u002F \"看起来对了\"\n```\n\n**回归测试（TDD 红-绿）：**\n```\n✅ 编写 → 运行（通过）→ 回退修复 → 运行（必须失败）→ 恢复 → 运行（通过）\n❌ \"我写了回归测试\"（没有经过红-绿验证）\n```\n\n**构建：**\n```\n✅ [运行构建] [看到：exit 0] \"构建通过\"\n❌ \"Linter 通过了\"（linter 不检查编译）\n```\n\n**需求：**\n```\n✅ 重读计划 → 创建核对清单 → 逐项验证 → 报告缺口或完成\n❌ \"测试通过了，阶段完成\"\n```\n\n**代理委派：**\n```\n✅ 代理报告成功 → 检查 VCS diff → 验证变更 → 报告实际状态\n❌ 信任代理报告\n```\n\n## 何时使用\n\n**以下情况之前必须使用：**\n- 任何形式的成功\u002F完成声明\n- 任何满意的表达\n- 任何关于工作状态的正面陈述\n- 提交、创建 PR、标记任务完成\n- 进入下一个任务\n- 委派给代理\n\n**本规则适用于：**\n- 准确措辞\n- 同义词和换一种说法\n- 暗示成功\n- 任何传达完成\u002F正确性的沟通\n\n","# 完成前验证\n\n## 概述\n\n**核心原则：** 始终用证据支撑结论。\n\n**对这条规则敷衍了事，就等于违背了它的精神。**\n\n## 铁律\n\n```\n没有新鲜的验证证据，不许宣称完成\n```\n\n如果你在这条消息中没有运行验证命令，就不能声称测试通过。\n\n## 门控函数\n\n```\n在宣称任何状态或表达满意之前：\n\n1. 确定：什么命令能证明这个结论？\n2. 运行：执行完整命令（重新运行，完整执行）\n3. 阅读：完整输出，检查退出码，统计失败数\n4. 验证：输出是否支持这个结论？\n   - 如果否：用证据说明实际状态\n   - 如果是：带证据陈述结论\n5. 只有这时：才能做出结论\n\n跳过任何一步 = 说谎，不是验证\n```\n\n## 常见失败模式\n\n| 结论 | 需要 | 不够格 |\n|------|------|--------|\n| 测试通过 | 测试命令输出：0 failures | 之前的运行结果、\"应该会通过\" |\n| Linter 无报错 | Linter 输出：0 errors | 部分检查、推断 |\n| 构建成功 | 构建命令：exit 0 | linter 通过、日志看起来没问题 |\n| Bug 已修复 | 测试原始症状：通过 | 代码改了，假设已修复 |\n| 回归测试有效 | 红-绿循环已验证 | 测试只通过了一次 |\n| 代理已完成 | VCS diff 显示变更 | 代理报告\"成功\" |\n| 需求已满足 | 逐项核对清单 | 测试通过 |\n\n## 红线——停下来\n\n- 使用\"应该\"、\"大概\"、\"似乎\"\n- 验证前就表达满意（\"太好了！\"、\"完美！\"、\"搞定！\"等）\n- 即将提交\u002F推送\u002F创建 PR 却没有验证\n- 信任代理的成功报告\n- 依赖部分验证\n- 想着\"就这一次\"\n- 累了想赶紧收工\n- **任何暗示成功但实际未运行验证的措辞**\n\n## 防止合理化\n\n| 借口 | 现实 |\n|------|------|\n| \"应该能行了\" | 运行验证命令 |\n| \"我有信心\" | 信心 ≠ 证据 |\n| \"就这一次\" | 没有例外 |\n| \"Linter 通过了\" | Linter ≠ 编译器 |\n| \"代理说成功了\" | 独立验证 |\n| \"我累了\" | 疲劳 ≠ 借口 |\n| \"部分检查就够了\" | 部分检查什么也证明不了 |\n| \"换个说法这条规则就不适用了\" | 精神大于字面 |\n\n## 关键模式\n\n**测试：**\n```\n✅ [运行测试命令] [看到：34\u002F34 pass] \"全部测试通过\"\n❌ \"应该能通过了\" \u002F \"看起来对了\"\n```\n\n**回归测试（TDD 红-绿）：**\n```\n✅ 编写 → 运行（通过）→ 回退修复 → 运行（必须失败）→ 恢复 → 运行（通过）\n❌ \"我写了回归测试\"（没有经过红-绿验证）\n```\n\n**构建：**\n```\n✅ [运行构建] [看到：exit 0] \"构建通过\"\n❌ \"Linter 通过了\"（linter 不检查编译）\n```\n\n**需求：**\n```\n✅ 重读计划 → 创建核对清单 → 逐项验证 → 报告缺口或完成\n❌ \"测试通过了，阶段完成\"\n```\n\n**代理委派：**\n```\n✅ 代理报告成功 → 检查 VCS diff → 验证变更 → 报告实际状态\n❌ 信任代理报告\n```\n\n## 何时使用\n\n**以下情况之前必须使用：**\n- 任何形式的成功\u002F完成声明\n- 任何满意的表达\n- 任何关于工作状态的正面陈述\n- 提交、创建 PR、标记任务完成\n- 进入下一个任务\n- 委派给代理\n\n**本规则适用于：**\n- 准确措辞\n- 同义词和换一种说法\n- 暗示成功\n- 任何传达完成\u002F正确性的沟通\n\n",{"name":5,"license":15,"version":29,"metadata":30,"description":7},"1.0.0",{"hermes":31},{"tags":32},[23,19],"main","11fa3057bb1aff51d77b97648803dec2b2ea62d9",".agents\u002Fskills\u002Fverification-before-completion",2,"https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor","https:\u002F\u002Frzx007.github.io\u002FVykor\u002F","https:\u002F\u002Fgithub.com\u002Frzx007","2026-11-11 16:54:22",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add rzx007\u002FVykor --skill verification-before-completion",{"tool":47,"command":48},"bunx","bunx skills add rzx007\u002FVykor --skill verification-before-completion",{"tool":50,"command":51},"pnpm","pnpm dlx skills add rzx007\u002FVykor --skill verification-before-completion","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",true,[],[56,76,88,111,116,129],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":72,"publishedAt":24},"01M6RVYYTPGG9WWWV4QAY0YEY3","writing-skills","当创建新技能、编辑现有技能或在部署前验证技能是否有效时使用","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-skills\u002FSKILL.md",[62,67],{"categoryNo":63,"categoryName":64,"taxonomyType":65,"taxonomyTypeDesc":66},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[73,74,75],"writing skills","writing","documentation",{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":84,"publishedAt":24},"01M6RVYE486HE8NQ2M4G5DNG63","writing-plans","当你有规格说明或需求用于多步骤任务时使用，在动手写代码之前","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-plans\u002FSKILL.md",[82,83],{"categoryNo":63,"categoryName":64,"taxonomyType":65,"taxonomyTypeDesc":66},{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},[85,86,74,87,75],"plans","writing plans","planning",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":97,"publishedAt":24},"01M6RVY778PEDPWQ0DCM25QW3A","workflow-runner","在 Claude Code \u002F OpenClaw \u002F Cursor 中直接运行 agency-orchestrator YAML 工作流——无需 API key，使用当前会话的 LLM 作为执行引擎。当用户提供 .yaml 工作流文件或要求多角色协作完成任务时触发。","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fworkflow-runner\u002FSKILL.md",[94],{"categoryNo":95,"categoryName":96,"taxonomyType":65,"taxonomyTypeDesc":66},"01JBSEEDCAT000000000000023","Skill与智能体开发",[98,99,100,101,102,103,104,105,106,107,108,109,110],"workflow runner","runner","workflow","协作","文件","agency","orchestrator","cursor","api","execution","yaml","code","openclaw",{"skillNo":112,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":24},"01M6RVY4NR6RRPV174AB706A13","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverification-before-completion\u002FSKILL.md",[],[20,19,23,22,21],{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":24},"01M6RVY1ZQ6ADVCZGBS371HD88","using-superpowers","在开始任何对话时使用——确立如何查找和使用技能，要求在任何响应（包括澄清性问题）之前调用 Skill 工具","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fusing-superpowers\u002FSKILL.md",[],[123,124,125,126,127,128],"superpowers","using superpowers","对话","Meta","工具","getting-started",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":24},"01M6RVXJFEQ00P7XBQ8FBEKKJ2","using-git-worktrees","当需要开始与当前工作区隔离的功能开发，或在执行实现计划之前使用——通过原生工具或 git worktree 回退机制确保隔离工作区存在","https:\u002F\u002Fgithub.com\u002Frzx007\u002FVykor\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fusing-git-worktrees\u002FSKILL.md",[],[136,137,138,139,140,100,141,142,127],"using git worktrees","git","git worktrees","worktrees","Using git","worktree","git worktree"]