Add PR templates, workflows, and labeler config#647
Conversation
Introduces multiple pull request templates for common PR types, adds workflows for automated labeling and project field syncing, and updates labeler.yml for improved label mapping. Also adds a .github README with setup instructions, replaces label.yml with labels-issues-prs.yml, and updates .gitignore and vendor tooling.
|
Warning Rate limit exceeded@ashleyshaw has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 19 minutes and 54 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
WalkthroughAdds multiple GitHub PR templates, a README and labeler config under .github, replaces an old labeling workflow with a new labels/issues/prs workflow, adds a project meta sync workflow, and adds a vendor .gitignore entry. All changes are repository metadata and CI/workflow/configuration files. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor User as User
participant GH as GitHub Events
participant W1 as Workflow: labels-issues-prs
participant Labeler as actions/labeler
participant GHCLI as gh CLI
User->>GH: Open/Edit/Label PR or Issue
GH-->>W1: Trigger
rect rgba(230,240,255,0.35)
Note over W1: PR handling
W1->>Labeler: Apply labels from `.github/labeler.yml`
W1->>GHCLI: Inspect PR labels
alt No `status:*`
W1->>GH: Add `status:needs-review`
else Multiple `status:*`
W1-->>GH: Fail job
end
alt No changelog label
W1->>GH: Add `meta:needs-changelog`
end
end
rect rgba(240,230,255,0.35)
Note over W1: Issue handling
alt Open/Reopen/Transferred
W1->>GH: Add `status:needs-triage`
end
W1->>GHCLI: Inspect Issue labels
alt No `priority:*`
W1->>GH: Add `priority:normal`
else Multiple `status:*`
W1-->>GH: Fail job
end
end
sequenceDiagram
autonumber
actor User as User
participant GH as GitHub Events
participant W2 as Workflow: project-meta-sync
participant AppTok as GitHub App Token
participant Project as GitHub Project
User->>GH: Open/Edit/Label/Close PR or Issue
GH-->>W2: Trigger
W2->>AppTok: Create installation token
W2->>Project: Add item to project
W2->>W2: Map labels & branch to Status/Priority/Type
alt itemId present
W2->>Project: Update fields (Status, Priority, Type)
else
W2-->>Project: Skip update
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Suggested labels
Suggested reviewers
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull Request Overview
This PR introduces comprehensive GitHub automation for issue and pull request management, including multiple PR templates for different change types, automated workflows for labeling and project synchronization, and updated configuration files. The changes establish a standardized workflow for handling issues and PRs with automated label assignment and project board integration.
Key changes:
- Adds automated GitHub workflows for labeling issues/PRs and syncing with GitHub Projects
- Introduces multiple specialized PR templates for different types of changes (feature, bug, docs, etc.)
- Updates labeler configuration with improved label mapping and glob patterns
Reviewed Changes
Copilot reviewed 15 out of 17 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/project-meta-sync.yml |
New workflow for automatically adding issues/PRs to GitHub Projects and syncing metadata fields |
.github/workflows/labels-issues-prs.yml |
New workflow for automated labeling of issues and pull requests with status enforcement |
.github/workflows/label.yml |
Removes old basic labeler workflow in favor of the new comprehensive system |
.github/pull_request_template.md |
Default PR template with structured sections for summary, testing, and risk assessment |
.github/labeler.yml |
Updated labeler configuration with improved glob patterns and label mappings |
.github/README.md |
Documentation for setting up and using the GitHub automation system |
.github/PULL_REQUEST_TEMPLATE/*.md |
Specialized PR templates for different change types (feature, bug, docs, etc.) |
There was a problem hiding this comment.
Actionable comments posted: 4
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (16)
.github/PULL_REQUEST_TEMPLATE/pr_bug.md(1 hunks).github/PULL_REQUEST_TEMPLATE/pr_chore.md(1 hunks).github/PULL_REQUEST_TEMPLATE/pr_ci.md(1 hunks).github/PULL_REQUEST_TEMPLATE/pr_dep_update.md(1 hunks).github/PULL_REQUEST_TEMPLATE/pr_docs.md(1 hunks).github/PULL_REQUEST_TEMPLATE/pr_feature.md(1 hunks).github/PULL_REQUEST_TEMPLATE/pr_hotfix.md(1 hunks).github/PULL_REQUEST_TEMPLATE/pr_refactor.md(1 hunks).github/PULL_REQUEST_TEMPLATE/pr_release.md(1 hunks).github/README.md(1 hunks).github/labeler.yml(1 hunks).github/pull_request_template.md(1 hunks).github/workflows/label.yml(0 hunks).github/workflows/labels-issues-prs.yml(1 hunks).github/workflows/project-meta-sync.yml(1 hunks)vendor/10up/phpcs-composer/.gitignore(1 hunks)
💤 Files with no reviewable changes (1)
- .github/workflows/label.yml
🧰 Additional context used
📓 Path-based instructions (1)
\.github/workflows/**/*.{yml,yaml}
📄 CodeRabbit inference engine (.github/instructions/ci.instructions.md)
\.github/workflows/**/*.{yml,yaml}: Workflows for PR and main must include actions/checkout as the first step
Use actions/setup-node with an LTS version (e.g., node-version: 'lts/')
Enable npm dependency caching (via actions/setup-node cache: 'npm' or actions/cache)
Install dependencies with npm ci (not npm install)
Run npm run lint in the CI workflow
Run npm run build in the CI workflow
Include an optional tests step (e.g., npm test) in the CI workflow
On main branch runs, create a zipped build artifact
Deploy from main must be gated via GitHub Environments (required approvals/protection)
Workflow YAML must be syntactically valid
Use GitHub Actions secrets via ${{ secrets. }} for sensitive values
Files:
.github/workflows/labels-issues-prs.yml.github/workflows/project-meta-sync.yml
🪛 actionlint (1.7.7)
.github/workflows/project-meta-sync.yml
44-44: "github.head_ref" is potentially untrusted. avoid using it directly in inline scripts. instead, pass it through an environment variable. see https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions for more details
(expression)
🪛 YAMLlint (1.37.1)
.github/labeler.yml
[error] 69-69: duplication of key "area:ci" in mapping
(key-duplicates)
[error] 74-74: duplication of key "lang:php" in mapping
(key-duplicates)
[error] 77-77: duplication of key "lang:javascript" in mapping
(key-duplicates)
[error] 80-80: duplication of key "lang:css" in mapping
(key-duplicates)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Summary
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Ash Shaw <ashley@lightspeedwp.agency>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Signed-off-by: Ash Shaw <ashley@lightspeedwp.agency>
There was a problem hiding this comment.
Actionable comments posted: 4
♻️ Duplicate comments (3)
.github/workflows/labels-issues-prs.yml (1)
24-31: Checkout-first policy satisfied for PR job
actions/checkout@v4is now the first step in pr-labels. Nice..github/workflows/project-meta-sync.yml (2)
22-24: Checkout-first policy satisfied
actions/checkout@v4is correctly first in the job.
79-92: Shell injection risk via inline${{ github.head_ref }}Branch names can break or inject into the script. Pass via env and read safely. This was flagged earlier; still present.
- TYPE="" - HEAD='${{ github.head_ref }}' + TYPE="" + HEAD="$HEAD_REF" if [ -n "$HEAD" ]; then [[ "$HEAD" =~ ^feat/ ]] && TYPE='Feature' [[ "$HEAD" =~ ^fix/ ]] && TYPE='Bug' [[ "$HEAD" =~ ^docs?/ ]] && TYPE='Documentation' [[ "$HEAD" =~ ^(chore/|build/) ]] && TYPE='Task' fi @@ - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + HEAD_REF: ${{ github.head_ref }}
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
.github/workflows/labels-issues-prs.yml(1 hunks).github/workflows/project-meta-sync.yml(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
\.github/workflows/**/*.{yml,yaml}
📄 CodeRabbit inference engine (.github/instructions/ci.instructions.md)
\.github/workflows/**/*.{yml,yaml}: Workflows for PR and main must include actions/checkout as the first step
Use actions/setup-node with an LTS version (e.g., node-version: 'lts/')
Enable npm dependency caching (via actions/setup-node cache: 'npm' or actions/cache)
Install dependencies with npm ci (not npm install)
Run npm run lint in the CI workflow
Run npm run build in the CI workflow
Include an optional tests step (e.g., npm test) in the CI workflow
On main branch runs, create a zipped build artifact
Deploy from main must be gated via GitHub Environments (required approvals/protection)
Workflow YAML must be syntactically valid
Use GitHub Actions secrets via ${{ secrets. }} for sensitive values
Files:
.github/workflows/labels-issues-prs.yml.github/workflows/project-meta-sync.yml
…and enhance JavaScript, CSS, and PHP source labeling. Update project meta sync workflow to safely handle PR head references in environment variables.
There was a problem hiding this comment.
Actionable comments posted: 2
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
.github/labeler.yml(1 hunks).github/workflows/labels-issues-prs.yml(1 hunks).github/workflows/project-meta-sync.yml(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
\.github/workflows/**/*.{yml,yaml}
📄 CodeRabbit inference engine (.github/instructions/ci.instructions.md)
\.github/workflows/**/*.{yml,yaml}: Workflows for PR and main must include actions/checkout as the first step
Use actions/setup-node with an LTS version (e.g., node-version: 'lts/')
Enable npm dependency caching (via actions/setup-node cache: 'npm' or actions/cache)
Install dependencies with npm ci (not npm install)
Run npm run lint in the CI workflow
Run npm run build in the CI workflow
Include an optional tests step (e.g., npm test) in the CI workflow
On main branch runs, create a zipped build artifact
Deploy from main must be gated via GitHub Environments (required approvals/protection)
Workflow YAML must be syntactically valid
Use GitHub Actions secrets via ${{ secrets. }} for sensitive values
Files:
.github/workflows/labels-issues-prs.yml.github/workflows/project-meta-sync.yml
🪛 actionlint (1.7.7)
.github/workflows/project-meta-sync.yml
20-20: could not parse as YAML: yaml: line 20: did not find expected key
(syntax-check)
🪛 GitHub Actions: Labeler
.github/labeler.yml
[error] 1-2: Labeler configuration error: 'documentation' label has an unexpected type (should be an array of config options); ensure the YAML defines 'documentation' as an array. The config file was not found locally and was fetched via the API.
🪛 YAMLlint (1.37.1)
.github/workflows/project-meta-sync.yml
[error] 24-24: syntax error: expected , but found '-'
(syntax)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Summary
🔇 Additional comments (1)
.github/workflows/project-meta-sync.yml (1)
57-90: Guard thegrepchecks whenset -euo pipefailis enabled.Each
echo "$LABELS" | grep … && …line will terminate the step whenever the label is absent becausegrepreturns 1 underset -euo pipefail. Replace the chains withif …; then …; fi(or append|| true) for status and priority so the workflow keeps running when a label isn’t present.- echo "$LABELS" | grep -q '^status:in-progress' && STATUS='In progress' + if printf '%s\n' "$LABELS" | grep -q '^status:in-progress'; then + STATUS='In progress' + fi @@ - echo "$LABELS" | grep -q '^priority:critical' && PRIORITY='Critical' + if printf '%s\n' "$LABELS" | grep -q '^priority:critical'; then + PRIORITY='Critical' + fiRepeat the same pattern for the other
greplookups so none of them can abort the job.Likely an incorrect or invalid review comment.
| # Block editor / patterns | ||
| area:block-editor: | ||
| - 'src/blocks/**/*' | ||
| - changed-files: | ||
| - any-glob-to-any-file: ['**/block.json', '**/src/blocks/**'] | ||
|
|
||
| area:theme: | ||
| - changed-files: | ||
| - any-glob-to-any-file: ['**/theme.json', '**/templates/**', '**/patterns/**', '**/parts/**'] |
There was a problem hiding this comment.
Fix the changed-files shape for block editor & theme labels.
changed-files must map straight to an object. The extra list item (- any-glob-to-any-file) makes the section invalid for the labeler and it will ignore those patterns. Drop the inner hyphen and map directly.
- changed-files:
- - any-glob-to-any-file: ['**/block.json', '**/src/blocks/**']
+ any-glob-to-any-file:
+ - '**/block.json'
+ - '**/src/blocks/**'
@@
- changed-files:
- - any-glob-to-any-file: ['**/theme.json', '**/templates/**', '**/patterns/**', '**/parts/**']
+ any-glob-to-any-file:
+ - '**/theme.json'
+ - '**/templates/**'
+ - '**/patterns/**'
+ - '**/parts/**'📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| # Block editor / patterns | |
| area:block-editor: | |
| - 'src/blocks/**/*' | |
| - changed-files: | |
| - any-glob-to-any-file: ['**/block.json', '**/src/blocks/**'] | |
| area:theme: | |
| - changed-files: | |
| - any-glob-to-any-file: ['**/theme.json', '**/templates/**', '**/patterns/**', '**/parts/**'] | |
| # Block editor / patterns | |
| area:block-editor: | |
| - 'src/blocks/**/*' | |
| - changed-files: | |
| any-glob-to-any-file: | |
| - '**/block.json' | |
| - '**/src/blocks/**' | |
| area:theme: | |
| - changed-files: | |
| any-glob-to-any-file: | |
| - '**/theme.json' | |
| - '**/templates/**' | |
| - '**/patterns/**' | |
| - '**/parts/**' |
🤖 Prompt for AI Agents
In .github/labeler.yml around lines 61 to 69, the changed-files entries for
area:block-editor and area:theme use an extra list item ("-
any-glob-to-any-file: [...]") which makes the shape invalid; change each
changed-files value to be a direct mapping to the any-glob-to-any-file key
(i.e., remove the inner hyphen so changed-files: any-glob-to-any-file: [ ... ]),
ensuring both block-editor and theme sections use the correct object mapping for
changed-files.
| - name: Create GitHub App installation token | ||
| id: app-token | ||
| uses: actions/create-github-app-token@v2 | ||
| with: | ||
| app-id: ${{ vars.LS_APP_ID }} | ||
| private-key: ${{ secrets.LS_APP_PRIVATE_KEY }} | ||
| # Optionally scope permissions tighter (inherits installation perms by default) | ||
| # permission-issues: read | ||
| # permission-pull-requests: read | ||
| # permission-projects: write | ||
|
|
||
| - name: Add item to project (new issues/PRs) | ||
| id: addp | ||
| uses: actions/add-to-project@v1 | ||
| with: | ||
| project-url: ${{ env.PROJECT_URL }} | ||
| github-token: ${{ steps.app-token.outputs.token }} | ||
| # Optionally filter by labels: | ||
| # labeled: status:ready,status:in-progress | ||
| # label-operator: OR |
There was a problem hiding this comment.
Sort out the step indentation so the workflow parses.
The extra two spaces before - name: Create GitHub App installation token (and the follow-on step) make this job invalid YAML, matching the actionlint/yamllint failures. Align those steps with the checkout step so they sit directly under steps:.
- - name: Create GitHub App installation token
+ - name: Create GitHub App installation token
@@
- - name: Add item to project (new issues/PRs)
+ - name: Add item to project (new issues/PRs)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - name: Create GitHub App installation token | |
| id: app-token | |
| uses: actions/create-github-app-token@v2 | |
| with: | |
| app-id: ${{ vars.LS_APP_ID }} | |
| private-key: ${{ secrets.LS_APP_PRIVATE_KEY }} | |
| # Optionally scope permissions tighter (inherits installation perms by default) | |
| # permission-issues: read | |
| # permission-pull-requests: read | |
| # permission-projects: write | |
| - name: Add item to project (new issues/PRs) | |
| id: addp | |
| uses: actions/add-to-project@v1 | |
| with: | |
| project-url: ${{ env.PROJECT_URL }} | |
| github-token: ${{ steps.app-token.outputs.token }} | |
| # Optionally filter by labels: | |
| # labeled: status:ready,status:in-progress | |
| # label-operator: OR | |
| - name: Create GitHub App installation token | |
| id: app-token | |
| uses: actions/create-github-app-token@v2 | |
| with: | |
| app-id: ${{ vars.LS_APP_ID }} | |
| private-key: ${{ secrets.LS_APP_PRIVATE_KEY }} | |
| # Optionally scope permissions tighter (inherits installation perms by default) | |
| # permission-issues: read | |
| # permission-pull-requests: read | |
| # permission-projects: write | |
| - name: Add item to project (new issues/PRs) | |
| id: addp | |
| uses: actions/add-to-project@v1 | |
| with: | |
| project-url: ${{ env.PROJECT_URL }} | |
| github-token: ${{ steps.app-token.outputs.token }} | |
| # Optionally filter by labels: | |
| # labeled: status:ready,status:in-progress | |
| # label-operator: OR |
🧰 Tools
🪛 YAMLlint (1.37.1)
[error] 24-24: syntax error: expected , but found '-'
(syntax)
🤖 Prompt for AI Agents
.github/workflows/project-meta-sync.yml lines 24-43: the two steps starting with
"Create GitHub App installation token" and "Add item to project (new
issues/PRs)" are over-indented by two spaces and thus not aligned under the
job's steps block, causing invalid YAML; fix by removing the extra two-space
indentation so these step entries align exactly with the other step entries
(e.g., the checkout step) under steps:, ensuring each "- name:" line begins at
the same column as the other step definitions and preserving the nested with:
keys indented under their respective steps.
Signed-off-by: Ash Shaw <ashley@lightspeedwp.agency>
Uplevel your code reviews with CodeRabbit ProCodeRabbit ProIf you like this project, please support us by purchasing the Pro version. The Pro version has advanced context, superior noise reduction and several proprietary improvements compared to the open source version. Moreover, CodeRabbit Pro is free for open source projects. |
There was a problem hiding this comment.
Files selected (17)
- .github/PULL_REQUEST_TEMPLATE/pr_bug.md (1)
- .github/PULL_REQUEST_TEMPLATE/pr_chore.md (1)
- .github/PULL_REQUEST_TEMPLATE/pr_ci.md (1)
- .github/PULL_REQUEST_TEMPLATE/pr_dep_update.md (1)
- .github/PULL_REQUEST_TEMPLATE/pr_docs.md (1)
- .github/PULL_REQUEST_TEMPLATE/pr_feature.md (1)
- .github/PULL_REQUEST_TEMPLATE/pr_hotfix.md (1)
- .github/PULL_REQUEST_TEMPLATE/pr_refactor.md (1)
- .github/PULL_REQUEST_TEMPLATE/pr_release.md (1)
- .github/README.md (1)
- .github/labeler.yml (1)
- .github/pull_request_template.md (1)
- .github/workflows/label.yml (1)
- .github/workflows/labels-issues-prs.yml (1)
- .github/workflows/project-meta-sync.yml (1)
- .gitignore (1)
- vendor/10up/phpcs-composer/.gitignore (1)
Files not summarized due to errors (17)
- .github/PULL_REQUEST_TEMPLATE/pr_bug.md (nothing obtained from openai)
- .github/PULL_REQUEST_TEMPLATE/pr_dep_update.md (nothing obtained from openai)
- .github/PULL_REQUEST_TEMPLATE/pr_docs.md (nothing obtained from openai)
- .github/PULL_REQUEST_TEMPLATE/pr_feature.md (nothing obtained from openai)
- .github/PULL_REQUEST_TEMPLATE/pr_ci.md (nothing obtained from openai)
- .github/PULL_REQUEST_TEMPLATE/pr_chore.md (nothing obtained from openai)
- .github/PULL_REQUEST_TEMPLATE/pr_release.md (nothing obtained from openai)
- .github/PULL_REQUEST_TEMPLATE/pr_refactor.md (nothing obtained from openai)
- .github/PULL_REQUEST_TEMPLATE/pr_hotfix.md (nothing obtained from openai)
- .github/pull_request_template.md (nothing obtained from openai)
- .github/labeler.yml (nothing obtained from openai)
- .github/README.md (nothing obtained from openai)
- .gitignore (nothing obtained from openai)
- vendor/10up/phpcs-composer/.gitignore (nothing obtained from openai)
- .github/workflows/label.yml (nothing obtained from openai)
- .github/workflows/project-meta-sync.yml (nothing obtained from openai)
- .github/workflows/labels-issues-prs.yml (nothing obtained from openai)
Files not reviewed due to errors (17)
- .github/PULL_REQUEST_TEMPLATE/pr_docs.md (no response)
- .github/PULL_REQUEST_TEMPLATE/pr_chore.md (no response)
- .github/PULL_REQUEST_TEMPLATE/pr_dep_update.md (no response)
- .github/PULL_REQUEST_TEMPLATE/pr_feature.md (no response)
- .github/PULL_REQUEST_TEMPLATE/pr_bug.md (no response)
- .github/PULL_REQUEST_TEMPLATE/pr_ci.md (no response)
- .github/PULL_REQUEST_TEMPLATE/pr_refactor.md (no response)
- .github/PULL_REQUEST_TEMPLATE/pr_hotfix.md (no response)
- .github/PULL_REQUEST_TEMPLATE/pr_release.md (no response)
- .github/pull_request_template.md (no response)
- .github/README.md (no response)
- .github/labeler.yml (no response)
- .github/workflows/label.yml (no response)
- .github/workflows/project-meta-sync.yml (no response)
- .github/workflows/labels-issues-prs.yml (no response)
- .gitignore (no response)
- vendor/10up/phpcs-composer/.gitignore (no response)
Review comments generated (0)
- Review: 0
- LGTM: 0
Tips
Chat with
CodeRabbit Bot (@coderabbitai)
- Reply on review comments left by this bot to ask follow-up questions. A review comment is a comment on a diff or a file.
- Invite the bot into a review comment chain by tagging
@coderabbitaiin a reply.
Code suggestions
- The bot may make code suggestions, but please review them carefully before committing since the line number ranges may be misaligned.
- You can edit the comment made by the bot and manually tweak the suggestion if it is slightly off.
Pausing incremental reviews
- Add
@coderabbitai: ignoreanywhere in the PR description to pause further reviews from the bot.
Introduces multiple pull request templates for common PR types, adds workflows for automated labeling and project field syncing, and updates labeler.yml for improved label mapping. Also adds a .github README with setup instructions, replaces label.yml with labels-issues-prs.yml, and updates .gitignore and vendor tooling.
name: "Default PR"
about: "General change; use for features, improvements, refactors when no specific template fits"
title: "change: "
labels: ["status:needs-review"]
Summary
Linked issues: Closes # (and/or) Relates to #
Changes
Screenshots / UI (if applicable)
Test Notes
Risk & Rollback
Checklist (Global DoD / PR)
Summary by CodeRabbit