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.
Create a git worktree for a task and record handoff context into a plan file that is committed to the branch.
$ npx skills add hanamizuki/solopreneur --skill worktree-handoff -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hanamizuki/solopreneur worktree-handoff --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/hanamizuki/solopreneur.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/solopreneur/worktree-handoff .claude/skills/worktree-handoff && 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 "worktree-handoff" agent skill from https://github.com/hanamizuki/solopreneur/tree/main/skills/solopreneur/worktree-handoff into .claude/skills/worktree-handoff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worktree-handoff", 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/hanamizuki/solopreneur/tree/main/skills/solopreneur/worktree-handoffType 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 hanamizuki/solopreneur --skill worktree-handoff -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hanamizuki/solopreneur worktree-handoff --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hanamizuki/solopreneur.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/solopreneur/worktree-handoff .agents/skills/worktree-handoff && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "worktree-handoff" agent skill from https://github.com/hanamizuki/solopreneur/tree/main/skills/solopreneur/worktree-handoff into .agents/skills/worktree-handoff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worktree-handoff", 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 hanamizuki/solopreneur --skill worktree-handoff -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hanamizuki/solopreneur worktree-handoff --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hanamizuki/solopreneur.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/solopreneur/worktree-handoff .cursor/skills/worktree-handoff && 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 "worktree-handoff" agent skill from https://github.com/hanamizuki/solopreneur/tree/main/skills/solopreneur/worktree-handoff into .cursor/skills/worktree-handoff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worktree-handoff", 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/hanamizuki/solopreneur.git --path skills/solopreneur/worktree-handoff--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 hanamizuki/solopreneur --skill worktree-handoff -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hanamizuki/solopreneur worktree-handoff --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hanamizuki/solopreneur.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/solopreneur/worktree-handoff .gemini/skills/worktree-handoff && 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 "worktree-handoff" agent skill from https://github.com/hanamizuki/solopreneur/tree/main/skills/solopreneur/worktree-handoff into .gemini/skills/worktree-handoff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worktree-handoff", 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 hanamizuki/solopreneur worktree-handoffInstalls 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 hanamizuki/solopreneur --skill worktree-handoff -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hanamizuki/solopreneur.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/solopreneur/worktree-handoff .github/skills/worktree-handoff && 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 "worktree-handoff" agent skill from https://github.com/hanamizuki/solopreneur/tree/main/skills/solopreneur/worktree-handoff into .github/skills/worktree-handoff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worktree-handoff", 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 hanamizuki/solopreneur --skill worktree-handoff -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hanamizuki/solopreneur worktree-handoff --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hanamizuki/solopreneur.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/solopreneur/worktree-handoff .opencode/skills/worktree-handoff && 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 "worktree-handoff" agent skill from https://github.com/hanamizuki/solopreneur/tree/main/skills/solopreneur/worktree-handoff into .opencode/skills/worktree-handoff/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "worktree-handoff", 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.
worktree-handoffCreate a git worktree for a task and record handoff context into a plan file that is committed to the branch.
Worktree Handoff is an agent skill from hanamizuki/solopreneur. Create a git worktree for a task and record handoff context into a plan file that is committed to the branch. Discovers existing plan files in the user's configured todos or plans directory, appends a dated Handoff Context section, and commits everything before printing the next-session pickup message. Use when the user says "open worktree", "worktree handoff", "create a worktree", "start a new branch for this", or wants to hand off a task to a fresh session with full context preserved.
Its SKILL.md is about 3.2k 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. It works with Git. The repository describes itself as: Skills and agents for solopreneurs — ship, review, debug, and think through problems with AI. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f43f001. 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:
gitjqpython3From 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.
Worktree Handoff loads about 3.2k tokens when it runs. Until then it costs about 127 tokens; SKILL.md has 832 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 noted patterns worth knowing about, such as sudo or a known installer.
# Common patterns: .env, *.xcconfig, local.properties, secrets.jsonAutomated 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 hanamizuki/solopreneur at commit f43f001, republished under its MIT licence (© hanamizuki). 832 words, ~3,215 tokens.
.claude/skills/worktree-handoff/SKILL.md (or your agent's skills folder).Before any other action, check whether CODEX_THREAD_ID is set. If it is, stop
before creating a worktree or branch, copying configuration, changing a plan,
or committing. This release supports Worktree Handoff only on Claude Code;
tell the user the Codex worktree seam is not shipped yet and to run the
workflow there instead.
Create an isolated workspace for a new or in-progress task, and record the complete task context into a plan file that gets committed to the branch. The next session reads the plan file to pick up without re-explanation.
Source the cascade config helpers, then determine the operating mode:
# --- solopreneur config helpers (sourced from shared/config.sh) ---
# One real shell file, so no harness rewrites the helpers on the way to the
# shell. Claude Code replaces the ${CLAUDE_SKILL_DIR} token below when it loads
# this body; Codex does not. It is SINGLE-quoted on purpose — it is a load-time
# token, not an environment variable, and letting the shell expand the name
# would source whatever an inherited value happened to point at. Unreplaced, it
# is not a directory, so substitute the absolute path of the directory holding
# THIS SKILL.md — every harness states that path to the model.
SOLO_SKILL_DIR='${CLAUDE_SKILL_DIR}'
[ -d "$SOLO_SKILL_DIR" ] || SOLO_SKILL_DIR="<absolute path of the directory holding this SKILL.md>"
SOLO_CONFIG_SH="$SOLO_SKILL_DIR/../../shared/config.sh"
# Three candidates, one contract. Inside the plugin the helpers sit at ../../shared/;
# authoring against this repo reaches them under src/solopreneur/shared/; and a
# skill republished on its own — any flattened skills directory — carries them
# at scripts/config.sh instead, because shared/ is a sibling of skills/ and does
# not travel with a per-skill copy. Try each in order, then STOP. Sourcing a
# file that is not there does not halt the shell: every helper stays undefined,
# every config read returns empty, and the 2026-08-11 A2 run showed where that
# leads — the model "rescued" it with a repo-relative path, which resolves only
# when the repo under review happens to be this plugin's own source repo.
# Canonical authoring keeps non-skill source under src/.
[ -f "$SOLO_CONFIG_SH" ] || SOLO_CONFIG_SH="$SOLO_SKILL_DIR/../../../src/solopreneur/shared/config.sh"
[ -f "$SOLO_CONFIG_SH" ] || SOLO_CONFIG_SH="$SOLO_SKILL_DIR/scripts/config.sh"
[ -f "$SOLO_CONFIG_SH" ] || { echo "HALT: solopreneur config helpers not found under $SOLO_SKILL_DIR — stop here, do not improvise a path"; exit 1; }
source "$SOLO_CONFIG_SH"
# --- end solopreneur config helpers ---
TODOS_CONFIG=$(read_solopreneur_config todos)
PLANS_CONFIG=$(read_solopreneur_config plans)
BACKLOG=$(echo "${TODOS_CONFIG:-{}}" | jq -r '.backlog // empty')
DOING=$(echo "${TODOS_CONFIG:-{}}" | jq -r '.doing // empty')
PLANS_DIR=$(echo "${PLANS_CONFIG:-{}}" | jq -r '.dir // empty')
PLANS_DIR="${PLANS_DIR:-docs/solopreneur/plans}" # default
MODE=$([ -n "$BACKLOG" ] && [ -n "$DOING" ] && echo "state-machine" || echo "flat")Mode decision:
$BACKLOG and $DOING are both non-empty$PLANS_DIRName based on task type and description:
| Task Type | Branch Prefix | Example |
|---|---|---|
| Bug fix | fix/ | fix/sleep-calculation |
| New feature | feature/ | feature/health-connect-edit |
| Refactor | refactor/ | refactor/sleep-sessionizer |
| Research | research/ | research/healthkit-sources |
Worktree directory name = branch name slug (strip prefix, use - separators).
Always place worktrees under .worktrees/:
git worktree add .worktrees/<slug> -b <branch-name>Prohibited: operating on main, placing worktrees outside .worktrees/.
Worktrees are separate directories — gitignored files don't carry over automatically.
Check .gitignore for config/secret patterns, find matching files in the main repo,
copy them to the same relative paths in the worktree. Never copy build artifacts.
# The main repo is the first worktree. `--porcelain` puts the path on its own
# `worktree <path>` line, so a path containing spaces survives — and no `$N`
# lands in a skill body (see ../../shared/config.sh for why that matters).
MAIN_REPO="$(git worktree list --porcelain | sed -n 's/^worktree //p' | head -1)"
WORKTREE=".worktrees/<slug>"
# Find gitignored config files that exist in the main repo
# Common patterns: .env, *.xcconfig, local.properties, secrets.json
# Copy any that are relevant to this project to the worktree's corresponding pathsCollect all plan files:
# State-machine mode: collect from backlog + doing
if [ "$MODE" = "state-machine" ]; then
ALL_FILES=$(find "$BACKLOG" "$DOING" -maxdepth 1 -name "*.md" 2>/dev/null)
else
mkdir -p "$PLANS_DIR"
ALL_FILES=$(find "$PLANS_DIR" -maxdepth 1 -name "*.md" 2>/dev/null)
fiContext matching — before prompting the user:
Extract 3–5 key terms from the current conversation (task name, feature area, keywords from the user's description). Then score each plan file:
Plan-Branch: lines, first 20 lines) for the key terms# ILLUSTRATIVE ONLY — substitute actual key terms extracted from the current
# conversation before running. Do NOT execute this block with these hardcoded terms.
TERMS="<term1>\|<term2>\|<term3>" # replace with actual key terms
CANDIDATES=""
while IFS= read -r f; do
[ -z "$f" ] && continue
score=$(head -20 "$f" | grep -i -c "$TERMS" 2>/dev/null); score=${score:-0}
name_score=$(basename "$f" | grep -i -c "$TERMS" 2>/dev/null); name_score=${name_score:-0}
total=$((score + name_score * 2))
[ "$total" -gt 0 ] && CANDIDATES="$CANDIDATES\n$total $f"
done <<< "$ALL_FILES"
CANDIDATES=$(printf '%b' "$CANDIDATES" | sort -rn)
MATCH_COUNT=$([ -n "$CANDIDATES" ] && printf '%b' "$CANDIDATES" | grep -c . || echo 0)Match count = number of files with a score greater than zero (i.e., at least one key term found in the filename or first 20 lines of content).
Decision based on match count:
0 matches — if $ALL_FILES is non-empty, briefly tell the user: "No matching plans found for this task — creating a new plan file. (Reply with a filename to use an existing plan instead.)" Then proceed to Step 6 to create a new file.
1 match — use it automatically, no prompt. Print: → Matched plan: <filename> so the user knows what was selected.
2+ matches — show only the matching candidates (not all files) with index numbers, then ask:
"Found N matching plans. Which one does this worktree belong to? Enter a number to reuse it, or 'new' to create a fresh plan file."
In state-machine mode, note the source directory in parentheses (Backlog / Doing) next to each filename.
If no plan files exist at all, skip all of the above and proceed directly to creating a new file.
Recording the source: When a file is selected, set PLAN_SOURCE=backlog or
PLAN_SOURCE=doing based on which directory it came from. Step 6 checks
$PLAN_SOURCE to decide whether to run git mv (only when PLAN_SOURCE=backlog).
Create a new file:
<doing>/<YYYY-MM-DD>-<branch-slug>.md<plans-dir>/<YYYY-MM-DD>-<branch-slug>.mdWhere <branch-slug> = branch name with / replaced by -
(e.g., fix/sleep-calculation → fix-sleep-calculation).
Date from $(date +%Y-%m-%d).
New file content:
<!--
Plan-Branch: <branch-name>
-->
## Handoff Context (<YYYY-MM-DD>, branch: <branch-name>)
### Problem Background
<why is this being done — user reports, screenshots, logs>
### Root Cause
<known technical issues, with file paths + line numbers>
### Items to Fix / Implement
- [ ] <item with expected approach>
### Key Files
| path | description |
|------|-------------|
### Current Progress
Not started.Fill in the five sections based on context from the current conversation.
Move from backlog to doing (state-machine mode only):
If the selected file is in $BACKLOG, move it:
git mv "$BACKLOG/<filename>" "$DOING/<filename>"
PLAN_FILE="$DOING/<filename>"In flat mode, skip this step — the file stays in place.
Ensure the Plan-Branch: marker block exists at the top of the file.
If the file already starts with an HTML comment block containing at least one
Plan-Branch: line, check whether Plan-Branch: <branch-name> is already
present. If it is absent, append the line inside the existing comment block:
python3 -c "
import sys
branch, path = sys.argv[1], sys.argv[2]
with open(path) as f: content = f.read()
idx = content.find('\n-->')
if idx != -1:
content = content[:idx+1] + 'Plan-Branch: ' + branch + '\n' + content[idx+1:]
with open(path, 'w') as f: f.write(content)
" "<branch-name>" "$PLAN_FILE"If no comment block exists at the top (legacy file), prepend one:
<!--
Plan-Branch: <branch-name>
-->Append the handoff section at the end of the file:
## Handoff Context (<YYYY-MM-DD>, branch: <branch-name>)
### Problem Background
<why is this being done — user reports, screenshots, logs>
### Root Cause
<known technical issues, with file paths + line numbers>
### Items to Fix / Implement
- [ ] <item with expected approach>
### Key Files
| path | description |
|------|-------------|
### Current Progress
<not started / steps done so far>Fill in the five sections based on context from the current conversation. Be specific: include file names, line numbers, error messages, actual numbers. Include root cause analysis already done so the next session doesn't debug from scratch. If the conversation had screenshots or user-reported bug details, include everything.
git add <plan-file-path>
# Also stage the git mv result if the file moved from backlog to doing
git commit -m "docs(handoff): context for <branch-name>"
git push -u origin <branch-name>Single commit. Push immediately so the doc is visible to the next session and to PR reviewers.
Print this so the user can paste it into a new session:
cd /absolute/path/to/repo/.worktrees/<slug>
Plan file: <relative/path/to/plan.md>
Read the plan file for the full context — branch <branch-name> is tracked under
the `Plan-Branch:` marker, and the latest `## Handoff Context` section captures
the current state.
Branch: <branch-name>, <one-line task description>.Use an absolute path in the cd command (from git worktree list). The plan file
path should be relative to the repo root.
User says: "Open a worktree to fix the sleep calculation — the issue is duplicate sources from HealthKit"
git worktree add .worktrees/fix-sleep-calculation -b fix/sleep-calculationPlan file discovery: user picks existing 2026-04-10-sleep-tracking.md from
backlog (state-machine mode). File is git mv'd to doing, Plan-Branch: fix/sleep-calculation is added to the marker block, and the Handoff Context
section is appended with the HealthKit duplicate-source root cause detail.
Commit: docs(handoff): context for fix/sleep-calculation
Output for user:
cd /path/to/project/.worktrees/fix-sleep-calculation
Plan file: docs/solopreneur/plans/doing/2026-04-10-sleep-tracking.md
Read the plan file for the full context — branch fix/sleep-calculation is tracked
under the `Plan-Branch:` marker, and the latest `## Handoff Context` section
captures the current state.
Branch: fix/sleep-calculation, deduplicate HealthKit multi-source sleep samples
so displayed sleep time matches Apple Health's value.© hanamizuki, MIT. 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 skills/solopreneur/worktree-handoff of hanamizuki/solopreneur.
Open the folder on GitHubat commit f43f001
Worktree Handoff 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 |
|---|---|---|---|---|---|---|
| Worktree Handoff this skillhanamizuki/solopreneur | 152 | — | ~3.2k | Automated safety check: Notes | MIT | |
| Finishing a Development Branchobra/superpowers | 297k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| 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 | |
| Pre-Release PR Triagejamiepine/voicebox | 57k | — | ~3.1k | Automated safety check: Pass | MIT | |
| Ccmanager Configkbwo/ccmanager | 1.3k | — | ~1.5k | 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.
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.
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.
kbwo/ccmanager
Set up, review, or repair a CCManager config — .ccmanager.json at a git repository root, or the global ~/.config/ccmanager/config.json.
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.
hanamizuki/solopreneur
Create an interactive HTML preview of any proposal, plan, idea, doc, brief, or spec and land it in the browsable local Preview Library by default (opens under file:// with a catalog sidebar and…
hanamizuki/solopreneur
A skill your agent uses when building iOS/macOS apps with SwiftUI — covers localization (String Catalogs), date/time formatting, JSON date decoding, Previews, state management, sheet/navigation…
hanamizuki/solopreneur
LinkedIn organic growth consultant — diagnoses profiles, discusses goals, and co-creates a personalized 90-day growth plan.
hanamizuki/solopreneur
Switch perspectives to think through problems using the mental models of ten iconic thinkers: Elon Musk, Richard Feynman, Charlie Munger, Naval Ravikant, Steve Jobs, Nassim Taleb, Ilya Sutskever…
hanamizuki/solopreneur
Create brand-aware presentations using frontend-slides or reveal.js.
hanamizuki/solopreneur
X/Twitter growth consultant — diagnoses profiles, discusses goals, and co-creates a personalized growth plan.
Works with
Categories
Create a git worktree for a task and record handoff context into a plan file that is committed to the branch. Worktree Handoff is an agent skill from hanamizuki/solopreneur. Create a git worktree for a task and record handoff context into a plan file that is committed to the branch.
Worktree Handoff fits situations like: the user says open worktree; worktree handoff; create a worktree; start a new branch for this.
Run `npx skills add hanamizuki/solopreneur --skill worktree-handoff -a claude-code`. Or copy the skill folder (skills/solopreneur/worktree-handoff in hanamizuki/solopreneur) into .claude/skills/worktree-handoff in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hanamizuki/solopreneur --skill worktree-handoff -a codex`. Or copy the skill folder (skills/solopreneur/worktree-handoff in hanamizuki/solopreneur) into .agents/skills/worktree-handoff 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 hanamizuki/solopreneur --skill worktree-handoff -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/worktree-handoff, .gemini/skills/worktree-handoff, .github/skills/worktree-handoff and .opencode/skills/worktree-handoff in your project.
Going by SKILL.md and its folder, Worktree Handoff needs the command-line tools its instructions call (git, jq and python3). Our summary lists: Python 3.
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 notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Worktree Handoff 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.2k 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 Worktree Handoff: Finishing a Development Branch (obra/superpowers, 297k stars), Finishing A Development Branch (farm-fe/farm, 5.6k stars), Git Worktree Cleanup (lobehub/lobehub, 83k stars) and Pre-Release PR Triage (jamiepine/voicebox, 57k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hanamizuki (a GitHub user) maintains it in hanamizuki/solopreneur, which has 152 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on September 26, 2026.
Source: hanamizuki/solopreneur on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.