plugins/scm-utils/skills/git-worktree/SKILL.md
Best practices for Git worktrees, especially branch naming when checking out PRs. Use this when creating worktrees, checking out PRs into worktrees, or working in multi-agent/multi-worktree setups.
npx skillsauth add nsheaps/ai-mktpl git-worktreeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
When checking out a PR or remote branch into a worktree, the local branch name MUST match the remote branch name exactly.
# CORRECT: local branch matches remote
git worktree add ../repo.worktrees/pr-42 feature/my-change
# ^^^^^^^^^^^^^^^^^ matches origin/feature/my-change
# WRONG: invented local name tracking a differently-named remote
git worktree add ../repo.worktrees/pr-42 -b pr-review --track origin/feature/my-change
# ^^^^^^^^^ does NOT match remote name
Git's worktree protection prevents the same local branch from being checked out in two worktrees simultaneously. But this protection is based on local branch name, not tracking ref.
If you create a local branch pr-review tracking origin/feature/my-change, git will happily let another worktree also check out origin/feature/my-change under a different local name (e.g., pr-review-2). This causes:
git branch shows separate branches that are actually the same remote refMatching names means git's built-in protection works correctly: if feature/my-change is already checked out in a worktree, git will refuse to check it out again anywhere else.
gh pr checkout# From within an existing worktree or clone
gh pr checkout 42
gh pr checkout automatically creates a local branch with the correct remote name.
git worktree add ../repo.worktrees/pr-42 -b feature/my-change origin/feature/my-change
Or if the branch already exists locally:
git worktree add ../repo.worktrees/pr-42 feature/my-change
# 1. Get the branch name
BRANCH=$(gh pr view 42 --json headRefName --jq '.headRefName')
# 2. Fetch and create worktree with matching branch name
git fetch origin "$BRANCH"
git worktree add ../repo.worktrees/pr-42 -b "$BRANCH" "origin/$BRANCH"
The worktree directory name can be anything descriptive -- it does not need to match the branch. Common conventions:
| Convention | Example |
| ----------------- | ----------------------------- |
| PR number | repo.worktrees/pr-42 |
| Short description | repo.worktrees/fix-auth |
| Agent name | repo.worktrees/agent-tweety |
The directory name is just a filesystem path. The branch name inside is what must match the remote.
Always remove worktrees when done to unblock the branch for other checkouts:
# From the main repo (NOT from inside the worktree)
git worktree remove ../repo.worktrees/pr-42
git-spice plugin's git-spice skilltools
Manually reproduce what the github-app plugin's SessionStart hook does to make a GitHub App installation token usable in the current session — materialize the PEM, generate the token, isolate GH_CONFIG_DIR, write the runtime env file, and wire CLAUDE_ENV_FILE so every Bash call sees GH_TOKEN/GITHUB_TOKEN. Use when the hook did not run, the token is missing from the environment, or a shell/teammate needs the token wired up by hand. <example>GH_TOKEN isn't set even though github-app is configured</example> <example>the github-app SessionStart hook didn't run, set up the token manually</example> <example>wire the github app token into CLAUDE_ENV_FILE</example> <example>gh keeps falling back to the wrong account, isolate GH_CONFIG_DIR</example>
tools
Manually configure the GitHub App bot git identity the way the github-app plugin's SessionStart hook does — resolve the app slug and bot user ID, build the <slug>[bot] name and noreply email, set GIT_AUTHOR_*/GIT_COMMITTER_* env vars, and write an isolated GIT_CONFIG_GLOBAL with the gh auth git-credential helper. Use when commits are attributed to the wrong account, "Author identity unknown" appears, or git identity must be set up by hand. <example>my commits are showing up as the handler, not the bot</example> <example>git says Author identity unknown after the github-app hook ran</example> <example>configure the github app bot git identity manually</example> <example>set up the gh credential helper for git push</example>
tools
Manages spec files for requirements capture and validation
tools
# Bash Chaining Alternatives This skill teaches you how to work around the bash command chaining restriction enforced by this plugin. ## Why Chaining is Blocked The `bash-command-rejection` plugin blocks these operators: | Operator | Name | Why Blocked | | -------- | ---------- | ----------------------------------------------------------------------------------- | | `&&` | AND chain | Runs cmd2 only if cmd1 su