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.
Settles a feasibility question with the smallest throwaway build that could disprove it, in an isolated worktree, ending in a verdict backed by evidence instead of a PR.
$ npx skills add Wirasm/prp --skill prp-spike -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Wirasm/prp prp-spike --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/Wirasm/prp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/prp-spike .claude/skills/prp-spike && 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 "prp-spike" agent skill from https://github.com/Wirasm/prp/tree/development/.agents/skills/prp-spike into .claude/skills/prp-spike/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prp-spike", 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/Wirasm/prp/tree/development/.agents/skills/prp-spikeType 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 Wirasm/prp --skill prp-spike -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Wirasm/prp prp-spike --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Wirasm/prp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/prp-spike .agents/skills/prp-spike && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "prp-spike" agent skill from https://github.com/Wirasm/prp/tree/development/.agents/skills/prp-spike into .agents/skills/prp-spike/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prp-spike", 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 Wirasm/prp --skill prp-spike -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Wirasm/prp prp-spike --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Wirasm/prp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/prp-spike .cursor/skills/prp-spike && 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 "prp-spike" agent skill from https://github.com/Wirasm/prp/tree/development/.agents/skills/prp-spike into .cursor/skills/prp-spike/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prp-spike", 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/Wirasm/prp.git --path .agents/skills/prp-spike--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 Wirasm/prp --skill prp-spike -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Wirasm/prp prp-spike --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Wirasm/prp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/prp-spike .gemini/skills/prp-spike && 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 "prp-spike" agent skill from https://github.com/Wirasm/prp/tree/development/.agents/skills/prp-spike into .gemini/skills/prp-spike/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prp-spike", 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 Wirasm/prp prp-spikeInstalls 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 Wirasm/prp --skill prp-spike -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Wirasm/prp.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/prp-spike .github/skills/prp-spike && 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 "prp-spike" agent skill from https://github.com/Wirasm/prp/tree/development/.agents/skills/prp-spike into .github/skills/prp-spike/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prp-spike", 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 Wirasm/prp --skill prp-spike -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Wirasm/prp prp-spike --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Wirasm/prp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/prp-spike .opencode/skills/prp-spike && 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 "prp-spike" agent skill from https://github.com/Wirasm/prp/tree/development/.agents/skills/prp-spike into .opencode/skills/prp-spike/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "prp-spike", 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.
prp-spikeSettles a feasibility question with the smallest throwaway build that could disprove it, in an isolated worktree, ending in a verdict backed by evidence instead of a PR.
A spike answers one falsifiable question by building something designed to fail if the idea is wrong. The deliverable is a verdict of PROVEN, DISPROVEN or CONDITIONAL backed by evidence, never shippable code or a pull request. It suits feasibility, fit with your stack, the cost of changing something to make an idea possible, and choosing between approaches.
Phase 1 turns the request into a claim that can fail: a one-sentence hypothesis, a short slug that names the branch, worktree and report file, and kill criteria written before any code. Reading the issue, source and environment first is allowed, but results from the test build must not reshape the claim. A disproven verdict counts as a success because it closes a path with evidence.
Reference files cover framing, evidence and handoff, and a spike-report template holds the write-up. It is not for work whose feasibility is already settled, which belongs to prp-plan and prp-implement, or for something already broken, which belongs to prp-debug.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4352925. 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:
gitFrom 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.
PRP Spike loads about 3.8k tokens when it runs, and up to ~8.4k if it reads all its reference files. Until then it costs about 145 tokens; SKILL.md has 2,103 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 Wirasm/prp at commit 4352925, republished under its MIT licence (© Wirasm). 2,103 words, ~3,796 tokens.
.claude/skills/prp-spike/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Arguments:
$ARGUMENTS(and$1,$2, ...) refer to the arguments given when this skill was invoked. Take them from the user's request; if absent, infer them from the conversation.
Settle an open question by building the smallest thing that could prove it wrong. The deliverable is a verdict backed by evidence, not shippable code.
Input: $ARGUMENTS (if absent, take the question from the conversation).
Not for work whose feasibility is already settled — that is prp-plan then prp-implement. Not for something already broken — that is prp-debug.
Convert the request into a claim that can fail, and fix the kill criteria before touching code.
Reconnaissance before framing is allowed, and usually required. A hypothesis that names a version, a field, a threshold, or a mechanism cannot be written cold — read the issue, the source, and the environment until the claim can be stated precisely. The line is the falsifier: never let findings produced by the thing built to test the claim reshape the claim. Recon sharpens the question; results must only answer it.
Produce four things:
Split on the falsifier, not the claim count. Sub-claims one artifact can test together are one spike — build it once, list them in the frame, and report a verdict per sub-claim, because the mix is the output. Sub-claims each needing their own setup are separate spikes: take the riskiest first here, and list the rest in the report's Recommendation as follow-up spikes. For the framing craft (vague-to-falsifiable rewrites, constraint questions, splitting, sizing), read references/framing.md.
If the spike compares approaches, read references/evidence.md → Fair comparison now. The winning metric must be fixed and recorded here, before either variant exists — a metric chosen afterwards will be the one the favourite happens to win.
State the frame back to the user. When running interactively, confirm an ambiguous hypothesis before building — a spike that answers the wrong question is total waste, and framing is the cheapest thing to correct. When running unattended, record the interpretation chosen and the alternatives rejected, and proceed.
Pre-commitment only counts if it outlives the conversation. Write the frame to disk now — a transcript does not survive compaction, and an agent that has seen its results can reconstruct criteria that flatter them.
# --- PRP store resolver (canonical; keep byte-identical across skills) ---
# Adopt the store that already records this root; mint a key only when none does.
_gd="$(git rev-parse --path-format=absolute --git-common-dir 2>/dev/null)"
case "$_gd" in */.git) _root="${_gd%/.git}" ;; "") _root="$PWD" ;; *) _root="$_gd" ;; esac
_root="$(cd "$_root" && pwd -P)"
_name="$(basename "$_root" | tr '[:upper:]' '[:lower:]' | tr -cs 'a-z0-9' '-' | sed 's/^-*//;s/-*$//')"
_home="${PRP_HOME:-$HOME/.prp}"
_hit="$(grep -lsF "\"path\": \"$_root\"" "$_home"/*/project.json 2>/dev/null | head -1)"
PRP_DIR="${_hit%/project.json}"
[ -n "$PRP_DIR" ] || PRP_DIR="$_home/${_name:-project}-$(printf %s "$_root" | git hash-object --stdin | cut -c1-8)"
mkdir -p "$PRP_DIR"; [ -f "$PRP_DIR/project.json" ] || printf '{"path": "%s", "name": "%s"}\n' "$_root" "${_name:-project}" > "$PRP_DIR/project.json"
mkdir -p "$PRP_DIR/spikes"The resolver keys off the main repo, so the file lands in the shared store and stays readable from the main checkout while the spike branch is untouched.
Read templates/spike-report.md now (mandatory) and create $PRP_DIR/spikes/spike-<slug>.md with its header, ## The question section, and **Verdict**: (pending). Phase 6 fills in the rest; the hypothesis, kill criteria, and verdict boundaries recorded here are never edited after this point. The pending marker keeps an abandoned spike visibly unfinished instead of reading as a report with a missing verdict.
GATE: the file exists and contains the hypothesis, kill criteria, and verdict boundaries. Do not build without it.
Spike code is disposable and often invasive. Keep it away from the working checkout.
If already in an isolated worktree — spawned there by an orchestrator — stay put and do not nest a second one. EnterWorktree is unavailable to a pinned agent; where a branch name is wanted, plain git switch -c spike/<slug> inside the current worktree is enough.
Otherwise create a worktree on a branch named spike/<slug> with git worktree add -b spike/<slug> .worktrees/spike-<slug> origin/<base>, where <base> is the repository's integration branch, and work there. A spike branch is never merged.
--here skips isolation entirely — use it only when a fresh checkout cannot run the project (gitignored build prerequisites, an expensive bootstrap, a running local stack). Record in the report that it was used and why, and leave the checkout as it was found.
Read only enough to choose a credible approach — one a competent engineer would defend. A spike that fails because of a naive approach has proven nothing about the idea.
web-researcher for anything outside the training cutoff, and codebase-analyst to learn how the relevant subsystem really works before assuming what it allows.Build the smallest artifact that could prove the hypothesis wrong, then stop.
The shape follows the question, not a catalogue — an interactive demo, a comparison of N implementations against a stated metric, a probe against a real API, a load harness, a type-level sketch, a patched dependency proving a primitive change works. Ask: what would I have to see to stop believing this? Build that.
Hold to:
A spike that only ran the happy path has not been tested — it has been demoed. Attack the claim where it is weakest.
Work the kill criteria from Phase 1 deliberately: push the volume, break the assumption the approach rests on, feed the edge case, pull the dependency. Most spikes earn their keep here.
For evidence standards — what counts as proof, how to make a comparison fair, and the traps that make spikes lie — read references/evidence.md.
Re-read the kill criteria and verdict boundaries recorded in Phase 1 before choosing — not after. They were written by someone who had not yet seen these results. That is the only reason they are worth anything.
Reach one top-level verdict for the original hypothesis. When sub-claims have mixed results, keep each sub-claim's own verdict and use the top-level verdict to answer whether the original hypothesis held:
| Verdict | Meaning |
|---|---|
| PROVEN | Holds within current constraints. Evidence attached. |
| DISPROVEN | Does not hold. Name the wall it hit and why it is not the approach's fault. |
| CONDITIONAL | Holds only if a named constraint changes. Name the constraint, the cost of changing it, and what else that change would unlock. |
CONDITIONAL is the verdict most spikes should reach and most reports dodge. "Impossible" is usually shorthand for "impossible without changing something we were treating as fixed" — a primitive, a schema, a dependency, a product rule. Surfacing that trade is the point: it converts a dead end into a priced decision. Never collapse it into DISPROVEN. Never let it drift into PROVEN by quietly assuming the change is free.
Label each verdict proved or inferred, and record the seat it was proved from — which process, layer or surface, under which mode. Then re-run the inferred ones before finalizing: the setup already exists by this point, and an inference is where a spike is most confidently wrong. references/evidence.md carries the craft, including what to do when a kill criterion turns out to have named the wrong observation points.
Complete $PRP_DIR/spikes/spike-<slug>.md — read templates/spike-report.md again (mandatory) and fill every remaining section, replacing (pending) with the verdict. Keep every heading except ## Conditional constraints, which exists only when the top-level hypothesis or at least one sub-claim is CONDITIONAL.
One report, at that path. The Phase 1 file is the report — finish it in place. Do not write a second copy under research/, reports/, or anywhere else: a stub pointing at a fuller document elsewhere splits the record, and nothing keeps the two in agreement.
The evidence's permanent home is the store. Copy whatever the verdict rests on — harness scripts, fixtures, captured output — into $PRP_DIR/spikes/<slug>/. It survives a discarded worktree, is shared across the project's worktrees, and needs no git operation an isolated agent may be unable to perform.
But $PRP_DIR is local-only, so a store path is unfollowable by anyone else. Read references/handoff.md for the routes that make evidence followable off this machine — a secret gist when the verdict travels somewhere others read, a branch only when the spike code is substantial enough to re-run — and for the --here patch capture.
prp-plan and prp-implement.git worktree remove .worktrees/spike-<slug>. Keep the report and harness source in the store; never copy runtime state such as browser profiles, caches, or build output.A spike that ends in the operator's terminal changes nothing. Propose where the verdict should land — a comment on the issue that commissioned it, a new item when the spike started from free text and nothing fits, or nothing at all when the question is closed and no work follows.
Propose; do not act. Creating or commenting on a tracker item is outward-facing, and this skill's terminal act is a verdict — never a merge, a PR, or an unrequested ticket. references/handoff.md has the routing table and what each verdict should ask for; a CONDITIONAL in particular must be framed as a decision, not filed as a task.
Report to the user: the hypothesis, the verdict, the two or three pieces of evidence that decided it, where the evidence lives, the report path, and the proposed destination. Lead with the verdict.
references/framing.md — turning a vague idea into a falsifiable hypothesis with kill criteria; constraint and comparison questions; splitting and sizingreferences/evidence.md — evidence standards, fair comparisons, proving a negative, the traps that make spikes lie (mandatory read in Phase 1 for a comparison spike, before either variant is built; otherwise read in Phase 5)references/handoff.md — making evidence followable off this machine (store / gist / branch), and routing the verdict to where it changes something. Read in Phase 7–8templates/spike-report.md — the report to fill (mandatory read in Phase 1 to record the frame, and again in Phase 6 to complete it)© Wirasm, 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 4 other files (references) in .agents/skills/prp-spike of Wirasm/prp.
Open the folder on GitHubat commit 4352925
PRP Spike 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 |
|---|---|---|---|---|---|---|
| PRP Spike this skillWirasm/prp | 2.3k | — | ~3.8k | Automated safety check: Pass | MIT | |
| 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.
yetone/native-feel-skill
A skill your agent uses when the user is designing, prototyping, or rewriting a desktop app that must run on multiple OSes (macOS + Windows, optionally Linux) AND feel indistinguishable from a…
Wirasm/prp
Runs the plan, implement and review pipeline detached in fresh headless sessions, looping review and fix until the pull request is clean.
Wirasm/prp
Runs a detached, resumable loop that plans, implements, opens a PR, reviews and fixes a feature across headless CLI sessions until the review is clean.
Wirasm/prp
Coordinates several PRP workstreams in isolated Git worktrees from one session, verifying proof, holding merge gates and sequencing the merges.
Wirasm/prp
Turns a PRD, issue or description into an implementation-ready plan grounded in codebase evidence, adding root-cause analysis for bugs and publishing issue plans back to the issue.
Wirasm/prp
Writes an implementation-ready plan for a feature, bug fix, refactor or chore from a PRD, issue or description, grounded in codebase evidence, and can post it back to the source issue.
Wirasm/prp
Settles a feasibility or fit question by building the smallest throwaway artifact that could prove it wrong, in an isolated worktree, ending in a PROVEN, DISPROVEN or CONDITIONAL verdict.
Categories
Settles a feasibility question with the smallest throwaway build that could disprove it, in an isolated worktree, ending in a verdict backed by evidence instead of a PR. A spike answers one falsifiable question by building something designed to fail if the idea is wrong. The deliverable is a verdict of PROVEN, DISPROVEN or CONDITIONAL backed by evidence, never shippable code or a pull request.
PRP Spike fits situations like: checking whether an idea is feasible by building a proof of concept; comparing several approaches on evidence before choosing one; finding out whether a change fits the current stack.
Run `npx skills add Wirasm/prp --skill prp-spike -a claude-code`. Or copy the skill folder (.agents/skills/prp-spike in Wirasm/prp) into .claude/skills/prp-spike in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Wirasm/prp --skill prp-spike -a codex`. Or copy the skill folder (.agents/skills/prp-spike in Wirasm/prp) into .agents/skills/prp-spike 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 Wirasm/prp --skill prp-spike -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/prp-spike, .gemini/skills/prp-spike, .github/skills/prp-spike and .opencode/skills/prp-spike in your project.
Going by SKILL.md and its folder, PRP Spike needs the command-line tools its instructions call (git).
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.
PRP Spike is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with PRP Spike: 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.
Wirasm (a GitHub user) maintains it in Wirasm/prp, which has 2,259 GitHub stars. The repository holds 37 skills in this directory. The repository was last updated on October 2, 2026.
Source: Wirasm/prp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.