checkout · git:20260128.d4d59c8 · 2026-01-28 · sha256 fe803131ba2b1362

checkout git:20260128.d4d59c8A

Immutable. This exact content is served forever at /api/v1/blob/fe803131ba2b1362.

---
name: checkout
description: Use when checking out a PR, branch, or ref for local work - sets up worktree with context
---

# Git Checkout

## Overview

Check out a PR, branch, or ref into an isolated worktree with relevant context.

**Announce:** "Using git:checkout to set up a worktree for {target}..."

## When to Use

- User wants to review a PR locally
- User wants to work on a specific branch in isolation
- User provides PR URL/number or branch name
- Following `git:inbox` when user picks a PR

## Input Formats

Accept:
- Full PR URL: `https://github.com/{owner}/{repo}/pull/{number}`
- Short PR: `{repo}#{number}` or `#{number}` (infer repo from cwd)
- PR number only: `{number}` (infer owner/repo from git remote)
- Branch name: `feature/auth`, `main`, etc.
- Ref: commit SHA, tag

## Workflow

### For PRs

#### 1. Parse PR Reference

```bash
# Get owner/repo from current directory if needed
gh repo view --json owner,name -q '"\(.owner.login)/\(.name)"'
```

#### 2. Fetch PR Details

```bash
gh pr view {number} --json title,body,author,state,baseRefName,headRefName,url,reviews,reviewRequests
```

#### 3. Set Up Worktree

**REQUIRED:** Use `superpowers:using-git-worktrees` skill for directory selection.

```bash
# Fetch the PR branch
git fetch origin {headRefName}

# Create worktree
git worktree add .worktrees/pr-{number}-{short-desc} origin/{headRefName}
```

Naming: `pr-{number}-{2-3-word-description}` (e.g., `pr-1234-add-oauth`)

#### 4. Present Context

```markdown
## PR #{number} Ready for Review

**Title:** {title}
**Author:** @{author}
**Branch:** {headRefName} → {baseRefName}
**URL:** {full_url}

### Summary
{1-3 sentence summary from PR body}

### Files Changed ({count})
{Grouped by directory}

### Review Status
{Existing reviews, requested reviewers}

---

**Worktree ready at:** `{full_path}`
```

### For Branches

#### 1. Create Worktree

```bash
# For existing branch
git worktree add .worktrees/{branch-slug} {branch}

# For new branch
git worktree add .worktrees/{branch-slug} -b {branch}
```

#### 2. Report Ready

```markdown
**Worktree ready at:** `{full_path}`
**Branch:** {branch}
```

## Quick Reference

| Input | Action |
|-------|--------|
| PR URL/number | Fetch PR, create worktree, show PR context |
| Branch name | Create worktree for branch |
| Ref/SHA | Create worktree at that ref |

## Common Mistakes

| Mistake | Fix |
|---------|-----|
| Creating worktree before fetching PR branch | Always `git fetch` first |
| Generic worktree name | Include PR number AND short description |
| Missing PR context | Always summarize PR and show review status |

## Related

- `superpowers:using-git-worktrees` - Handles directory selection and verification
- `git:inbox` - Discover PRs needing review
- `code-review` - Guide the actual review process