Skip to Content

GitHub labels

A reference for every label in the repo. The first group has direct automation behind it — applying or removing the label triggers a workflow. The rest are for human triage.

Automation labels

These labels are load-bearing — applying or removing them causes a GitHub Actions workflow to run.

LabelColourEffectWorkflow
deploy-previewBlue (#1D76DB)Apply: provisions a DigitalOcean app for the PR branch, pointed at the shared IBA-DEV database. Remove: tears the app down.pr-preview-create.yml + cleanup
deploy-preview-with-dbOrange (#D93F0B)Apply: same DO app plus an isolated database cloned from the latest production S3 backup, with firewall rules and DB lifecycle handled by the workflow. Remove: tears down the app and drops the isolated DB.pr-preview-create.yml + cleanup

You can have at most one of those two active at a time per PR — applying one while the other is set tears down the previous preview first.

See Deploy previews for the user-facing walkthrough, including cost considerations.

Triage labels

Used by the team for prioritisation in GitHub’s project board and issue triage. No automation reacts to these.

LabelMeaning
UrgentDrop everything — production incident or hard external deadline.
HighTop of the next-up queue.
MediumDefault for non-trivial work that isn’t urgent.
LowNice-to-have / cleanup / not blocking anything.

Classification labels

Describe what kind of work the PR/issue represents. Useful for git log archaeology later.

LabelColourMeaning
bugRedSomething isn’t working as designed.
enhancementLight blueNew feature or capability.
documentationBlueDocs-only change (anything under docs/).
dependenciesBlueDependency update — typically from Dependabot.
javascriptGreenTouches JS/TS code (usually auto-applied).
questionPinkIssue is a question, not a defect.
help wantedGreenMaintainer is looking for outside help on this.
good first issuePurpleSuitable for someone new to the codebase.
duplicateLight grayAlready tracked elsewhere — link in the issue.
invalidYellowNot actually a bug / not actionable as filed.
wontfixWhiteDeliberate decision not to address.

Internal-process labels

Coordinating internal work that isn’t quite a feature or a bug.

LabelMeaning
internalInternal-only concern — refactors, tooling, infra changes.
time-reportRelated to time-tracking / reporting features.
user-reportReproduces something a user reported.
projectsTouches the projects subsystem.
setupOnboarding / new-environment setup work.
errorTracks a specific error condition in production.

Adding a new label

Two things to keep in mind:

  1. If the label is just for human triage, just create it via the GitHub UI (Issues → Labels). Document it here in the same PR.
  2. If the label drives automation, you also need to wire the workflow trigger — deploy-preview is the model: pr-preview-create.yml lists it under if: contains(...labels...), and pr-preview-cleanup.yml reacts to its removal under on: pull_request: types: [unlabeled].

Don’t reuse colours between automation and triage labels — the colour is a visual hint that the label does something.

See also

  • Your first PR — when to apply labels as part of opening a PR.
  • Workflows — what each workflow does.
  • Deploy previews — the walkthrough of what happens once you apply a deploy-preview-* label.
Last updated on