Skip to content

Commit ca6b6d8

Browse files
adinauerclaude
andauthored
fix(skill): Detect stacked PR context from branch (#5223)
* fix(skill): Detect stacked PR context from branch Update the create-java-pr skill to infer standalone vs stacked PR mode\nfrom git branch and existing PR relationships.\n\nWhen running on main/master, default to standalone PR mode and only\nenter stack mode when explicitly requested by the user.\n\nCo-Authored-By: Claude <noreply@anthropic.com> * fix(create-java-pr): Detect collection branches with downstream PRs Check for downstream PRs even when the current branch already has a PR targeting main/master. This prevents collection branches in a stacked PR flow from being misclassified as standalone PR context. Co-Authored-By: Claude <noreply@anthropic.com> * fix(create-java-pr): Map stack base detection to defined PR type When downstream PRs are found for a branch, classify the result as an existing stack flow instead of an undefined "stack base context". Clarify that the next PR in an existing stack can target either the previous stack PR branch or the collection branch, so all detection outcomes map to actionable PR types. Co-Authored-By: Claude <noreply@anthropic.com> * fix(skills): Add missing standalone PR fallback for fresh feature branches The decision tree in create-java-pr Step 0 had a gap: when a non-main branch has no existing PR and no downstream PRs target it, no outcome was specified. This is the most common case (fresh feature branch). Add explicit fallback to standalone PR context, matching the behavior of the parallel branch where a PR exists with base main and no downstream PRs. Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent e5cd1c6 commit ca6b6d8

1 file changed

Lines changed: 39 additions & 6 deletions

File tree

.claude/skills/create-java-pr/SKILL.md

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,48 @@ Prepare local changes and create a pull request for the sentry-java repo.
99

1010
**Required reading:** Before proceeding, read `.cursor/rules/pr.mdc` for the full PR and stacked PR workflow details. That file is the source of truth for PR conventions, stack comment format, branch naming, and merge strategy.
1111

12-
## Step 0: Determine PR Type
12+
## Step 0: Determine PR Type From Git Branch Context
1313

14-
Ask the user (or infer from context) whether this is:
14+
Infer PR type from the current branch before asking the user.
1515

16-
- **Standalone PR** — a regular PR targeting `main`. Follow Steps 1–6 as written.
17-
- **First PR of a new stack** — ask for a topic name (e.g. "Global Attributes"). Create a collection branch from `main`, then branch the first PR off it. The first PR targets the collection branch.
18-
- **Next PR in an existing stack** — identify the previous stack branch and topic. This PR targets the previous stack branch.
16+
1. Get current branch:
1917

20-
If the user mentions "stack", "stacked PR", or provides a topic name with a number (e.g. `[Topic 2]`), treat it as a stacked PR. See `.cursor/rules/pr.mdc` § "Stacked PRs" for full details.
18+
```bash
19+
git branch --show-current
20+
```
21+
22+
2. Apply these rules:
23+
24+
- **If branch is `main` or `master`**: default to a **standalone PR**.
25+
- Do **not** assume stack mode from `main`.
26+
- Only use stack mode if the user explicitly asks for a stacked PR.
27+
- **If branch is not `main`/`master`**:
28+
- Check whether that branch already has a PR and what its base is:
29+
```bash
30+
gh pr list --head "$(git branch --show-current)" --json number,baseRefName,title --jq '.[0]'
31+
```
32+
- If that branch PR exists and `baseRefName` is **not** `main`/`master`, treat the work as a **stacked PR context**.
33+
- If that branch PR exists and `baseRefName` **is** `main`/`master`, also check whether other PRs target the current branch:
34+
```bash
35+
gh pr list --base "$(git branch --show-current)" --json number,headRefName,title
36+
```
37+
- If there are downstream PRs, treat this as **next PR in an existing stack** with the current branch as the stack base (collection branch).
38+
- If there are no downstream PRs, treat it as **standalone PR context**.
39+
- If no PR exists for the current branch, check whether other PRs target it:
40+
```bash
41+
gh pr list --base "$(git branch --show-current)" --json number,headRefName,title
42+
```
43+
- If there are downstream PRs, treat this as **next PR in an existing stack** with the current branch as the stack base (collection branch).
44+
- If there are no downstream PRs either, treat it as **standalone PR context** (fresh feature branch).
45+
46+
3. If signals are mixed or ambiguous, ask one focused question to confirm.
47+
48+
PR types:
49+
- **Standalone PR** — regular PR targeting `main`.
50+
- **First PR of a new stack** — create collection branch from `main`, then first PR off it.
51+
- **Next PR in an existing stack** — target the current stack base branch (usually the previous stack PR branch, or the collection branch if creating the first follow-up PR from the collection branch).
52+
53+
If the user explicitly says "stack", "stacked PR", or provides numbered stack titles (e.g. `[Topic 2]`), honor that even if branch heuristics are inconclusive.
2154

2255
## Step 1: Ensure Feature Branch
2356

0 commit comments

Comments
 (0)