---
name: evaluate-branch-or-pr
description: Use when user wants to evaluate, review, or assess code changes from current branch, a named branch, or a PR (number or URL)
---

# Evaluate Branch or PR

Review code changes with full context from git history and linked Jira tickets.

## Input Types

| Input          | Example                            | How to handle                 |
|----------------|------------------------------------|-------------------------------|
| Current branch | "evaluate this branch"             | Use current HEAD vs main      |
| Branch name    | "evaluate feature/xyz"             | Fetch branch, compare vs main |
| PR number      | "evaluate PR 123"                  | Use `gh pr view 123`          |
| PR URL         | "evaluate github.com/.../pull/123" | Extract PR number, use gh     |

## Workflow

1. Determine input type (current branch, named branch, PR number, PR URL)
2. Get diff info (commits, files, base/head)
3. Extract ticket refs from commits/title/description
4. If tickets found, fetch Jira context via `fetch-jira-ticket` skill
5. Dispatch code-reviewer subagent with full context
6. Present findings

## Step 1: Gather Git Info

**For current branch:**
```bash
CURRENT_BRANCH=$(git branch --show-current)
BASE_SHA=$(git merge-base origin/main HEAD)
HEAD_SHA=$(git rev-parse HEAD)
git log --oneline $BASE_SHA..HEAD
```

**For named branch:**
```bash
git fetch origin <branch-name>
BASE_SHA=$(git merge-base origin/main origin/<branch-name>)
HEAD_SHA=$(git rev-parse origin/<branch-name>)
git log --oneline $BASE_SHA..$HEAD_SHA
```

**For PR:**
```bash
gh pr view <number> --json title,body,commits,baseRefName,headRefName
gh pr diff <number>
```

## Step 2: Extract Ticket References

Search for patterns like `PROJ-123`, `TEAM-456` in:
- Commit messages
- PR title
- PR description/body

```bash
# From commits
git log --oneline $BASE_SHA..$HEAD_SHA | grep -oE '[A-Z]+-[0-9]+'

# From PR (if applicable)
gh pr view <number> --json title,body | grep -oE '[A-Z]+-[0-9]+'
```

## Step 3: Fetch Jira Context

For each unique ticket found, invoke the `fetch-jira-ticket` skill:

```bash
~/scripts/get-jira-ticket.sh <TICKET-KEY>
```

Collect:
- Ticket summary (the "why")
- Ticket description (requirements/acceptance criteria)

## Step 4: Dispatch Code Review

Use Task tool with `superpowers:code-reviewer` subagent type.

**Template variables:**
- `{WHAT_WAS_IMPLEMENTED}`: Summary from commits + PR title
- `{PLAN_OR_REQUIREMENTS}`: Jira ticket descriptions (if found) or PR body
- `{BASE_SHA}`: Base commit
- `{HEAD_SHA}`: Head commit
- `{DESCRIPTION}`: Brief summary of changes

## Quick Reference

| Scenario       | Commands                                       |
|----------------|------------------------------------------------|
| Current branch | `git merge-base origin/main HEAD` + `git log`  |
| Named branch   | `git fetch` + `git merge-base` + `git log`     |
| PR by number   | `gh pr view N --json ...` + `gh pr diff N`     |
| PR by URL      | Extract number from URL, then same as above    |
| Ticket lookup  | `get-jira-ticket.sh PROJ-123`                  |

## Example

```
User: evaluate PR 456

You:
1. Get PR info: gh pr view 456 --json title,body,commits,baseRefName,headRefName
2. Found title: "PROJ-789: Add user validation"
3. Extract ticket: PROJ-789
4. Fetch Jira: get-jira-ticket.sh PROJ-789
5. Get commits and diff range
6. Dispatch code-reviewer with:
   - WHAT_WAS_IMPLEMENTED: "Add user validation (from PR 456)"
   - PLAN_OR_REQUIREMENTS: [Jira PROJ-789 description]
   - BASE_SHA/HEAD_SHA from PR
7. Present review findings
```
