Pull Request Policy Templates
A consistent PR template + CODEOWNERS + required checks shifts quality left. This skill defines a template with sections for scope, test evidence, deploy plan, and risk; a CODEOWNERS matching metadata types to owning teams; and branch-protection rules requiring status checks (validation deploy, test run, scan).
Adoption Signals
Teams >3 people; regulated or production-critical repos.
- Required when audit evidence (who reviewed, when, against what checklist) must be derivable from PR history.
- Required when a CODEOWNERS rule must enforce architect sign-off for irreversible metadata changes.
Recommended Workflow
- Write
.github/pull_request_template.mdwith Scope, Test Evidence, Deploy Plan, Rollback, and Risk sections. - Create
.github/CODEOWNERSmappingforce-app/main/default/flows/to @flow-team,classes/to @apex-team, etc. - Enable branch protection: require PR + 1 review + all required checks green + CODEOWNERS approval.
- Wire required status checks: validation deploy, Apex test run ≥75%, PMD/Checkmarx scan.
- Quarterly: audit merged PRs; measure cycle time and revert rate; tune policy.
Key Considerations
- CODEOWNERS with @team handles scales better than individual usernames.
- Coverage can be blocker or soft warning — pick one and enforce consistently.
- Squash-merge keeps history clean; but preserve deploy traceability with merge commits.
- Template must be ≤1 screen — long templates get ignored.
Worked Examples (see references/examples.md)
- CODEOWNERS mapping — Flow changes route to flow team
- Required check: validation deploy — Prevent 'works in dev' surprises
Common Gotchas (see references/gotchas.md)
- CODEOWNERS without team — User leaves; PRs stuck.
- Template too long — Authors delete it.
- Coverage check both warn+block inconsistent — Confusion.
Top LLM Anti-Patterns (full list in references/llm-anti-patterns.md)
- Optional PR template (unused)
- CODEOWNERS with personal accounts
- No validation deploy gate
Official Sources Used
- Salesforce DX Developer Guide — https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/
- Unlocked Packaging — https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_dev2gp.htm
- SF CLI — https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/
- DevOps Center — https://help.salesforce.com/s/articleView?id=sf.devops_center_overview.htm
- Scratch Org Snapshots — https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs_snapshots.htm
- sfdx-hardis — https://sfdx-hardis.cloudity.com/