Usage Examples¶
Real-world examples and configuration templates for different team types and use cases.
By Team Type¶
Frontend Team¶
Focus on UI changes, styling, and frontend dependencies:
name: Auto Label PRs
on:
pull_request:
types: [opened, synchronize, reopened]
permissions:
contents: read
pull-requests: write
jobs:
label:
uses: workflow-kit/pr-auto-labeler/.github/workflows/pr-auto-labeler.yml@latest
with:
enabled_rules: '[
"ui-change",
"style-change",
"test-missing",
"dependency-change",
"new-dependency",
"large-pr"
]'
label_overrides: '{
"ui-change": "area/frontend",
"test-missing": "needs-tests"
}'
Backend/API Team¶
Track database, security, and API changes:
enabled_rules: '[
"migration",
"risky-migration",
"safe-migration",
"test-missing",
"security-change",
"new-dependency",
"dependency-downgrade",
"large-pr"
]'
DevOps/Platform Team¶
Monitor infrastructure and CI/CD:
enabled_rules: '[
"ci-change",
"docker-change",
"infra-change",
"env-change",
"new-env-variable",
"dependency-change"
]'
Security-Focused¶
Maximum security coverage:
enabled_rules: '[
"potential-secret-leak",
"security-change",
"risky-code",
"risky-migration",
"dependency-downgrade",
"env-change"
]'
By Use Case¶
Enforce PR Quality Standards¶
enabled_rules: '[
"large-pr",
"test-missing",
"missing-description",
"no-linked-issue",
"work-in-progress"
]'
large_pr_threshold: '300' # Strict
Fast-Track Simple Changes¶
Identify low-risk PRs for faster review:
High-Risk Change Detection¶
Flag changes that need extra scrutiny:
enabled_rules: '[
"risky-migration",
"security-change",
"risky-code",
"function-removed",
"dependency-downgrade"
]'
Advanced Integrations¶
Auto-Assign Reviewers¶
jobs:
label:
uses: workflow-kit/pr-auto-labeler/.github/workflows/pr-auto-labeler.yml@latest
with:
enabled_rules: '["ui-change", "security-change"]'
assign-reviewers:
needs: label
runs-on: ubuntu-latest
steps:
- name: Assign frontend team
if: contains(github.event.pull_request.labels.*.name, 'ui-change')
uses: actions/github-script@v7
with:
script: |
await github.rest.pulls.requestReviewers({
...context.repo,
pull_number: context.issue.number,
team_reviewers: ['frontend-team']
})
- name: Assign security team
if: contains(github.event.pull_request.labels.*.name, 'security-change')
uses: actions/github-script@v7
with:
script: |
await github.rest.pulls.requestReviewers({
...context.repo,
pull_number: context.issue.number,
team_reviewers: ['security-team']
})
Block Risky Changes¶
Fail the workflow for dangerous patterns:
jobs:
label:
uses: workflow-kit/pr-auto-labeler/.github/workflows/pr-auto-labeler.yml@latest
with:
enabled_rules: '["risky-code", "risky-migration"]'
block-risky:
needs: label
runs-on: ubuntu-latest
steps:
- name: Check for risky patterns
run: |
if [[ "${{ contains(github.event.pull_request.labels.*.name, 'risky-code') }}" == "true" ]] ||
[[ "${{ contains(github.event.pull_request.labels.*.name, 'risky-migration') }}" == "true" ]]; then
echo "🚫 Risky changes detected - manual approval required"
exit 1
fi
Trigger Specific Tests¶
Run tests based on labels:
jobs:
label:
uses: workflow-kit/pr-auto-labeler/.github/workflows/pr-auto-labeler.yml@latest
with:
enabled_rules: '["ui-change", "migration"]'
visual-tests:
needs: label
if: contains(github.event.pull_request.labels.*.name, 'ui-change')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run visual regression tests
run: npm run test:visual
db-tests:
needs: label
if: contains(github.event.pull_request.labels.*.name, 'migration')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run migration tests
run: npm run test:migrations
Real-World Scenarios¶
Scenario 1: React Component Change¶
PR Changes:
Configuration:
Result:
- ✅ ui-change — Component file modified
- ✅ test-missing — No test file changes
Scenario 2: Database Migration¶
PR Changes:
Configuration:
Result:
- ✅ migration — Migration file detected
- ✅ risky-migration — DROP operation
- ✅ schema-change — ALTER TABLE
Scenario 3: Security Fix¶
PR Changes:
// src/auth/login.ts
- const token = eval(userInput); // Removed dangerous code
+ const token = jwt.sign(payload, secret);
Configuration:
Result:
- ✅ security-change — Auth file modified
- ❌ risky-code — Not applied (eval was removed, not added)