# chase

**Send follow-up reminders to authors of stale PRs to get their attention.**

Nothing kills momentum faster than PRs that languish without review. `chase` helps you send gentle, polite reminders to authors whose PRs have been waiting too long — either as a preview (default) or actually sent to GitHub.

## When to Use

- Weekly maintenance: "Time to shake the trees a bit"
- Sprint end: "Let's close out those pending reviews"
- Post-vacation: "Get eyes back on neglected PRs"
- Custom follow-up: With your own message template

## Synopsis

```bash
prctrl chase [OPTIONS]
```

## Options

| Flag | Description | Default |
|------|-------------|---------|
| `PR_NUMBER` | PR number to chase (shorthand for `--pr`) | - |
| `-p, --pr <PR>` | Target a specific PR by number | - |
| `--pr-numbers <NUMS>` | PR number(s) to chase (comma-separated) | - |
| `--min-age <DAYS>` | Minimum age in days to chase (default: 7) | `7` |
| `-s, --since-days <DAYS>` | Only chase PRs created since this many days ago | - |
| `-n, --dry-run` | Preview chase comments without posting (explicit preview) | - |
| `--send` | Actually post comments to GitHub (default: preview only) | `false` |
| `-m, --message <TEXT>` | Custom message template | Default template |
| `--repo <REPO>` | Filter by repository name (partial match, case-insensitive) | - |
| `--author <USER>` | Filter by author username (partial match, case-insensitive) | - |
| `-P, --priority` | Show priority scores for each PR (1-5 stars based on age and size) | `false` |
| `-q, --quiet` | Suppress per-PR progress messages (show only summary) | `false` |
| `--json` | Output as JSON | `false` |

## Message Template

The default message is:

```
👋 Hi @{author}! Just checking in on this PR — it's been waiting for 
review for {days} days. Could you please address any pending feedback 
or let us know if it's ready for another look? Thanks!
```

### Template Variables

Your custom message can include these placeholders:

| Variable | Description |
|----------|-------------|
| `{author}` | PR author's username |
| `{title}` | PR title |
| `{days}` | Days waiting for review |
| `{repo}` | Repository name |
| `{pr}` | PR number with # prefix |

## Examples

```bash
# Preview chase comments for PRs older than 7 days (default behavior)
prctrl chase

# Explicitly preview what would be sent
prctrl chase --dry-run

# Chase a specific PR (ignores --min-age, targets only that PR)
prctrl chase --pr 123

# Chase multiple specific PRs by number
prctrl chase --pr-numbers 123,456,789

# Chase PRs older than 14 days and post comments
prctrl chase --min-age 14 --send

# Chase only PRs created in the last 3 days (newer stale PRs)
prctrl chase --since-days 3

# Chase PRs between 3-14 days old
prctrl chase --since-days 14 --min-age 3

# Chase with priority scores to identify most urgent PRs
prctrl chase --priority

# Use a custom message template
prctrl chase --message "Hey {author}, bumping this - it's been {days} days!"

# Get JSON output for scripting
prctrl chase --json

# Chase PRs silently (summary only, useful in scripts)
prctrl chase --send --quiet
```

## Output

When run in preview mode (without `--send`):

- Shows each stale PR with author, age, and proposed comment
- Color-coded age badges (red for 14+ days, yellow for 7+ days)
- Priority scores (when `--priority` is specified)
- Summary of how many PRs would be chased

When run with `--send`:

- Posts the comment to each PR on GitHub
- Shows success/failure for each
- Final count of sent vs. failed

## Safety

**Dry-run by default**: Without any flag, the command shows a preview. Use `--dry-run` to be explicit, or `--send` to actually post comments to GitHub.

**PRs you already commented on are skipped**: If you've already left a comment on a PR, it will be automatically skipped to avoid duplicate notifications.

## Tips

- Start with a dry run to review the message tone
- Use `--min-age 14` for weekly maintenance routines
- Custom messages are great for team-specific workflows
- Combine with `catchup` for a comprehensive review maintenance session
