{"id":"19fa2be9-8eaf-4e75-a1f9-c0886b2ac700","shortId":"TLxHkC","kind":"skill","title":"finishing-a-development-branch","tagline":"当实现完成、所有测试通过、需要决定如何集成工作时使用——通过提供合并、PR 或清理等结构化选项来引导开发工作的收尾","description":"# 完成开发分支\n\n## 概述\n\n通过提供清晰的选项并执行所选工作流来引导开发工作的收尾。\n\n**核心原则：** 验证测试 → 展示选项 → 执行选择 → 清理。\n\n**开始时宣布：** \"我正在使用 finishing-a-development-branch 技能来完成这项工作。\"\n\n## 流程\n\n### 步骤 1：验证测试\n\n**在展示选项之前，验证测试通过：**\n\n```bash\n# 运行项目的测试套件\nnpm test / cargo test / pytest / go test ./...\n```\n\n**如果测试失败：**\n```\n测试失败（<N> 个失败）。必须先修复才能继续：\n\n[显示失败信息]\n\n在测试通过之前无法进行合并/PR。\n```\n\n停止。不要继续到步骤 2。\n\n**如果测试通过：** 继续步骤 2。\n\n### 步骤 2：确定基础分支\n\n```bash\n# 尝试常见的基础分支\ngit merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null\n```\n\n或者询问：\"这个分支是从 main 分出来的——对吗？\"\n\n### 步骤 3：展示选项\n\n展示以下 4 个选项：\n\n```\n实现已完成。你想怎么做？\n\n1. 在本地合并回 <base-branch>\n2. 推送并创建 Pull Request\n3. 保持分支现状（我稍后处理）\n4. 丢弃这项工作\n\n选哪个？\n```\n\n**不要添加解释** - 保持选项简洁。\n\n### 步骤 4：执行选择\n\n#### 选项 1：本地合并\n\n```bash\n# 切换到基础分支\ngit checkout <base-branch>\n\n# 拉取最新代码\ngit pull\n\n# 合并功能分支\ngit merge <feature-branch>\n\n# 在合并结果上验证测试\n<test command>\n\n# 如果测试通过\ngit branch -d <feature-branch>\n```\n\n然后：清理工作树（步骤 5）\n\n#### 选项 2：推送并创建 PR\n\n```bash\n# 推送分支\ngit push -u origin <feature-branch>\n\n# 创建 PR\ngh pr create --title \"<title>\" --body \"$(cat <<'EOF'\n## 摘要\n<2-3 条变更要点>\n\n## 测试计划\n- [ ] <验证步骤>\nEOF\n)\"\n```\n\n然后：清理工作树（步骤 5）\n\n#### 选项 3：保持现状\n\n报告：\"保留分支 <name>。工作树保留在 <path>。\"\n\n**不要清理工作树。**\n\n#### 选项 4：丢弃\n\n**先确认：**\n```\n这将永久删除：\n- 分支 <name>\n- 所有提交：<commit-list>\n- 工作树 <path>\n\n输入 'discard' 确认。\n```\n\n等待精确的确认。\n\n确认后：\n```bash\ngit checkout <base-branch>\ngit branch -D <feature-branch>\n```\n\n然后：清理工作树（步骤 5）\n\n### 步骤 5：清理工作树\n\n**对于选项 1、2、4：**\n\n检查是否在工作树中：\n```bash\ngit worktree list | grep $(git branch --show-current)\n```\n\n如果是：\n```bash\ngit worktree remove <worktree-path>\n```\n\n**对于选项 3：** 保留工作树。\n\n## 快速参考\n\n| 选项 | 合并 | 推送 | 保留工作树 | 清理分支 |\n|------|------|------|-----------|---------|\n| 1. 本地合并 | ✓ | - | - | ✓ |\n| 2. 创建 PR | - | ✓ | ✓ | - |\n| 3. 保持现状 | - | - | ✓ | - |\n| 4. 丢弃 | - | - | - | ✓（强制） |\n\n## 常见错误\n\n**跳过测试验证**\n- **问题：** 合并损坏的代码、创建失败的 PR\n- **修复：** 在提供选项前始终验证测试\n\n**开放式问题**\n- **问题：** \"接下来该做什么？\" → 含糊不清\n- **修复：** 准确展示 4 个结构化选项\n\n**自动清理工作树**\n- **问题：** 在可能还需要工作树时就删除了（选项 2、3）\n- **修复：** 只在选项 1 和 4 时清理\n\n**丢弃时不确认**\n- **问题：** 意外删除工作成果\n- **修复：** 要求输入 \"discard\" 确认\n\n## 红线\n\n**绝不：**\n- 在测试失败时继续\n- 合并前不验证测试结果\n- 不确认就删除工作成果\n- 未经明确请求就强制推送\n\n**始终：**\n- 在提供选项前验证测试\n- 准确展示 4 个选项\n- 选项 4 要求输入确认\n- 只在选项 1 和 4 时清理工作树\n\n## 集成\n\n**被以下技能调用：**\n- **subagent-driven-development**（步骤 7）- 所有任务完成后\n- **executing-plans**（步骤 5）- 所有批次完成后\n\n**配合使用：**\n- **using-git-worktrees** - 清理由该技能创建的工作树","tags":["finishing","development","branch","superpowers","jnmetacode","agent-skills","agentic-coding","ai-coding","chinese","claude-code","code-review","cursor"],"capabilities":["skill","source-jnmetacode","skill-finishing-a-development-branch","topic-agent-skills","topic-agentic-coding","topic-ai-coding","topic-chinese","topic-claude-code","topic-code-review","topic-cursor","topic-gemini-cli","topic-kiro","topic-mcp","topic-npm-package","topic-prompt-engineering"],"categories":["superpowers-zh"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/jnMetaCode/superpowers-zh/finishing-a-development-branch","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add jnMetaCode/superpowers-zh","source_repo":"https://github.com/jnMetaCode/superpowers-zh","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1857 github stars · SKILL.md body (2,311 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-03T00:52:45.820Z","embedding":null,"createdAt":"2026-04-18T21:55:56.594Z","updatedAt":"2026-05-03T00:52:45.820Z","lastSeenAt":"2026-05-03T00:52:45.820Z","tsv":"'-3':150 '/dev/null':68,76 '/pr':49 '1':30,90,108,193,221,255,281 '2':52,55,57,67,75,92,130,149,194,223,251 '3':83,96,160,213,226,252 '4':86,99,105,167,195,228,245,257,275,278,283 '5':128,158,188,190,298 '7':292 'base':64,72 'bash':34,59,110,133,179,197,208 'bodi':145 'branch':5,26,123,183,203 'cargo':38 'cat':146 'checkout':113,181 'creat':143 'current':206 'd':124,184 'develop':4,25,290 'discard':175,264 'driven':289 'eof':147,154 'execut':295 'executing-plan':294 'finish':2,23 'finishing-a-development-branch':1,22 'gh':141 'git':61,69,112,115,118,122,135,180,182,198,202,209,303 'go':41 'grep':201 'head':65,73 'list':200 'main':66,79 'master':74 'merg':63,71,119 'merge-bas':62,70 'npm':36 'origin':138 'plan':296 'pr':10,132,140,142,225,236 'pull':94,116 'push':136 'pytest':40 'remov':211 'request':95 'show':205 'show-curr':204 'skill' 'skill-finishing-a-development-branch' 'source-jnmetacode' 'subag':288 'subagent-driven-develop':287 'test':37,39,42 'titl':144 'topic-agent-skills' 'topic-agentic-coding' 'topic-ai-coding' 'topic-chinese' 'topic-claude-code' 'topic-code-review' 'topic-cursor' 'topic-gemini-cli' 'topic-kiro' 'topic-mcp' 'topic-npm-package' 'topic-prompt-engineering' 'u':137 'use':302 'using-git-worktre':301 'worktre':199,210,304 '不确认就删除工作成果':270 '不要添加解释':102 '不要清理工作树':165 '不要继续到步骤':51 '丢弃':168,229 '丢弃时不确认':259 '丢弃这项工作':100 '个失败':45 '个结构化选项':246 '个选项':87,276 '你想怎么做':89 '保持分支现状':97 '保持现状':161,227 '保持选项简洁':103 '保留分支':163 '保留工作树':214,219 '修复':237,243,253,262 '停止':50 '先确认':169 '准确展示':244,274 '分出来的':80 '分支':171 '切换到基础分支':111 '创建':139,224 '创建失败的':235 '只在选项':254,280 '合并':217 '合并前不验证测试结果':269 '合并功能分支':117 '合并损坏的代码':234 '含糊不清':242 '和':256,282 '在可能还需要工作树时就删除了':249 '在合并结果上验证测试':120 '在展示选项之前':32 '在提供选项前始终验证测试':238 '在提供选项前验证测试':273 '在本地合并回':91 '在测试失败时继续':268 '在测试通过之前无法进行合并':48 '如果是':207 '如果测试失败':43 '如果测试通过':53,121 '始终':272 '完成开发分支':12 '实现已完成':88 '对于选项':192,212 '对吗':81 '尝试常见的基础分支':60 '展示以下':85 '展示选项':17,84 '工作树':173 '工作树保留在':164 '常见错误':231 '开始时宣布':20 '开放式问题':239 '强制':230 '当实现完成':6 '必须先修复才能继续':46 '快速参考':215 '意外删除工作成果':261 '我正在使用':21 '我稍后处理':98 '或清理等结构化选项来引导开发工作的收尾':11 '或者询问':77 '所有任务完成后':293 '所有批次完成后':299 '所有提交':172 '所有测试通过':7 '执行选择':18,106 '技能来完成这项工作':27 '报告':162 '拉取最新代码':114 '接下来该做什么':241 '推送':218 '推送分支':134 '推送并创建':93,131 '摘要':148 '时清理':258 '时清理工作树':284 '显示失败信息':47 '未经明确请求就强制推送':271 '本地合并':109,222 '条变更要点':151 '核心原则':15 '检查是否在工作树中':196 '概述':13 '步骤':29,56,82,104,127,157,187,189,291,297 '流程':28 '测试失败':44 '测试计划':152 '清理':19 '清理分支':220 '清理工作树':126,156,186,191 '清理由该技能创建的工作树':305 '然后':125,155,185 '确定基础分支':58 '确认':176,265 '确认后':178 '等待精确的确认':177 '红线':266 '绝不':267 '继续步骤':54 '自动清理工作树':247 '被以下技能调用':286 '要求输入':263 '要求输入确认':279 '跳过测试验证':232 '输入':174 '运行项目的测试套件':35 '这个分支是从':78 '这将永久删除':170 '选哪个':101 '选项':107,129,159,166,216,250,277 '通过提供合并':9 '通过提供清晰的选项并执行所选工作流来引导开发工作的收尾':14 '配合使用':300 '问题':233,240,248,260 '集成':285 '需要决定如何集成工作时使用':8 '验证步骤':153 '验证测试':16,31 '验证测试通过':33","prices":[{"id":"fb5bfbd3-25cb-4f79-8f5a-2b266763109a","listingId":"19fa2be9-8eaf-4e75-a1f9-c0886b2ac700","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"jnMetaCode","category":"superpowers-zh","install_from":"skills.sh"},"createdAt":"2026-04-18T21:55:56.594Z"}],"sources":[{"listingId":"19fa2be9-8eaf-4e75-a1f9-c0886b2ac700","source":"github","sourceId":"jnMetaCode/superpowers-zh/finishing-a-development-branch","sourceUrl":"https://github.com/jnMetaCode/superpowers-zh/tree/main/skills/finishing-a-development-branch","isPrimary":false,"firstSeenAt":"2026-04-18T21:55:56.594Z","lastSeenAt":"2026-05-03T00:52:45.820Z"}],"details":{"listingId":"19fa2be9-8eaf-4e75-a1f9-c0886b2ac700","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"jnMetaCode","slug":"finishing-a-development-branch","github":{"repo":"jnMetaCode/superpowers-zh","stars":1857,"topics":["agent-skills","agentic-coding","ai-coding","chinese","claude-code","code-review","cursor","gemini-cli","kiro","mcp","npm-package","prompt-engineering","skills","superpowers","tdd","trae"],"license":"mit","html_url":"https://github.com/jnMetaCode/superpowers-zh","pushed_at":"2026-04-28T15:32:18Z","description":"🦸 AI 编程超能力 · 中文增强版 — superpowers（116k+ ⭐）完整汉化 + 6 个中国原创 skills，让 Claude Code / Copilot CLI / Hermes Agent / Cursor / Windsurf / Kiro / Gemini CLI 等 16 款 AI 编程工具真正会干活","skill_md_sha":"c9a2b53a12f9bcecbbd31ab25999bbaca2c5ec88","skill_md_path":"skills/finishing-a-development-branch/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/jnMetaCode/superpowers-zh/tree/main/skills/finishing-a-development-branch"},"layout":"multi","source":"github","category":"superpowers-zh","frontmatter":{"name":"finishing-a-development-branch","description":"当实现完成、所有测试通过、需要决定如何集成工作时使用——通过提供合并、PR 或清理等结构化选项来引导开发工作的收尾"},"skills_sh_url":"https://skills.sh/jnMetaCode/superpowers-zh/finishing-a-development-branch"},"updatedAt":"2026-05-03T00:52:45.820Z"}}