Finishing a Development Branch
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
Make the merge/PR/keep/discard decision for a feature branch, verify coverage gates, create the PR with gh, and clean up the worktree.
$ npx skills add danielvm-git/bigpowers --skill release-branch -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install danielvm-git/bigpowers release-branch --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/danielvm-git/bigpowers.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/release-branch .claude/skills/release-branch && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "release-branch" agent skill from https://github.com/danielvm-git/bigpowers/tree/main/skills/release-branch into .claude/skills/release-branch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-branch", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/danielvm-git/bigpowers/tree/main/skills/release-branchType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add danielvm-git/bigpowers --skill release-branch -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install danielvm-git/bigpowers release-branch --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/danielvm-git/bigpowers.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/release-branch .agents/skills/release-branch && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release-branch" agent skill from https://github.com/danielvm-git/bigpowers/tree/main/skills/release-branch into .agents/skills/release-branch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-branch", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add danielvm-git/bigpowers --skill release-branch -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install danielvm-git/bigpowers release-branch --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/danielvm-git/bigpowers.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/release-branch .cursor/skills/release-branch && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "release-branch" agent skill from https://github.com/danielvm-git/bigpowers/tree/main/skills/release-branch into .cursor/skills/release-branch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-branch", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/danielvm-git/bigpowers.git --path skills/release-branch--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add danielvm-git/bigpowers --skill release-branch -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install danielvm-git/bigpowers release-branch --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/danielvm-git/bigpowers.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/release-branch .gemini/skills/release-branch && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "release-branch" agent skill from https://github.com/danielvm-git/bigpowers/tree/main/skills/release-branch into .gemini/skills/release-branch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-branch", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install danielvm-git/bigpowers release-branchInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add danielvm-git/bigpowers --skill release-branch -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/danielvm-git/bigpowers.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/release-branch .github/skills/release-branch && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "release-branch" agent skill from https://github.com/danielvm-git/bigpowers/tree/main/skills/release-branch into .github/skills/release-branch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-branch", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add danielvm-git/bigpowers --skill release-branch -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install danielvm-git/bigpowers release-branch --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/danielvm-git/bigpowers.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/release-branch .opencode/skills/release-branch && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "release-branch" agent skill from https://github.com/danielvm-git/bigpowers/tree/main/skills/release-branch into .opencode/skills/release-branch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release-branch", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
release-branchMake the merge/PR/keep/discard decision for a feature branch, verify coverage gates, create the PR with gh, and clean up the worktree.
Release Branch is an agent skill from danielvm-git/bigpowers. Make the merge/PR/keep/discard decision for a feature branch, verify coverage gates, create the PR with gh, and clean up the worktree. Use when a feature is done and ready to ship, or when user says "release", "merge", or "open a PR".
Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `REFERENCE.md`).
It sits in Development, covering Pull requests and Git worktrees. It works with Git. The repository describes itself as: Agent skills synthesizing years of software engineering discipline into a prescriptive methodology for solo developers. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 812d57a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bashghgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Release Branch loads about 1.5k tokens when it runs. Until then it costs about 62 tokens; SKILL.md has 515 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from danielvm-git/bigpowers at commit 812d57a, republished under its MIT licence (© danielvm-git). 515 words, ~1,454 tokens.
.claude/skills/release-branch/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.<!-- story: e38s07 -->
<!-- story: e45s15 -->
<!-- story: e45s32 -->
<!-- story: e45s39 -->
<!-- story: e82s02 -->
<!-- story: e20s02 -->
HARD GATE — Do NOT merge or release if tests fail or if coverage gates are not met. If the branch is red, return to
develop-tddto fix regressions or add missing tests before proceeding.
Finalize a completed feature branch: verify coverage gates, integrate onto main, and clean up the worktree.
--hotfix: Cherry-pick to main + tag. Skip PR in solo.--squash-state: Squash chore(state): commits before merge.Read specs/state.yaml key workflow_mode (team-pr | solo-git). Fall back to profiles/solo-git.md.
| Mode | When | Ship path |
|---|---|---|
| solo-local | workflow_mode: solo-git | Auto: scripts/land-branch.sh if present, else fallback (Step 5) |
| team-pr | workflow_mode: team-pr (default) | gh pr create → gh pr merge --squash |
If unsure, prefer solo-local. Also read state.yaml vcs.kind: Git follows the procedures below; Jujutsu uses workspaces/bookmarks and must not call Git-only landing scripts.
Timing:
bash scripts/bp-timing.sh start release-branchat invocation;bash scripts/bp-timing.sh end release-branchbefore handoff.
<full test command> && <typecheck command> && <lint command>
git log main...HEAD --oneline | grep -vE "^[a-f0-9]+ (feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+\))?!?: .+$" && echo "❌ Non-conventional commits found" || echo "✅ Commits verified"
# Block AI agent attribution (P1)
git log main...HEAD --format="%B" | grep -qiE 'co[- ]authored[- ]by' && echo "❌ Co-authored-by footer found — blocked" || echo "✅ No AI attribution"Co-authored-by or Co-Authored-By in any commit body — P1 rule (CONVENTIONS.md § Git Attribution). land-branch.sh blocks the merge if found.specs/security/REVIEW.md exists and is fresh (matches current branch diff)specs/security/EXCEPTIONS.md with sign-off rationale)If REVIEW.md is missing or stale → run security-review inline. Findings block the merge unless documented in EXCEPTIONS.md.
Run gate-trace before merge. FAIL blocks merge; CONCERNS requires explicit override in specs/state.yaml (traceability_override: CONCERNS accepted, reason: <explanation>). WAIVED if no matrix available.
Adversarial refute framing (e45s32): The final pre-merge check is refute, not rubber-stamp. Before declaring ready, actively try to disprove traceability completeness — missing story tags, absent verify evidence, stale security review. Only proceed when refutation fails.
Options: Release (solo-local) / Open PR / Keep branch / Discard
Run commit-message first. Git solo-local uses land-branch.sh. Jujutsu team mode explicitly advances and pushes a bookmark; -m is mandatory for commit/describe operations:
# Git solo-local
bash scripts/land-branch.sh <task-slug> "feat(scope): description"
# Jujutsu team PR
jj describe -m "feat(scope): description"
jj bookmark set <task-slug> -r @
jj git push -b <task-slug>Jujutsu solo-local landing is unsupported: run bp_require_vcs_operation "$PWD" land-branch and stop with its remediation instead of invoking the Git backend.
Create the pull request with a literal provenance marker in the body so agent-generated PRs are identifiable and do not rot silently:
<!-- bigpowers-provenance: agent-generated -->Place the marker on its own line immediately after the ## Summary heading. Then merge via gh:
gh pr create --title "..." --body "$(cat <<'EOF'
## Summary
<!-- bigpowers-provenance: agent-generated -->
- ...
## Test plan
- [ ] ...
EOF
)"
gh pr merge --squash --delete-branchsemantic-release auto-detects the commit, bumps SemVer, tags the repo, generates release notes.
HARD GATE — When all epic stories are done (all
doneinexecution-status.yaml), archive the capsule:
mv specs/epics/eNN-slug specs/epics/archive/HARD GATE — Do NOT declare success until CI completes. Three-independent-facts (e45s15): commit landed, workflow green, registry visible — see REFERENCE.md.
bash scripts/wait-for-ci.sh --timeout 600 --interval 30release.ci_verified: true in state.yamlhandoff.next_skill = fix-bugGit: prune worktree, delete branch, return to main. Jujutsu: jj workspace forget <workspace> only after integration; do not delete its bookmark implicitly. Cycle-time: see REFERENCE.md.
Report: "Branch released."
→ verify: command -v gh >/dev/null 2>&1 && test -f specs/state.yaml && test -d skills/verify-work
© danielvm-git, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/release-branch of danielvm-git/bigpowers.
Open the folder on GitHubat commit 812d57a
Release Branch next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release Branch this skilldanielvm-git/bigpowers | 257 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Pre-Release PR Triagejamiepine/voicebox | 57k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Cap Feature Building WorkflowCapSoftware/Cap | 23k | — | ~2.5k | Automated safety check: Warn | Custom licence | |
| Clean Complete Branchesjtenniswood/espcontrol | 1.1k | — | ~820 | Automated safety check: Pass | Custom licence | |
| BackportDependencyTrack/frontend | 172 | — | ~1.9k | Automated safety check: Notes | Apache-2.0 |
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
jamiepine/voicebox
Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.
CapSoftware/Cap
Builds a Cap feature in an isolated Git worktree with disposable dev resources, verification, a recorded demo and a neutral pull request, started with /building.
jtenniswood/espcontrol
Clean up completed Git branches and worktrees for this repository both locally and on GitHub.
DependencyTrack/frontend
Backports a merged pull request from main onto a patch-release branch, e.g.
swamp-club/swamp
Swamp CLI — create and run models, build and validate workflows, query and manage data, store and retrieve vault secrets, develop and publish extensions, initialize repos, run reports, file issues…
danielvm-git/bigpowers
Extract a Google DESIGN.md file from an HTML prototype (claude.ai/design or any styled page) using Puppeteer, producing machine-readable tokens and AI-generated prose.
danielvm-git/bigpowers
Build editorial/magazine/report webpages on a GENUINE Müller-Brockmann modular grid (International Typographic Style) — not a decorative one.
danielvm-git/bigpowers
Analyze the blast radius of a proposed change before any code is written.
danielvm-git/bigpowers
Self-review checklist for the coding agent to run before dispatching a reviewer.
danielvm-git/bigpowers
Evaluate an incoming project plan against bigpowers principles and conventions, surface gaps, and produce a READY/NOT READY verdict before engagement begins.
danielvm-git/bigpowers
Chain multiple bigpowers skills into a custom workflow recipe saved in specs/.
Works with
Categories
Make the merge/PR/keep/discard decision for a feature branch, verify coverage gates, create the PR with gh, and clean up the worktree. Release Branch is an agent skill from danielvm-git/bigpowers. Make the merge/PR/keep/discard decision for a feature branch, verify coverage gates, create the PR with gh, and clean up the worktree.
Release Branch fits situations like: A feature is done and ready to ship; user says release.
Run `npx skills add danielvm-git/bigpowers --skill release-branch -a claude-code`. Or copy the skill folder (skills/release-branch in danielvm-git/bigpowers) into .claude/skills/release-branch in your project. Claude Code loads it when a task matches its description.
Run `npx skills add danielvm-git/bigpowers --skill release-branch -a codex`. Or copy the skill folder (skills/release-branch in danielvm-git/bigpowers) into .agents/skills/release-branch in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add danielvm-git/bigpowers --skill release-branch -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release-branch, .gemini/skills/release-branch, .github/skills/release-branch and .opencode/skills/release-branch in your project.
Going by SKILL.md and its folder, Release Branch needs the command-line tools its instructions call (bash, gh and git).
SKILL.md contains no URLs. Its commands use gh and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Release Branch is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.5k tokens (SKILL.md is roughly 5.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Release Branch: Finishing a Development Branch (obra/superpowers, 296k stars), Pre-Release PR Triage (jamiepine/voicebox, 57k stars), Cap Feature Building Workflow (CapSoftware/Cap, 23k stars) and Clean Complete Branches (jtenniswood/espcontrol, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
danielvm-git (a GitHub user) maintains it in danielvm-git/bigpowers, which has 257 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on September 21, 2026.
Source: danielvm-git/bigpowers on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.