Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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
.claude/skills/ibrahim-3d-finishing-a-development-branch/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 202% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-18 | ✗→✓ | ▲ Improved | -21% | 0% |
| case-03 | ✓→✗ | ▼ Worse | 10% | 0% |
| case-07 | ✓→✗ | ▼ Worse | 106% | 0% |
Guide completion of development work by verifying quality and completing the branch workflow.
Core principle: Behavior depends on conductor/config.json → "mode":
"agentic": Auto-push branch and create PR — no user input needed."human-in-the-loop": Present 4 structured options and execute the user's choice.Announce at start: "I'm using the finishing-a-development-branch skill to complete this work."
Before presenting options, verify tests pass:
bash# Run project's test suite npm test / cargo test / pytest / go test ./...
If tests fail:
Tests failing (<N> failures). Must fix before completing:
[Show failures]
Cannot proceed with merge/PR until tests pass.Stop. Don't proceed to Step 2.
If tests pass: Continue to Step 2.
bash# Try common base branches git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
Or ask: "This branch split from main - is that correct?"
"agentic" mode — Auto-CompleteDo NOT ask the user which option to choose. Proceed automatically:
-u flagThen go to Step 5 (Cleanup Worktree).
"human-in-the-loop" mode — Present OptionsPresent exactly these 4 options:
Implementation complete. What would you like to do?
1. Merge back to <base-branch> locally
2. Push and create a Pull Request
3. Keep the branch as-is (I'll handle it later)
4. Discard this work
Which option?Don't add explanation - keep options concise.
bash# Switch to base branch git checkout <base-branch> # Pull latest git pull # Merge feature branch git merge <feature-branch> # Verify tests on merged result <test command> # If tests pass git branch -d <feature-branch>
Then: Cleanup worktree (Step 5)
bash# Push branch git push -u origin <feature-branch> # Create PR gh pr create --title "<title>" --body "$(cat <<'EOF' ## Summary <2-3 bullets of what changed> ## Test Plan - [ ] <verification steps> EOF )"
Then: Cleanup worktree (Step 5)
Report: "Keeping branch <name>. Worktree preserved at <path>."
Don't cleanup worktree.
Confirm first:
This will permanently delete:
- Branch <name>
- All commits: <commit-list>
- Worktree at <path>
Type 'discard' to confirm.Wait for exact confirmation.
If confirmed:
bashgit checkout <base-branch> git branch -D <feature-branch>
Then: Cleanup worktree (Step 5)
For Options 1, 2, 4:
Check if in worktree:
bashgit worktree list | grep_search $(git branch --show-current)
If yes:
bashgit worktree remove <worktree-path>
For Option 3: Keep worktree.
| Mode | Behavior | |------|----------| | "agentic" | Auto-push + create PR, no user input | | "human-in-the-loop" | Present 4 options, execute user's choice |
| Option | Merge | Push | Keep Worktree | Cleanup Branch | |--------|-------|------|---------------|----------------| | 1. Merge locally | ✓ | - | - | ✓ | | 2. Create PR | - | ✓ | ✓ | - | | 3. Keep as-is | - | - | ✓ | - | | 4. Discard | - | - | - | ✓ (force) |
Skipping test verification
Open-ended questions (human-in-the-loop mode)
Auto-completing without checking mode
conductor/config.json → "mode" before Step 3Automatic worktree cleanup
No confirmation for discard
Never:
Always:
"human-in-the-loop" mode: present exactly 4 options and get typed confirmation for Option 4"agentic" mode: auto-push and create PR, report URL to userCalled by:
Pairs with:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 4,391 | 7,412 | +69% | 1 | 1 | 0% | 532 | 1,743 | +228% | 0 | 0 | — |
case-02 | fail→fail | 8,501 | 3,410 | -60% | 1 | 1 | 0% | 1,426 | 1,812 | +27% | 0 | 0 | — |
case-03 | pass→fail | 13,193 | 3,390 | -74% | 1 | 1 | 0% | 1,635 | 1,801 | +10% | 0 | 0 | — |
case-04 | fail→fail | 5,172 | 4,417 | -15% | 1 | 1 | 0% | 237 | 1,909 | +705% | 0 | 0 | — |
case-05 | fail→fail | 4,491 | 6,116 | +36% | 1 | 1 | 0% | 719 | 2,566 | +257% | 0 | 0 | — |
case-06 | fail→fail | 4,684 | 3,361 | -28% | 1 | 1 | 0% | 799 | 1,849 | +131% | 0 | 0 | — |
case-07 | pass→fail | 5,202 | 2,729 | -48% | 1 | 1 | 0% | 839 | 1,729 | +106% | 0 | 0 | — |
case-08 | pass→pass | 4,750 | 3,115 | -34% | 1 | 1 | 0% | 717 | 1,730 | +141% | 0 | 0 | — |
case-09 | fail→pass | 4,059 | 2,408 | -41% | 1 | 1 | 0% | 621 | 1,874 | +202% | 0 | 0 | — |
case-10 | fail→fail | 3,562 | 2,627 | -26% | 1 | 1 | 0% | 550 | 1,713 | +211% | 0 | 0 | — |
case-11 | fail→fail | 7,937 | 3,080 | -61% | 1 | 1 | 0% | 1,501 | 1,702 | +13% | 0 | 0 | — |
case-12 | pass→pass | 6,102 | 2,965 | -51% | 1 | 1 | 0% | 1,120 | 1,896 | +69% | 0 | 0 | — |
case-13 | fail→fail | 5,258 | 2,766 | -47% | 1 | 1 | 0% | 270 | 1,699 | +529% | 0 | 0 | — |
case-14 | pass→fail | 7,806 | 2,382 | -69% | 1 | 1 | 0% | 1,282 | 1,843 | +44% | 0 | 0 | — |
case-15 | pass→fail | 6,815 | 2,624 | -61% | 1 | 1 | 0% | 1,092 | 1,810 | +66% | 0 | 0 | — |
case-16 | fail→pass | 7,137 | 2,352 | -67% | 1 | 1 | 0% | 1,241 | 1,841 | +48% | 0 | 0 | — |
case-17 | pass→pass | 7,641 | 1,785 | -77% | 1 | 1 | 0% | 1,282 | 1,683 | +31% | 0 | 0 | — |
case-18 | fail→pass | 12,397 | 1,418 | -89% | 1 | 1 | 0% | 2,013 | 1,600 | -21% | 0 | 0 | — |
case-19 | pass→pass | 8,207 | 3,045 | -63% | 1 | 1 | 0% | 1,306 | 1,896 | +45% | 0 | 0 | — |
case-20 | pass→fail | 4,588 | 6,092 | +33% | 1 | 1 | 0% | 726 | 1,704 | +135% | 0 | 0 | — |
case-21 | fail→fail | 2,745 | 5,882 | +114% | 1 | 1 | 0% | 330 | 1,678 | +408% | 0 | 0 | — |
case-22 | pass→fail | 4,071 | 5,979 | +47% | 1 | 1 | 0% | 755 | 1,794 | +138% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -20 percentage points is the difference between those two pass rates over the 17 comparable cases. 9 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.