You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 92fc585
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .claude/skills/create-java-pr/SKILL.md
+38-38Lines changed: 38 additions & 38 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,8 @@ description: Create a pull request in sentry-java. Use when asked to "create pr"
7
7
8
8
Prepare local changes and create a pull request for the sentry-java repo.
9
9
10
-
**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.
10
+
**For stacked PRs:** read `references/stacked-prs.md` before proceeding. It is the source of truth for
11
+
stack structure, title naming, stack list format, and merge strategy.
11
12
12
13
## Step 0: Determine PR Type From Git Branch Context
Derive the branch name from the changes being made. Use `feat/`, `fix/`, `ref/`, etc. matching the commit type conventions.
68
69
69
-
**For stacked PRs:** For the first PR in a new stack, first create and push the collection branch (see `.cursor/rules/pr.mdc` § "Creating the Collection Branch"), then branch the PR off it. For subsequent PRs, branch off the previous stack branch. Use the naming conventions from `.cursor/rules/pr.mdc` § "Branch Naming".
70
+
**For stacked PRs:** For the first PR in a new stack, first create and push the collection branch (see `references/stacked-prs.md` § "Why a Collection Branch"), then branch the PR off it. For subsequent PRs, branch off the previous stack branch. Give every branch inthe stack a shared prefix naming the feature, with a descriptive suffix per PR.
70
71
71
72
**CRITICAL: Never merge, fast-forward, or push commits into the collection branch.** It stays at its initial position until the user merges stack PRs through GitHub. Updating it will auto-merge and destroy the entire PR stack.
72
73
@@ -88,7 +89,13 @@ Check for uncommitted changes:
88
89
git status --porcelain
89
90
```
90
91
91
-
If there are uncommitted changes, invoke the `sentry-skills:commit` skill to stage and commit them following Sentry conventions.
92
+
If there are uncommitted changes, invoke the `sentry-skills:commit` skill to stage and commit them following [Sentry commit message conventions](https://develop.sentry.dev/engineering-practices/commit-messages/):
**Important:** When staging, ignore changes that are only relevant forlocal testing and should not be part of the PR. Common examples:
94
101
@@ -114,53 +121,38 @@ If the push fails due to diverged history, ask the user how to proceed rather th
114
121
115
122
## Step 5: Create PR
116
123
117
-
Invoke the `sentry-skills:create-pr` skill to create a draft PR. When providing the PR body, use the repo's PR template structure from `.github/pull_request_template.md`:
124
+
Invoke the `sentry-skills:create-pr` skill to create a draft PR.
125
+
126
+
Read `.github/pull_request_template.md` and use it as the PR body structure — it is the single source
127
+
of truth forthe sections and checklist, so never reproduce it from memory. Fillin each section based
128
+
on the changes being PR'd, drop the HTML comment hints, and check any checklist items that apply.
129
+
130
+
**PR title format** — same as the commit subject (Step 3):
118
131
119
132
```
120
-
## :scroll: Description
121
-
<Describe the changes in detail>
122
-
123
-
## :bulb: Motivation and Context
124
-
<Why is this change required? What problem does it solve?>
125
-
126
-
## :green_heart: How did you test it?
127
-
<Describe how you tested>
128
-
129
-
## :pencil: Checklist
130
-
- [ ] I added GH Issue ID _&_ Linear ID
131
-
- [ ] I added tests to verify the changes.
132
-
- [ ] No new PII added or SDK only sends newly added PII if `sendDefaultPII` is enabled.
133
-
- [ ] I updated the docs if needed.
134
-
- [ ] I updated the wizard if needed.
135
-
- [ ] Review from the native team if needed.
136
-
- [ ] No breaking change or entry added to the changelog.
137
-
- [ ] No breaking change for hybrid SDKs or communicated to hybrid SDKs.
138
-
139
-
## :crystal_ball: Next steps
133
+
<type>(<scope>): <Subject>
140
134
```
141
135
142
-
Fill in each section based on the changes being PR'd. Check any checklist items that apply.
136
+
Examples:
137
+
- `feat(core): Add structured logging support`
138
+
- `fix(android): Prevent crash on API 21 when registering receiver`
143
139
144
140
**For stacked PRs:**
145
141
146
142
- Pass `--base <previous-stack-branch>` so the PR targets the previous branch (first PR in a stack targets the collection branch).
147
-
- Use the stacked PR title format: `<type>(<scope>): [<Topic><N>] <Subject>` (see `.cursor/rules/pr.mdc` § "PR Title Naming").
148
-
- Include the stack list at the top of the PR body, before the `## :scroll: Description` section (see `.cursor/rules/pr.mdc` § "Stack List in PR Description"for the format).
149
-
- Add a merge method reminder at the very end of the PR body (see `.cursor/rules/pr.mdc` § "Stack List in PR Description"for the exact text). This only applies to stack PRs, not the collection branch PR.
143
+
- Use the stacked PR title format: `<type>(<scope>): [<Topic> <N>] <Subject>` (see `references/stacked-prs.md` § "PR Title Naming").
144
+
- Include the stack list at the top of the PR body, before the `## :scroll: Description` section (see `references/stacked-prs.md` § "Stack List in PR Description" for the format).
145
+
- Add a merge method reminder at the very end of the PR body (see `references/stacked-prs.md` § "Stack List in PR Description" for the exact text). This only applies to stack PRs, not the collection branch PR.
150
146
151
147
Then continue to Step 5.5 (stacked PRs only) or Step 6.
152
148
153
149
## Step 5.5: Update Stack List on All PRs (stacked PRs only)
154
150
155
151
Skip this step for standalone PRs.
156
152
157
-
After creating the PR, update the PR description on **every other PR in the stack — including the collection branch PR** — so all PRs have the same up-to-date stack list. Follow the format and commands in`.cursor/rules/pr.mdc` § "Stack List in PR Description".
153
+
After creating the PR, update the PR description on **every other PR in the stack — including the collection branch PR** — so all PRs have the same up-to-date stack list. Follow the format and commands in `references/stacked-prs.md` § "Stack List in PR Description".
158
154
159
-
**Important:** When updating PR bodies, never use shell redirects (`>`, `>>`) or pipes (`|`) or compound commands (`&&`). These create compound shell expressions that won't match permission patterns. Instead:
160
-
- Use `gh pr view <NUMBER> --json body --jq '.body'` to get the body (output returned directly)
161
-
- Use the `Write` tool to save it to a temp file
162
-
- Use the `Edit` tool to modify the temp file
163
-
- Use `gh pr edit <NUMBER> --body-file /tmp/pr-body.md` to update
155
+
Edit each body using the procedure in § "Editing PR Descriptions" below.
164
156
165
157
## Step 6: Update Changelog
166
158
@@ -190,6 +182,8 @@ Add an entry to `CHANGELOG.md` under the `## Unreleased` section.
190
182
191
183
Create the subsection under `## Unreleased` if it does not already exist.
192
184
185
+
**When rebasing:** A rebase onto `main` can land your branch after a release was cut, where the `## Unreleased` heading your entry lived under has since been renamed to that version number. If that happens, move your new entry into an `## Unreleased` section at the top of `CHANGELOG.md` (create the section if it no longer exists) so it is not left under an already-released version.
186
+
193
187
#### Entry format
194
188
195
189
```markdown
@@ -210,8 +204,14 @@ git push
210
204
211
205
### No changelog needed
212
206
213
-
If no changelog entry is needed, add `#skip-changelog` to the PR description to disable the changelog CI check:
207
+
If no changelog entry is needed, append `#skip-changelog` to the end of the PR description to disable
208
+
the changelog CI check, using the procedure in § "Editing PR Descriptions" below.
209
+
210
+
## Editing PR Descriptions
211
+
212
+
Do not use shell redirects (`>`, `>>`), pipes (`|`), or compound commands (`&&`, `||`). These create
213
+
compound shell expressions that won't match permission patterns. Instead:
214
214
215
-
1. Get the current body: `gh pr view <PR_NUMBER> --json body --jq '.body'`
216
-
2. Use the `Write` tool to save the output to `/tmp/pr-body.md`, appending `\n#skip-changelog\n` at the end
Copy file name to clipboardExpand all lines: .claude/skills/test/SKILL.md
+11-3Lines changed: 11 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,9 +40,9 @@ Determine the Gradle test task:
40
40
41
41
| Module Pattern | Test Task |
42
42
|---------------|-----------|
43
-
|`sentry-android-*`|`testDebugUnitTest`|
44
-
|`sentry-compose*`|`testDebugUnitTest`|
45
-
|`*-android`|`testDebugUnitTest`|
43
+
|`sentry-android-*`|`testReleaseUnitTest`|
44
+
|`sentry-compose*`|`testReleaseUnitTest`|
45
+
|`*-android`|`testReleaseUnitTest`|
46
46
| Everything else |`test`|
47
47
48
48
**Interactive mode:** Before running, read the test class file and use AskUserQuestion to ask:
@@ -78,6 +78,14 @@ test -d .venv || make setupPython
78
78
79
79
This starts the mock Sentry server, starts the sample app (Spring Boot/Tomcat/CLI), runs tests via `./gradlew :sentry-samples:<sample-module>:systemTest`, and cleans up afterwards.
80
80
81
+
To run **every** system test instead of one module, use the Makefile targets — they also create the
82
+
venv for you:
83
+
84
+
```bash
85
+
make systemTest # all system tests (--all)
86
+
make systemTestInteractive # pick the setups to run (--interactive)
0 commit comments