[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-finishing-a-development-branch":3,"mdc--ltoarl-key":36,"related-repo-openai-finishing-a-development-branch":2169,"related-org-openai-finishing-a-development-branch":2293},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"finishing-a-development-branch","finalize and integrate development branches","Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Git","git","tag",{"name":17,"slug":18,"type":15},"Engineering","engineering",{"name":20,"slug":21,"type":15},"Pull Requests","pull-requests",{"name":23,"slug":24,"type":15},"Workflow Automation","workflow-automation",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-04-16T05:11:59.019235",null,465,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fsuperpowers\u002Fskills\u002Ffinishing-a-development-branch","---\nname: finishing-a-development-branch\ndescription: Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup\n---\n\n# Finishing a Development Branch\n\n## Overview\n\nGuide completion of development work by presenting clear options and handling chosen workflow.\n\n**Core principle:** Verify tests → Detect environment → Present options → Execute choice → Clean up.\n\n**Announce at start:** \"I'm using the finishing-a-development-branch skill to complete this work.\"\n\n## The Process\n\n### Step 1: Verify Tests\n\n**Before presenting options, verify tests pass:**\n\n```bash\n# Run project's test suite\nnpm test \u002F cargo test \u002F pytest \u002F go test .\u002F...\n```\n\n**If tests fail:**\n```\nTests failing (\u003CN> failures). Must fix before completing:\n\n[Show failures]\n\nCannot proceed with merge\u002FPR until tests pass.\n```\n\nStop. Don't proceed to Step 2.\n\n**If tests pass:** Continue to Step 2.\n\n### Step 2: Detect Environment\n\n**Determine workspace state before presenting options:**\n\n```bash\nGIT_DIR=$(cd \"$(git rev-parse --git-dir)\" 2>\u002Fdev\u002Fnull && pwd -P)\nGIT_COMMON=$(cd \"$(git rev-parse --git-common-dir)\" 2>\u002Fdev\u002Fnull && pwd -P)\n```\n\nThis determines which menu to show and how cleanup works:\n\n| State | Menu | Cleanup |\n|-------|------|---------|\n| `GIT_DIR == GIT_COMMON` (normal repo) | Standard 4 options | No worktree to clean up |\n| `GIT_DIR != GIT_COMMON`, named branch | Standard 4 options | Provenance-based (see Step 6) |\n| `GIT_DIR != GIT_COMMON`, detached HEAD | Reduced 3 options (no merge) | No cleanup (externally managed) |\n\n### Step 3: Determine Base Branch\n\n```bash\n# Try common base branches\ngit merge-base HEAD main 2>\u002Fdev\u002Fnull || git merge-base HEAD master 2>\u002Fdev\u002Fnull\n```\n\nOr ask: \"This branch split from main - is that correct?\"\n\n### Step 4: Present Options\n\n**Normal repo and named-branch worktree — present exactly these 4 options:**\n\n```\nImplementation complete. What would you like to do?\n\n1. Merge back to \u003Cbase-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\n**Detached HEAD — present exactly these 3 options:**\n\n```\nImplementation complete. You're on a detached HEAD (externally managed workspace).\n\n1. Push as new branch and create a Pull Request\n2. Keep as-is (I'll handle it later)\n3. Discard this work\n\nWhich option?\n```\n\n**Don't add explanation** - keep options concise.\n\n### Step 5: Execute Choice\n\n#### Option 1: Merge Locally\n\n```bash\n# Get main repo root for CWD safety\nMAIN_ROOT=$(git -C \"$(git rev-parse --git-common-dir)\u002F..\" rev-parse --show-toplevel)\ncd \"$MAIN_ROOT\"\n\n# Merge first — verify success before removing anything\ngit checkout \u003Cbase-branch>\ngit pull\ngit merge \u003Cfeature-branch>\n\n# Verify tests on merged result\n\u003Ctest command>\n\n# Only after merge succeeds: cleanup worktree (Step 6), then delete branch\n```\n\nThen: Cleanup worktree (Step 6), then delete branch:\n\n```bash\ngit branch -d \u003Cfeature-branch>\n```\n\n#### Option 2: Push and Create PR\n\n```bash\n# Push branch\ngit push -u origin \u003Cfeature-branch>\n\n# Create PR\ngh pr create --title \"\u003Ctitle>\" --body \"$(cat \u003C\u003C'EOF'\n## Summary\n\u003C2-3 bullets of what changed>\n\n## Test Plan\n- [ ] \u003Cverification steps>\nEOF\n)\"\n```\n\n**Do NOT clean up worktree** — user needs it alive to iterate on PR feedback.\n\n#### Option 3: Keep As-Is\n\nReport: \"Keeping branch \u003Cname>. Worktree preserved at \u003Cpath>.\"\n\n**Don't cleanup worktree.**\n\n#### Option 4: Discard\n\n**Confirm first:**\n```\nThis will permanently delete:\n- Branch \u003Cname>\n- All commits: \u003Ccommit-list>\n- Worktree at \u003Cpath>\n\nType 'discard' to confirm.\n```\n\nWait for exact confirmation.\n\nIf confirmed:\n```bash\nMAIN_ROOT=$(git -C \"$(git rev-parse --git-common-dir)\u002F..\" rev-parse --show-toplevel)\ncd \"$MAIN_ROOT\"\n```\n\nThen: Cleanup worktree (Step 6), then force-delete branch:\n```bash\ngit branch -D \u003Cfeature-branch>\n```\n\n### Step 6: Cleanup Workspace\n\n**Only runs for Options 1 and 4.** Options 2 and 3 always preserve the worktree.\n\n```bash\nGIT_DIR=$(cd \"$(git rev-parse --git-dir)\" 2>\u002Fdev\u002Fnull && pwd -P)\nGIT_COMMON=$(cd \"$(git rev-parse --git-common-dir)\" 2>\u002Fdev\u002Fnull && pwd -P)\nWORKTREE_PATH=$(git rev-parse --show-toplevel)\n```\n\n**If `GIT_DIR == GIT_COMMON`:** Normal repo, no worktree to clean up. Done.\n\n**If worktree path is under `.worktrees\u002F`, `worktrees\u002F`, or `~\u002F.config\u002Fsuperpowers\u002Fworktrees\u002F`:** Superpowers created this worktree — we own cleanup.\n\n```bash\nMAIN_ROOT=$(git -C \"$(git rev-parse --git-common-dir)\u002F..\" rev-parse --show-toplevel)\ncd \"$MAIN_ROOT\"\ngit worktree remove \"$WORKTREE_PATH\"\ngit worktree prune  # Self-healing: clean up any stale registrations\n```\n\n**Otherwise:** The host environment (harness) owns this workspace. Do NOT remove it. If your platform provides a workspace-exit tool, use it. Otherwise, leave the workspace in place.\n\n## Quick Reference\n\n| Option | Merge | Push | Keep Worktree | Cleanup Branch |\n|--------|-------|------|---------------|----------------|\n| 1. Merge locally | yes | - | - | yes |\n| 2. Create PR | - | yes | yes | - |\n| 3. Keep as-is | - | - | yes | - |\n| 4. Discard | - | - | - | yes (force) |\n\n## Common Mistakes\n\n**Skipping test verification**\n- **Problem:** Merge broken code, create failing PR\n- **Fix:** Always verify tests before offering options\n\n**Open-ended questions**\n- **Problem:** \"What should I do next?\" is ambiguous\n- **Fix:** Present exactly 4 structured options (or 3 for detached HEAD)\n\n**Cleaning up worktree for Option 2**\n- **Problem:** Remove worktree user needs for PR iteration\n- **Fix:** Only cleanup for Options 1 and 4\n\n**Deleting branch before removing worktree**\n- **Problem:** `git branch -d` fails because worktree still references the branch\n- **Fix:** Merge first, remove worktree, then delete branch\n\n**Running git worktree remove from inside the worktree**\n- **Problem:** Command fails silently when CWD is inside the worktree being removed\n- **Fix:** Always `cd` to main repo root before `git worktree remove`\n\n**Cleaning up harness-owned worktrees**\n- **Problem:** Removing a worktree the harness created causes phantom state\n- **Fix:** Only clean up worktrees under `.worktrees\u002F`, `worktrees\u002F`, or `~\u002F.config\u002Fsuperpowers\u002Fworktrees\u002F`\n\n**No confirmation for discard**\n- **Problem:** Accidentally delete work\n- **Fix:** Require typed \"discard\" confirmation\n\n## Red Flags\n\n**Never:**\n- Proceed with failing tests\n- Merge without verifying tests on result\n- Delete work without confirmation\n- Force-push without explicit request\n- Remove a worktree before confirming merge success\n- Clean up worktrees you didn't create (provenance check)\n- Run `git worktree remove` from inside the worktree\n\n**Always:**\n- Verify tests before offering options\n- Detect environment before presenting menu\n- Present exactly 4 options (or 3 for detached HEAD)\n- Get typed confirmation for Option 4\n- Clean up worktree for Options 1 & 4 only\n- `cd` to main repo root before worktree removal\n- Run `git worktree prune` after removal\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,49,56,62,73,83,89,96,104,185,193,203,208,218,224,232,366,371,474,480,557,562,568,576,585,593,602,612,618,625,872,877,917,923,1101,1111,1117,1134,1142,1148,1156,1165,1170,1175,1256,1261,1300,1306,1316,1461,1478,1511,1643,1653,1659,1795,1801,1809,1834,1842,1863,1871,1892,1900,1929,1937,1971,1979,2017,2025,2046,2052,2060,2105,2113,2163],{"type":42,"tag":43,"props":44,"children":45},"element","h1",{"id":4},[46],{"type":47,"value":48},"text","Finishing a Development Branch",{"type":42,"tag":50,"props":51,"children":53},"h2",{"id":52},"overview",[54],{"type":47,"value":55},"Overview",{"type":42,"tag":57,"props":58,"children":59},"p",{},[60],{"type":47,"value":61},"Guide completion of development work by presenting clear options and handling chosen workflow.",{"type":42,"tag":57,"props":63,"children":64},{},[65,71],{"type":42,"tag":66,"props":67,"children":68},"strong",{},[69],{"type":47,"value":70},"Core principle:",{"type":47,"value":72}," Verify tests → Detect environment → Present options → Execute choice → Clean up.",{"type":42,"tag":57,"props":74,"children":75},{},[76,81],{"type":42,"tag":66,"props":77,"children":78},{},[79],{"type":47,"value":80},"Announce at start:",{"type":47,"value":82}," \"I'm using the finishing-a-development-branch skill to complete this work.\"",{"type":42,"tag":50,"props":84,"children":86},{"id":85},"the-process",[87],{"type":47,"value":88},"The Process",{"type":42,"tag":90,"props":91,"children":93},"h3",{"id":92},"step-1-verify-tests",[94],{"type":47,"value":95},"Step 1: Verify Tests",{"type":42,"tag":57,"props":97,"children":98},{},[99],{"type":42,"tag":66,"props":100,"children":101},{},[102],{"type":47,"value":103},"Before presenting options, verify tests pass:",{"type":42,"tag":105,"props":106,"children":111},"pre",{"className":107,"code":108,"language":109,"meta":110,"style":110},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Run project's test suite\nnpm test \u002F cargo test \u002F pytest \u002F go test .\u002F...\n","bash","",[112],{"type":42,"tag":113,"props":114,"children":115},"code",{"__ignoreMap":110},[116,128],{"type":42,"tag":117,"props":118,"children":121},"span",{"class":119,"line":120},"line",1,[122],{"type":42,"tag":117,"props":123,"children":125},{"style":124},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[126],{"type":47,"value":127},"# Run project's test suite\n",{"type":42,"tag":117,"props":129,"children":131},{"class":119,"line":130},2,[132,138,144,149,154,158,162,167,171,176,180],{"type":42,"tag":117,"props":133,"children":135},{"style":134},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[136],{"type":47,"value":137},"npm",{"type":42,"tag":117,"props":139,"children":141},{"style":140},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[142],{"type":47,"value":143}," test",{"type":42,"tag":117,"props":145,"children":146},{"style":140},[147],{"type":47,"value":148}," \u002F",{"type":42,"tag":117,"props":150,"children":151},{"style":140},[152],{"type":47,"value":153}," cargo",{"type":42,"tag":117,"props":155,"children":156},{"style":140},[157],{"type":47,"value":143},{"type":42,"tag":117,"props":159,"children":160},{"style":140},[161],{"type":47,"value":148},{"type":42,"tag":117,"props":163,"children":164},{"style":140},[165],{"type":47,"value":166}," pytest",{"type":42,"tag":117,"props":168,"children":169},{"style":140},[170],{"type":47,"value":148},{"type":42,"tag":117,"props":172,"children":173},{"style":140},[174],{"type":47,"value":175}," go",{"type":42,"tag":117,"props":177,"children":178},{"style":140},[179],{"type":47,"value":143},{"type":42,"tag":117,"props":181,"children":182},{"style":140},[183],{"type":47,"value":184}," .\u002F...\n",{"type":42,"tag":57,"props":186,"children":187},{},[188],{"type":42,"tag":66,"props":189,"children":190},{},[191],{"type":47,"value":192},"If tests fail:",{"type":42,"tag":105,"props":194,"children":198},{"className":195,"code":197,"language":47},[196],"language-text","Tests failing (\u003CN> failures). Must fix before completing:\n\n[Show failures]\n\nCannot proceed with merge\u002FPR until tests pass.\n",[199],{"type":42,"tag":113,"props":200,"children":201},{"__ignoreMap":110},[202],{"type":47,"value":197},{"type":42,"tag":57,"props":204,"children":205},{},[206],{"type":47,"value":207},"Stop. Don't proceed to Step 2.",{"type":42,"tag":57,"props":209,"children":210},{},[211,216],{"type":42,"tag":66,"props":212,"children":213},{},[214],{"type":47,"value":215},"If tests pass:",{"type":47,"value":217}," Continue to Step 2.",{"type":42,"tag":90,"props":219,"children":221},{"id":220},"step-2-detect-environment",[222],{"type":47,"value":223},"Step 2: Detect Environment",{"type":42,"tag":57,"props":225,"children":226},{},[227],{"type":42,"tag":66,"props":228,"children":229},{},[230],{"type":47,"value":231},"Determine workspace state before presenting options:",{"type":42,"tag":105,"props":233,"children":235},{"className":107,"code":234,"language":109,"meta":110,"style":110},"GIT_DIR=$(cd \"$(git rev-parse --git-dir)\" 2>\u002Fdev\u002Fnull && pwd -P)\nGIT_COMMON=$(cd \"$(git rev-parse --git-common-dir)\" 2>\u002Fdev\u002Fnull && pwd -P)\n",[236],{"type":42,"tag":113,"props":237,"children":238},{"__ignoreMap":110},[239,309],{"type":42,"tag":117,"props":240,"children":241},{"class":119,"line":120},[242,248,254,260,265,269,274,279,284,289,294,299,304],{"type":42,"tag":117,"props":243,"children":245},{"style":244},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[246],{"type":47,"value":247},"GIT_DIR",{"type":42,"tag":117,"props":249,"children":251},{"style":250},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[252],{"type":47,"value":253},"=$(",{"type":42,"tag":117,"props":255,"children":257},{"style":256},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[258],{"type":47,"value":259},"cd",{"type":42,"tag":117,"props":261,"children":262},{"style":250},[263],{"type":47,"value":264}," \"$(",{"type":42,"tag":117,"props":266,"children":267},{"style":134},[268],{"type":47,"value":14},{"type":42,"tag":117,"props":270,"children":271},{"style":140},[272],{"type":47,"value":273}," rev-parse --git-dir",{"type":42,"tag":117,"props":275,"children":276},{"style":250},[277],{"type":47,"value":278},")\"",{"type":42,"tag":117,"props":280,"children":281},{"style":250},[282],{"type":47,"value":283}," 2>",{"type":42,"tag":117,"props":285,"children":286},{"style":140},[287],{"type":47,"value":288},"\u002Fdev\u002Fnull",{"type":42,"tag":117,"props":290,"children":291},{"style":250},[292],{"type":47,"value":293}," &&",{"type":42,"tag":117,"props":295,"children":296},{"style":256},[297],{"type":47,"value":298}," pwd",{"type":42,"tag":117,"props":300,"children":301},{"style":140},[302],{"type":47,"value":303}," -P",{"type":42,"tag":117,"props":305,"children":306},{"style":250},[307],{"type":47,"value":308},")\n",{"type":42,"tag":117,"props":310,"children":311},{"class":119,"line":130},[312,317,321,325,329,333,338,342,346,350,354,358,362],{"type":42,"tag":117,"props":313,"children":314},{"style":244},[315],{"type":47,"value":316},"GIT_COMMON",{"type":42,"tag":117,"props":318,"children":319},{"style":250},[320],{"type":47,"value":253},{"type":42,"tag":117,"props":322,"children":323},{"style":256},[324],{"type":47,"value":259},{"type":42,"tag":117,"props":326,"children":327},{"style":250},[328],{"type":47,"value":264},{"type":42,"tag":117,"props":330,"children":331},{"style":134},[332],{"type":47,"value":14},{"type":42,"tag":117,"props":334,"children":335},{"style":140},[336],{"type":47,"value":337}," rev-parse --git-common-dir",{"type":42,"tag":117,"props":339,"children":340},{"style":250},[341],{"type":47,"value":278},{"type":42,"tag":117,"props":343,"children":344},{"style":250},[345],{"type":47,"value":283},{"type":42,"tag":117,"props":347,"children":348},{"style":140},[349],{"type":47,"value":288},{"type":42,"tag":117,"props":351,"children":352},{"style":250},[353],{"type":47,"value":293},{"type":42,"tag":117,"props":355,"children":356},{"style":256},[357],{"type":47,"value":298},{"type":42,"tag":117,"props":359,"children":360},{"style":140},[361],{"type":47,"value":303},{"type":42,"tag":117,"props":363,"children":364},{"style":250},[365],{"type":47,"value":308},{"type":42,"tag":57,"props":367,"children":368},{},[369],{"type":47,"value":370},"This determines which menu to show and how cleanup works:",{"type":42,"tag":372,"props":373,"children":374},"table",{},[375,399],{"type":42,"tag":376,"props":377,"children":378},"thead",{},[379],{"type":42,"tag":380,"props":381,"children":382},"tr",{},[383,389,394],{"type":42,"tag":384,"props":385,"children":386},"th",{},[387],{"type":47,"value":388},"State",{"type":42,"tag":384,"props":390,"children":391},{},[392],{"type":47,"value":393},"Menu",{"type":42,"tag":384,"props":395,"children":396},{},[397],{"type":47,"value":398},"Cleanup",{"type":42,"tag":400,"props":401,"children":402},"tbody",{},[403,428,451],{"type":42,"tag":380,"props":404,"children":405},{},[406,418,423],{"type":42,"tag":407,"props":408,"children":409},"td",{},[410,416],{"type":42,"tag":113,"props":411,"children":413},{"className":412},[],[414],{"type":47,"value":415},"GIT_DIR == GIT_COMMON",{"type":47,"value":417}," (normal repo)",{"type":42,"tag":407,"props":419,"children":420},{},[421],{"type":47,"value":422},"Standard 4 options",{"type":42,"tag":407,"props":424,"children":425},{},[426],{"type":47,"value":427},"No worktree to clean up",{"type":42,"tag":380,"props":429,"children":430},{},[431,442,446],{"type":42,"tag":407,"props":432,"children":433},{},[434,440],{"type":42,"tag":113,"props":435,"children":437},{"className":436},[],[438],{"type":47,"value":439},"GIT_DIR != GIT_COMMON",{"type":47,"value":441},", named branch",{"type":42,"tag":407,"props":443,"children":444},{},[445],{"type":47,"value":422},{"type":42,"tag":407,"props":447,"children":448},{},[449],{"type":47,"value":450},"Provenance-based (see Step 6)",{"type":42,"tag":380,"props":452,"children":453},{},[454,464,469],{"type":42,"tag":407,"props":455,"children":456},{},[457,462],{"type":42,"tag":113,"props":458,"children":460},{"className":459},[],[461],{"type":47,"value":439},{"type":47,"value":463},", detached HEAD",{"type":42,"tag":407,"props":465,"children":466},{},[467],{"type":47,"value":468},"Reduced 3 options (no merge)",{"type":42,"tag":407,"props":470,"children":471},{},[472],{"type":47,"value":473},"No cleanup (externally managed)",{"type":42,"tag":90,"props":475,"children":477},{"id":476},"step-3-determine-base-branch",[478],{"type":47,"value":479},"Step 3: Determine Base Branch",{"type":42,"tag":105,"props":481,"children":483},{"className":107,"code":482,"language":109,"meta":110,"style":110},"# Try common base branches\ngit merge-base HEAD main 2>\u002Fdev\u002Fnull || git merge-base HEAD master 2>\u002Fdev\u002Fnull\n",[484],{"type":42,"tag":113,"props":485,"children":486},{"__ignoreMap":110},[487,495],{"type":42,"tag":117,"props":488,"children":489},{"class":119,"line":120},[490],{"type":42,"tag":117,"props":491,"children":492},{"style":124},[493],{"type":47,"value":494},"# Try common base branches\n",{"type":42,"tag":117,"props":496,"children":497},{"class":119,"line":130},[498,502,507,512,517,521,525,530,535,539,543,548,552],{"type":42,"tag":117,"props":499,"children":500},{"style":134},[501],{"type":47,"value":14},{"type":42,"tag":117,"props":503,"children":504},{"style":140},[505],{"type":47,"value":506}," merge-base",{"type":42,"tag":117,"props":508,"children":509},{"style":140},[510],{"type":47,"value":511}," HEAD",{"type":42,"tag":117,"props":513,"children":514},{"style":140},[515],{"type":47,"value":516}," main",{"type":42,"tag":117,"props":518,"children":519},{"style":250},[520],{"type":47,"value":283},{"type":42,"tag":117,"props":522,"children":523},{"style":140},[524],{"type":47,"value":288},{"type":42,"tag":117,"props":526,"children":527},{"style":250},[528],{"type":47,"value":529}," ||",{"type":42,"tag":117,"props":531,"children":532},{"style":134},[533],{"type":47,"value":534}," git",{"type":42,"tag":117,"props":536,"children":537},{"style":140},[538],{"type":47,"value":506},{"type":42,"tag":117,"props":540,"children":541},{"style":140},[542],{"type":47,"value":511},{"type":42,"tag":117,"props":544,"children":545},{"style":140},[546],{"type":47,"value":547}," master",{"type":42,"tag":117,"props":549,"children":550},{"style":250},[551],{"type":47,"value":283},{"type":42,"tag":117,"props":553,"children":554},{"style":140},[555],{"type":47,"value":556},"\u002Fdev\u002Fnull\n",{"type":42,"tag":57,"props":558,"children":559},{},[560],{"type":47,"value":561},"Or ask: \"This branch split from main - is that correct?\"",{"type":42,"tag":90,"props":563,"children":565},{"id":564},"step-4-present-options",[566],{"type":47,"value":567},"Step 4: Present Options",{"type":42,"tag":57,"props":569,"children":570},{},[571],{"type":42,"tag":66,"props":572,"children":573},{},[574],{"type":47,"value":575},"Normal repo and named-branch worktree — present exactly these 4 options:",{"type":42,"tag":105,"props":577,"children":580},{"className":578,"code":579,"language":47},[196],"Implementation complete. What would you like to do?\n\n1. Merge back to \u003Cbase-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",[581],{"type":42,"tag":113,"props":582,"children":583},{"__ignoreMap":110},[584],{"type":47,"value":579},{"type":42,"tag":57,"props":586,"children":587},{},[588],{"type":42,"tag":66,"props":589,"children":590},{},[591],{"type":47,"value":592},"Detached HEAD — present exactly these 3 options:",{"type":42,"tag":105,"props":594,"children":597},{"className":595,"code":596,"language":47},[196],"Implementation complete. You're on a detached HEAD (externally managed workspace).\n\n1. Push as new branch and create a Pull Request\n2. Keep as-is (I'll handle it later)\n3. Discard this work\n\nWhich option?\n",[598],{"type":42,"tag":113,"props":599,"children":600},{"__ignoreMap":110},[601],{"type":47,"value":596},{"type":42,"tag":57,"props":603,"children":604},{},[605,610],{"type":42,"tag":66,"props":606,"children":607},{},[608],{"type":47,"value":609},"Don't add explanation",{"type":47,"value":611}," - keep options concise.",{"type":42,"tag":90,"props":613,"children":615},{"id":614},"step-5-execute-choice",[616],{"type":47,"value":617},"Step 5: Execute Choice",{"type":42,"tag":619,"props":620,"children":622},"h4",{"id":621},"option-1-merge-locally",[623],{"type":47,"value":624},"Option 1: Merge Locally",{"type":42,"tag":105,"props":626,"children":628},{"className":107,"code":627,"language":109,"meta":110,"style":110},"# Get main repo root for CWD safety\nMAIN_ROOT=$(git -C \"$(git rev-parse --git-common-dir)\u002F..\" rev-parse --show-toplevel)\ncd \"$MAIN_ROOT\"\n\n# Merge first — verify success before removing anything\ngit checkout \u003Cbase-branch>\ngit pull\ngit merge \u003Cfeature-branch>\n\n# Verify tests on merged result\n\u003Ctest command>\n\n# Only after merge succeeds: cleanup worktree (Step 6), then delete branch\n",[629],{"type":42,"tag":113,"props":630,"children":631},{"__ignoreMap":110},[632,640,702,725,735,744,777,790,820,828,837,855,863],{"type":42,"tag":117,"props":633,"children":634},{"class":119,"line":120},[635],{"type":42,"tag":117,"props":636,"children":637},{"style":124},[638],{"type":47,"value":639},"# Get main repo root for CWD safety\n",{"type":42,"tag":117,"props":641,"children":642},{"class":119,"line":130},[643,648,652,656,661,665,669,673,678,683,688,693,698],{"type":42,"tag":117,"props":644,"children":645},{"style":244},[646],{"type":47,"value":647},"MAIN_ROOT",{"type":42,"tag":117,"props":649,"children":650},{"style":250},[651],{"type":47,"value":253},{"type":42,"tag":117,"props":653,"children":654},{"style":134},[655],{"type":47,"value":14},{"type":42,"tag":117,"props":657,"children":658},{"style":140},[659],{"type":47,"value":660}," -C",{"type":42,"tag":117,"props":662,"children":663},{"style":250},[664],{"type":47,"value":264},{"type":42,"tag":117,"props":666,"children":667},{"style":134},[668],{"type":47,"value":14},{"type":42,"tag":117,"props":670,"children":671},{"style":140},[672],{"type":47,"value":337},{"type":42,"tag":117,"props":674,"children":675},{"style":250},[676],{"type":47,"value":677},")",{"type":42,"tag":117,"props":679,"children":680},{"style":140},[681],{"type":47,"value":682},"\u002F..",{"type":42,"tag":117,"props":684,"children":685},{"style":250},[686],{"type":47,"value":687},"\"",{"type":42,"tag":117,"props":689,"children":690},{"style":140},[691],{"type":47,"value":692}," rev-parse",{"type":42,"tag":117,"props":694,"children":695},{"style":140},[696],{"type":47,"value":697}," --show-toplevel",{"type":42,"tag":117,"props":699,"children":700},{"style":250},[701],{"type":47,"value":308},{"type":42,"tag":117,"props":703,"children":705},{"class":119,"line":704},3,[706,710,715,720],{"type":42,"tag":117,"props":707,"children":708},{"style":256},[709],{"type":47,"value":259},{"type":42,"tag":117,"props":711,"children":712},{"style":250},[713],{"type":47,"value":714}," \"",{"type":42,"tag":117,"props":716,"children":717},{"style":244},[718],{"type":47,"value":719},"$MAIN_ROOT",{"type":42,"tag":117,"props":721,"children":722},{"style":250},[723],{"type":47,"value":724},"\"\n",{"type":42,"tag":117,"props":726,"children":728},{"class":119,"line":727},4,[729],{"type":42,"tag":117,"props":730,"children":732},{"emptyLinePlaceholder":731},true,[733],{"type":47,"value":734},"\n",{"type":42,"tag":117,"props":736,"children":738},{"class":119,"line":737},5,[739],{"type":42,"tag":117,"props":740,"children":741},{"style":124},[742],{"type":47,"value":743},"# Merge first — verify success before removing anything\n",{"type":42,"tag":117,"props":745,"children":747},{"class":119,"line":746},6,[748,752,757,762,767,772],{"type":42,"tag":117,"props":749,"children":750},{"style":134},[751],{"type":47,"value":14},{"type":42,"tag":117,"props":753,"children":754},{"style":140},[755],{"type":47,"value":756}," checkout",{"type":42,"tag":117,"props":758,"children":759},{"style":250},[760],{"type":47,"value":761}," \u003C",{"type":42,"tag":117,"props":763,"children":764},{"style":140},[765],{"type":47,"value":766},"base-branc",{"type":42,"tag":117,"props":768,"children":769},{"style":244},[770],{"type":47,"value":771},"h",{"type":42,"tag":117,"props":773,"children":774},{"style":250},[775],{"type":47,"value":776},">\n",{"type":42,"tag":117,"props":778,"children":780},{"class":119,"line":779},7,[781,785],{"type":42,"tag":117,"props":782,"children":783},{"style":134},[784],{"type":47,"value":14},{"type":42,"tag":117,"props":786,"children":787},{"style":140},[788],{"type":47,"value":789}," pull\n",{"type":42,"tag":117,"props":791,"children":793},{"class":119,"line":792},8,[794,798,803,807,812,816],{"type":42,"tag":117,"props":795,"children":796},{"style":134},[797],{"type":47,"value":14},{"type":42,"tag":117,"props":799,"children":800},{"style":140},[801],{"type":47,"value":802}," merge",{"type":42,"tag":117,"props":804,"children":805},{"style":250},[806],{"type":47,"value":761},{"type":42,"tag":117,"props":808,"children":809},{"style":140},[810],{"type":47,"value":811},"feature-branc",{"type":42,"tag":117,"props":813,"children":814},{"style":244},[815],{"type":47,"value":771},{"type":42,"tag":117,"props":817,"children":818},{"style":250},[819],{"type":47,"value":776},{"type":42,"tag":117,"props":821,"children":823},{"class":119,"line":822},9,[824],{"type":42,"tag":117,"props":825,"children":826},{"emptyLinePlaceholder":731},[827],{"type":47,"value":734},{"type":42,"tag":117,"props":829,"children":831},{"class":119,"line":830},10,[832],{"type":42,"tag":117,"props":833,"children":834},{"style":124},[835],{"type":47,"value":836},"# Verify tests on merged result\n",{"type":42,"tag":117,"props":838,"children":840},{"class":119,"line":839},11,[841,846,851],{"type":42,"tag":117,"props":842,"children":843},{"style":250},[844],{"type":47,"value":845},"\u003C",{"type":42,"tag":117,"props":847,"children":848},{"style":244},[849],{"type":47,"value":850},"test command",{"type":42,"tag":117,"props":852,"children":853},{"style":250},[854],{"type":47,"value":776},{"type":42,"tag":117,"props":856,"children":858},{"class":119,"line":857},12,[859],{"type":42,"tag":117,"props":860,"children":861},{"emptyLinePlaceholder":731},[862],{"type":47,"value":734},{"type":42,"tag":117,"props":864,"children":866},{"class":119,"line":865},13,[867],{"type":42,"tag":117,"props":868,"children":869},{"style":124},[870],{"type":47,"value":871},"# Only after merge succeeds: cleanup worktree (Step 6), then delete branch\n",{"type":42,"tag":57,"props":873,"children":874},{},[875],{"type":47,"value":876},"Then: Cleanup worktree (Step 6), then delete branch:",{"type":42,"tag":105,"props":878,"children":880},{"className":107,"code":879,"language":109,"meta":110,"style":110},"git branch -d \u003Cfeature-branch>\n",[881],{"type":42,"tag":113,"props":882,"children":883},{"__ignoreMap":110},[884],{"type":42,"tag":117,"props":885,"children":886},{"class":119,"line":120},[887,891,896,901,905,909,913],{"type":42,"tag":117,"props":888,"children":889},{"style":134},[890],{"type":47,"value":14},{"type":42,"tag":117,"props":892,"children":893},{"style":140},[894],{"type":47,"value":895}," branch",{"type":42,"tag":117,"props":897,"children":898},{"style":140},[899],{"type":47,"value":900}," -d",{"type":42,"tag":117,"props":902,"children":903},{"style":250},[904],{"type":47,"value":761},{"type":42,"tag":117,"props":906,"children":907},{"style":140},[908],{"type":47,"value":811},{"type":42,"tag":117,"props":910,"children":911},{"style":244},[912],{"type":47,"value":771},{"type":42,"tag":117,"props":914,"children":915},{"style":250},[916],{"type":47,"value":776},{"type":42,"tag":619,"props":918,"children":920},{"id":919},"option-2-push-and-create-pr",[921],{"type":47,"value":922},"Option 2: Push and Create PR",{"type":42,"tag":105,"props":924,"children":926},{"className":107,"code":925,"language":109,"meta":110,"style":110},"# Push branch\ngit push -u origin \u003Cfeature-branch>\n\n# Create PR\ngh pr create --title \"\u003Ctitle>\" --body \"$(cat \u003C\u003C'EOF'\n## Summary\n\u003C2-3 bullets of what changed>\n\n## Test Plan\n- [ ] \u003Cverification steps>\nEOF\n)\"\n",[927],{"type":42,"tag":113,"props":928,"children":929},{"__ignoreMap":110},[930,938,976,983,991,1046,1054,1062,1069,1077,1085,1093],{"type":42,"tag":117,"props":931,"children":932},{"class":119,"line":120},[933],{"type":42,"tag":117,"props":934,"children":935},{"style":124},[936],{"type":47,"value":937},"# Push branch\n",{"type":42,"tag":117,"props":939,"children":940},{"class":119,"line":130},[941,945,950,955,960,964,968,972],{"type":42,"tag":117,"props":942,"children":943},{"style":134},[944],{"type":47,"value":14},{"type":42,"tag":117,"props":946,"children":947},{"style":140},[948],{"type":47,"value":949}," push",{"type":42,"tag":117,"props":951,"children":952},{"style":140},[953],{"type":47,"value":954}," -u",{"type":42,"tag":117,"props":956,"children":957},{"style":140},[958],{"type":47,"value":959}," origin",{"type":42,"tag":117,"props":961,"children":962},{"style":250},[963],{"type":47,"value":761},{"type":42,"tag":117,"props":965,"children":966},{"style":140},[967],{"type":47,"value":811},{"type":42,"tag":117,"props":969,"children":970},{"style":244},[971],{"type":47,"value":771},{"type":42,"tag":117,"props":973,"children":974},{"style":250},[975],{"type":47,"value":776},{"type":42,"tag":117,"props":977,"children":978},{"class":119,"line":704},[979],{"type":42,"tag":117,"props":980,"children":981},{"emptyLinePlaceholder":731},[982],{"type":47,"value":734},{"type":42,"tag":117,"props":984,"children":985},{"class":119,"line":727},[986],{"type":42,"tag":117,"props":987,"children":988},{"style":124},[989],{"type":47,"value":990},"# Create PR\n",{"type":42,"tag":117,"props":992,"children":993},{"class":119,"line":737},[994,999,1004,1009,1014,1018,1023,1027,1032,1036,1041],{"type":42,"tag":117,"props":995,"children":996},{"style":134},[997],{"type":47,"value":998},"gh",{"type":42,"tag":117,"props":1000,"children":1001},{"style":140},[1002],{"type":47,"value":1003}," pr",{"type":42,"tag":117,"props":1005,"children":1006},{"style":140},[1007],{"type":47,"value":1008}," create",{"type":42,"tag":117,"props":1010,"children":1011},{"style":140},[1012],{"type":47,"value":1013}," --title",{"type":42,"tag":117,"props":1015,"children":1016},{"style":250},[1017],{"type":47,"value":714},{"type":42,"tag":117,"props":1019,"children":1020},{"style":140},[1021],{"type":47,"value":1022},"\u003Ctitle>",{"type":42,"tag":117,"props":1024,"children":1025},{"style":250},[1026],{"type":47,"value":687},{"type":42,"tag":117,"props":1028,"children":1029},{"style":140},[1030],{"type":47,"value":1031}," --body",{"type":42,"tag":117,"props":1033,"children":1034},{"style":250},[1035],{"type":47,"value":264},{"type":42,"tag":117,"props":1037,"children":1038},{"style":134},[1039],{"type":47,"value":1040},"cat",{"type":42,"tag":117,"props":1042,"children":1043},{"style":250},[1044],{"type":47,"value":1045}," \u003C\u003C'EOF'\n",{"type":42,"tag":117,"props":1047,"children":1048},{"class":119,"line":746},[1049],{"type":42,"tag":117,"props":1050,"children":1051},{"style":140},[1052],{"type":47,"value":1053},"## Summary\n",{"type":42,"tag":117,"props":1055,"children":1056},{"class":119,"line":779},[1057],{"type":42,"tag":117,"props":1058,"children":1059},{"style":140},[1060],{"type":47,"value":1061},"\u003C2-3 bullets of what changed>\n",{"type":42,"tag":117,"props":1063,"children":1064},{"class":119,"line":792},[1065],{"type":42,"tag":117,"props":1066,"children":1067},{"emptyLinePlaceholder":731},[1068],{"type":47,"value":734},{"type":42,"tag":117,"props":1070,"children":1071},{"class":119,"line":822},[1072],{"type":42,"tag":117,"props":1073,"children":1074},{"style":140},[1075],{"type":47,"value":1076},"## Test Plan\n",{"type":42,"tag":117,"props":1078,"children":1079},{"class":119,"line":830},[1080],{"type":42,"tag":117,"props":1081,"children":1082},{"style":140},[1083],{"type":47,"value":1084},"- [ ] \u003Cverification steps>\n",{"type":42,"tag":117,"props":1086,"children":1087},{"class":119,"line":839},[1088],{"type":42,"tag":117,"props":1089,"children":1090},{"style":250},[1091],{"type":47,"value":1092},"EOF\n",{"type":42,"tag":117,"props":1094,"children":1095},{"class":119,"line":857},[1096],{"type":42,"tag":117,"props":1097,"children":1098},{"style":250},[1099],{"type":47,"value":1100},")\"\n",{"type":42,"tag":57,"props":1102,"children":1103},{},[1104,1109],{"type":42,"tag":66,"props":1105,"children":1106},{},[1107],{"type":47,"value":1108},"Do NOT clean up worktree",{"type":47,"value":1110}," — user needs it alive to iterate on PR feedback.",{"type":42,"tag":619,"props":1112,"children":1114},{"id":1113},"option-3-keep-as-is",[1115],{"type":47,"value":1116},"Option 3: Keep As-Is",{"type":42,"tag":57,"props":1118,"children":1119},{},[1120,1122],{"type":47,"value":1121},"Report: \"Keeping branch ",{"type":42,"tag":1123,"props":1124,"children":1125},"name",{},[1126,1128],{"type":47,"value":1127},". Worktree preserved at ",{"type":42,"tag":1129,"props":1130,"children":1131},"path",{},[1132],{"type":47,"value":1133},".\"",{"type":42,"tag":57,"props":1135,"children":1136},{},[1137],{"type":42,"tag":66,"props":1138,"children":1139},{},[1140],{"type":47,"value":1141},"Don't cleanup worktree.",{"type":42,"tag":619,"props":1143,"children":1145},{"id":1144},"option-4-discard",[1146],{"type":47,"value":1147},"Option 4: Discard",{"type":42,"tag":57,"props":1149,"children":1150},{},[1151],{"type":42,"tag":66,"props":1152,"children":1153},{},[1154],{"type":47,"value":1155},"Confirm first:",{"type":42,"tag":105,"props":1157,"children":1160},{"className":1158,"code":1159,"language":47},[196],"This will permanently delete:\n- Branch \u003Cname>\n- All commits: \u003Ccommit-list>\n- Worktree at \u003Cpath>\n\nType 'discard' to confirm.\n",[1161],{"type":42,"tag":113,"props":1162,"children":1163},{"__ignoreMap":110},[1164],{"type":47,"value":1159},{"type":42,"tag":57,"props":1166,"children":1167},{},[1168],{"type":47,"value":1169},"Wait for exact confirmation.",{"type":42,"tag":57,"props":1171,"children":1172},{},[1173],{"type":47,"value":1174},"If confirmed:",{"type":42,"tag":105,"props":1176,"children":1178},{"className":107,"code":1177,"language":109,"meta":110,"style":110},"MAIN_ROOT=$(git -C \"$(git rev-parse --git-common-dir)\u002F..\" rev-parse --show-toplevel)\ncd \"$MAIN_ROOT\"\n",[1179],{"type":42,"tag":113,"props":1180,"children":1181},{"__ignoreMap":110},[1182,1237],{"type":42,"tag":117,"props":1183,"children":1184},{"class":119,"line":120},[1185,1189,1193,1197,1201,1205,1209,1213,1217,1221,1225,1229,1233],{"type":42,"tag":117,"props":1186,"children":1187},{"style":244},[1188],{"type":47,"value":647},{"type":42,"tag":117,"props":1190,"children":1191},{"style":250},[1192],{"type":47,"value":253},{"type":42,"tag":117,"props":1194,"children":1195},{"style":134},[1196],{"type":47,"value":14},{"type":42,"tag":117,"props":1198,"children":1199},{"style":140},[1200],{"type":47,"value":660},{"type":42,"tag":117,"props":1202,"children":1203},{"style":250},[1204],{"type":47,"value":264},{"type":42,"tag":117,"props":1206,"children":1207},{"style":134},[1208],{"type":47,"value":14},{"type":42,"tag":117,"props":1210,"children":1211},{"style":140},[1212],{"type":47,"value":337},{"type":42,"tag":117,"props":1214,"children":1215},{"style":250},[1216],{"type":47,"value":677},{"type":42,"tag":117,"props":1218,"children":1219},{"style":140},[1220],{"type":47,"value":682},{"type":42,"tag":117,"props":1222,"children":1223},{"style":250},[1224],{"type":47,"value":687},{"type":42,"tag":117,"props":1226,"children":1227},{"style":140},[1228],{"type":47,"value":692},{"type":42,"tag":117,"props":1230,"children":1231},{"style":140},[1232],{"type":47,"value":697},{"type":42,"tag":117,"props":1234,"children":1235},{"style":250},[1236],{"type":47,"value":308},{"type":42,"tag":117,"props":1238,"children":1239},{"class":119,"line":130},[1240,1244,1248,1252],{"type":42,"tag":117,"props":1241,"children":1242},{"style":256},[1243],{"type":47,"value":259},{"type":42,"tag":117,"props":1245,"children":1246},{"style":250},[1247],{"type":47,"value":714},{"type":42,"tag":117,"props":1249,"children":1250},{"style":244},[1251],{"type":47,"value":719},{"type":42,"tag":117,"props":1253,"children":1254},{"style":250},[1255],{"type":47,"value":724},{"type":42,"tag":57,"props":1257,"children":1258},{},[1259],{"type":47,"value":1260},"Then: Cleanup worktree (Step 6), then force-delete branch:",{"type":42,"tag":105,"props":1262,"children":1264},{"className":107,"code":1263,"language":109,"meta":110,"style":110},"git branch -D \u003Cfeature-branch>\n",[1265],{"type":42,"tag":113,"props":1266,"children":1267},{"__ignoreMap":110},[1268],{"type":42,"tag":117,"props":1269,"children":1270},{"class":119,"line":120},[1271,1275,1279,1284,1288,1292,1296],{"type":42,"tag":117,"props":1272,"children":1273},{"style":134},[1274],{"type":47,"value":14},{"type":42,"tag":117,"props":1276,"children":1277},{"style":140},[1278],{"type":47,"value":895},{"type":42,"tag":117,"props":1280,"children":1281},{"style":140},[1282],{"type":47,"value":1283}," -D",{"type":42,"tag":117,"props":1285,"children":1286},{"style":250},[1287],{"type":47,"value":761},{"type":42,"tag":117,"props":1289,"children":1290},{"style":140},[1291],{"type":47,"value":811},{"type":42,"tag":117,"props":1293,"children":1294},{"style":244},[1295],{"type":47,"value":771},{"type":42,"tag":117,"props":1297,"children":1298},{"style":250},[1299],{"type":47,"value":776},{"type":42,"tag":90,"props":1301,"children":1303},{"id":1302},"step-6-cleanup-workspace",[1304],{"type":47,"value":1305},"Step 6: Cleanup Workspace",{"type":42,"tag":57,"props":1307,"children":1308},{},[1309,1314],{"type":42,"tag":66,"props":1310,"children":1311},{},[1312],{"type":47,"value":1313},"Only runs for Options 1 and 4.",{"type":47,"value":1315}," Options 2 and 3 always preserve the worktree.",{"type":42,"tag":105,"props":1317,"children":1319},{"className":107,"code":1318,"language":109,"meta":110,"style":110},"GIT_DIR=$(cd \"$(git rev-parse --git-dir)\" 2>\u002Fdev\u002Fnull && pwd -P)\nGIT_COMMON=$(cd \"$(git rev-parse --git-common-dir)\" 2>\u002Fdev\u002Fnull && pwd -P)\nWORKTREE_PATH=$(git rev-parse --show-toplevel)\n",[1320],{"type":42,"tag":113,"props":1321,"children":1322},{"__ignoreMap":110},[1323,1378,1433],{"type":42,"tag":117,"props":1324,"children":1325},{"class":119,"line":120},[1326,1330,1334,1338,1342,1346,1350,1354,1358,1362,1366,1370,1374],{"type":42,"tag":117,"props":1327,"children":1328},{"style":244},[1329],{"type":47,"value":247},{"type":42,"tag":117,"props":1331,"children":1332},{"style":250},[1333],{"type":47,"value":253},{"type":42,"tag":117,"props":1335,"children":1336},{"style":256},[1337],{"type":47,"value":259},{"type":42,"tag":117,"props":1339,"children":1340},{"style":250},[1341],{"type":47,"value":264},{"type":42,"tag":117,"props":1343,"children":1344},{"style":134},[1345],{"type":47,"value":14},{"type":42,"tag":117,"props":1347,"children":1348},{"style":140},[1349],{"type":47,"value":273},{"type":42,"tag":117,"props":1351,"children":1352},{"style":250},[1353],{"type":47,"value":278},{"type":42,"tag":117,"props":1355,"children":1356},{"style":250},[1357],{"type":47,"value":283},{"type":42,"tag":117,"props":1359,"children":1360},{"style":140},[1361],{"type":47,"value":288},{"type":42,"tag":117,"props":1363,"children":1364},{"style":250},[1365],{"type":47,"value":293},{"type":42,"tag":117,"props":1367,"children":1368},{"style":256},[1369],{"type":47,"value":298},{"type":42,"tag":117,"props":1371,"children":1372},{"style":140},[1373],{"type":47,"value":303},{"type":42,"tag":117,"props":1375,"children":1376},{"style":250},[1377],{"type":47,"value":308},{"type":42,"tag":117,"props":1379,"children":1380},{"class":119,"line":130},[1381,1385,1389,1393,1397,1401,1405,1409,1413,1417,1421,1425,1429],{"type":42,"tag":117,"props":1382,"children":1383},{"style":244},[1384],{"type":47,"value":316},{"type":42,"tag":117,"props":1386,"children":1387},{"style":250},[1388],{"type":47,"value":253},{"type":42,"tag":117,"props":1390,"children":1391},{"style":256},[1392],{"type":47,"value":259},{"type":42,"tag":117,"props":1394,"children":1395},{"style":250},[1396],{"type":47,"value":264},{"type":42,"tag":117,"props":1398,"children":1399},{"style":134},[1400],{"type":47,"value":14},{"type":42,"tag":117,"props":1402,"children":1403},{"style":140},[1404],{"type":47,"value":337},{"type":42,"tag":117,"props":1406,"children":1407},{"style":250},[1408],{"type":47,"value":278},{"type":42,"tag":117,"props":1410,"children":1411},{"style":250},[1412],{"type":47,"value":283},{"type":42,"tag":117,"props":1414,"children":1415},{"style":140},[1416],{"type":47,"value":288},{"type":42,"tag":117,"props":1418,"children":1419},{"style":250},[1420],{"type":47,"value":293},{"type":42,"tag":117,"props":1422,"children":1423},{"style":256},[1424],{"type":47,"value":298},{"type":42,"tag":117,"props":1426,"children":1427},{"style":140},[1428],{"type":47,"value":303},{"type":42,"tag":117,"props":1430,"children":1431},{"style":250},[1432],{"type":47,"value":308},{"type":42,"tag":117,"props":1434,"children":1435},{"class":119,"line":704},[1436,1441,1445,1449,1453,1457],{"type":42,"tag":117,"props":1437,"children":1438},{"style":244},[1439],{"type":47,"value":1440},"WORKTREE_PATH",{"type":42,"tag":117,"props":1442,"children":1443},{"style":250},[1444],{"type":47,"value":253},{"type":42,"tag":117,"props":1446,"children":1447},{"style":134},[1448],{"type":47,"value":14},{"type":42,"tag":117,"props":1450,"children":1451},{"style":140},[1452],{"type":47,"value":692},{"type":42,"tag":117,"props":1454,"children":1455},{"style":140},[1456],{"type":47,"value":697},{"type":42,"tag":117,"props":1458,"children":1459},{"style":250},[1460],{"type":47,"value":308},{"type":42,"tag":57,"props":1462,"children":1463},{},[1464,1476],{"type":42,"tag":66,"props":1465,"children":1466},{},[1467,1469,1474],{"type":47,"value":1468},"If ",{"type":42,"tag":113,"props":1470,"children":1472},{"className":1471},[],[1473],{"type":47,"value":415},{"type":47,"value":1475},":",{"type":47,"value":1477}," Normal repo, no worktree to clean up. Done.",{"type":42,"tag":57,"props":1479,"children":1480},{},[1481,1509],{"type":42,"tag":66,"props":1482,"children":1483},{},[1484,1486,1492,1494,1500,1502,1508],{"type":47,"value":1485},"If worktree path is under ",{"type":42,"tag":113,"props":1487,"children":1489},{"className":1488},[],[1490],{"type":47,"value":1491},".worktrees\u002F",{"type":47,"value":1493},", ",{"type":42,"tag":113,"props":1495,"children":1497},{"className":1496},[],[1498],{"type":47,"value":1499},"worktrees\u002F",{"type":47,"value":1501},", or ",{"type":42,"tag":113,"props":1503,"children":1505},{"className":1504},[],[1506],{"type":47,"value":1507},"~\u002F.config\u002Fsuperpowers\u002Fworktrees\u002F",{"type":47,"value":1475},{"type":47,"value":1510}," Superpowers created this worktree — we own cleanup.",{"type":42,"tag":105,"props":1512,"children":1514},{"className":107,"code":1513,"language":109,"meta":110,"style":110},"MAIN_ROOT=$(git -C \"$(git rev-parse --git-common-dir)\u002F..\" rev-parse --show-toplevel)\ncd \"$MAIN_ROOT\"\ngit worktree remove \"$WORKTREE_PATH\"\ngit worktree prune  # Self-healing: clean up any stale registrations\n",[1515],{"type":42,"tag":113,"props":1516,"children":1517},{"__ignoreMap":110},[1518,1573,1592,1622],{"type":42,"tag":117,"props":1519,"children":1520},{"class":119,"line":120},[1521,1525,1529,1533,1537,1541,1545,1549,1553,1557,1561,1565,1569],{"type":42,"tag":117,"props":1522,"children":1523},{"style":244},[1524],{"type":47,"value":647},{"type":42,"tag":117,"props":1526,"children":1527},{"style":250},[1528],{"type":47,"value":253},{"type":42,"tag":117,"props":1530,"children":1531},{"style":134},[1532],{"type":47,"value":14},{"type":42,"tag":117,"props":1534,"children":1535},{"style":140},[1536],{"type":47,"value":660},{"type":42,"tag":117,"props":1538,"children":1539},{"style":250},[1540],{"type":47,"value":264},{"type":42,"tag":117,"props":1542,"children":1543},{"style":134},[1544],{"type":47,"value":14},{"type":42,"tag":117,"props":1546,"children":1547},{"style":140},[1548],{"type":47,"value":337},{"type":42,"tag":117,"props":1550,"children":1551},{"style":250},[1552],{"type":47,"value":677},{"type":42,"tag":117,"props":1554,"children":1555},{"style":140},[1556],{"type":47,"value":682},{"type":42,"tag":117,"props":1558,"children":1559},{"style":250},[1560],{"type":47,"value":687},{"type":42,"tag":117,"props":1562,"children":1563},{"style":140},[1564],{"type":47,"value":692},{"type":42,"tag":117,"props":1566,"children":1567},{"style":140},[1568],{"type":47,"value":697},{"type":42,"tag":117,"props":1570,"children":1571},{"style":250},[1572],{"type":47,"value":308},{"type":42,"tag":117,"props":1574,"children":1575},{"class":119,"line":130},[1576,1580,1584,1588],{"type":42,"tag":117,"props":1577,"children":1578},{"style":256},[1579],{"type":47,"value":259},{"type":42,"tag":117,"props":1581,"children":1582},{"style":250},[1583],{"type":47,"value":714},{"type":42,"tag":117,"props":1585,"children":1586},{"style":244},[1587],{"type":47,"value":719},{"type":42,"tag":117,"props":1589,"children":1590},{"style":250},[1591],{"type":47,"value":724},{"type":42,"tag":117,"props":1593,"children":1594},{"class":119,"line":704},[1595,1599,1604,1609,1613,1618],{"type":42,"tag":117,"props":1596,"children":1597},{"style":134},[1598],{"type":47,"value":14},{"type":42,"tag":117,"props":1600,"children":1601},{"style":140},[1602],{"type":47,"value":1603}," worktree",{"type":42,"tag":117,"props":1605,"children":1606},{"style":140},[1607],{"type":47,"value":1608}," remove",{"type":42,"tag":117,"props":1610,"children":1611},{"style":250},[1612],{"type":47,"value":714},{"type":42,"tag":117,"props":1614,"children":1615},{"style":244},[1616],{"type":47,"value":1617},"$WORKTREE_PATH",{"type":42,"tag":117,"props":1619,"children":1620},{"style":250},[1621],{"type":47,"value":724},{"type":42,"tag":117,"props":1623,"children":1624},{"class":119,"line":727},[1625,1629,1633,1638],{"type":42,"tag":117,"props":1626,"children":1627},{"style":134},[1628],{"type":47,"value":14},{"type":42,"tag":117,"props":1630,"children":1631},{"style":140},[1632],{"type":47,"value":1603},{"type":42,"tag":117,"props":1634,"children":1635},{"style":140},[1636],{"type":47,"value":1637}," prune",{"type":42,"tag":117,"props":1639,"children":1640},{"style":124},[1641],{"type":47,"value":1642},"  # Self-healing: clean up any stale registrations\n",{"type":42,"tag":57,"props":1644,"children":1645},{},[1646,1651],{"type":42,"tag":66,"props":1647,"children":1648},{},[1649],{"type":47,"value":1650},"Otherwise:",{"type":47,"value":1652}," The host environment (harness) owns this workspace. Do NOT remove it. If your platform provides a workspace-exit tool, use it. Otherwise, leave the workspace in place.",{"type":42,"tag":50,"props":1654,"children":1656},{"id":1655},"quick-reference",[1657],{"type":47,"value":1658},"Quick Reference",{"type":42,"tag":372,"props":1660,"children":1661},{},[1662,1693],{"type":42,"tag":376,"props":1663,"children":1664},{},[1665],{"type":42,"tag":380,"props":1666,"children":1667},{},[1668,1673,1678,1683,1688],{"type":42,"tag":384,"props":1669,"children":1670},{},[1671],{"type":47,"value":1672},"Option",{"type":42,"tag":384,"props":1674,"children":1675},{},[1676],{"type":47,"value":1677},"Merge",{"type":42,"tag":384,"props":1679,"children":1680},{},[1681],{"type":47,"value":1682},"Push",{"type":42,"tag":384,"props":1684,"children":1685},{},[1686],{"type":47,"value":1687},"Keep Worktree",{"type":42,"tag":384,"props":1689,"children":1690},{},[1691],{"type":47,"value":1692},"Cleanup Branch",{"type":42,"tag":400,"props":1694,"children":1695},{},[1696,1722,1746,1770],{"type":42,"tag":380,"props":1697,"children":1698},{},[1699,1704,1709,1714,1718],{"type":42,"tag":407,"props":1700,"children":1701},{},[1702],{"type":47,"value":1703},"1. Merge locally",{"type":42,"tag":407,"props":1705,"children":1706},{},[1707],{"type":47,"value":1708},"yes",{"type":42,"tag":407,"props":1710,"children":1711},{},[1712],{"type":47,"value":1713},"-",{"type":42,"tag":407,"props":1715,"children":1716},{},[1717],{"type":47,"value":1713},{"type":42,"tag":407,"props":1719,"children":1720},{},[1721],{"type":47,"value":1708},{"type":42,"tag":380,"props":1723,"children":1724},{},[1725,1730,1734,1738,1742],{"type":42,"tag":407,"props":1726,"children":1727},{},[1728],{"type":47,"value":1729},"2. Create PR",{"type":42,"tag":407,"props":1731,"children":1732},{},[1733],{"type":47,"value":1713},{"type":42,"tag":407,"props":1735,"children":1736},{},[1737],{"type":47,"value":1708},{"type":42,"tag":407,"props":1739,"children":1740},{},[1741],{"type":47,"value":1708},{"type":42,"tag":407,"props":1743,"children":1744},{},[1745],{"type":47,"value":1713},{"type":42,"tag":380,"props":1747,"children":1748},{},[1749,1754,1758,1762,1766],{"type":42,"tag":407,"props":1750,"children":1751},{},[1752],{"type":47,"value":1753},"3. Keep as-is",{"type":42,"tag":407,"props":1755,"children":1756},{},[1757],{"type":47,"value":1713},{"type":42,"tag":407,"props":1759,"children":1760},{},[1761],{"type":47,"value":1713},{"type":42,"tag":407,"props":1763,"children":1764},{},[1765],{"type":47,"value":1708},{"type":42,"tag":407,"props":1767,"children":1768},{},[1769],{"type":47,"value":1713},{"type":42,"tag":380,"props":1771,"children":1772},{},[1773,1778,1782,1786,1790],{"type":42,"tag":407,"props":1774,"children":1775},{},[1776],{"type":47,"value":1777},"4. Discard",{"type":42,"tag":407,"props":1779,"children":1780},{},[1781],{"type":47,"value":1713},{"type":42,"tag":407,"props":1783,"children":1784},{},[1785],{"type":47,"value":1713},{"type":42,"tag":407,"props":1787,"children":1788},{},[1789],{"type":47,"value":1713},{"type":42,"tag":407,"props":1791,"children":1792},{},[1793],{"type":47,"value":1794},"yes (force)",{"type":42,"tag":50,"props":1796,"children":1798},{"id":1797},"common-mistakes",[1799],{"type":47,"value":1800},"Common Mistakes",{"type":42,"tag":57,"props":1802,"children":1803},{},[1804],{"type":42,"tag":66,"props":1805,"children":1806},{},[1807],{"type":47,"value":1808},"Skipping test verification",{"type":42,"tag":1810,"props":1811,"children":1812},"ul",{},[1813,1824],{"type":42,"tag":1814,"props":1815,"children":1816},"li",{},[1817,1822],{"type":42,"tag":66,"props":1818,"children":1819},{},[1820],{"type":47,"value":1821},"Problem:",{"type":47,"value":1823}," Merge broken code, create failing PR",{"type":42,"tag":1814,"props":1825,"children":1826},{},[1827,1832],{"type":42,"tag":66,"props":1828,"children":1829},{},[1830],{"type":47,"value":1831},"Fix:",{"type":47,"value":1833}," Always verify tests before offering options",{"type":42,"tag":57,"props":1835,"children":1836},{},[1837],{"type":42,"tag":66,"props":1838,"children":1839},{},[1840],{"type":47,"value":1841},"Open-ended questions",{"type":42,"tag":1810,"props":1843,"children":1844},{},[1845,1854],{"type":42,"tag":1814,"props":1846,"children":1847},{},[1848,1852],{"type":42,"tag":66,"props":1849,"children":1850},{},[1851],{"type":47,"value":1821},{"type":47,"value":1853}," \"What should I do next?\" is ambiguous",{"type":42,"tag":1814,"props":1855,"children":1856},{},[1857,1861],{"type":42,"tag":66,"props":1858,"children":1859},{},[1860],{"type":47,"value":1831},{"type":47,"value":1862}," Present exactly 4 structured options (or 3 for detached HEAD)",{"type":42,"tag":57,"props":1864,"children":1865},{},[1866],{"type":42,"tag":66,"props":1867,"children":1868},{},[1869],{"type":47,"value":1870},"Cleaning up worktree for Option 2",{"type":42,"tag":1810,"props":1872,"children":1873},{},[1874,1883],{"type":42,"tag":1814,"props":1875,"children":1876},{},[1877,1881],{"type":42,"tag":66,"props":1878,"children":1879},{},[1880],{"type":47,"value":1821},{"type":47,"value":1882}," Remove worktree user needs for PR iteration",{"type":42,"tag":1814,"props":1884,"children":1885},{},[1886,1890],{"type":42,"tag":66,"props":1887,"children":1888},{},[1889],{"type":47,"value":1831},{"type":47,"value":1891}," Only cleanup for Options 1 and 4",{"type":42,"tag":57,"props":1893,"children":1894},{},[1895],{"type":42,"tag":66,"props":1896,"children":1897},{},[1898],{"type":47,"value":1899},"Deleting branch before removing worktree",{"type":42,"tag":1810,"props":1901,"children":1902},{},[1903,1920],{"type":42,"tag":1814,"props":1904,"children":1905},{},[1906,1910,1912,1918],{"type":42,"tag":66,"props":1907,"children":1908},{},[1909],{"type":47,"value":1821},{"type":47,"value":1911}," ",{"type":42,"tag":113,"props":1913,"children":1915},{"className":1914},[],[1916],{"type":47,"value":1917},"git branch -d",{"type":47,"value":1919}," fails because worktree still references the branch",{"type":42,"tag":1814,"props":1921,"children":1922},{},[1923,1927],{"type":42,"tag":66,"props":1924,"children":1925},{},[1926],{"type":47,"value":1831},{"type":47,"value":1928}," Merge first, remove worktree, then delete branch",{"type":42,"tag":57,"props":1930,"children":1931},{},[1932],{"type":42,"tag":66,"props":1933,"children":1934},{},[1935],{"type":47,"value":1936},"Running git worktree remove from inside the worktree",{"type":42,"tag":1810,"props":1938,"children":1939},{},[1940,1949],{"type":42,"tag":1814,"props":1941,"children":1942},{},[1943,1947],{"type":42,"tag":66,"props":1944,"children":1945},{},[1946],{"type":47,"value":1821},{"type":47,"value":1948}," Command fails silently when CWD is inside the worktree being removed",{"type":42,"tag":1814,"props":1950,"children":1951},{},[1952,1956,1958,1963,1965],{"type":42,"tag":66,"props":1953,"children":1954},{},[1955],{"type":47,"value":1831},{"type":47,"value":1957}," Always ",{"type":42,"tag":113,"props":1959,"children":1961},{"className":1960},[],[1962],{"type":47,"value":259},{"type":47,"value":1964}," to main repo root before ",{"type":42,"tag":113,"props":1966,"children":1968},{"className":1967},[],[1969],{"type":47,"value":1970},"git worktree remove",{"type":42,"tag":57,"props":1972,"children":1973},{},[1974],{"type":42,"tag":66,"props":1975,"children":1976},{},[1977],{"type":47,"value":1978},"Cleaning up harness-owned worktrees",{"type":42,"tag":1810,"props":1980,"children":1981},{},[1982,1991],{"type":42,"tag":1814,"props":1983,"children":1984},{},[1985,1989],{"type":42,"tag":66,"props":1986,"children":1987},{},[1988],{"type":47,"value":1821},{"type":47,"value":1990}," Removing a worktree the harness created causes phantom state",{"type":42,"tag":1814,"props":1992,"children":1993},{},[1994,1998,2000,2005,2006,2011,2012],{"type":42,"tag":66,"props":1995,"children":1996},{},[1997],{"type":47,"value":1831},{"type":47,"value":1999}," Only clean up worktrees under ",{"type":42,"tag":113,"props":2001,"children":2003},{"className":2002},[],[2004],{"type":47,"value":1491},{"type":47,"value":1493},{"type":42,"tag":113,"props":2007,"children":2009},{"className":2008},[],[2010],{"type":47,"value":1499},{"type":47,"value":1501},{"type":42,"tag":113,"props":2013,"children":2015},{"className":2014},[],[2016],{"type":47,"value":1507},{"type":42,"tag":57,"props":2018,"children":2019},{},[2020],{"type":42,"tag":66,"props":2021,"children":2022},{},[2023],{"type":47,"value":2024},"No confirmation for discard",{"type":42,"tag":1810,"props":2026,"children":2027},{},[2028,2037],{"type":42,"tag":1814,"props":2029,"children":2030},{},[2031,2035],{"type":42,"tag":66,"props":2032,"children":2033},{},[2034],{"type":47,"value":1821},{"type":47,"value":2036}," Accidentally delete work",{"type":42,"tag":1814,"props":2038,"children":2039},{},[2040,2044],{"type":42,"tag":66,"props":2041,"children":2042},{},[2043],{"type":47,"value":1831},{"type":47,"value":2045}," Require typed \"discard\" confirmation",{"type":42,"tag":50,"props":2047,"children":2049},{"id":2048},"red-flags",[2050],{"type":47,"value":2051},"Red Flags",{"type":42,"tag":57,"props":2053,"children":2054},{},[2055],{"type":42,"tag":66,"props":2056,"children":2057},{},[2058],{"type":47,"value":2059},"Never:",{"type":42,"tag":1810,"props":2061,"children":2062},{},[2063,2068,2073,2078,2083,2088,2093],{"type":42,"tag":1814,"props":2064,"children":2065},{},[2066],{"type":47,"value":2067},"Proceed with failing tests",{"type":42,"tag":1814,"props":2069,"children":2070},{},[2071],{"type":47,"value":2072},"Merge without verifying tests on result",{"type":42,"tag":1814,"props":2074,"children":2075},{},[2076],{"type":47,"value":2077},"Delete work without confirmation",{"type":42,"tag":1814,"props":2079,"children":2080},{},[2081],{"type":47,"value":2082},"Force-push without explicit request",{"type":42,"tag":1814,"props":2084,"children":2085},{},[2086],{"type":47,"value":2087},"Remove a worktree before confirming merge success",{"type":42,"tag":1814,"props":2089,"children":2090},{},[2091],{"type":47,"value":2092},"Clean up worktrees you didn't create (provenance check)",{"type":42,"tag":1814,"props":2094,"children":2095},{},[2096,2098,2103],{"type":47,"value":2097},"Run ",{"type":42,"tag":113,"props":2099,"children":2101},{"className":2100},[],[2102],{"type":47,"value":1970},{"type":47,"value":2104}," from inside the worktree",{"type":42,"tag":57,"props":2106,"children":2107},{},[2108],{"type":42,"tag":66,"props":2109,"children":2110},{},[2111],{"type":47,"value":2112},"Always:",{"type":42,"tag":1810,"props":2114,"children":2115},{},[2116,2121,2126,2131,2136,2141,2151],{"type":42,"tag":1814,"props":2117,"children":2118},{},[2119],{"type":47,"value":2120},"Verify tests before offering options",{"type":42,"tag":1814,"props":2122,"children":2123},{},[2124],{"type":47,"value":2125},"Detect environment before presenting menu",{"type":42,"tag":1814,"props":2127,"children":2128},{},[2129],{"type":47,"value":2130},"Present exactly 4 options (or 3 for detached HEAD)",{"type":42,"tag":1814,"props":2132,"children":2133},{},[2134],{"type":47,"value":2135},"Get typed confirmation for Option 4",{"type":42,"tag":1814,"props":2137,"children":2138},{},[2139],{"type":47,"value":2140},"Clean up worktree for Options 1 & 4 only",{"type":42,"tag":1814,"props":2142,"children":2143},{},[2144,2149],{"type":42,"tag":113,"props":2145,"children":2147},{"className":2146},[],[2148],{"type":47,"value":259},{"type":47,"value":2150}," to main repo root before worktree removal",{"type":42,"tag":1814,"props":2152,"children":2153},{},[2154,2155,2161],{"type":47,"value":2097},{"type":42,"tag":113,"props":2156,"children":2158},{"className":2157},[],[2159],{"type":47,"value":2160},"git worktree prune",{"type":47,"value":2162}," after removal",{"type":42,"tag":2164,"props":2165,"children":2166},"style",{},[2167],{"type":47,"value":2168},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2170,"total":2292},[2171,2190,2206,2218,2238,2260,2280],{"slug":2172,"name":2172,"fn":2173,"description":2174,"org":2175,"tags":2176,"stars":25,"repoUrl":26,"updatedAt":2189},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2177,2180,2183,2186],{"name":2178,"slug":2179,"type":15},"Accessibility","accessibility",{"name":2181,"slug":2182,"type":15},"Charts","charts",{"name":2184,"slug":2185,"type":15},"Data Visualization","data-visualization",{"name":2187,"slug":2188,"type":15},"Design","design","2026-06-30T19:00:57.102",{"slug":2191,"name":2191,"fn":2192,"description":2193,"org":2194,"tags":2195,"stars":25,"repoUrl":26,"updatedAt":2205},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2196,2199,2202],{"name":2197,"slug":2198,"type":15},"Agents","agents",{"name":2200,"slug":2201,"type":15},"Browser Automation","browser-automation",{"name":2203,"slug":2204,"type":15},"Testing","testing","2026-04-06T18:41:03.44016",{"slug":2207,"name":2207,"fn":2208,"description":2209,"org":2210,"tags":2211,"stars":25,"repoUrl":26,"updatedAt":2217},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2212,2213,2216],{"name":2200,"slug":2201,"type":15},{"name":2214,"slug":2215,"type":15},"Local Development","local-development",{"name":2203,"slug":2204,"type":15},"2026-04-06T18:41:17.526867",{"slug":2219,"name":2219,"fn":2220,"description":2221,"org":2222,"tags":2223,"stars":25,"repoUrl":26,"updatedAt":2237},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2224,2225,2228,2231,2234],{"name":2197,"slug":2198,"type":15},{"name":2226,"slug":2227,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":2229,"slug":2230,"type":15},"SDK","sdk",{"name":2232,"slug":2233,"type":15},"Serverless","serverless",{"name":2235,"slug":2236,"type":15},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":2239,"name":2239,"fn":2240,"description":2241,"org":2242,"tags":2243,"stars":25,"repoUrl":26,"updatedAt":2259},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2244,2247,2250,2253,2256],{"name":2245,"slug":2246,"type":15},"Frontend","frontend",{"name":2248,"slug":2249,"type":15},"React","react",{"name":2251,"slug":2252,"type":15},"shadcn\u002Fui","shadcn-ui",{"name":2254,"slug":2255,"type":15},"UI Components","ui-components",{"name":2257,"slug":2258,"type":15},"Vercel","vercel","2026-04-06T18:40:59.619419",{"slug":2261,"name":2261,"fn":2262,"description":2263,"org":2264,"tags":2265,"stars":25,"repoUrl":26,"updatedAt":2279},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2266,2269,2272,2275,2278],{"name":2267,"slug":2268,"type":15},"AI Infrastructure","ai-infrastructure",{"name":2270,"slug":2271,"type":15},"Cost Optimization","cost-optimization",{"name":2273,"slug":2274,"type":15},"LLM","llm",{"name":2276,"slug":2277,"type":15},"Performance","performance",{"name":2257,"slug":2258,"type":15},"2026-04-06T18:40:44.377464",{"slug":2281,"name":2281,"fn":2282,"description":2283,"org":2284,"tags":2285,"stars":25,"repoUrl":26,"updatedAt":2291},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2286,2287,2290],{"name":2270,"slug":2271,"type":15},{"name":2288,"slug":2289,"type":15},"Database","database",{"name":2273,"slug":2274,"type":15},"2026-04-06T18:41:08.513425",600,{"items":2294,"total":2491},[2295,2316,2339,2356,2372,2389,2408,2420,2434,2448,2460,2475],{"slug":2296,"name":2296,"fn":2297,"description":2298,"org":2299,"tags":2300,"stars":2313,"repoUrl":2314,"updatedAt":2315},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2301,2304,2307,2310],{"name":2302,"slug":2303,"type":15},"Documents","documents",{"name":2305,"slug":2306,"type":15},"Healthcare","healthcare",{"name":2308,"slug":2309,"type":15},"Insurance","insurance",{"name":2311,"slug":2312,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":2317,"name":2317,"fn":2318,"description":2319,"org":2320,"tags":2321,"stars":2336,"repoUrl":2337,"updatedAt":2338},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2322,2325,2327,2330,2333],{"name":2323,"slug":2324,"type":15},".NET","dotnet",{"name":2326,"slug":2317,"type":15},"ASP.NET Core",{"name":2328,"slug":2329,"type":15},"Blazor","blazor",{"name":2331,"slug":2332,"type":15},"C#","csharp",{"name":2334,"slug":2335,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":2340,"name":2340,"fn":2341,"description":2342,"org":2343,"tags":2344,"stars":2336,"repoUrl":2337,"updatedAt":2355},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2345,2348,2351,2354],{"name":2346,"slug":2347,"type":15},"Apps SDK","apps-sdk",{"name":2349,"slug":2350,"type":15},"ChatGPT","chatgpt",{"name":2352,"slug":2353,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":2357,"name":2357,"fn":2358,"description":2359,"org":2360,"tags":2361,"stars":2336,"repoUrl":2337,"updatedAt":2371},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2362,2365,2368],{"name":2363,"slug":2364,"type":15},"API Development","api-development",{"name":2366,"slug":2367,"type":15},"CLI","cli",{"name":2369,"slug":2370,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":2373,"name":2373,"fn":2374,"description":2375,"org":2376,"tags":2377,"stars":2336,"repoUrl":2337,"updatedAt":2388},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2378,2381,2384,2385],{"name":2379,"slug":2380,"type":15},"Cloudflare","cloudflare",{"name":2382,"slug":2383,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":2226,"slug":2227,"type":15},{"name":2386,"slug":2387,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":2390,"name":2390,"fn":2391,"description":2392,"org":2393,"tags":2394,"stars":2336,"repoUrl":2337,"updatedAt":2407},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2395,2398,2401,2404],{"name":2396,"slug":2397,"type":15},"Productivity","productivity",{"name":2399,"slug":2400,"type":15},"Project Management","project-management",{"name":2402,"slug":2403,"type":15},"Strategy","strategy",{"name":2405,"slug":2406,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":2409,"name":2409,"fn":2410,"description":2411,"org":2412,"tags":2413,"stars":2336,"repoUrl":2337,"updatedAt":2419},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2414,2415,2417,2418],{"name":2187,"slug":2188,"type":15},{"name":2416,"slug":2409,"type":15},"Figma",{"name":2245,"slug":2246,"type":15},{"name":2352,"slug":2353,"type":15},"2026-04-12T05:06:47.939943",{"slug":2421,"name":2421,"fn":2422,"description":2423,"org":2424,"tags":2425,"stars":2336,"repoUrl":2337,"updatedAt":2433},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2426,2427,2430,2431,2432],{"name":2187,"slug":2188,"type":15},{"name":2428,"slug":2429,"type":15},"Design System","design-system",{"name":2416,"slug":2409,"type":15},{"name":2245,"slug":2246,"type":15},{"name":2254,"slug":2255,"type":15},"2026-05-10T05:59:52.971881",{"slug":2435,"name":2435,"fn":2436,"description":2437,"org":2438,"tags":2439,"stars":2336,"repoUrl":2337,"updatedAt":2447},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2440,2441,2442,2445,2446],{"name":2187,"slug":2188,"type":15},{"name":2428,"slug":2429,"type":15},{"name":2443,"slug":2444,"type":15},"Documentation","documentation",{"name":2416,"slug":2409,"type":15},{"name":2245,"slug":2246,"type":15},"2026-05-16T06:07:47.821474",{"slug":2449,"name":2449,"fn":2450,"description":2451,"org":2452,"tags":2453,"stars":2336,"repoUrl":2337,"updatedAt":2459},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2454,2455,2456,2457,2458],{"name":2187,"slug":2188,"type":15},{"name":2416,"slug":2409,"type":15},{"name":2245,"slug":2246,"type":15},{"name":2254,"slug":2255,"type":15},{"name":2334,"slug":2335,"type":15},"2026-05-16T06:07:40.583615",{"slug":2461,"name":2461,"fn":2462,"description":2463,"org":2464,"tags":2465,"stars":2336,"repoUrl":2337,"updatedAt":2474},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2466,2469,2470,2473],{"name":2467,"slug":2468,"type":15},"Animation","animation",{"name":2369,"slug":2370,"type":15},{"name":2471,"slug":2472,"type":15},"Creative","creative",{"name":2187,"slug":2188,"type":15},"2026-05-02T05:31:48.48485",{"slug":2476,"name":2476,"fn":2477,"description":2478,"org":2479,"tags":2480,"stars":2336,"repoUrl":2337,"updatedAt":2490},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2481,2482,2483,2486,2489],{"name":2471,"slug":2472,"type":15},{"name":2187,"slug":2188,"type":15},{"name":2484,"slug":2485,"type":15},"Image Generation","image-generation",{"name":2487,"slug":2488,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675]