Labels reference
The HAI-Co² label taxonomy is the connective tissue between Issues, PRs, the Project board, and the AI-automation workflows. This page is the canonical reference for what each label means and when to apply it. The labels themselves live in.github/labels.yml (the source of truth) and are created on the GitHub side by .github/scripts/init-labels.sh (idempotent, safe to re-run).
1. Triage rules (every label has a job)
- Every Issue gets exactly one
type:label during triage. - Every Issue gets exactly one
area:label during triage.- On PRs, the labeler workflow auto-applies
area:*based on changed paths, so you usually do not need to set it by hand on PRs.
- On PRs, the labeler workflow auto-applies
needs-triageis removed once triage is done. Its presence on an open issue means “no maintainer has looked at this yet”.good first issueis reserved for issues a newcomer can finish in under 2 hours without reading internal docs.path:ai-automationis added explicitly by a maintainer, or automatically when Coco (HAI-Coco) is assigned to the issue. Default is traditional (the absence of anypath:*label means traditional).priority:*andeffort:*are advisory, not contractual. Adjust them as your understanding of the work changes.
2. The full taxonomy
type:*: what kind of work this is
Pick exactly one. Drives the Release Drafter categories.
area:*: where in the codebase
Pick exactly one. The labeler workflow auto-applies these on PRs by matching changed paths to the labeler config.
For cross-cutting changes (rare), apply the area you’d want a reviewer to
care about first; mention the others in the PR body.
priority:*: how urgent
Apply during triage. Revisit if the situation changes.
status:*: workflow state
The Project board’s Status field is the primary place to read state. These labels exist for cases where a label is more ergonomic (search, filter dropdowns, mobile triage).
path:*: which development pathway
The single most consequential triage label. See ADR-0002.
Apply exactly one engine label per issue (the bare
path:ai-automation counts as the Copilot one); the chosen engine runs the whole PR through. See ai-pathway.md §2.4.
ai:*: AI review marker
The AI pathway is driven mostly by slash commands (/approve-plan, /coco, /promote dev), not labels, so there is just one ai:* label.
The pathway and its workflows are documented in
docs/ai-pathway.md.
stage:*: AI-pathway lifecycle (managed automatically)
Every AI-pathway issue and its PR carry exactly one stage:* label, advanced automatically by coco-stage-labels.yml as the assignee drives the flow, so the Issues and Pull-requests lists show where each item is at a glance. Never set these by hand. Warm colors (yellow/orange/green) mean it is your turn to act. See the state diagram in ai-pathway.md.
Community labels
effort:*: rough sizing
Advisory; the reviewer’s mental budget when they decide what to pick up this week.
skip-changelog: keep a PR out of the release notes
The escape hatch for PRs that must not appear in a release. Release Drafter reads it through its pre-exclude category, which drops the PR before the notes are generated and before the next version is resolved, so the PR neither shows up in the notes nor influences the version bump. Apply it by hand; nothing sets it automatically.
3. Adding or changing labels
The taxonomy is intentionally small. Before adding a label, ask:- Is this a new category, or could an existing label carry the signal?
- Will this label be applied to ≥ 5 issues a year? If no, don’t add it: labels you never use are visual noise.
- Does it conflict with the “exactly one type, exactly one area” rule? If yes, you are probably trying to model something else (e.g. the Project board’s Status field).
- Open a PR adding it to
.github/labels.yml. - Update this reference in the same PR.
- After merge, run
.github/scripts/init-labels.sh(or wait for a maintainer to run it). The script is idempotent; existing labels’ colors/descriptions get updated to match the file.
4. Sources and related docs
docs/community-guide.md: how triage and the lifecycle look from a contributor’s seat.docs/maintainers-handbook.md: the maintainer’s triage routine and label discipline.docs/repository-foundation.md§6.7: the rationale and history behind the taxonomy..github/labels.yml: source of truth..github/labeler.yml:area:*auto-application rules.