[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CF87X4G2SRNRRPFP76A64Y":3,"skill-same:01M6CF87X4G2SRNRRPFP76A64Y":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M6CF87X4G2SRNRRPFP76A64Y","shipping-changes",null,"End-to-end change-shipping closed loop for non-trivial work — research → proposal doc → phased guarded implementation → PR self-review → harden → merge. Use when taking a substantial change from idea to merged PR, when a task needs a written proposal before code, when implementing in reversible phases behind a guarded commit chain (assert + test + verify, all green before commit), or when self-reviewing your own PR. Complements automating-devops (which is the git\u002FCI\u002Frelease knowledge reference); this skill is the orchestration spine that sequences a change from zero to merged.","telagod\u002Fcode-abyss","telagod","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F39987513?v=4","01M6CF4EH93PP5CWH3J34Z66DP","01M6CF4EN6W4QFXK3PRE9W29X8",245,"MIT","https:\u002F\u002Fgithub.com\u002Ftelagod\u002Fcode-abyss\u002Fblob\u002Fmain\u002Fskills\u002Fshipping-changes\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"shipping changes","shipping","ci","devops","use","read","work","loop","knowledge","verify","ZeRO","review","code","pr","merge","commit","change","test","orchestration","research","2026-11-10 10:12:30",false,"---\nname: shipping-changes\nuser-invocable: false\ndescription: End-to-end change-shipping closed loop for non-trivial work — research → proposal doc → phased guarded implementation → PR self-review → harden → merge. Use when taking a substantial change from idea to merged PR, when a task needs a written proposal before code, when implementing in reversible phases behind a guarded commit chain (assert + test + verify, all green before commit), or when self-reviewing your own PR. Complements automating-devops (which is the git\u002FCI\u002Frelease knowledge reference); this skill is the orchestration spine that sequences a change from zero to merged.\nallowed-tools: Read\n---\n\n\u003C!-- safety-scan: ignore TOOLS_PRIVILEGED 知识型 skill，仅 Read；文中 git\u002Fgh\u002Fnpm 命令由 agent 自有工具执行，非本 skill 落盘运行 -->\n\n# 渡劫之链 · shipping-changes\n\n> 大改动不是一锤子。调研定题 → 提案对齐 → 分阶段守卫式推进 → PR 自审 → 补护栏 → 合并。每一关绿了才进下一关。\n\n## 何时使用\n\n| 场景 | 使用 | 理由 |\n|------|------|------|\n| 一个改动牵动多文件 \u002F 多模块 \u002F 公共路径 | ✅ | 回归面大，值得先提案再施工 |\n| 重构、架构调整、协议\u002F格式变更 | ✅ | 需要写实蓝图 + 字段映射对齐 |\n| 改动可拆成可独立 revert 的阶段 | ✅ | 守卫链分阶段，控爆炸半径 |\n| 自审自己的 PR | ✅ | 用挑刺视角找自己埋的雷 |\n\n## 何时不使用\n\n- ❌ 单文件、低风险、机械改动——直接改完跑测试即可，别套流程\n- ❌ 纯探索 \u002F 一次性查询——无交付物，不进闭环\n- ❌ 紧急止血(宕机\u002F事故)——走故障链「止血→定位→修复→验证→复盘」，不在此列\n\n## 七关闭环\n\n```\n关 0  调研定题   —— 摸清现状 + 业界最佳实践，定问题域(不臆造)\n关 1  提案文档   —— docs\u002F\u003Ctopic>.md：诊断 + 蓝图 + 字段映射 + 迁移路径 + 风险回滚\n关 2  对齐       —— 魔尊 review 提案；歧义\u002F破坏性\u002F高成本处停下确认\n关 3  分阶段实现 —— 每阶段单一关注点、可独立 revert；单点 PoC 绿了再横推\n关 4  守卫链提交 —— assert + test + verify 全绿才 commit；任一红即阻断，不提交\n关 5  PR 自审    —— 挑刺视角过 diff，把发现挂到 PR 上(含已知取舍)\n关 6  补护栏     —— 把自审揪出的隐患钉成测试，follow-up 推上分支\n收口  合并       —— 确认 mergeable + CI 全绿 → merge → 同步本地 main\n```\n\n## 核心铁律:守卫链提交(关 4)\n\n> 这是全链最值钱的一环——**绝不提交未验证的改动**。\n\n```bash\n# 守卫式链:前一步红，后续全部不执行(&& 短路),自然阻断提交\nnode \u002Ftmp\u002Fassert.js \\            # 自定义不变量断言(如:零宏泄漏、无跨配串味)\n  && npm test \\                  # 全量测试\n  && npm run verify:skills \\     # 项目专属闸门\n  && git add -A && git commit -F msg.txt \\\n  && git push -u origin \u003Cbranch>\n```\n\n- **任一关红 → 链断 → 不 commit**：脏改动永不入库。\n- **自定义 assert 优先于通用测试**：通用测试覆盖不到的领域不变量,自己写脚本断言(例:渲染产物零模板变量泄漏)。\n- **stamp 在链尾**:push \u002F PR 放最后,网络受阻不影响已验证的本地 commit。\n\n> ⚠ **反模式(血泪)**:别把 test 与 commit 塞进同一个 `{ ...; ... }` \u002F `;` 顺序块——块内命令各自独立执行,**test 红了 commit 照样跑**,守卫退化成「记录」而非「阻断」。必须用 `&&` 串成短路链,让前一关的非零退出码真正掐断后续。改了源,先想哪条旧断言要同步改,否则 test 必红。\n\n## 分阶段实现(关 3)\n\n| 原则 | 说明 |\n|------|------|\n| 单一关注点 | 一阶段只做一类改动(接线 \u002F 数据迁移 \u002F 新增层 \u002F 测试),便于 revert |\n| 向后兼容优先 | 新路径在旧产物缺省时退化为旧行为(byte-compat),降低回归风险 |\n| 单点 PoC + 低风险先行 | 先拿代表性目标开刀,纯增量\u002F行为等价的阶段先做;绿了再横推、再推中高风险阶段 |\n\n## 影响面检查(关 4.5)\n\n如果 `abyss` 可用（`command -v abyss`），提交前对每个修改过的函数跑影响面分析：\n\n```bash\nabyss impact \u003Cchanged-function> --json\n```\n\n- risk > 7：在 PR description 中标注「高影响变更」+ 列出影响面\n- uncovered paths > 0：在 PR description 中标注「需补测试」+ 列出未覆盖路径\n- 耦合文件未同步修改：提醒检查 `abyss map` 中的 coupling 对\n\n## PR 自审(关 5)\n\n挑刺视角,按等级分类挂到 PR:\n\n- ? **应在本 PR 或紧随处理**:缺护栏的回归风险、新行为无专属测试\n- ? **设计取舍(记录在案)**:与理想方案的有意偏差、宿主限制\n- ⚪ **可选打磨**:美观瑕疵、风格统一\n\n> 自审要诚实标注「已知不一致仍在」「为兼容做的妥协」,而非粉饰。误报要核实后澄清(例:扫描器把角色名当人称漏网)。\n\n## 收口\n\n- 每关都要落到:**结论 + 动作 + 验证 + 风险 + 下一步**。\n- 合并前确认:`mergeable=CLEAN` + CI 全绿;合并后同步本地 main,删远端分支。\n- 闭环留尾:未做的阶段(如更深的重构)记入提案文档的「余劫」,标为独立后续。\n\n参见 [automating-devops](..\u002Fautomating-devops\u002FSKILL.md)——git\u002FCI\u002Frelease 的知识底座;本 skill 只管「怎么把一个改动从零推到合并」的编排。\n","\u003C!-- safety-scan: ignore TOOLS_PRIVILEGED 知识型 skill，仅 Read；文中 git\u002Fgh\u002Fnpm 命令由 agent 自有工具执行，非本 skill 落盘运行 -->\n\n# 渡劫之链 · shipping-changes\n\n> 大改动不是一锤子。调研定题 → 提案对齐 → 分阶段守卫式推进 → PR 自审 → 补护栏 → 合并。每一关绿了才进下一关。\n\n## 何时使用\n\n| 场景 | 使用 | 理由 |\n|------|------|------|\n| 一个改动牵动多文件 \u002F 多模块 \u002F 公共路径 | ✅ | 回归面大，值得先提案再施工 |\n| 重构、架构调整、协议\u002F格式变更 | ✅ | 需要写实蓝图 + 字段映射对齐 |\n| 改动可拆成可独立 revert 的阶段 | ✅ | 守卫链分阶段，控爆炸半径 |\n| 自审自己的 PR | ✅ | 用挑刺视角找自己埋的雷 |\n\n## 何时不使用\n\n- ❌ 单文件、低风险、机械改动——直接改完跑测试即可，别套流程\n- ❌ 纯探索 \u002F 一次性查询——无交付物，不进闭环\n- ❌ 紧急止血(宕机\u002F事故)——走故障链「止血→定位→修复→验证→复盘」，不在此列\n\n## 七关闭环\n\n```\n关 0  调研定题   —— 摸清现状 + 业界最佳实践，定问题域(不臆造)\n关 1  提案文档   —— docs\u002F\u003Ctopic>.md：诊断 + 蓝图 + 字段映射 + 迁移路径 + 风险回滚\n关 2  对齐       —— 魔尊 review 提案；歧义\u002F破坏性\u002F高成本处停下确认\n关 3  分阶段实现 —— 每阶段单一关注点、可独立 revert；单点 PoC 绿了再横推\n关 4  守卫链提交 —— assert + test + verify 全绿才 commit；任一红即阻断，不提交\n关 5  PR 自审    —— 挑刺视角过 diff，把发现挂到 PR 上(含已知取舍)\n关 6  补护栏     —— 把自审揪出的隐患钉成测试，follow-up 推上分支\n收口  合并       —— 确认 mergeable + CI 全绿 → merge → 同步本地 main\n```\n\n## 核心铁律:守卫链提交(关 4)\n\n> 这是全链最值钱的一环——**绝不提交未验证的改动**。\n\n```bash\n# 守卫式链:前一步红，后续全部不执行(&& 短路),自然阻断提交\nnode \u002Ftmp\u002Fassert.js \\            # 自定义不变量断言(如:零宏泄漏、无跨配串味)\n  && npm test \\                  # 全量测试\n  && npm run verify:skills \\     # 项目专属闸门\n  && git add -A && git commit -F msg.txt \\\n  && git push -u origin \u003Cbranch>\n```\n\n- **任一关红 → 链断 → 不 commit**：脏改动永不入库。\n- **自定义 assert 优先于通用测试**：通用测试覆盖不到的领域不变量,自己写脚本断言(例:渲染产物零模板变量泄漏)。\n- **stamp 在链尾**:push \u002F PR 放最后,网络受阻不影响已验证的本地 commit。\n\n> ⚠ **反模式(血泪)**:别把 test 与 commit 塞进同一个 `{ ...; ... }` \u002F `;` 顺序块——块内命令各自独立执行,**test 红了 commit 照样跑**,守卫退化成「记录」而非「阻断」。必须用 `&&` 串成短路链,让前一关的非零退出码真正掐断后续。改了源,先想哪条旧断言要同步改,否则 test 必红。\n\n## 分阶段实现(关 3)\n\n| 原则 | 说明 |\n|------|------|\n| 单一关注点 | 一阶段只做一类改动(接线 \u002F 数据迁移 \u002F 新增层 \u002F 测试),便于 revert |\n| 向后兼容优先 | 新路径在旧产物缺省时退化为旧行为(byte-compat),降低回归风险 |\n| 单点 PoC + 低风险先行 | 先拿代表性目标开刀,纯增量\u002F行为等价的阶段先做;绿了再横推、再推中高风险阶段 |\n\n## 影响面检查(关 4.5)\n\n如果 `abyss` 可用（`command -v abyss`），提交前对每个修改过的函数跑影响面分析：\n\n```bash\nabyss impact \u003Cchanged-function> --json\n```\n\n- risk > 7：在 PR description 中标注「高影响变更」+ 列出影响面\n- uncovered paths > 0：在 PR description 中标注「需补测试」+ 列出未覆盖路径\n- 耦合文件未同步修改：提醒检查 `abyss map` 中的 coupling 对\n\n## PR 自审(关 5)\n\n挑刺视角,按等级分类挂到 PR:\n\n- ? **应在本 PR 或紧随处理**:缺护栏的回归风险、新行为无专属测试\n- ? **设计取舍(记录在案)**:与理想方案的有意偏差、宿主限制\n- ⚪ **可选打磨**:美观瑕疵、风格统一\n\n> 自审要诚实标注「已知不一致仍在」「为兼容做的妥协」,而非粉饰。误报要核实后澄清(例:扫描器把角色名当人称漏网)。\n\n## 收口\n\n- 每关都要落到:**结论 + 动作 + 验证 + 风险 + 下一步**。\n- 合并前确认:`mergeable=CLEAN` + CI 全绿;合并后同步本地 main,删远端分支。\n- 闭环留尾:未做的阶段(如更深的重构)记入提案文档的「余劫」,标为独立后续。\n\n参见 [automating-devops](..\u002Fautomating-devops\u002FSKILL.md)——git\u002FCI\u002Frelease 的知识底座;本 skill 只管「怎么把一个改动从零推到合并」的编排。\n",{"name":5,"description":7,"allowed-tools":53,"user-invocable":49},"Read","main","2544577cf03a67522466450000731e52c64a5184","skills\u002Fshipping-changes",35,"https:\u002F\u002Fgithub.com\u002Ftelagod\u002Fcode-abyss","https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fcode-abyss","https:\u002F\u002Fgithub.com\u002Ftelagod","2026-07-19 23:15:32",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add telagod\u002Fcode-abyss --skill shipping-changes",{"tool":68,"command":69},"bunx","bunx skills add telagod\u002Fcode-abyss --skill shipping-changes",{"tool":71,"command":72},"pnpm","pnpm dlx skills add telagod\u002Fcode-abyss --skill shipping-changes","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftelagod\u002Fcode-abyss\u002Fblob\u002Fmain\u002Fskills\u002Fshipping-changes\u002FSKILL.md",true,[],[77,84,92,99,110,122],{"skillNo":78,"name":79,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":48},"01M6CF94Y2R0JYCS270NC9BKM5","parse-error","https:\u002F\u002Fgithub.com\u002Ftelagod\u002Fcode-abyss\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fskill-contract\u002Fparse-error\u002Ftools\u002Fparse-error\u002FSKILL.md",[],[83],"parse error",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":48},"01M6CF925B128W5YAHWVYSJQTG","multi-script","too many scripts","https:\u002F\u002Fgithub.com\u002Ftelagod\u002Fcode-abyss\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fskill-contract\u002Fmulti-script\u002Ftools\u002Fmulti-script\u002FSKILL.md",[],[91],"multi script",{"skillNo":93,"name":94,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":48},"01M6CF8ZYT3KZ4ZZAATFJH0DV4","missing-description","https:\u002F\u002Fgithub.com\u002Ftelagod\u002Fcode-abyss\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fskill-contract\u002Fmissing-description\u002Ftools\u002Fmissing-description\u002FSKILL.md",[],[98],"missing description",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":48},"01M6CF8XB2Z8NAPYW3W7S7KW1S","invalid-tools","invalid tool name","https:\u002F\u002Fgithub.com\u002Ftelagod\u002Fcode-abyss\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fskill-contract\u002Finvalid-tools\u002Ftools\u002Finvalid-tools\u002FSKILL.md",[],[106,107,108,109],"Tools","invalid tools","Bash","tool",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":119,"publishedAt":48},"01M6CF8TTPYFV83HSF057F95QM","clash-skill","first duplicate","https:\u002F\u002Fgithub.com\u002Ftelagod\u002Fcode-abyss\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fskill-contract\u002Fduplicate\u002Ftools\u002Falpha\u002FSKILL.md",[116],{"categoryNo":117,"categoryName":118,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[120,121],"clash skill","first",{"skillNo":123,"name":112,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":128,"publishedAt":48},"01M6CF8RAHFEPXNB6SWBR2T49M","second duplicate","https:\u002F\u002Fgithub.com\u002Ftelagod\u002Fcode-abyss\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fskill-contract\u002Fduplicate\u002Fdomains\u002Falpha\u002FSKILL.md",[127],{"categoryNo":117,"categoryName":118,"taxonomyType":20,"taxonomyTypeDesc":21},[120]]