Pull Request
Create pull requests with proper templates and metadata.
Requirements
- PR should use the PR template of the current repository
- Assignee is automatically set by CI (random CODEOWNER)
- Labels are automatically applied by CI based on changed files
Issue Detection
If the branch name contains an issue number (e.g., feat/123-add-feature,
fix/45-parser-crash), extract it and fetch the issue details:
gh issue view <number> --json title,body,labels
Use the issue context to:
- Link the issue using the Closes section format (see below)
- Inform the PR summary and description from the issue's title and body
If no issue number is found in the branch name, skip this step.
Issue Link Format
Always use this exact format when linking issues in a PR body. Replace the
repo's ## Related Issues template section with a ## Closes section:
## Closes
- Closes #123
- Closes #456
- Relates to #789
This format ensures GitHub renders rich issue links (with title, status, etc.) automatically. Do not append the issue title after the number — GitHub handles that via its rich formatting.
Rules:
- Use a
## Closesheading (not## Related Issues) - Each link is a bullet point:
- Closes #<number> - Use
Relates toinstead ofClosesfor issues that are related but not fully resolved by this PR - Do not add any text after the issue number (no titles, no descriptions)
Usage
When asked to create a PR:
Ensure pre-commit checks pass (lint, test, Docker if applicable)
Push the branch to remote
Detect associated issue from branch name (see above)
Read the repo's PR template: look for
.github/PULL_REQUEST_TEMPLATE.mdFill in the PR template with actual content:
- Summary: Concise description of what the PR does and why
- Type: Check the matching type checkbox (feat, fix, test, etc.)
- Changes Made: Bullet list of specific changes
- Closes: Replace
## Related Issueswith## Closessection using the issue link format specified above - Testing: Check boxes for tests that were added/run
- Quality Checks: Check boxes for lint/format/build that passed
- Checklist: Check all applicable items
- Leave sections like Breaking Changes, Screenshots, Deployment Notes with their placeholder comments if not applicable
Create the PR:
gh pr create --title "<title>" --body "<filled template>"Use a HEREDOC for the body to preserve formatting.
Important: Do NOT use gh pr create --fill — it only uses the commit
message and skips the PR template entirely. Always read and fill the template.
Note: Assignees and labels are handled automatically by GitHub Actions:
pr-auto-assign.yml- Assigns a random CODEOWNERpr-labeler.yml- Labels based on changed files (see.github/labeler.yml)
Checklist
Before creating PR:
- All linting passes
- All tests pass
- Branch is pushed to remote
- Associated issue detected and linked (if branch has issue number)
- PR template read and filled with actual content
- PR created with filled template (not
--fill)