[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CY6475W3JAMZSA2MPV7QEP":3,"skill-same:01M6CY6475W3JAMZSA2MPV7QEP":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":13,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M6CY6475W3JAMZSA2MPV7QEP","finishing-branch",null,"Use when completing development on a feature branch -- verifies quality, presents completion options, and cleans up","The-Rabak\u002Fcompound-engineering-plugin","The-Rabak","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F44833742?v=4","01M6CY211HB58Y8JNWWEV9FGN1","01M6CY2165MYWKS66VN01X82EB",1,"MIT","https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin\u002Fblob\u002Fmain\u002Fportable\u002Fcompound-engineering\u002Fskills\u002Ffinishing-branch\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28],"branch","finishing branch","codex","development","gpt","quality","openrouter","use","up","kimi","options","2026-11-10 10:12:30",false,"---\nname: finishing-branch\ndescription: >-\n  Use when completing development on a feature branch -- verifies quality, presents completion\n  options, and cleans up\nmodel: claude-sonnet-5\nplatforms:\n  codex:\n    model: gpt-5.5\n  copilot:\n    model: gpt-5.3-codex\n  opencode:\n    model: openrouter\u002Fmoonshotai\u002Fkimi-k2.6\n\n---\n\n# Finishing a Development Branch\n\nA structured skill for completing work on a feature branch. Ensures all quality checks pass, presents clear options for what to do next, and handles cleanup.\n\n**Announce at start:** \"I'm using the finishing-branch skill to complete this work.\"\n\n## When to Use\n\n- All implementation tasks are complete\n- You are ready to ship or merge a feature branch\n- Referenced at the end of `workflows:work` Phase 4\n- Referenced by the `\u002Flrj` pipeline\n\n## When NOT to Use\n\n- Work is still in progress (finish tasks first)\n- You are on the default branch (nothing to finish)\n\n## The Process\n\n### Step 1: Final Verification\n\nRun all quality checks and report results:\n\n```bash\n# 1. Run full test suite (detect project test command)\n# npm test | pytest | cargo test | phpunit | go test | etc.\n\n# 2. Run linting (detect project linter)\n# eslint | ruff | clippy | pint | etc.\n\n# 3. Check for uncommitted changes\ngit status\n\n# 4. Check for untracked files that should be committed\ngit ls-files --others --exclude-standard\n```\n\n**Report results clearly:**\n- Tests: X passed, Y failed (if any fail, stop here and fix first)\n- Linting: pass\u002Ffail (if fail, fix first)\n- Uncommitted changes: list them\n- Untracked files: list them\n\n**Do NOT proceed if tests or linting fail.** Fix issues first, then return to Step 1.\n\n### Step 2: Commit Remaining Changes\n\nIf there are uncommitted changes:\n\n```bash\ngit add \u003Crelevant files>\ngit commit -m \"feat(scope): final changes before merge\n\n[description of what's included]\"\n```\n\nStage files selectively -- do not blindly `git add .` if there are files that should not be committed.\n\n### Step 3: Present Completion Options\n\nPresent the user with clear options:\n\n**Option A: Create a Pull Request** (recommended for team projects)\n- Push branch and generate PR description\n- Include summary of changes, testing notes, screenshots (if UI)\n- Include Post-Deploy Monitoring section\n\n**Option B: Merge to default branch** (for solo projects or pre-approved changes)\n- Verify the default branch is up to date\n- Merge the feature branch\n- Push the result\n\n**Option C: Keep the branch** (for work that needs more review)\n- Push the branch for others to review\n- Do not merge yet\n\n**Option D: Discard the branch** (if work is no longer needed)\n- Confirm with user (this is destructive)\n- Delete the branch\n\nAsk the user which option they prefer. Do not assume.\n\n**When invoked by an orchestrator without user interaction available:** Default to Option A (Create PR). Do not stall waiting for user input -- proceed with creating the PR automatically.\n\n### Step 4: Execute the Chosen Option\n\n#### Option A: Create PR\n\n```bash\ngit push -u origin [branch-name]\n```\n\nGenerate a PR\u002FMR description:\n\n```markdown\n## Summary\n- What was built and why\n- Key decisions made\n\n## Changes\n- [List major changes with file references]\n\n## Testing\n- Tests added\u002Fmodified\n- Manual testing performed\n\n## Post-Deploy Monitoring & Validation\n- **What to monitor:** [logs, metrics, dashboards]\n- **Expected healthy behavior:** [what success looks like]\n- **Failure signals:** [what to watch for]\n- **Validation window:** [how long to monitor]\n\n## Screenshots\n[If UI changes, include before\u002Fafter screenshots]\n\n---\n[![Compound Engineered](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCompound-Engineered-6366f1)](https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin)\n```\n\n#### Option B: Merge\n\n```bash\n# Update default branch\ngit checkout [default-branch]\ngit pull origin [default-branch]\n\n# Merge feature branch\ngit merge [feature-branch] --no-ff -m \"Merge [feature-branch]: [description]\"\n\n# Push\ngit push origin [default-branch]\n\n# Clean up local branch\ngit branch -d [feature-branch]\n```\n\n#### Option C: Keep Branch\n\n```bash\ngit push -u origin [branch-name]\necho \"Branch pushed. Ready for review.\"\n```\n\n#### Option D: Discard\n\n```bash\n# Confirm with user first!\ngit checkout [default-branch]\ngit branch -D [feature-branch]\necho \"Branch discarded.\"\n```\n\n### Step 5: Clean Up\n\n**If a git worktree was used:**\n```bash\n# Return to main working directory\ncd [main-worktree-path]\n\n# Remove the worktree\ngit worktree remove [worktree-path]\n\n# Prune worktree references\ngit worktree prune\n```\n\n**Update plan status** (if a plan file was used):\n- Change `status: active` to `status: completed` in the plan's YAML frontmatter\n- This marks the plan as done so it is not picked up by future `\u002Fworkflows:work` sessions\n\n**Update execution session** (if STATE.md exists):\n- Set `status: completed` in STATE.md\n- Record completion timestamp\n\n### Step 6: Summary\n\nPresent a clear completion summary:\n\n```\n## Branch Complete: [branch-name]\n\n- Action taken: [PR created \u002F Merged \u002F Kept \u002F Discarded]\n- Tests: [X passed]\n- Commits: [N commits]\n- Files changed: [N files]\n- PR\u002FMR: [link if created]\n- Worktree: [cleaned up \u002F N\u002FA]\n- Plan status: [updated to completed \u002F N\u002FA]\n```\n","# Finishing a Development Branch\n\nA structured skill for completing work on a feature branch. Ensures all quality checks pass, presents clear options for what to do next, and handles cleanup.\n\n**Announce at start:** \"I'm using the finishing-branch skill to complete this work.\"\n\n## When to Use\n\n- All implementation tasks are complete\n- You are ready to ship or merge a feature branch\n- Referenced at the end of `workflows:work` Phase 4\n- Referenced by the `\u002Flrj` pipeline\n\n## When NOT to Use\n\n- Work is still in progress (finish tasks first)\n- You are on the default branch (nothing to finish)\n\n## The Process\n\n### Step 1: Final Verification\n\nRun all quality checks and report results:\n\n```bash\n# 1. Run full test suite (detect project test command)\n# npm test | pytest | cargo test | phpunit | go test | etc.\n\n# 2. Run linting (detect project linter)\n# eslint | ruff | clippy | pint | etc.\n\n# 3. Check for uncommitted changes\ngit status\n\n# 4. Check for untracked files that should be committed\ngit ls-files --others --exclude-standard\n```\n\n**Report results clearly:**\n- Tests: X passed, Y failed (if any fail, stop here and fix first)\n- Linting: pass\u002Ffail (if fail, fix first)\n- Uncommitted changes: list them\n- Untracked files: list them\n\n**Do NOT proceed if tests or linting fail.** Fix issues first, then return to Step 1.\n\n### Step 2: Commit Remaining Changes\n\nIf there are uncommitted changes:\n\n```bash\ngit add \u003Crelevant files>\ngit commit -m \"feat(scope): final changes before merge\n\n[description of what's included]\"\n```\n\nStage files selectively -- do not blindly `git add .` if there are files that should not be committed.\n\n### Step 3: Present Completion Options\n\nPresent the user with clear options:\n\n**Option A: Create a Pull Request** (recommended for team projects)\n- Push branch and generate PR description\n- Include summary of changes, testing notes, screenshots (if UI)\n- Include Post-Deploy Monitoring section\n\n**Option B: Merge to default branch** (for solo projects or pre-approved changes)\n- Verify the default branch is up to date\n- Merge the feature branch\n- Push the result\n\n**Option C: Keep the branch** (for work that needs more review)\n- Push the branch for others to review\n- Do not merge yet\n\n**Option D: Discard the branch** (if work is no longer needed)\n- Confirm with user (this is destructive)\n- Delete the branch\n\nAsk the user which option they prefer. Do not assume.\n\n**When invoked by an orchestrator without user interaction available:** Default to Option A (Create PR). Do not stall waiting for user input -- proceed with creating the PR automatically.\n\n### Step 4: Execute the Chosen Option\n\n#### Option A: Create PR\n\n```bash\ngit push -u origin [branch-name]\n```\n\nGenerate a PR\u002FMR description:\n\n```markdown\n## Summary\n- What was built and why\n- Key decisions made\n\n## Changes\n- [List major changes with file references]\n\n## Testing\n- Tests added\u002Fmodified\n- Manual testing performed\n\n## Post-Deploy Monitoring & Validation\n- **What to monitor:** [logs, metrics, dashboards]\n- **Expected healthy behavior:** [what success looks like]\n- **Failure signals:** [what to watch for]\n- **Validation window:** [how long to monitor]\n\n## Screenshots\n[If UI changes, include before\u002Fafter screenshots]\n\n---\n[![Compound Engineered](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCompound-Engineered-6366f1)](https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin)\n```\n\n#### Option B: Merge\n\n```bash\n# Update default branch\ngit checkout [default-branch]\ngit pull origin [default-branch]\n\n# Merge feature branch\ngit merge [feature-branch] --no-ff -m \"Merge [feature-branch]: [description]\"\n\n# Push\ngit push origin [default-branch]\n\n# Clean up local branch\ngit branch -d [feature-branch]\n```\n\n#### Option C: Keep Branch\n\n```bash\ngit push -u origin [branch-name]\necho \"Branch pushed. Ready for review.\"\n```\n\n#### Option D: Discard\n\n```bash\n# Confirm with user first!\ngit checkout [default-branch]\ngit branch -D [feature-branch]\necho \"Branch discarded.\"\n```\n\n### Step 5: Clean Up\n\n**If a git worktree was used:**\n```bash\n# Return to main working directory\ncd [main-worktree-path]\n\n# Remove the worktree\ngit worktree remove [worktree-path]\n\n# Prune worktree references\ngit worktree prune\n```\n\n**Update plan status** (if a plan file was used):\n- Change `status: active` to `status: completed` in the plan's YAML frontmatter\n- This marks the plan as done so it is not picked up by future `\u002Fworkflows:work` sessions\n\n**Update execution session** (if STATE.md exists):\n- Set `status: completed` in STATE.md\n- Record completion timestamp\n\n### Step 6: Summary\n\nPresent a clear completion summary:\n\n```\n## Branch Complete: [branch-name]\n\n- Action taken: [PR created \u002F Merged \u002F Kept \u002F Discarded]\n- Tests: [X passed]\n- Commits: [N commits]\n- Files changed: [N files]\n- PR\u002FMR: [link if created]\n- Worktree: [cleaned up \u002F N\u002FA]\n- Plan status: [updated to completed \u002F N\u002FA]\n```\n",{"name":5,"model":34,"platforms":35,"description":7},"claude-sonnet-5",{"codex":36,"copilot":38,"opencode":40},{"model":37},"gpt-5.5",{"model":39},"gpt-5.3-codex",{"model":41},"openrouter\u002Fmoonshotai\u002Fkimi-k2.6","main","4c70ff7e10e692dfcc6d7877a6e57dd08df94d9b","portable\u002Fcompound-engineering\u002Fskills\u002Ffinishing-branch","https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin","https:\u002F\u002Fgithub.com\u002FThe-Rabak","2026-07-28 15:25:35",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add The-Rabak\u002Fcompound-engineering-plugin --skill finishing-branch",{"tool":54,"command":55},"bunx","bunx skills add The-Rabak\u002Fcompound-engineering-plugin --skill finishing-branch",{"tool":57,"command":58},"pnpm","pnpm dlx skills add The-Rabak\u002Fcompound-engineering-plugin --skill finishing-branch","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin\u002Fblob\u002Fmain\u002Fportable\u002Fcompound-engineering\u002Fskills\u002Ffinishing-branch\u002FSKILL.md",true,[62],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"agents\u002Fopenai.yaml","REFERENCE","参考文档",299,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frelease-openclaw-plugin-testing\u002Fagents\u002Fopenai.yaml",[69,85,94,104,112,119],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":80,"publishedAt":29},"01M6CY858Z5RCC30TKAVBDJ6SZ","skill-one","Shared reusable skill.","https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fsample-portable-plugin\u002Fskills\u002Fskill-one\u002FSKILL.md",[75],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[81,82,83,84,22],"skill one","shared","reusable","haiku",{"skillNo":86,"name":71,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":91,"publishedAt":29},"01M6CY843KQG3FQF6259420CCD","Sample skill","https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fsample-plugin\u002Fskills\u002Fskill-one\u002FSKILL.md",[90],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},[81,92,93],"sample","sample skill",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":101,"publishedAt":29},"01M6CY82607GGPWR5H25SY74H2","disabled-skill","A skill with model invocation disabled","https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fsample-plugin\u002Fskills\u002Fdisabled-skill\u002FSKILL.md",[100],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},[102,103],"disabled skill","model",{"skillNo":105,"name":106,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":29},"01M6CY80RWMK81T97A2Q5KAFAF","default-skill","https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fcustom-paths\u002Fskills\u002Fdefault-skill\u002FSKILL.md",[],[110,111],"default skill","default",{"skillNo":113,"name":114,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":29},"01M6CY7ZK2PMV75ES90W6YYD4S","custom-skill","https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fcustom-paths\u002Fcustom-skills\u002Fcustom-skill\u002FSKILL.md",[],[118],"custom skill",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":29},"01M6CY7V6C7HFCNJEVNFT1X00T","workflow-next-step","This skill should be used at the end of core compound-engineering workflows to inspect completed artifacts, show the workflow progress checklist, and give the exact next-session command with inputs.","https:\u002F\u002Fgithub.com\u002FThe-Rabak\u002Fcompound-engineering-plugin\u002Fblob\u002Fmain\u002Fportable\u002Fcompound-engineering\u002Fskills\u002Fworkflow-next-step\u002FSKILL.md",[125],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},[127,128,129,130,131,132,133,134,135,136,137,138],"workflow","next","workflow next step","compound","show","checklist","session","command","engineering","artifacts","core","workflows"]