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.
The Campfire review-sweep process — read-only area reviewers, one plan file per verified finding, a README.md that indexes them into parallel lanes, an EXECUTION.md orchestrator brief, and later the…
$ npx skills add pandulapeter/campfire --skill codebase-review -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pandulapeter/campfire codebase-review --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/pandulapeter/campfire.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/codebase-review .claude/skills/codebase-review && 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 "codebase-review" agent skill from https://github.com/pandulapeter/campfire/tree/master/.claude/skills/codebase-review into .claude/skills/codebase-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codebase-review", 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/pandulapeter/campfire/tree/master/.claude/skills/codebase-reviewType 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 pandulapeter/campfire --skill codebase-review -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pandulapeter/campfire codebase-review --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandulapeter/campfire.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/codebase-review .agents/skills/codebase-review && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "codebase-review" agent skill from https://github.com/pandulapeter/campfire/tree/master/.claude/skills/codebase-review into .agents/skills/codebase-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codebase-review", 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 pandulapeter/campfire --skill codebase-review -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pandulapeter/campfire codebase-review --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandulapeter/campfire.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/codebase-review .cursor/skills/codebase-review && 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 "codebase-review" agent skill from https://github.com/pandulapeter/campfire/tree/master/.claude/skills/codebase-review into .cursor/skills/codebase-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codebase-review", 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/pandulapeter/campfire.git --path .claude/skills/codebase-review--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 pandulapeter/campfire --skill codebase-review -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pandulapeter/campfire codebase-review --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandulapeter/campfire.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/codebase-review .gemini/skills/codebase-review && 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 "codebase-review" agent skill from https://github.com/pandulapeter/campfire/tree/master/.claude/skills/codebase-review into .gemini/skills/codebase-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codebase-review", 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 pandulapeter/campfire codebase-reviewInstalls 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 pandulapeter/campfire --skill codebase-review -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pandulapeter/campfire.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/codebase-review .github/skills/codebase-review && 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 "codebase-review" agent skill from https://github.com/pandulapeter/campfire/tree/master/.claude/skills/codebase-review into .github/skills/codebase-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codebase-review", 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 pandulapeter/campfire --skill codebase-review -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pandulapeter/campfire codebase-review --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pandulapeter/campfire.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/codebase-review .opencode/skills/codebase-review && 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 "codebase-review" agent skill from https://github.com/pandulapeter/campfire/tree/master/.claude/skills/codebase-review into .opencode/skills/codebase-review/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "codebase-review", 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.
codebase-reviewThe Campfire review-sweep process — read-only area reviewers, one plan file per verified finding, a README.md that indexes them into parallel lanes, an EXECUTION.md orchestrator brief, and later the…
Codebase Review is an agent skill from pandulapeter/campfire. The Campfire review-sweep process — read-only area reviewers, one plan file per verified finding, a README.md that indexes them into parallel lanes, an EXECUTION.md orchestrator brief, and later the execution itself (one worktree per lane, one one-line commit per fix, merged in a fixed lane order). Invoke this skill WHENEVER the user asks to review, audit or sweep the codebase (or an area, a platform, performance, stability, "before release/launch") and write plans, OR asks to execute, carry out or land the plans…
Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Git worktrees. The repository describes itself as: A cross-platform songbook and metronome with a built-in chordPro editor, setlists, transposition, PDF export, and Dropbox sync. The licence is MPL-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 94d4b7f. 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:
gitclaudeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use 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.
Codebase Review loads about 3.3k tokens when it runs. Until then it costs about 162 tokens; SKILL.md has 1,752 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 pandulapeter/campfire at commit 94d4b7f, republished under its MPL-2.0 licence (© pandulapeter). 1,752 words, ~3,275 tokens.
.claude/skills/codebase-review/SKILL.md (or your agent's skills folder).A sweep has two halves that happen in separate turns: the review writes plans and changes no code; the execution lands them, and only starts when the user says so. Never roll from one into the other.
MEMORY.md lists them). Do not re-review an area the last sweep found
solid, re-raise a finding that was rejected or disproven, or re-ask a decision the user already took — the notes
record all three.git rev-parse --short HEAD and the branch; every document names that commit. If the working tree has
uncommitted work, say so in the README and keep reviewers off those files' pending changes.Area reviewers in parallel — one Agent per area, all spawned in one message, each told: the commit, the
angle, its area's files, what earlier sweeps settled (so it skips them), and that it must not edit anything. Each
returns findings with file:line, the quoted code, a concrete failure scenario, severity, platforms, and a proposed
fix. Optionally one agent does a live run (a stress run of the app at scale, a throttled link)
and reports measurements.
Verify every finding against HEAD before it becomes a plan — a second pass (writer agents per lane, or you) re-reads the code, and where a pure function is involved, proves it with a throwaway test in the scratchpad or an untracked probe test that is deleted afterwards. A finding that does not hold goes to the README's "Dropped after verification" with one sentence why; it is never silently discarded. This proves the finding, not the fix — that is step 5.
Group into lanes: sets of plans whose files do not overlap, so each lane can run in its own worktree. Name
files shared between lanes (module CLAUDE.md files, strings.xml) and how each lane may touch them. Pick a
merge order: the lane others build on first, the lane that touches the most shared UI files last.
Write the plans (section 2).
Challenge every fix before reporting — verification proves a finding is real, not that its fix is right, and a plan's own tests share its blind spots, so they pass with the flaw in place. Once the plans exist, fresh read-only agents that did not write them (one per group of lanes, spawned in one message) try to break each fix:
CLAUDE.md, KDoc examples) and every
in-repo caller — a fix that is right for the reported scenario can break a documented one;Plans that change timing, threading, lifecycle or a public contract get the closest look; a mechanical fix pinned
by its test gets a quick read. Each plan comes back sound, amended (the challenger rewrites the plan and adds
**Challenged:** amended — <what changed> under its header) or dropped (moved to "Dropped after verification"
with why). The README records that the challenge ran and what it changed. Only then report to the user.
All in the plans folder, untracked until the user commits them.
One plan per finding, NN-what-the-fix-does.md (two-digit number, kebab-case title phrased as the fix):
# <The fix, as one sentence>
**Kind:** bug | performance | docs | … · **Severity:** high | medium | low · **Platforms:** all | …
**Files:** every file the fix may touch, tests and CLAUDE.md files included
## Problem what goes wrong, for whom, with the quoted code and file:line at the reviewed commit
## Fix exactly what to change; where there is a choice, the options and the recommended one
## Tests the unit test to add (pure logic only), or why none can be written
## Manual check what a person must do on a device, account or network to see it fixedA plan is self-contained: an agent that reads only it and the files it names can carry it out. Quote code rather than relying on line numbers alone, since earlier lanes move lines. A plan may say "drop this plan if …" when its premise needs checking at execution time.
README.md — the index and the record of decisions: the reviewed commit and the angle; Headlines (the few
that matter, data loss first); the Index table (number, title, severity, lane); the Lanes table (lane,
area, plans in execution order when that is not numeric, files owned) and the merge order with the reason; the
shared-file rules; Decisions — each open question with the recommended default, marked as awaiting the user;
Checked and found solid; Dropped after verification; any measurements; Manual checks owed.
EXECUTION.md — the brief for the orchestrating agent, which the user starts with "Follow
<plans folder>/EXECUTION.md." It restates section 4 below concretely for this sweep: preconditions, the lane
list with each lane's plan order, the subagent prompt with its placeholders filled in except the worktree path, the
verification commands, the merge order, and the finish.
Then, after the challenge (step 5), report to the user in a few lines: the headline findings, the number of plans per
lane, what the challenge amended or dropped, and the open decisions
— asked with AskUserQuestion, recommendation first. Record the answers in the README and in memory.
Write (or update) one project memory per sweep, <ordinal>-review.md: date, commit, angle, number of plans, lanes and
merge order, decisions taken, what is still open. Update it again when the plans land: the commit range, what was
skipped and why, and the manual checks still owed. Point the next sweep at it.
Preconditions — stop and tell the user if any fails: the tree is clean apart from the plans folder; the
challenge (section 1, step 5) has run on every plan; every open decision has an answer; the unit tests pass. Commit the plans first if they are untracked (Add the <nth> review plans.), then note START=$(git rev-parse HEAD).
Lanes — one detached worktree per lane next to the checkout, so no branch is created:
git worktree add --detach ../<Repo>-lane-<x> START. Spawn one general-purpose subagent per lane in a single
message, each confined to its worktree. Cap concurrent Gradle builds (see the last section); start the rest of the
lanes as earlier ones finish.
Per plan, in the lane's order (the subagent's procedure):
Read the plan and the files it names. Load code-style before the first edit.
Implement exactly the plan, taking the recommended option. Re-locate moved code by the quoted snippet. If the plan is wrong, impossible, or its own "drop this plan if" condition holds, do not improvise another fix: revert the working tree, leave the plan file, note why, move on.
Add the tests it asks for; update the CLAUDE.md files and strings it names.
Verify with the commands in the last section — the tests, and a compile of every platform the change touches. Manual checks that need a device, an account, a store or a network condition are skipped and reported.
git rm the plan file in the same commit as its fix.
Load commit-messages; commit with a single -m sentence — one fix, one commit, never two fixes folded or one
split. Then check the raw commit object and amend on the spot if it fails:
test "$(git cat-file commit HEAD | sed '1,/^$/d' | wc -l | tr -d ' ')" = "1" || echo "MORE THAN ONE LINE"
git log -1 --format=%B | grep -qiE 'co-authored|claude|session|generated' && echo "ATTRIBUTION"Never branch, merge, rebase, push, bump the version or dispatch a workflow from a lane.
Lane report: NN: <hash> "<message>" — verified: <commands>; skipped manual: <what, why>, then Not done: NN — <why>, then the final test result.
Merging, in the README's order, as lanes report: in the main checkout,
git cherry-pick START..<lane HEAD>. Resolve conflicts keeping both sides' intent — CLAUDE.md paragraphs and
strings.xml as a word-level three-way merge, every sentence and key from both sides kept, never one side's version
whole. Run the tests after each lane and the full build after the last; a break is fixed by one more commit
(Fix the iOS build after the storage changes.), never by rewriting landed commits. Then
git worktree remove ../<Repo>-lane-<x>.
Finish: plan files still present are the skipped ones — leave them, with the README trimmed to them, or ask the
user whether to delete the folder. Final checks: git log --format=%B START..HEAD | grep -ciE 'co-authored|claude|session|generated' prints 0, git log --oneline START..HEAD is one line per plan, git status
is clean and git worktree list shows only the checkout. Report the commit count, the skipped plans with reasons,
and the manual checks owed (copy them out of the README first, since the next step deletes it); update the memory.
Last step: when no plan file is left (only README.md and EXECUTION.md), delete the plans folder and commit it
as Remove the review plans. without asking. If skipped plans remain, the folder stays until the user decides.
Do not push.
documentation/issues/ (README.md, EXECUTION.md, NN-*.md). Branch: master.:chordpro; storage and sync (:data:*, SyncPlanner,
SyncEngine, Dropbox); :domain; :presentation; the platform shells, docs and CI (app/*, .github/)../gradlew :chordpro:desktopTest :domain:implementation:desktopTest :data:source:local:implementation:desktopTest :data:source:remote:api:desktopTest :data:source:remote:implementation:desktopTest :data:repository:implementation:desktopTest :presentation:desktopTest:<module>:compileKotlinDesktop (:app:desktop:compileKotlin for
:presentation and the apps); androidMain → :app:android:compileDebugKotlin; iosMain →
:app:ios:linkDebugFrameworkIosSimulatorArm64; wasmJsMain → :app:web:compileKotlinWasmJs; the packaged
desktop runtime → :app:desktop:createReleaseDistributable. Full build after the last lane:
./gradlew :app:android:assembleDebug :app:ios:linkDebugFrameworkIosSimulatorArm64 :app:web:wasmJsBrowserDistribution :app:desktop:packageDistributionForCurrentOS.DesktopSyncAuthenticatorTest holds port 53682, so rerun it alone before calling a lane red;
a corrupt incremental cache is retried with -Pkotlin.incremental=false.local.properties is not in a worktree; copy it in only for lanes whose manual check needs the Dropbox key.values/strings.xml and values-hu/strings.xml. A changed behaviour updates the module
CLAUDE.md and, where the root one describes it, the root CLAUDE.md.Stop a sync run that would empty the cloud folder, and ask which way to settle it. · Leave a bracket unchanged unless it is a whole chord name. · Add the <nth> review plans. ·
Remove the review plans.© pandulapeter, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/codebase-review of pandulapeter/campfire.
Open the folder on GitHubat commit 94d4b7f
Codebase Review 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 |
|---|---|---|---|---|---|---|
| Codebase Review this skillpandulapeter/campfire | 101 | — | ~3.3k | Automated safety check: Pass | MPL-2.0 | |
| Finishing a Development Branchobra/superpowers | 296k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Migrate Core Code to Submodulestinyhumansai/openhuman | 42k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Finishing A Development Branchfarm-fe/farm | 5.6k | 34 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Git Worktree Cleanuplobehub/lobehub | 83k | — | ~2.8k | Automated safety check: Pass | Custom licence | |
| Keep Codex Fastvibeforge1111/keep-codex-fast | 1.6k | — | ~3.1k | Automated safety check: Pass | MIT |
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.
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
farm-fe/farm
A skill your agent uses 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…
lobehub/lobehub
Audits stale Git worktrees and branches with a bundled script, classifies each one, and deletes only after you approve the exact candidates.
vibeforge1111/keep-codex-fast
A skill your agent uses when Codex feels slow or bloated, when local sessions/logs/worktrees/config have grown over time, or when a user wants safe maintenance for Codex Desktop/CLI state.
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.
pandulapeter/campfire
Code style, commenting, and documentation conventions for the Campfire codebase.
pandulapeter/campfire
Prepare a Campfire release by writing a paste-ready GitHub release-notes draft (with the stores' "what's new" blurb and Play's update priority embedded in it), updating the localized in-app update…
pandulapeter/campfire
Retake Campfire's promotional images for every platform and form factor — the store listings (Play Store, App Store, Mac App Store, Microsoft Store), the Play Store feature graphic, Apple's product…
pandulapeter/campfire
Commit message conventions for the Campfire repo. An agent skill from pandulapeter/campfire.
Categories
The Campfire review-sweep process — read-only area reviewers, one plan file per verified finding, a README.md that indexes them into parallel lanes, an EXECUTION.md orchestrator brief, and later the…. Codebase Review is an agent skill from pandulapeter/campfire.md orchestrator brief, and later the execution itself (one worktree per lane, one one-line commit per fix, merged in a fixed lane order).
Codebase Review fits situations like: sweep the codebase (or an area; before release/launch) and write plans; asks to execute; land the plans in documentation/issues/ (or follow EXECUTION.md).
Run `npx skills add pandulapeter/campfire --skill codebase-review -a claude-code`. Or copy the skill folder (.claude/skills/codebase-review in pandulapeter/campfire) into .claude/skills/codebase-review in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pandulapeter/campfire --skill codebase-review -a codex`. Or copy the skill folder (.claude/skills/codebase-review in pandulapeter/campfire) into .agents/skills/codebase-review 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 pandulapeter/campfire --skill codebase-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/codebase-review, .gemini/skills/codebase-review, .github/skills/codebase-review and .opencode/skills/codebase-review in your project.
Going by SKILL.md and its folder, Codebase Review needs the command-line tools its instructions call (git and claude).
SKILL.md contains no URLs. Its commands use 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.
Codebase Review is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k 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 Codebase Review: Finishing a Development Branch (obra/superpowers, 296k stars), Migrate Core Code to Submodules (tinyhumansai/openhuman, 42k stars), Finishing A Development Branch (farm-fe/farm, 5.6k stars) and Git Worktree Cleanup (lobehub/lobehub, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pandulapeter (a GitHub user) maintains it in pandulapeter/campfire, which has 101 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.
Source: pandulapeter/campfire on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.