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. Presents exactly 4 options: merge locally, create PR, keep as-is, or discard. Do NOT use when tests are failing or work is incomplete - fix issues first before finishing the branch.
When implementation is complete and all tests pass, this skill guides finishing the development branch by presenting four structured options: merge locally, create PR, keep as-is, or discard. It verifies tests first, then handles the chosen workflow including branch cleanup and optional issue closing.
/plugin marketplace add jrc1883/popkit-claude/plugin install popkit-dev@popkit-claudeThis skill inherits all available tools. When active, it can use any tool Claude has access to.
OPTIMIZATION_SUMMARY.mdexamples/merge-workflow.mdexamples/next-action-example.mdGuide completion of development work by presenting clear options and handling chosen workflow.
Core principle: Verify tests → Present options → Execute choice → Clean up.
Announce at start: "I'm using the finishing-a-development-branch skill to complete this work."
Before presenting options, run project test suite:
npm test / cargo test / pytest / go test ./...
If tests fail: Show failures and stop. Cannot proceed until tests pass.
If tests pass: Continue to Step 2.
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?"
ALWAYS use AskUserQuestion - never present plain text numbered options:
Use AskUserQuestion tool with:
- question: "Implementation complete. What would you like to do?"
- header: "Complete"
- options:
- label: "Merge locally"
description: "Merge back to <base-branch> and clean up"
- label: "Create PR"
description: "Push and create a Pull Request for review"
- label: "Keep as-is"
description: "Keep the branch, I'll handle it later"
- label: "Discard"
description: "Delete this work permanently"
- multiSelect: false
See examples/merge-workflow.md for detailed implementation of each option.
| Option | Actions |
|---|---|
| Merge locally | Switch to base → Pull → Merge → Test → Delete branch → Cleanup worktree |
| Create PR | Push branch → Create PR with gh → Cleanup worktree |
| Keep as-is | Report preservation → Keep worktree |
| Discard | Confirm → Delete branch (force) → Cleanup worktree |
Worktree cleanup (Options 1, 2, 4 only):
git worktree list | grep $(git branch --show-current)
git worktree remove <worktree-path> # if found
Only when invoked via /popkit:dev work #N - skip for standalone use.
After merge (Option 1) or PR (Option 2):
Use AskUserQuestion tool with:
- question: "Work on issue #N complete. Close the issue?"
- header: "Close Issue"
- options:
- label: "Yes, close it"
description: "Mark issue as completed"
- label: "No, keep open"
description: "Issue needs more work or follow-up"
If "Yes": gh issue close <number> --comment "Completed via /popkit:dev work #<number>"
Check for parent epic reference in issue body:
gh issue view <number> --json body --jq '.body' | grep -oE '(Part of|Parent:?) #[0-9]+'
If all children closed → Prompt to close epic.
See examples/next-action-example.md for detailed flow.
Generate dynamic options by fetching prioritized issues, sorting by priority/phase, and presenting top 3 + "session capture and exit".
| Option | Merge | Push | Keep Worktree | Cleanup Branch | Close Prompt |
|---|---|---|---|---|---|
| Merge locally | ✓ | - | - | ✓ | ✓ (if issue) |
| Create PR | - | ✓ | ✓ | - | ✓ (if issue) |
| Keep as-is | - | - | ✓ | - | - |
| Discard | - | - | - | ✓ (force) | - |
Never:
Always:
Called by:
Pairs with:
Skipping test verification
Open-ended questions
Automatic worktree cleanup
No confirmation for discard
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.