This document describes the organization-wide label system used for issues and pull requests, along with DevOps instructions for maintaining consistency across repositories.
priority/critical– 🔴 Must have for milestone, blocks other workpriority/high– 🟠 Important for milestone successpriority/medium– 🟡 Nice to have, can be moved to next milestonepriority/low– ⚫ Future consideration, not scheduled
enhancement– 🔵 New feature or improvementbug– 🔴 Something isn't working correctlydocumentation– 📚 Improvements or additions to documentationquestion– ❓ Further information is requestedduplicate– ⚫ This issue or pull request already existswontfix– ⚫ This will not be worked onbreaking-change–⚠️ Introduces breaking changes
core– 🟢 Core library functionalityapi– 🔌 Public API and interfacestesting– 🧪 Testing framework and test casesquality– 🔍 Code quality and static analysisconfiguration– ⚙️ Configuration optionsintegration– 🔗 Third-party integrations
needs-triage– 🟣 New issue that needs initial reviewstatus/planning– 📋 In planning and design phasestatus/in-progress– 🔄 Actively being worked onstatus/review– 👀 In code review or testingstatus/blocked– 🚫 Blocked by dependency or external factorstatus/ready– ✅ Ready for development to begin
good-first-issue– 🌱 Good for newcomershelp-wanted– 🙋 Extra attention is neededsecurity– 🔒 Security related issueperformance– ⚡ Performance improvementdependencies– 📦 Updates to dependenciessize/small– 🗏 Small change sizearea/build– 🛠️ Build system or CI/CD pipeline
-
Automatic Labels via GitHub Actions:
needs-triageadded to all new issues- Type labels added based on title prefix
- Component labels added based on issue template selection
-
Manual Triage:
- Review
needs-triageissues within 2–3 business days - Add priority and component labels
- Remove
needs-triageand addstatus/readyorstatus/planning
- Review
-
Development Workflow:
- Add
status/in-progresswhen work begins - Add
status/reviewwhen PR is created - Close issue when merged and tested
- Add
- Match type and component labels to changes
- Add
breaking-changefor API changes - Add
dependenciesfor package updates - Add priority labels for critical fixes
# Ready for development
is:issue is:open label:"status/ready" label:"priority/high"
# Good first issues
is:issue is:open label:"good-first-issue" label:"priority/medium"
# Documentation needs
is:issue is:open label:documentation -label:"status/in-progress"
---
🛠️ DevOps Instructions for Label Management
1) Update Global Labels
Edit labels/labels.yml in the org .github repository.
Commit changes to develop or main.
2) Apply Changes to Repositories
All repos: Run “Fan-out labels to repositories” (or push changes to labels/labels.yml/repos.txt to auto-trigger).
Single repo: Run “Run single-target label sync” and set target-repo.
Start with dry-run: true to preview changes.
Use strict: true when you want to delete labels not present in the global file.
3) Repo-specific labels (optional)
If a repository needs extra labels, create .github/labels.yml in that repo and manage locally (Option 3 approach).
The org workflows are independent and don’t require this.
4) Verify
Check Issues → Labels in each repository and confirm changes.
CLI Examples (Optional quick fixes)
Shell# Create a labelgh label create "priority/critical" --color "B60205" --description "Must have for milestone"# Edit a labelgh label edit "needs-triage" --color "FBCA04" --description "New issue that needs initial review"# Bulk add priority label to enhancement issuesgh issue list --label "enhancement" --json number | jq -r '.[].number' | \xargs -I {} gh issue edit {} --add-label "priority/medium"Weitere Zeilen anzeigen
📈 Metrics
Triage Velocity: Time from needs-triage to status/ready
Development Velocity: Time from status/ready to closed
Priority Distribution: Balance of priority levels
Component Coverage: Issue distribution across components
---
## How to roll out (summary)
1. **Add files** to `winccoa-tools-pack/.github`:
- `labels/labels.yml`
- `repos.txt`
- `docs/LABELS.md`
2. **Create org secret** `ORG_LABELS_PAT` (scope: `repo`).
3. **Test**:
- Use the GitHub CLI or API to sync labels for a test repo.
- Verify labels match `labels/labels.yml`.
---
<center>Made with ❤️ for and by the WinCC OA community</center>