[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PF58E1BF4WRVXEGMMEXB2N":3,"skill-same:01M6PF58E1BF4WRVXEGMMEXB2N":72},{"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":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":41,"ownerDescription":42,"updatedAt":43,"install":44,"resources":57},"01M6PF58E1BF4WRVXEGMMEXB2N","devflow-ship",null,"在工作项全部任务完成、测试与代码评审闭环后收尾时使用：对照 Definition of Done 核验完成证据、把已确认的规格与设计沉淀为长期文档资产（promotion）、写 closeout 记录。不用于实现、评审或修复。","openJiuwen-ai\u002Fagent-core-java","openJiuwen-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F264091041?v=4","01M6PF3SW90T9MK2B9PHFDAE9C","openJiuwen","01M6PF3T0P2A1EYWG3JACQS3MQ",49,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Fdevflow-ship\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29],"ship","devflow","devflow ship","testing","design","definition of done","文档","closeout","done","promotion","definition","2026-11-10 10:12:30",false,"---\nname: devflow-ship\ndescription: 在工作项全部任务完成、测试与代码评审闭环后收尾时使用：对照 Definition of Done 核验完成证据、把已确认的规格与设计沉淀为长期文档资产（promotion）、写 closeout 记录。不用于实现、评审或修复。\n---\n\n# DevFlow 收尾（Ship）\n\n## 总览\n\n收尾回答两个问题：**这个工作项真的可以关闭吗？关闭之后给仓库留下什么？**\n\n对应两个动作，缺一不可：\n\n1. **完成核验**：对照 Definition of Done 逐项检查证据。\"评审通过了\"不等于\"可以关闭\"——DoD 是人在最后把关时的固定核验清单，防止靠印象关单。\n2. **资产沉淀（promotion）**：把组件根下 `features\u002F\u003Cid>\u002F`（或团队覆盖路径）里已确认的规格与设计按原模板结构沉淀为同一组件根下的长期文档。promotion 不是重新创作交付件；原 spec \u002F design \u002F component-design 模板中的正文、章节、表格和锚点默认保留，只做最小清理。过程工件是给本次开发用的；长期资产是给下一个工作项、下一个人、下一轮 AI 用的。不做 promotion，工件就停在 features\u002F 里腐烂，组件设计基线逐渐失真。\n\n收尾不修代码、不补测试：核验发现缺口 → 回对应阶段补，补完再回来。\n\n## 工作流\n\n### 1. DoD 核验\n\n对照 `references\u002Fdefinition-of-done.md` 逐项检查，每项写结论（满足 \u002F 缺口 + 去向）。任一项不满足：\n\n| 缺口 | 回到 |\n|---|---|\n| 需求条目无对应通过测试 \u002F 验收标准未覆盖 | `devflow-tdd` |\n| reviews\u002F 缺某个门禁的评审记录，或 findings 的 Resolution 列有空缺 | 补评审（`devflow-review`）或按 findings 返工并回写 resolution |\n| plan.md 门禁状态表与 reviews\u002F 实际记录不一致 | 修正门禁表；状态造假按 critical 处理 |\n| 实现与 design.md \u002F 组件设计漂移 | `devflow-design`（改工件）或 `devflow-tdd`（改代码） |\n| 证据缺失或过期（RED\u002FGREEN 证据行、静态分析） | `devflow-tdd` 补真实证据，不补叙述 |\n\n### 2. 追溯终验\n\n通读同一组件根\u002F工件根下 `features\u002F\u003Cid>\u002Ftraceability.md`（或团队覆盖路径）：每条需求 → 设计章节 → 测试用例 → 代码\u002F测试文件 → 证据的链路闭合；`N\u002FA` 项有理由。断链 = spec-design-code 不一致的直接信号，按 critical 处理。\n\n### 3. Promotion\n\n按 `references\u002Fpromotion-checklist.md` 同步长期资产：\n\n| 过程工件 | 长期资产 | 条件 |\n|---|---|---|\n| `spec.md` | 组件根下 `docs\u002Far-specs\u002F\u003Cid>-\u003Cslug>.md`（或团队覆盖路径） | AR\u002FCHANGE 工作项必做；纯缺陷（无规格变更）N\u002FA |\n| `design.md` | 组件根下 `docs\u002Far-designs\u002F\u003Cid>-\u003Cslug>.md`（或团队覆盖路径） | 有正式设计的工作项必做 |\n| `component-design-draft.md` | 组件根下 `docs\u002Fcomponent-design.md`（或团队覆盖路径） | 本工作项修订了组件设计时必做（模块架构师确认后） |\n\npromotion 是**保留模板的最小清理**，不是重新改写：原 spec \u002F design \u002F component-design 模板中的已确认内容都应作为交付件保留，只去掉 Open Questions、过程笔记、评审应答这类不属于长期资产的过程内容；保留追溯锚点（ID、来源、测试设计用例、评审记录路径）。若长期文档已有变更记录表，追加本次修订（日期、触发工作项、摘要）；若原模板没有，不为统一格式强行重写全文。组件设计只更新受影响章节，不顺手重排其他章节。\n\n### 4. Closeout 记录\n\n写同一组件根\u002F工件根下 `features\u002F\u003Cid>\u002Fcloseout.md`（或团队覆盖路径，一页内）：DoD 核验结果摘要、promotion 路径表（同步了什么 \u002F N\u002FA 及理由）、遗留债务清单（带去向：新工作项 \u002F 登记的 issue）、复盘一句话（本次流程哪里最磨损，反哺 skill 或模板）。\n\n### 5. 人确认关闭\n\n把 closeout 呈给人。人确认后工作项关闭；组件根下 `features\u002F\u003Cid>\u002F`（或团队覆盖路径）原地保留（不移动、不删除），保证追溯链接长期有效。\n\n## 风险信号\n\n- 跳过 DoD 直接写 closeout（\"评审都过了肯定没问题\"）\n- promotion 过度改写原模板正文、重排章节或压缩表格，导致长期交付件丢失规格 \u002F 设计模板内容\n- promotion 把过程内容原样带入长期文档（Open Questions、过程笔记、评审应答）\n- 只 promote 设计不 promote 规格，或修订了组件边界却没同步 `docs\u002Fcomponent-design.md`\n- 遗留债务写\"后续优化\"却没有去向（没有新工作项、没有登记）\n- 把\"补证据\"做成\"补叙述\"——证据必须是真实命令输出与锚点\n\n## 自检清单\n\n- [ ] DoD 逐项有结论；缺口已返工闭环而不是被解释掉\n- [ ] traceability 链路闭合；N\u002FA 有理由\n- [ ] 应 promote 的资产已保留原模板主体并完成最小清理；必要的变更记录已追加\n- [ ] closeout.md 落盘：核验摘要、promotion 表、债务去向、复盘\n- [ ] 人已确认关闭；features\u002F 目录原地保留\n\n## 支撑参考\n\n| 文件 | 用途 |\n|---|---|\n| `references\u002Fdefinition-of-done.md` | Definition of Done 核验清单 |\n| `references\u002Fpromotion-checklist.md` | 长期资产同步对象与最小清理规则 |\n","# DevFlow 收尾（Ship）\n\n## 总览\n\n收尾回答两个问题：**这个工作项真的可以关闭吗？关闭之后给仓库留下什么？**\n\n对应两个动作，缺一不可：\n\n1. **完成核验**：对照 Definition of Done 逐项检查证据。\"评审通过了\"不等于\"可以关闭\"——DoD 是人在最后把关时的固定核验清单，防止靠印象关单。\n2. **资产沉淀（promotion）**：把组件根下 `features\u002F\u003Cid>\u002F`（或团队覆盖路径）里已确认的规格与设计按原模板结构沉淀为同一组件根下的长期文档。promotion 不是重新创作交付件；原 spec \u002F design \u002F component-design 模板中的正文、章节、表格和锚点默认保留，只做最小清理。过程工件是给本次开发用的；长期资产是给下一个工作项、下一个人、下一轮 AI 用的。不做 promotion，工件就停在 features\u002F 里腐烂，组件设计基线逐渐失真。\n\n收尾不修代码、不补测试：核验发现缺口 → 回对应阶段补，补完再回来。\n\n## 工作流\n\n### 1. DoD 核验\n\n对照 `references\u002Fdefinition-of-done.md` 逐项检查，每项写结论（满足 \u002F 缺口 + 去向）。任一项不满足：\n\n| 缺口 | 回到 |\n|---|---|\n| 需求条目无对应通过测试 \u002F 验收标准未覆盖 | `devflow-tdd` |\n| reviews\u002F 缺某个门禁的评审记录，或 findings 的 Resolution 列有空缺 | 补评审（`devflow-review`）或按 findings 返工并回写 resolution |\n| plan.md 门禁状态表与 reviews\u002F 实际记录不一致 | 修正门禁表；状态造假按 critical 处理 |\n| 实现与 design.md \u002F 组件设计漂移 | `devflow-design`（改工件）或 `devflow-tdd`（改代码） |\n| 证据缺失或过期（RED\u002FGREEN 证据行、静态分析） | `devflow-tdd` 补真实证据，不补叙述 |\n\n### 2. 追溯终验\n\n通读同一组件根\u002F工件根下 `features\u002F\u003Cid>\u002Ftraceability.md`（或团队覆盖路径）：每条需求 → 设计章节 → 测试用例 → 代码\u002F测试文件 → 证据的链路闭合；`N\u002FA` 项有理由。断链 = spec-design-code 不一致的直接信号，按 critical 处理。\n\n### 3. Promotion\n\n按 `references\u002Fpromotion-checklist.md` 同步长期资产：\n\n| 过程工件 | 长期资产 | 条件 |\n|---|---|---|\n| `spec.md` | 组件根下 `docs\u002Far-specs\u002F\u003Cid>-\u003Cslug>.md`（或团队覆盖路径） | AR\u002FCHANGE 工作项必做；纯缺陷（无规格变更）N\u002FA |\n| `design.md` | 组件根下 `docs\u002Far-designs\u002F\u003Cid>-\u003Cslug>.md`（或团队覆盖路径） | 有正式设计的工作项必做 |\n| `component-design-draft.md` | 组件根下 `docs\u002Fcomponent-design.md`（或团队覆盖路径） | 本工作项修订了组件设计时必做（模块架构师确认后） |\n\npromotion 是**保留模板的最小清理**，不是重新改写：原 spec \u002F design \u002F component-design 模板中的已确认内容都应作为交付件保留，只去掉 Open Questions、过程笔记、评审应答这类不属于长期资产的过程内容；保留追溯锚点（ID、来源、测试设计用例、评审记录路径）。若长期文档已有变更记录表，追加本次修订（日期、触发工作项、摘要）；若原模板没有，不为统一格式强行重写全文。组件设计只更新受影响章节，不顺手重排其他章节。\n\n### 4. Closeout 记录\n\n写同一组件根\u002F工件根下 `features\u002F\u003Cid>\u002Fcloseout.md`（或团队覆盖路径，一页内）：DoD 核验结果摘要、promotion 路径表（同步了什么 \u002F N\u002FA 及理由）、遗留债务清单（带去向：新工作项 \u002F 登记的 issue）、复盘一句话（本次流程哪里最磨损，反哺 skill 或模板）。\n\n### 5. 人确认关闭\n\n把 closeout 呈给人。人确认后工作项关闭；组件根下 `features\u002F\u003Cid>\u002F`（或团队覆盖路径）原地保留（不移动、不删除），保证追溯链接长期有效。\n\n## 风险信号\n\n- 跳过 DoD 直接写 closeout（\"评审都过了肯定没问题\"）\n- promotion 过度改写原模板正文、重排章节或压缩表格，导致长期交付件丢失规格 \u002F 设计模板内容\n- promotion 把过程内容原样带入长期文档（Open Questions、过程笔记、评审应答）\n- 只 promote 设计不 promote 规格，或修订了组件边界却没同步 `docs\u002Fcomponent-design.md`\n- 遗留债务写\"后续优化\"却没有去向（没有新工作项、没有登记）\n- 把\"补证据\"做成\"补叙述\"——证据必须是真实命令输出与锚点\n\n## 自检清单\n\n- [ ] DoD 逐项有结论；缺口已返工闭环而不是被解释掉\n- [ ] traceability 链路闭合；N\u002FA 有理由\n- [ ] 应 promote 的资产已保留原模板主体并完成最小清理；必要的变更记录已追加\n- [ ] closeout.md 落盘：核验摘要、promotion 表、债务去向、复盘\n- [ ] 人已确认关闭；features\u002F 目录原地保留\n\n## 支撑参考\n\n| 文件 | 用途 |\n|---|---|\n| `references\u002Fdefinition-of-done.md` | Definition of Done 核验清单 |\n| `references\u002Fpromotion-checklist.md` | 长期资产同步对象与最小清理规则 |\n",{"name":5,"description":7},"develop","dfece20d51f9b476b87c7fc08dbba71857e1fe17",".claude\u002Fskills\u002Fdevflow-ship",10,"https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java","https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai","https:\u002F\u002Fwww.openjiuwen.com","openJiuwen is an open-source community dedicated to building a production-ready AI Agent platform.","2026-11-14 13:15:45",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add openJiuwen-ai\u002Fagent-core-java --skill devflow-ship",{"tool":50,"command":51},"bunx","bunx skills add openJiuwen-ai\u002Fagent-core-java --skill devflow-ship",{"tool":53,"command":54},"pnpm","pnpm dlx skills add openJiuwen-ai\u002Fagent-core-java --skill devflow-ship","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Fdevflow-ship\u002FSKILL.md",true,[58,64,68],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"evals\u002Fevals.json","REFERENCE","参考文档",3098,"https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Fdevflow-ship\u002Fevals\u002Fevals.json",{"path":65,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":66,"sourceHtmlUrl":67},"references\u002Fdefinition-of-done.md",3093,"https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Fdevflow-ship\u002Freferences\u002Fdefinition-of-done.md",{"path":69,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Fpromotion-checklist.md",3217,"https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Fdevflow-ship\u002Freferences\u002Fpromotion-checklist.md",[73,97,108,119,128,137],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":84,"publishedAt":30},"01M6PFBS67R67YZW9V80AHK266","web_research","Search public information and summarize sources with the search tool.","https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002Fexamples\u002Ftoolgroup\u002Fskills\u002Fweb_research\u002FSKILL.md",[79],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[85,86,87,88,89,90,91,92,93,94,95,96],"web research","research","web","with","information","sources","false","public","tool","examples","search","summarize",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":106,"publishedAt":30},"01M6PFBNC6CP2CVQE6QPJBZCT3","skill_a","Modified Skill A","https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002Fexamples\u002Fskill_hot_reload\u002Fskills\u002Fskill_a\u002FSKILL.md",[103],{"categoryNo":104,"categoryName":105,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000023","Skill与智能体开发",[107],"skill a",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":115,"publishedAt":30},"01M6PFBHGDK865W5KFD9XC2XPB","skill_30","Skill 30 for hot-reload demo","https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002Fexamples\u002Fskill_hot_reload\u002Fskills\u002Fskill_30\u002FSKILL.md",[114],{"categoryNo":104,"categoryName":105,"taxonomyType":82,"taxonomyTypeDesc":83},[116,117,118],"skill 30","for","demo",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":30},"01M6PFBDBR8BK7Z2N8XR0WV2P2","skill_29","Skill 29 for hot-reload demo","https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002Fexamples\u002Fskill_hot_reload\u002Fskills\u002Fskill_29\u002FSKILL.md",[125],{"categoryNo":104,"categoryName":105,"taxonomyType":82,"taxonomyTypeDesc":83},[127,117,118],"skill 29",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":135,"publishedAt":30},"01M6PFB9H4ND4RVTPBVC32CPZZ","skill_28","Skill 28 for hot-reload demo","https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002Fexamples\u002Fskill_hot_reload\u002Fskills\u002Fskill_28\u002FSKILL.md",[134],{"categoryNo":104,"categoryName":105,"taxonomyType":82,"taxonomyTypeDesc":83},[136,117,118],"skill 28",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":144,"publishedAt":30},"01M6PFB5FR4ACYQ2NCGJ51NSJT","skill_27","Skill 27 for hot-reload demo","https:\u002F\u002Fgithub.com\u002FopenJiuwen-ai\u002Fagent-core-java\u002Fblob\u002Fdevelop\u002Fexamples\u002Fskill_hot_reload\u002Fskills\u002Fskill_27\u002FSKILL.md",[143],{"categoryNo":104,"categoryName":105,"taxonomyType":82,"taxonomyTypeDesc":83},[145,118,117],"skill 27"]