PR Creation Process
- Analyze changes:
git diff main...HEAD to understand ALL commits
- Determine affected components: SDK, API, UI, MCP, Docs
- Fill template sections based on changes
- Create PR with
gh pr create
PR Template Structure
### Context
{Why this change? Link issues with `Fix #XXXX`}
### Description
{Summary of changes and dependencies}
### Steps to review
{How to test/verify the changes}
### Checklist
<details>
<summary><b>Community Checklist</b></summary>
- [ ] This feature/issue is listed in [here](https://github.com/prowler-cloud/prowler/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen) or roadmap.prowler.com
- [ ] Is it assigned to me, if not, request it via the issue/feature in [here](https://github.com/prowler-cloud/prowler/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen) or [Prowler Community Slack](goto.prowler.com/slack)
</details>
- Are there new checks included in this PR? Yes / No
- If so, do we need to update permissions for the provider?
- [ ] Review if the code is being covered by tests.
- [ ] Review if code is being documented following https://github.com/google/styleguide/blob/gh-pages/pyguide.md#38-comments-and-docstrings
- [ ] Review if backport is needed.
- [ ] Review if is needed to change the Readme.md
- [ ] Ensure a changelog fragment is added under <component>/changelog.d/, if applicable.
#### SDK/CLI
- Are there new checks included in this PR? Yes / No
- If so, do we need to update permissions for the provider? Please review this carefully.
#### UI (if applicable)
- [ ] All issue/task requirements work as expected on the UI
- [ ] Screenshots/Video - Mobile (X < 640px)
- [ ] Screenshots/Video - Tablet (640px > X < 1024px)
- [ ] Screenshots/Video - Desktop (X > 1024px)
- [ ] Ensure a changelog fragment is added under ui/changelog.d/
#### API (if applicable)
- [ ] All issue/task requirements work as expected on the API
- [ ] Endpoint response output (if applicable)
- [ ] EXPLAIN ANALYZE output for new/modified queries or indexes (if applicable)
- [ ] Performance test results (if applicable)
- [ ] Any other relevant evidence of the implementation (if applicable)
- [ ] Verify if API specs need to be regenerated.
- [ ] Check if version updates are required.
- [ ] Ensure a changelog fragment is added under api/changelog.d/
### License
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
Component-Specific Rules
| Component |
Changelog fragment |
Extra Checks |
| SDK |
prowler/changelog.d/ |
New checks → permissions update? |
| API |
api/changelog.d/ |
API specs, version bump, endpoint output, EXPLAIN ANALYZE, performance |
| UI |
ui/changelog.d/ |
Screenshots for Mobile/Tablet/Desktop |
| MCP |
mcp_server/changelog.d/ |
N/A |
Commands
# Check current branch status
git status
git log main..HEAD --oneline
# View full diff
git diff main...HEAD
# Create PR with heredoc for body
gh pr create --title "feat: description" --body "$(cat <<'EOF'
### Context
...
EOF
)"
# Create draft PR
gh pr create --draft --title "feat: description"
Title Conventions
Follow conventional commits:
feat: New feature
fix: Bug fix
docs: Documentation
chore: Maintenance
refactor: Code restructure
test: Tests
Before Creating PR
- ✅ All tests pass locally
- ✅ Linting passes (
make lint or component-specific)
- ✅ Changelog fragment added (if applicable)
- ✅ Branch is up to date with main
- ✅ Commits are clean and descriptive
Before Re-Requesting Review (REQUIRED)
Resolve or respond to every open inline review thread before re-requesting review:
- Agreed + fixed: Commit the change. Reply with the commit hash so the reviewer can verify quickly:
Fixed in abc1234.
- Agreed but deferred: Explain why it's out of scope for this PR and where it's tracked.
- Disagreed: Reply with clear technical reasoning. Do not leave threads silently open.
- Re-request review only after all threads are in a clean state — either resolved or explicitly responded to.
Rule of thumb: A reviewer should never have to wonder "did they see my comment?" when they re-open the PR.
Resources
- Documentation: See references/ for links to local developer guide
1---
2name: prowler-pr
3description: >
4 Creates Pull Requests for Prowler following the project template and conventions.
5 Trigger: When working on pull request requirements or creation (PR template sections, PR title Conventional Commits check, changelog gate/no-changelog label), or when inspecting PR-related GitHub workflows like conventional-commit.yml, pr-check-changelog.yml, pr-conflict-checker.yml, labeler.yml, or CODEOWNERS.
6license: Apache-2.0
7metadata:
8 author: prowler-cloud
9 version: "1.0"
10 scope: [root]
11 auto_invoke:
12 - "Create a PR with gh pr create"
13 - "Review PR requirements: template, title conventions, changelog gate"
14 - "Fill .github/pull_request_template.md (Context/Description/Steps to review/Checklist)"
15 - "Inspect PR CI workflows (.github/workflows/*): conventional-commit, pr-check-changelog, pr-conflict-checker, labeler"
16 - "Understand review ownership with CODEOWNERS"
17allowed-tools: Read, Edit, Write, Glob, Grep, Bash, WebFetch, WebSearch, Task
18---
19
20## PR Creation Process
21
221. **Analyze changes**: `git diff main...HEAD` to understand ALL commits
232. **Determine affected components**: SDK, API, UI, MCP, Docs
243. **Fill template sections** based on changes
254. **Create PR** with `gh pr create`
26
27## PR Template Structure
28
29```markdown
30### Context
31
32{Why this change? Link issues with `Fix #XXXX`}
33
34### Description
35
36{Summary of changes and dependencies}
37
38### Steps to review
39
40{How to test/verify the changes}
41
42### Checklist
43
44<details>
45
46<summary><b>Community Checklist</b></summary>
47
48- [ ] This feature/issue is listed in [here](https://github.com/prowler-cloud/prowler/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen) or roadmap.prowler.com
49- [ ] Is it assigned to me, if not, request it via the issue/feature in [here](https://github.com/prowler-cloud/prowler/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen) or [Prowler Community Slack](goto.prowler.com/slack)
50
51</details>
52
53- Are there new checks included in this PR? Yes / No
54 - If so, do we need to update permissions for the provider?
55- [ ] Review if the code is being covered by tests.
56- [ ] Review if code is being documented following https://github.com/google/styleguide/blob/gh-pages/pyguide.md#38-comments-and-docstrings
57- [ ] Review if backport is needed.
58- [ ] Review if is needed to change the Readme.md
59- [ ] Ensure a changelog fragment is added under <component>/changelog.d/, if applicable.
60
61#### SDK/CLI
62- Are there new checks included in this PR? Yes / No
63 - If so, do we need to update permissions for the provider? Please review this carefully.
64
65#### UI (if applicable)
66- [ ] All issue/task requirements work as expected on the UI
67- [ ] Screenshots/Video - Mobile (X < 640px)
68- [ ] Screenshots/Video - Tablet (640px > X < 1024px)
69- [ ] Screenshots/Video - Desktop (X > 1024px)
70- [ ] Ensure a changelog fragment is added under ui/changelog.d/
71
72#### API (if applicable)
73- [ ] All issue/task requirements work as expected on the API
74- [ ] Endpoint response output (if applicable)
75- [ ] EXPLAIN ANALYZE output for new/modified queries or indexes (if applicable)
76- [ ] Performance test results (if applicable)
77- [ ] Any other relevant evidence of the implementation (if applicable)
78- [ ] Verify if API specs need to be regenerated.
79- [ ] Check if version updates are required.
80- [ ] Ensure a changelog fragment is added under api/changelog.d/
81
82### License
83
84By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
85```
86
87## Component-Specific Rules
88
89| Component | Changelog fragment | Extra Checks |
90|-----------|--------------------|--------------|
91| SDK | `prowler/changelog.d/` | New checks → permissions update? |
92| API | `api/changelog.d/` | API specs, version bump, endpoint output, EXPLAIN ANALYZE, performance |
93| UI | `ui/changelog.d/` | Screenshots for Mobile/Tablet/Desktop |
94| MCP | `mcp_server/changelog.d/` | N/A |
95
96## Commands
97
98```bash
99# Check current branch status
100git status
101git log main..HEAD --oneline
102
103# View full diff
104git diff main...HEAD
105
106# Create PR with heredoc for body
107gh pr create --title "feat: description" --body "$(cat <<'EOF'
108### Context
109...
110EOF
111)"
112
113# Create draft PR
114gh pr create --draft --title "feat: description"
115```
116
117## Title Conventions
118
119Follow conventional commits:
120- `feat:` New feature
121- `fix:` Bug fix
122- `docs:` Documentation
123- `chore:` Maintenance
124- `refactor:` Code restructure
125- `test:` Tests
126
127## Before Creating PR
128
1291. ✅ All tests pass locally
1302. ✅ Linting passes (`make lint` or component-specific)
1313. ✅ Changelog fragment added (if applicable)
1324. ✅ Branch is up to date with main
1335. ✅ Commits are clean and descriptive
134
135## Before Re-Requesting Review (REQUIRED)
136
137Resolve or respond to **every** open inline review thread before re-requesting review:
138
1391. **Agreed + fixed**: Commit the change. Reply with the commit hash so the reviewer can verify quickly:
140 > Fixed in `abc1234`.
1412. **Agreed but deferred**: Explain why it's out of scope for this PR and where it's tracked.
1423. **Disagreed**: Reply with clear technical reasoning. Do not leave threads silently open.
1434. **Re-request review** only after all threads are in a clean state — either resolved or explicitly responded to.
144
145> **Rule of thumb**: A reviewer should never have to wonder "did they see my comment?" when they re-open the PR.
146
147## Resources
148
149- **Documentation**: See [references/](references/) for links to local developer guide