Validate PR size (files, additions, deletions)
"size"
validate: - type: "size" files: 10 total: 500 message: "This PR is too large. Please split it into smaller PRs."
validate: - type: "size" files: 10 message: "PRs should modify no more than 10 files"
validate: - type: "size" files: 15 addition: 500 deletion: 200 message: "PR exceeds size limits. Keep PRs focused and manageable."
validate: - type: "size" files: 10 total: 500 ignore: - "package-lock.json" - "yarn.lock" - "*.generated.ts" message: "PR is too large (excluding dependency lock files and generated code)"
Calculate Size
Apply Filters
ignore
Check Limits
Return Result
ruleset: - name: "Size Limits - Production" when: - "pull_request.opened" - "pull_request.synchronize" if: - type: "branch" base: match: "main" validate: - type: "size" files: 10 total: 300 on_failure: - comment: body: "PRs to main branch must be small and focused (max 10 files, 300 lines)" - name: "Size Limits - Development" when: - "pull_request.opened" - "pull_request.synchronize" if: - type: "branch" base: match: "develop" validate: - type: "size" files: 20 total: 500 on_failure: - comment: body: "PRs to develop branch should be reasonably sized (max 20 files, 500 lines)"
ruleset: - name: "Feature PR Size" when: - "pull_request.opened" - "pull_request.synchronize" if: - type: "title" match: "^feat: .*" validate: - type: "size" files: 15 total: 500 on_failure: - label: add: ["large-feature"] - name: "Bug Fix PR Size" when: - "pull_request.opened" - "pull_request.synchronize" if: - type: "title" match: "^fix: .*" validate: - type: "size" files: 5 total: 200 on_failure: - label: add: ["large-bugfix"]
ruleset: - name: "PR Size Labeling" when: - "pull_request.opened" - "pull_request.synchronize" on_success: - label: remove: ["size: small", "size: medium", "size: large"] - name: "Small PR" when: - "pull_request.opened" - "pull_request.synchronize" if: - type: "size" files: max: 5 total: max: 100 on_success: - label: add: ["size: small"] - name: "Medium PR" when: - "pull_request.opened" - "pull_request.synchronize" if: - type: "size" files: min: 6 max: 15 total: min: 101 max: 500 on_success: - label: add: ["size: medium"] - name: "Large PR" when: - "pull_request.opened" - "pull_request.synchronize" if: - type: "size" files: min: 16 total: min: 501 on_success: - label: add: ["size: large"]