[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6RTSEX8VAMKNV3PYC3TCX05":3,"skill-same:01M6RTSEX8VAMKNV3PYC3TCX05":289},{"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":23,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":45,"commitSha":46,"skillDirectory":5,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6RTSEX8VAMKNV3PYC3TCX05","opsx-dev-pipeline",null,"OpenSpec + Git 需求开发全流程。","ZhaoYis\u002FMy-Skills","ZhaoYis","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F22954818?v=4","01M6RTMA12BZDGXFDESDB627H0","大師兄丶","01M6RTMA5H8NVC8J3KZPJQF4GP",2,"MIT","https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35],"dev","pipeline","dev pipeline","opsx dev pipeline","cli","config","git","yaml","cursor","schema","openspec","git cli","2026-11-10 10:12:30",false,"---\nname: opsx-dev-pipeline\ndescription: OpenSpec + Git 需求开发全流程。  \nlicense: MIT  \ncompatibility: 需安装 openspec 与 git CLI；建议在 Cursor 中配合 AskQuestion。默认兼容 OpenSpec 默认 schema，并优先支持 `openspec\u002Fconfig.yaml` 中声明的自定义 schema。  \nmetadata:  \n  author: zhaoyi  \n  version: \"2.2\"\n---\n\n# 需求开发全流程流水线\n\n**重要：** 所有输出使用中文。\n\n## Input\n\n用户的需求描述，或一个已有的 change 名称。\n\n## 最小执行约束摘要\n\n- 用户以文本补充需求澄清、提案修改或实施\u002F审查\u002F归档\u002F提交相关说明后，必须在同一回复中同步当前 **Phase \u002F change \u002F 下一动作**，并推进到下一个步骤或决策点。\n- 除用户在决策点明确选择「终止流程」或「暂停流水线」外，不得单方结束全流程；如必须结束，须先说明原因并征得同意。\n- 高风险决策必须显式确认；推荐项不等于自动代选。\n- AskQuestion **首选**用于决策点；若不可用则使用与对应 Phase 文案一致的编号选项。\n- 详细的 guardrails、恢复规则、AskQuestion fallback、Error Handling 与决策自动化分级，以 `assets\u002Frecovery-guardrails-appendix.md` 为准。\n\n## 阅读顺序（精简版）\n\n1. 先阅读本页的 **最小执行约束摘要** 与 **Phase 引用表**\n2. 再进入当前所处 Phase 的 `references\u002Fphase-*.md`\n3. 遇到跨阶段规则、恢复、降级、决策自动化分级时，统一查阅 `assets\u002Frecovery-guardrails-appendix.md`\n4. 维护 skill 本身时，先看 `assets\u002Fmaintenance-index.md`\n\n## Phase 引用表\n\n按下表顺序阅读并遵循各 Phase 文件中的步骤与决策点：\n\n| Phase | 说明 | 引用文件 |\n| ----- | ---- | -------- |\n| 0 | 入口判断 | `references\u002Fphase-0-entrance.md` |\n| 1 | 提案编写 (Propose) | `references\u002Fphase-1-propose.md` |\n| 2 | 提案应用 (Apply) | `references\u002Fphase-2-apply.md` |\n| 3 | 代码审查 (Review) | `references\u002Fphase-3-review.md`；「生成修复提案并应用」见 `references\u002Fphase-3.1-fix-review.md` |\n| 4 | 提案归档 (Archive) | `references\u002Fphase-4-archive.md` |\n| 5 | 审查后单元测试门禁 | `references\u002Fphase-5-unit-tests.md` |\n| 6 | 提交合并推送 (Merge & Push) | `references\u002Fphase-6-merge-push.md` |\n| — | 中断恢复、护栏、错误处理、决策点总览 | `assets\u002Frecovery-guardrails-appendix.md` |\n\n## 权威来源地图\n\n- **Phase 执行正文**：`references\u002Fphase-*.md`\n- **跨阶段规则 \u002F 恢复 \u002F 降级 \u002F Error Handling \u002F 决策自动化分级**：`assets\u002Frecovery-guardrails-appendix.md`\n- **决策点导航索引**：`assets\u002Fdecision-point-index.md`\n- **失败恢复导航索引**：`assets\u002Ffailure-recovery-index.md`\n- **schema-aware 差异专题**：`assets\u002Fschema-adapter-summary.md`\n- **脚本 I\u002FO 契约**：`assets\u002Fscript-io-conventions.md`\n- **维护影响矩阵与联动检查**：`assets\u002Fmaintenance-index.md`\n\n## 执行说明\n\n- **阅读顺序**：本页只负责入口、导航与最小约束；具体执行步骤与命令以各 `references\u002Fphase-*.md` 为准。\n- **代码规范**：凡涉及编写或修改实现\u002F测试代码的 Phase，均以目标仓库的项目基准（默认 `openspec\u002Fconfig.yaml` → `AGENTS.md` → `CLAUDE.md`；自定义 schema 时优先结合 `openspec\u002Fconfig.yaml` 中的 schema 上下文）及既有代码与单测风格为准。详见 `references\u002Fphase-2-apply.md` 与 `assets\u002Frecovery-guardrails-appendix.md` **§2.5**。\n- **进度跟踪**：Phase 1 等多制品阶段推荐使用 **TaskCreate \u002F TaskUpdate \u002F TaskList** 跟踪制品与任务进度。\n- **用户提示格式**：进入新 Phase、从暂停点恢复或用户补充自由文本后，优先使用 `Phase \u002F change \u002F 当前步骤 \u002F 已知状态 \u002F 下一动作` 的短格式，模板见附录 **§1.1–1.2**。\n- **维护入口**：维护 `SKILL.md`、`references\u002F`、`scripts\u002F` 与 `assets\u002F` 的联动关系时，先看 `assets\u002Fmaintenance-index.md`。\n\n## 流程概览（Mermaid）\n\n**说明**：下图仅示意主干顺序；图中 **Phase N** 为方便阅读的阶段昵称，**不是** `openspec` 子命令名，也不一定对应某个脚本文件名。完整步骤、命令、决策点与例外路径以 `references\u002Fphase-*.md` 与 `assets\u002Frecovery-guardrails-appendix.md` 为准。\n\n```mermaid\nflowchart TD\n  START([\"开始\"]) --> OPEN{\"openspec CLI 可用?\"}\n  OPEN -->|否| PROMPT[\"提示安装 openspec\"]\n  PROMPT --> ENDNODE([\"结束\"])\n  OPEN -->|是| GIT{\"在 git 仓库内?\"}\n  GIT -->|否| GIT_WARN[\"提示 git init 或进入仓库\"]\n  GIT_WARN --> ENDNODE\n  GIT -->|是| P0[\"Phase 0 入口 → 需求 \u002F 已有 change \u002F 无输入\"]\n  P0 -->|终止| ENDNODE\n  P0 -->|需求描述·新建| P1[\"Phase 1：提案与制品\"]\n  P0 -->|已有 change·续接 Phase 1| P1\n  P0 -->|已有 change·续接 Phase 2| APPLY\n  P0 -->|已有 change·续接 Phase 3| REVIEW\n  P0 -->|已有 change·续接 Phase 4| ARCHIVE\n  P0 -->|已有 change·续接 Phase 5\u002F6| UT\n  P1 --> ALIGN{\"决策点 1 → 提案与原始需求一致?\"}\n  ALIGN -->|确认·开始实施| APPLY[\"Phase 2：按提案实施 Apply\"]\n  ALIGN -->|补充\u002F修改·对话澄清| P1\n  APPLY --> D2{\"Phase 2 决策点 2\"}\n  D2 -->|进入代码审查| REVIEW[\"Phase 3：代码审查\"]\n  D2 -->|跳过审查·先过单测门禁| UT[\"Phase 5：单测门禁 · 决策点 4b\"]\n  D2 -->|暂停\u002F终止| ENDNODE\n  REVIEW --> R3[\"决策点 3 → 单测 \u002F 修复回路 \u002F 暂停\"]\n  R3 -->|修复回路未结束| REVIEW\n  R3 -->|进入单元测试| UT\n  UT --> ARCHIVE[\"Phase 4：归档 Archive\"]\n  ARCHIVE --> D4{\"Phase 4 决策点 4\"}\n  D4 -->|终止流程| ENDNODE\n  D4 -->|仅提交并推送| P6PRE[\"Phase 6：步骤 17–18 预提交与提交\"]\n  D4 -->|提交代码并合并| P6PRE\n  P6PRE --> P6PUSH[\"Phase 6：步骤 19 推送\"]\n  P6PUSH --> MERGECHK{\"决策点 4 是否选了合并?\"}\n  MERGECHK -->|否| ENDNODE\n  MERGECHK -->|是| MERGE[\"决策点 6（步骤 20）：合并分支\"]\n  MERGE --> ENDNODE\n```\n","# 需求开发全流程流水线\n\n**重要：** 所有输出使用中文。\n\n## Input\n\n用户的需求描述，或一个已有的 change 名称。\n\n## 最小执行约束摘要\n\n- 用户以文本补充需求澄清、提案修改或实施\u002F审查\u002F归档\u002F提交相关说明后，必须在同一回复中同步当前 **Phase \u002F change \u002F 下一动作**，并推进到下一个步骤或决策点。\n- 除用户在决策点明确选择「终止流程」或「暂停流水线」外，不得单方结束全流程；如必须结束，须先说明原因并征得同意。\n- 高风险决策必须显式确认；推荐项不等于自动代选。\n- AskQuestion **首选**用于决策点；若不可用则使用与对应 Phase 文案一致的编号选项。\n- 详细的 guardrails、恢复规则、AskQuestion fallback、Error Handling 与决策自动化分级，以 `assets\u002Frecovery-guardrails-appendix.md` 为准。\n\n## 阅读顺序（精简版）\n\n1. 先阅读本页的 **最小执行约束摘要** 与 **Phase 引用表**\n2. 再进入当前所处 Phase 的 `references\u002Fphase-*.md`\n3. 遇到跨阶段规则、恢复、降级、决策自动化分级时，统一查阅 `assets\u002Frecovery-guardrails-appendix.md`\n4. 维护 skill 本身时，先看 `assets\u002Fmaintenance-index.md`\n\n## Phase 引用表\n\n按下表顺序阅读并遵循各 Phase 文件中的步骤与决策点：\n\n| Phase | 说明 | 引用文件 |\n| ----- | ---- | -------- |\n| 0 | 入口判断 | `references\u002Fphase-0-entrance.md` |\n| 1 | 提案编写 (Propose) | `references\u002Fphase-1-propose.md` |\n| 2 | 提案应用 (Apply) | `references\u002Fphase-2-apply.md` |\n| 3 | 代码审查 (Review) | `references\u002Fphase-3-review.md`；「生成修复提案并应用」见 `references\u002Fphase-3.1-fix-review.md` |\n| 4 | 提案归档 (Archive) | `references\u002Fphase-4-archive.md` |\n| 5 | 审查后单元测试门禁 | `references\u002Fphase-5-unit-tests.md` |\n| 6 | 提交合并推送 (Merge & Push) | `references\u002Fphase-6-merge-push.md` |\n| — | 中断恢复、护栏、错误处理、决策点总览 | `assets\u002Frecovery-guardrails-appendix.md` |\n\n## 权威来源地图\n\n- **Phase 执行正文**：`references\u002Fphase-*.md`\n- **跨阶段规则 \u002F 恢复 \u002F 降级 \u002F Error Handling \u002F 决策自动化分级**：`assets\u002Frecovery-guardrails-appendix.md`\n- **决策点导航索引**：`assets\u002Fdecision-point-index.md`\n- **失败恢复导航索引**：`assets\u002Ffailure-recovery-index.md`\n- **schema-aware 差异专题**：`assets\u002Fschema-adapter-summary.md`\n- **脚本 I\u002FO 契约**：`assets\u002Fscript-io-conventions.md`\n- **维护影响矩阵与联动检查**：`assets\u002Fmaintenance-index.md`\n\n## 执行说明\n\n- **阅读顺序**：本页只负责入口、导航与最小约束；具体执行步骤与命令以各 `references\u002Fphase-*.md` 为准。\n- **代码规范**：凡涉及编写或修改实现\u002F测试代码的 Phase，均以目标仓库的项目基准（默认 `openspec\u002Fconfig.yaml` → `AGENTS.md` → `CLAUDE.md`；自定义 schema 时优先结合 `openspec\u002Fconfig.yaml` 中的 schema 上下文）及既有代码与单测风格为准。详见 `references\u002Fphase-2-apply.md` 与 `assets\u002Frecovery-guardrails-appendix.md` **§2.5**。\n- **进度跟踪**：Phase 1 等多制品阶段推荐使用 **TaskCreate \u002F TaskUpdate \u002F TaskList** 跟踪制品与任务进度。\n- **用户提示格式**：进入新 Phase、从暂停点恢复或用户补充自由文本后，优先使用 `Phase \u002F change \u002F 当前步骤 \u002F 已知状态 \u002F 下一动作` 的短格式，模板见附录 **§1.1–1.2**。\n- **维护入口**：维护 `SKILL.md`、`references\u002F`、`scripts\u002F` 与 `assets\u002F` 的联动关系时，先看 `assets\u002Fmaintenance-index.md`。\n\n## 流程概览（Mermaid）\n\n**说明**：下图仅示意主干顺序；图中 **Phase N** 为方便阅读的阶段昵称，**不是** `openspec` 子命令名，也不一定对应某个脚本文件名。完整步骤、命令、决策点与例外路径以 `references\u002Fphase-*.md` 与 `assets\u002Frecovery-guardrails-appendix.md` 为准。\n\n```mermaid\nflowchart TD\n  START([\"开始\"]) --> OPEN{\"openspec CLI 可用?\"}\n  OPEN -->|否| PROMPT[\"提示安装 openspec\"]\n  PROMPT --> ENDNODE([\"结束\"])\n  OPEN -->|是| GIT{\"在 git 仓库内?\"}\n  GIT -->|否| GIT_WARN[\"提示 git init 或进入仓库\"]\n  GIT_WARN --> ENDNODE\n  GIT -->|是| P0[\"Phase 0 入口 → 需求 \u002F 已有 change \u002F 无输入\"]\n  P0 -->|终止| ENDNODE\n  P0 -->|需求描述·新建| P1[\"Phase 1：提案与制品\"]\n  P0 -->|已有 change·续接 Phase 1| P1\n  P0 -->|已有 change·续接 Phase 2| APPLY\n  P0 -->|已有 change·续接 Phase 3| REVIEW\n  P0 -->|已有 change·续接 Phase 4| ARCHIVE\n  P0 -->|已有 change·续接 Phase 5\u002F6| UT\n  P1 --> ALIGN{\"决策点 1 → 提案与原始需求一致?\"}\n  ALIGN -->|确认·开始实施| APPLY[\"Phase 2：按提案实施 Apply\"]\n  ALIGN -->|补充\u002F修改·对话澄清| P1\n  APPLY --> D2{\"Phase 2 决策点 2\"}\n  D2 -->|进入代码审查| REVIEW[\"Phase 3：代码审查\"]\n  D2 -->|跳过审查·先过单测门禁| UT[\"Phase 5：单测门禁 · 决策点 4b\"]\n  D2 -->|暂停\u002F终止| ENDNODE\n  REVIEW --> R3[\"决策点 3 → 单测 \u002F 修复回路 \u002F 暂停\"]\n  R3 -->|修复回路未结束| REVIEW\n  R3 -->|进入单元测试| UT\n  UT --> ARCHIVE[\"Phase 4：归档 Archive\"]\n  ARCHIVE --> D4{\"Phase 4 决策点 4\"}\n  D4 -->|终止流程| ENDNODE\n  D4 -->|仅提交并推送| P6PRE[\"Phase 6：步骤 17–18 预提交与提交\"]\n  D4 -->|提交代码并合并| P6PRE\n  P6PRE --> P6PUSH[\"Phase 6：步骤 19 推送\"]\n  P6PUSH --> MERGECHK{\"决策点 4 是否选了合并?\"}\n  MERGECHK -->|否| ENDNODE\n  MERGECHK -->|是| MERGE[\"决策点 6（步骤 20）：合并分支\"]\n  MERGE --> ENDNODE\n```\n",{"name":5,"license":15,"metadata":41,"description":7,"compatibility":44},{"author":42,"version":43},"zhaoyi","2.2","需安装 openspec 与 git CLI；建议在 Cursor 中配合 AskQuestion。默认兼容 OpenSpec 默认 schema，并优先支持 `openspec\u002Fconfig.yaml` 中声明的自定义 schema。","main","f1f3386d8df37cca07033d73addfae1eb9968c30",0,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills","https:\u002F\u002Fopsx.dsx.plus","https:\u002F\u002Fgithub.com\u002FZhaoYis","http:\u002F\u002Fwww.cnblogs.com\u002Fzhao-yi","2026-10-08 22:53:14",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add ZhaoYis\u002FMy-Skills --skill opsx-dev-pipeline",{"tool":59,"command":60},"bunx","bunx skills add ZhaoYis\u002FMy-Skills --skill opsx-dev-pipeline",{"tool":62,"command":63},"pnpm","pnpm dlx skills add ZhaoYis\u002FMy-Skills --skill opsx-dev-pipeline","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002FSKILL.md",true,[67,72,76,80,84,88,92,96,101,107,111,115,119,123,127,131,135,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257,261,265,269,273,277,281,285],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":47,"sourceHtmlUrl":71},"assets\u002F.gitkeep","ASSET","资产文件","https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fassets\u002F.gitkeep",{"path":73,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":74,"sourceHtmlUrl":75},"assets\u002Fdecision-point-index.md",6400,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fassets\u002Fdecision-point-index.md",{"path":77,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":78,"sourceHtmlUrl":79},"assets\u002Ffailure-recovery-index.md",8267,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fassets\u002Ffailure-recovery-index.md",{"path":81,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":82,"sourceHtmlUrl":83},"assets\u002Fmaintenance-index.md",14169,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fassets\u002Fmaintenance-index.md",{"path":85,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":86,"sourceHtmlUrl":87},"assets\u002Frecovery-guardrails-appendix.md",20624,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fassets\u002Frecovery-guardrails-appendix.md",{"path":89,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":90,"sourceHtmlUrl":91},"assets\u002Fschema-adapter-summary.md",7074,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fassets\u002Fschema-adapter-summary.md",{"path":93,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":94,"sourceHtmlUrl":95},"assets\u002Fscript-io-conventions.md",6074,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fassets\u002Fscript-io-conventions.md",{"path":97,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":47,"sourceHtmlUrl":100},"docs\u002F.gitkeep","OTHER","其他","https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fdocs\u002F.gitkeep",{"path":102,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fphase-0-entrance.md","REFERENCE","参考文档",5323,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Freferences\u002Fphase-0-entrance.md",{"path":108,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Fphase-1-propose.md",5264,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Freferences\u002Fphase-1-propose.md",{"path":112,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":113,"sourceHtmlUrl":114},"references\u002Fphase-2-apply.md",4544,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Freferences\u002Fphase-2-apply.md",{"path":116,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":117,"sourceHtmlUrl":118},"references\u002Fphase-3-review.md",7876,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Freferences\u002Fphase-3-review.md",{"path":120,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":121,"sourceHtmlUrl":122},"references\u002Fphase-3.1-fix-review.md",4220,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Freferences\u002Fphase-3.1-fix-review.md",{"path":124,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":125,"sourceHtmlUrl":126},"references\u002Fphase-4-archive.md",5618,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Freferences\u002Fphase-4-archive.md",{"path":128,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":129,"sourceHtmlUrl":130},"references\u002Fphase-5-unit-tests.md",4306,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Freferences\u002Fphase-5-unit-tests.md",{"path":132,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":133,"sourceHtmlUrl":134},"references\u002Fphase-6-merge-push.md",8320,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Freferences\u002Fphase-6-merge-push.md",{"path":136,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":139,"sourceHtmlUrl":140},"scripts\u002Fopsx-archive.sh","SCRIPT","脚本",318,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-archive.sh",{"path":142,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":143,"sourceHtmlUrl":144},"scripts\u002Fopsx-change-context.sh",3802,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-change-context.sh",{"path":146,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":147,"sourceHtmlUrl":148},"scripts\u002Fopsx-change-status.sh",228,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-change-status.sh",{"path":150,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":151,"sourceHtmlUrl":152},"scripts\u002Fopsx-detect-schema.sh",2009,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-detect-schema.sh",{"path":154,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":155,"sourceHtmlUrl":156},"scripts\u002Fopsx-ensure-change-meta.sh",1132,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-ensure-change-meta.sh",{"path":158,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":159,"sourceHtmlUrl":160},"scripts\u002Fopsx-instructions-apply.sh",230,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-instructions-apply.sh",{"path":162,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":163,"sourceHtmlUrl":164},"scripts\u002Fopsx-instructions.sh",1038,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-instructions.sh",{"path":166,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":167,"sourceHtmlUrl":168},"scripts\u002Fopsx-list-changes.sh",162,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-list-changes.sh",{"path":170,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":171,"sourceHtmlUrl":172},"scripts\u002Fopsx-new-change.sh",192,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-new-change.sh",{"path":174,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":175,"sourceHtmlUrl":176},"scripts\u002Fopsx-preflight.sh",677,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-preflight.sh",{"path":178,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":179,"sourceHtmlUrl":180},"scripts\u002Fopsx-resolve-verify.sh",2090,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-resolve-verify.sh",{"path":182,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":183,"sourceHtmlUrl":184},"scripts\u002Fopsx-selftest.sh",15524,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-selftest.sh",{"path":186,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":187,"sourceHtmlUrl":188},"scripts\u002Fopsx-validate-all.sh",171,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-validate-all.sh",{"path":190,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":191,"sourceHtmlUrl":192},"scripts\u002Fopsx-validate-change.sh",351,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Fscripts\u002Fopsx-validate-change.sh",{"path":194,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":195,"sourceHtmlUrl":196},"tests\u002Fadvanced-pipeline-test.sh",12738,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fadvanced-pipeline-test.sh",{"path":198,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":199,"sourceHtmlUrl":200},"tests\u002Fbranch-coverage-test.sh",6373,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fbranch-coverage-test.sh",{"path":202,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":203,"sourceHtmlUrl":204},"tests\u002Fcomprehensive-pipeline-test.sh",269,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fcomprehensive-pipeline-test.sh",{"path":206,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":207,"sourceHtmlUrl":208},"tests\u002Ffinal-validation.sh",3727,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Ffinal-validation.sh",{"path":210,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":211,"sourceHtmlUrl":212},"tests\u002Fintegrity-check.sh",5765,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fintegrity-check.sh",{"path":214,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":215,"sourceHtmlUrl":216},"tests\u002Flib\u002Flog-time.sh",69,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Flib\u002Flog-time.sh",{"path":218,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":219,"sourceHtmlUrl":220},"tests\u002Flogs\u002Fadvanced-pipeline-test-results.log",98,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Flogs\u002Fadvanced-pipeline-test-results.log",{"path":222,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":223,"sourceHtmlUrl":224},"tests\u002Flogs\u002Fbranch-coverage-test-results.log",841,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Flogs\u002Fbranch-coverage-test-results.log",{"path":226,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":227,"sourceHtmlUrl":228},"tests\u002Flogs\u002Fcomprehensive-test-results.log",7316,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Flogs\u002Fcomprehensive-test-results.log",{"path":230,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":231,"sourceHtmlUrl":232},"tests\u002Flogs\u002Fintegrity-test-results.log",537,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Flogs\u002Fintegrity-test-results.log",{"path":234,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":235,"sourceHtmlUrl":236},"tests\u002Flogs\u002Frun-all-summary.log",491,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Flogs\u002Frun-all-summary.log",{"path":238,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":239,"sourceHtmlUrl":240},"tests\u002Flogs\u002Fsimplified-test-results.log",164,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Flogs\u002Fsimplified-test-results.log",{"path":242,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":243,"sourceHtmlUrl":244},"tests\u002Fpipeline-test\u002Fbranch-coverage-map.json",22326,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fpipeline-test\u002Fbranch-coverage-map.json",{"path":246,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":247,"sourceHtmlUrl":248},"tests\u002Fpipeline-test\u002Fcore-scenarios.sh",5073,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fpipeline-test\u002Fcore-scenarios.sh",{"path":250,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":251,"sourceHtmlUrl":252},"tests\u002Fpipeline-test\u002Fphase0-scenarios.sh",2883,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fpipeline-test\u002Fphase0-scenarios.sh",{"path":254,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":255,"sourceHtmlUrl":256},"tests\u002Fpipeline-test\u002Fphase3-scenarios.sh",3105,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fpipeline-test\u002Fphase3-scenarios.sh",{"path":258,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":259,"sourceHtmlUrl":260},"tests\u002Fpipeline-test\u002Fphase5-scenarios.sh",2383,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fpipeline-test\u002Fphase5-scenarios.sh",{"path":262,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":263,"sourceHtmlUrl":264},"tests\u002Fpipeline-test\u002Fphase6-scenarios.sh",5231,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fpipeline-test\u002Fphase6-scenarios.sh",{"path":266,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":267,"sourceHtmlUrl":268},"tests\u002Fpipeline-test\u002Fpipeline-branch-matrix.md",8242,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fpipeline-test\u002Fpipeline-branch-matrix.md",{"path":270,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":271,"sourceHtmlUrl":272},"tests\u002Fpipeline-test\u002Fpipeline-test-findings.md",1489,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fpipeline-test\u002Fpipeline-test-findings.md",{"path":274,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":275,"sourceHtmlUrl":276},"tests\u002Fpipeline-test\u002Frecovery-scenarios.sh",778,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fpipeline-test\u002Frecovery-scenarios.sh",{"path":278,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":279,"sourceHtmlUrl":280},"tests\u002Fpipeline-test\u002Fscenario-harness.sh",4743,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fpipeline-test\u002Fscenario-harness.sh",{"path":282,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":283,"sourceHtmlUrl":284},"tests\u002Frun-all.sh",7339,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Frun-all.sh",{"path":286,"resourceType":137,"resourceTypeDesc":138,"sizeBytes":287,"sourceHtmlUrl":288},"tests\u002Fsimplified-pipeline-test.sh",3922,"https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fopsx-dev-pipeline\u002Ftests\u002Fsimplified-pipeline-test.sh",[290,308,324,343,363,386],{"skillNo":291,"name":292,"nameZh":6,"description":293,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":294,"categories":295,"keywords":296,"publishedAt":36},"01M6RTQZM2W4D883XGA5B23RF4","git-merge-branch","Merge current branch to a target branch. Use when the user wants to merge their current branch to another branch (e.g., qa, master, develop).","https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fgit-merge-branch\u002FSKILL.md",[],[297,298,30,299,300,28,301,302,303,304,305,306,35,307],"merge","git merge","branch","git merge branch","qa","repository","develop","user","use","master","when",{"skillNo":309,"name":310,"nameZh":6,"description":311,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":312,"categories":313,"keywords":314,"publishedAt":36},"01M6RTQV3CXBKB3WP295FNJ3R3","git-commit-push","Commit and push code changes to the remote repository. Use when the user wants to commit their changes and push to remote.","https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fgit-commit-push\u002FSKILL.md",[],[315,316,30,317,318,319,28,320,302,321,304,305,322,35,323,307],"commit","git commit","push","commit push","git commit push","code","commit and push","remote","changes",{"skillNo":325,"name":326,"nameZh":6,"description":327,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":328,"categories":329,"keywords":336,"publishedAt":36},"01M6RTQMV7BCRR39HMC7G8F03J","git-code-review","Review uncommitted or committed changes in the current branch and generate a code review report. Use when the user wants to review their changes before or after committing.","https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fgit-code-review\u002FSKILL.md",[330,335],{"categoryNo":331,"categoryName":332,"taxonomyType":333,"taxonomyTypeDesc":334},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[337,338,320,30,339,28,340,341,302,299,304,305,35,323,342,307],"code review","review","git code review","generate","report","review report",{"skillNo":344,"name":345,"nameZh":6,"description":346,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":347,"categories":348,"keywords":351,"publishedAt":36},"01M6RTQ2V53GDEYSY384BJ15S8","file-code-review","Review specified files or code snippets against project conventions and generate a code review report. Use when the user wants to review specific files (e.g., \"review this file\", \"审查这个文件\") or code blocks (e.g., \"review this code\", \"审查这段代码\") without git context. Supports single file, multiple files, or pasted code snippets.","https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Ffile-code-review\u002FSKILL.md",[349,350],{"categoryNo":331,"categoryName":332,"taxonomyType":333,"taxonomyTypeDesc":334},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[337,338,320,352,353,354,340,341,30,305,355,356,357,358,359,360,361,342,362,307],"file","file code review","project conventions","files","conventions","snippets","project","requirements","blocks","文件","single",{"skillNo":364,"name":365,"nameZh":6,"description":366,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":367,"categories":368,"keywords":369,"publishedAt":36},"01M6RTPNWT66XGYW8S9KXM3W66","openspec-propose","Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation.","https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fdev-pipeline\u002F.claude\u002Fskills\u002Fopenspec-propose\u002FSKILL.md",[],[370,34,371,28,372,373,374,375,376,305,377,378,379,380,381,382,383,384,385,307],"openspec propose","design","change","tasks","artifacts","Bash","generated","ready","implementation","build","get","complete","proposal","with","for","describe",{"skillNo":387,"name":388,"nameZh":6,"description":389,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":390,"categories":391,"keywords":392,"publishedAt":36},"01M6RTP3C3EVKHXAMW2E8ZB4G0","openspec-explore","Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.","https:\u002F\u002Fgithub.com\u002FZhaoYis\u002FMy-Skills\u002Fblob\u002Fmain\u002Fdev-pipeline\u002F.claude\u002Fskills\u002Fopenspec-explore\u002FSKILL.md",[],[393,394,34,28,372,375,304,305,395,396,397,398,359,399,400,384,307],"openspec explore","explore","think","thinking partner","thinking","ideas","partner","mode"]