{
  "schemaVersion": "1.0",
  "item": {
    "slug": "finishing-a-development-branch",
    "name": "Finishing a Development Branch",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/zlc000190/finishing-a-development-branch",
    "canonicalUrl": "https://clawhub.ai/zlc000190/finishing-a-development-branch",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/finishing-a-development-branch",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=finishing-a-development-branch",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/finishing-a-development-branch"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/finishing-a-development-branch",
    "agentPageUrl": "https://openagent3.xyz/skills/finishing-a-development-branch/agent",
    "manifestUrl": "https://openagent3.xyz/skills/finishing-a-development-branch/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/finishing-a-development-branch/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Overview",
        "body": "Guide completion of development work by presenting clear options and handling chosen workflow.\n\nCore principle: Verify tests → Present options → Execute choice → Clean up.\n\nAnnounce at start: \"I'm using the finishing-a-development-branch skill to complete this work.\""
      },
      {
        "title": "Step 1: Verify Tests",
        "body": "Before presenting options, verify tests pass:\n\n# Run project's test suite\nnpm test / cargo test / pytest / go test ./...\n\nIf tests fail:\n\nTests failing (<N> failures). Must fix before completing:\n\n[Show failures]\n\nCannot proceed with merge/PR until tests pass.\n\nStop. Don't proceed to Step 2.\n\nIf tests pass: Continue to Step 2."
      },
      {
        "title": "Step 2: Determine Base Branch",
        "body": "# Try common base branches\ngit merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null\n\nOr ask: \"This branch split from main - is that correct?\""
      },
      {
        "title": "Step 3: Present Options",
        "body": "Present exactly these 4 options:\n\nImplementation complete. What would you like to do?\n\n1. Merge back to <base-branch> locally\n2. Push and create a Pull Request\n3. Keep the branch as-is (I'll handle it later)\n4. Discard this work\n\nWhich option?\n\nDon't add explanation - keep options concise."
      },
      {
        "title": "Step 4: Execute Choice",
        "body": "Option 1: Merge Locally\n\n# Switch to base branch\ngit checkout <base-branch>\n\n# Pull latest\ngit pull\n\n# Merge feature branch\ngit merge <feature-branch>\n\n# Verify tests on merged result\n<test command>\n\n# If tests pass\ngit branch -d <feature-branch>\n\nThen: Cleanup worktree (Step 5)\n\nOption 2: Push and Create PR\n\n# Push branch\ngit push -u origin <feature-branch>\n\n# Create PR\ngh pr create --title \"<title>\" --body \"$(cat <<'EOF'\n## Summary\n<2-3 bullets of what changed>\n\n## Test Plan\n- [ ] <verification steps>\nEOF\n)\"\n\nThen: Cleanup worktree (Step 5)\n\nOption 3: Keep As-Is\n\nReport: \"Keeping branch <name>. Worktree preserved at <path>.\"\n\nDon't cleanup worktree.\n\nOption 4: Discard\n\nConfirm first:\n\nThis will permanently delete:\n- Branch <name>\n- All commits: <commit-list>\n- Worktree at <path>\n\nType 'discard' to confirm.\n\nWait for exact confirmation.\n\nIf confirmed:\n\ngit checkout <base-branch>\ngit branch -D <feature-branch>\n\nThen: Cleanup worktree (Step 5)"
      },
      {
        "title": "Step 5: Cleanup Worktree",
        "body": "For Options 1, 2, 4:\n\nCheck if in worktree:\n\ngit worktree list | grep $(git branch --show-current)\n\nIf yes:\n\ngit worktree remove <worktree-path>\n\nFor Option 3: Keep worktree."
      },
      {
        "title": "Quick Reference",
        "body": "OptionMergePushKeep WorktreeCleanup Branch1. Merge locally✓--✓2. Create PR-✓✓-3. Keep as-is--✓-4. Discard---✓ (force)"
      },
      {
        "title": "Common Mistakes",
        "body": "Skipping test verification\n\nProblem: Merge broken code, create failing PR\nFix: Always verify tests before offering options\n\nOpen-ended questions\n\nProblem: \"What should I do next?\" → ambiguous\nFix: Present exactly 4 structured options\n\nAutomatic worktree cleanup\n\nProblem: Remove worktree when might need it (Option 2, 3)\nFix: Only cleanup for Options 1 and 4\n\nNo confirmation for discard\n\nProblem: Accidentally delete work\nFix: Require typed \"discard\" confirmation"
      },
      {
        "title": "Red Flags",
        "body": "Never:\n\nProceed with failing tests\nMerge without verifying tests on result\nDelete work without confirmation\nForce-push without explicit request\n\nAlways:\n\nVerify tests before offering options\nPresent exactly 4 options\nGet typed confirmation for Option 4\nClean up worktree for Options 1 & 4 only"
      },
      {
        "title": "Integration",
        "body": "Called by:\n\nsubagent-driven-development (Step 7) - After all tasks complete\nexecuting-plans (Step 5) - After all batches complete\n\nPairs with:\n\nusing-git-worktrees - Cleans up worktree created by that skill"
      }
    ],
    "body": "Finishing a Development Branch\nOverview\n\nGuide completion of development work by presenting clear options and handling chosen workflow.\n\nCore principle: Verify tests → Present options → Execute choice → Clean up.\n\nAnnounce at start: \"I'm using the finishing-a-development-branch skill to complete this work.\"\n\nThe Process\nStep 1: Verify Tests\n\nBefore presenting options, verify tests pass:\n\n# Run project's test suite\nnpm test / cargo test / pytest / go test ./...\n\n\nIf tests fail:\n\nTests failing (<N> failures). Must fix before completing:\n\n[Show failures]\n\nCannot proceed with merge/PR until tests pass.\n\n\nStop. Don't proceed to Step 2.\n\nIf tests pass: Continue to Step 2.\n\nStep 2: Determine Base Branch\n# Try common base branches\ngit merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null\n\n\nOr ask: \"This branch split from main - is that correct?\"\n\nStep 3: Present Options\n\nPresent exactly these 4 options:\n\nImplementation complete. What would you like to do?\n\n1. Merge back to <base-branch> locally\n2. Push and create a Pull Request\n3. Keep the branch as-is (I'll handle it later)\n4. Discard this work\n\nWhich option?\n\n\nDon't add explanation - keep options concise.\n\nStep 4: Execute Choice\nOption 1: Merge Locally\n# Switch to base branch\ngit checkout <base-branch>\n\n# Pull latest\ngit pull\n\n# Merge feature branch\ngit merge <feature-branch>\n\n# Verify tests on merged result\n<test command>\n\n# If tests pass\ngit branch -d <feature-branch>\n\n\nThen: Cleanup worktree (Step 5)\n\nOption 2: Push and Create PR\n# Push branch\ngit push -u origin <feature-branch>\n\n# Create PR\ngh pr create --title \"<title>\" --body \"$(cat <<'EOF'\n## Summary\n<2-3 bullets of what changed>\n\n## Test Plan\n- [ ] <verification steps>\nEOF\n)\"\n\n\nThen: Cleanup worktree (Step 5)\n\nOption 3: Keep As-Is\n\nReport: \"Keeping branch <name>. Worktree preserved at <path>.\"\n\nDon't cleanup worktree.\n\nOption 4: Discard\n\nConfirm first:\n\nThis will permanently delete:\n- Branch <name>\n- All commits: <commit-list>\n- Worktree at <path>\n\nType 'discard' to confirm.\n\n\nWait for exact confirmation.\n\nIf confirmed:\n\ngit checkout <base-branch>\ngit branch -D <feature-branch>\n\n\nThen: Cleanup worktree (Step 5)\n\nStep 5: Cleanup Worktree\n\nFor Options 1, 2, 4:\n\nCheck if in worktree:\n\ngit worktree list | grep $(git branch --show-current)\n\n\nIf yes:\n\ngit worktree remove <worktree-path>\n\n\nFor Option 3: Keep worktree.\n\nQuick Reference\nOption\tMerge\tPush\tKeep Worktree\tCleanup Branch\n1. Merge locally\t✓\t-\t-\t✓\n2. Create PR\t-\t✓\t✓\t-\n3. Keep as-is\t-\t-\t✓\t-\n4. Discard\t-\t-\t-\t✓ (force)\nCommon Mistakes\n\nSkipping test verification\n\nProblem: Merge broken code, create failing PR\nFix: Always verify tests before offering options\n\nOpen-ended questions\n\nProblem: \"What should I do next?\" → ambiguous\nFix: Present exactly 4 structured options\n\nAutomatic worktree cleanup\n\nProblem: Remove worktree when might need it (Option 2, 3)\nFix: Only cleanup for Options 1 and 4\n\nNo confirmation for discard\n\nProblem: Accidentally delete work\nFix: Require typed \"discard\" confirmation\nRed Flags\n\nNever:\n\nProceed with failing tests\nMerge without verifying tests on result\nDelete work without confirmation\nForce-push without explicit request\n\nAlways:\n\nVerify tests before offering options\nPresent exactly 4 options\nGet typed confirmation for Option 4\nClean up worktree for Options 1 & 4 only\nIntegration\n\nCalled by:\n\nsubagent-driven-development (Step 7) - After all tasks complete\nexecuting-plans (Step 5) - After all batches complete\n\nPairs with:\n\nusing-git-worktrees - Cleans up worktree created by that skill"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/zlc000190/finishing-a-development-branch",
    "publisherUrl": "https://clawhub.ai/zlc000190/finishing-a-development-branch",
    "owner": "zlc000190",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/finishing-a-development-branch",
    "downloadUrl": "https://openagent3.xyz/downloads/finishing-a-development-branch",
    "agentUrl": "https://openagent3.xyz/skills/finishing-a-development-branch/agent",
    "manifestUrl": "https://openagent3.xyz/skills/finishing-a-development-branch/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/finishing-a-development-branch/agent.md"
  }
}