Skip to content

Commit 8888306

Browse files
authored
Update pr-creator agent with issue linking and no-byline rules (#182)
Add step to ensure every PR has a linked issue, include issue type reference table with GraphQL IDs, and enforce no Co-Authored-By trailers or generated-with footers in PR bodies or commits.
1 parent bcf5c36 commit 8888306

1 file changed

Lines changed: 36 additions & 4 deletions

File tree

.claude/agents/pr-creator.md

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,24 @@ cargo check --workspace --all-targets --features "fastly cloudflare"
2727

2828
If any gate fails, report the failure and stop — do not create a broken PR.
2929

30-
### 3. Draft PR content
30+
### 3. Ensure a linked issue exists
31+
32+
Every PR should close a ticket. If no issue exists for this work:
33+
34+
1. Create one using the appropriate issue type (see Issue Types below).
35+
2. Reference it in the PR body with `Closes #<number>`.
36+
37+
### 4. Draft PR content
3138

3239
Using the `.github/pull_request_template.md` structure, draft:
3340

3441
- **Summary**: 1-3 bullet points describing what the PR does and why.
3542
- **Changes table**: list each crate/file modified and what changed.
36-
- **Closes**: link to related issue(s) if mentioned in commits or branch name.
43+
- **Closes**: `Closes #<issue-number>` to auto-close the linked issue.
3744
- **Test plan**: check off which verification steps were run.
3845
- **Checklist**: verify each item applies.
3946

40-
### 4. Create the PR
47+
### 5. Create the PR
4148

4249
```
4350
gh pr create --title "<short title under 70 chars>" --body "$(cat <<'EOF'
@@ -55,10 +62,34 @@ EOF
5562
)"
5663
```
5764

58-
### 5. Report
65+
### 6. Report
5966

6067
Output the PR URL and a summary of what was included.
6168

69+
## Issue Types
70+
71+
This project uses GitHub issue **types** (not labels) to categorize issues.
72+
Set the type via GraphQL after creating the issue:
73+
74+
```
75+
gh api graphql -f query='mutation {
76+
updateIssue(input: {
77+
id: "<issue_node_id>",
78+
issueTypeId: "<type_id>"
79+
}) { issue { id title } }
80+
}'
81+
```
82+
83+
| Type | ID | Use for |
84+
| ---------- | --------------------- | --------------------------------------- |
85+
| Task | `IT_kwDOAAuvmc4BmvnE` | Technical chores, refactoring, CI, deps |
86+
| Bug | `IT_kwDOAAuvmc4BmvnF` | Unexpected behavior or errors |
87+
| Story | `IT_kwDOAAuvmc4BwVyg` | User-facing capability (non-internal) |
88+
| Epic | `IT_kwDOAAuvmc4BwVrF` | Large multi-issue initiatives |
89+
| Initiative | `IT_kwDOAAuvmc4BwVrJ` | High-level product/tech/business goals |
90+
91+
Do **not** use labels as a substitute for types.
92+
6293
## Rules
6394

6495
- Keep the PR title under 70 characters.
@@ -67,3 +98,4 @@ Output the PR URL and a summary of what was included.
6798
- If the branch has many commits, group related changes in the summary.
6899
- Never force-push or rebase without explicit user approval.
69100
- Always base PRs against `main` unless told otherwise.
101+
- Do **not** include any byline, "Generated with" footer, or `Co-Authored-By` trailer — in PR bodies or commit messages.

0 commit comments

Comments
 (0)