← Back to Skills Marketplace
wpank

Finishing Branch

by wpank · GitHub ↗ · v0.1.0
cross-platform ⚠ suspicious
867
Downloads
0
Stars
1
Active Installs
1
Versions
Install in OpenClaw
/install finishing-branch
Description
Complete development work by presenting structured options for merge, PR, or cleanup. Use when implementation is complete, all tests pass, and you need to decide how to integrate work. Triggers on finish branch, complete branch, merge branch, create PR, done with feature, implementation complete.
README (SKILL.md)

Finishing a Development Branch

Complete development work by presenting clear options and executing the chosen workflow.

WHAT This Skill Does

After implementation is complete, guides you through verifying tests, presenting integration options, and executing the chosen path (merge, PR, keep, or discard).

WHEN To Use

  • Implementation is complete
  • All tests pass
  • Ready to integrate work into the main branch

KEYWORDS: finish branch, complete branch, merge, PR, done with feature


The Process

Step 1: Verify Tests

npm test / cargo test / pytest / go test ./...

If tests fail: Stop. Cannot proceed until tests pass.

Tests failing (N failures). Must fix before completing:
[Show failures]

If tests pass: Continue to Step 2.

Step 2: Determine Base Branch

git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null

Or confirm: "This branch split from main - is that correct?"

Step 3: Present Options

Present exactly these 4 options:

Implementation complete. What would you like to do?

1. Merge back to \x3Cbase-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?

Step 4: Execute Choice

Option 1: Merge Locally

git checkout \x3Cbase-branch>
git pull
git merge \x3Cfeature-branch>
\x3Crun tests again>
git branch -d \x3Cfeature-branch>

Then: Cleanup worktree (Step 5)

Option 2: Push and Create PR

git push -u origin \x3Cfeature-branch>

gh pr create --title "\x3Ctitle>" --body "$(cat \x3C\x3C'EOF'
## Summary
\x3C2-3 bullets of what changed>

## Test Plan
- [ ] \x3Cverification steps>
EOF
)"

Then: Cleanup worktree (Step 5)

Option 3: Keep As-Is

Report: "Keeping branch \x3Cname>. Worktree preserved at \x3Cpath>."

Do NOT cleanup worktree.

Option 4: Discard

Confirm first:

This will permanently delete:
- Branch \x3Cname>
- All commits: \x3Ccommit-list>
- Worktree at \x3Cpath>

Type 'discard' to confirm.

Wait for exact confirmation. If confirmed:

git checkout \x3Cbase-branch>
git branch -D \x3Cfeature-branch>

Then: Cleanup worktree (Step 5)

Step 5: Cleanup Worktree

For Options 1, 2, 4 only:

# Check if in worktree
git worktree list | grep $(git branch --show-current)

# If yes:
git worktree remove \x3Cworktree-path>

For Option 3: Keep worktree.


Quick Reference

Option Merge Push Keep Worktree Cleanup Branch
1. Merge locally - -
2. Create PR - -
3. Keep as-is - - -
4. Discard - - - ✓ (force)

NEVER

  • Proceed with failing tests
  • Merge without verifying tests on the result
  • Delete work without typed confirmation ("discard")
  • Force-push without explicit request
  • Skip presenting all 4 options
  • Automatically cleanup worktree for Options 2 or 3
  • Ask open-ended "What should I do next?" (use structured options)

Integration

Called by:

  • subagent-development (after all tasks complete)
  • executing-plans (after all batches complete)

Pairs with:

  • git-worktrees - Cleans up worktree created by that skill
Usage Guidance
What to check before installing or running this skill: - Expect to run this only in repos you trust and can afford to change: the scripts perform branch deletion and remote deletion (git push origin --delete). Always run with --dry-run first. - Ensure required binaries are present: git is mandatory; GitHub PR creation uses 'gh' (GitHub CLI) if you want the automated PR flow; test runners (npm, cargo, pytest, go, make, tox) are used if detected. The skill metadata does not list these, so verify your environment. - The README's 'npx add <github tree url>' looks incorrect — don't run untrusted install commands from there. Prefer copying files locally or reviewing code first. - Review the scripts (finish_branch.py, cleanup_branches.py) manually to confirm behavior, and run them in a safe branch or clone before using on important work. - Confirm you have the git remote permissions you expect (deleting remote branches requires push/delete rights). - If you want extra safety, require interactive confirmations or back up references (tags or temp branches) before allowing automatic cleanup. Confidence notes: I assessed source files and SKILL.md; there are no scan-findings flagged by the pre-scan, but the omission of declared runtime binaries and the odd README install example are the primary reasons for a 'suspicious' verdict. Additional context (author identity, signed releases, or an authoritative install path) would raise confidence toward benign.
Capability Analysis
Type: OpenClaw Skill Name: finishing-branch Version: 0.1.0 The skill's `SKILL.md` provides clear, structured instructions for managing Git branches, including explicit safety guards (e.g., 'NEVER Proceed with failing tests', 'NEVER Delete work without typed confirmation'). The Python scripts (`cleanup_branches.py`, `finish_branch.py`) primarily execute standard Git commands using `subprocess.run`. However, `scripts/finish_branch.py` uses `subprocess.run(runner, shell=True)` to execute project test commands (e.g., `npm test`). While the `runner` string itself is derived from hardcoded values, the underlying test command (e.g., `npm test`) can execute arbitrary code defined in project configuration files (like `package.json`). This use of `shell=True` introduces a shell injection vulnerability, allowing an attacker who controls the project's test configuration to execute arbitrary commands. This is a risky capability, classifying the skill as suspicious, though there is no clear evidence of intentional malicious exploitation by the skill's author.
Capability Assessment
Purpose & Capability
Name/description and included scripts (finish_branch.py, cleanup_branches.py) are coherent: they implement finishing/cleaning branches. However the skill declares no required binaries or env vars while the code and SKILL.md assume git is available and optionally rely on 'gh' (GitHub CLI), language-specific test runners (npm, cargo, pytest, go test, make, tox), and network access for pushing/deleting remote branches. The omission of these runtime dependencies is an inconsistency that could surprise users.
Instruction Scope
SKILL.md instructions and the Python scripts stay within the stated purpose: verifying tests, determining base branch, presenting options, merging/pushing/creating PRs, and cleaning up worktrees/branches. The skill performs destructive git operations (local branch deletion, remote delete via 'git push origin --delete', worktree removal) — this is expected for the stated task but worth noting because these actions can permanently delete commits/branches if misused. The SKILL.md requires typed confirmation for 'discard' and the scripts support dry-run modes.
Install Mechanism
No install spec is provided (instruction-only is lower-risk). README suggests an 'npx add' command with a GitHub tree URL (https://github.com/.../tree/...) which is not a standard package install URL and looks inaccurate/confusing. Installation instructions are purely copy-based. No archives or external installers are pulled by the skill itself.
Credentials
The skill requests no environment variables or credentials, which is appropriate for local git-based workflows. There is no indication of hidden credential access or external endpoint exfiltration in the code or SKILL.md.
Persistence & Privilege
Skill does not request 'always: true' and does not modify other skills or system-wide configuration. It executes transient git operations and prints cleanup commands; persistent privileges are not requested.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install finishing-branch
  3. After installation, invoke the skill by name or use /finishing-branch
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v0.1.0
finishing-branch 0.1.0 – Initial Release - Introduces skill for structured finishing of completed development branches. - Guides users to verify tests and select from four integration options: merge locally, create PR, keep branch, or discard work. - Ensures tests must pass before proceeding. - Provides clear confirmation for destructive actions like deletion. - Integrates worktree cleanup steps for relevant options. - Prevents open-ended prompts, always presenting exact choices.
Metadata
Slug finishing-branch
Version 0.1.0
License
All-time Installs 3
Active Installs 1
Total Versions 1
Frequently Asked Questions

What is Finishing Branch?

Complete development work by presenting structured options for merge, PR, or cleanup. Use when implementation is complete, all tests pass, and you need to decide how to integrate work. Triggers on finish branch, complete branch, merge branch, create PR, done with feature, implementation complete. It is an AI Agent Skill for Claude Code / OpenClaw, with 867 downloads so far.

How do I install Finishing Branch?

Run "/install finishing-branch" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Finishing Branch free?

Yes, Finishing Branch is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Finishing Branch support?

Finishing Branch is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Finishing Branch?

It is built and maintained by wpank (@wpank); the current version is v0.1.0.

💬 Comments