Issue labels¶
This is a list of issue labels intended to complement the contributor guide. They are used in the CICD repo.
To use in your projects
Link to https://dmyersturnbull.github.io/ref/contributor-guide/. Refer to that guide for information. To add these to GitHub programmatically, refer to CICD or see below.
Another way to use
Please feel free to use some or all of these in your projects or guidelines. No need to credit.
There are 6 groups:
type
: The kind of changes (matches commit types)priority
: The importance and urgencystate
: What type of work needs to be done (development work is just 1 type)effort
: How much work it requiresscope
: The component (matches commit scopes)breaking
: Whether breaking changes are required (for issues) or made (for PRs)- miscellaneous:
help
(to request help) andbookmark
(for issues that contain important information)
type
is required for both issues and PRs. The type
of a PR should match its commit type when squashed. priority
, state
, effort
, and scope
should be used when they are helpful.
Table¶
Label | Commit part | Changelog section | Bump | Icon | Description | Color |
---|---|---|---|---|---|---|
breaking | ! | ! | major | βοΈ | Breaking change | 000000 |
help | N/A | N/A | N/A | π | Help needed | 40f040 |
bookmark | N/A | N/A | N/A | π | Important for reference | ffff44 |
type: security | security: | π Security | minor | π | Fix a security issue | 000060 |
type: feature | feat: | β¨ Features | minor | β¨ | Add or change a feature | 000060 |
type: fix | fix: | π Bug fixes | patch | π | Fix a bug | 000060 |
type: docs | docs: | π Documentation | patch | π | Modify docs or examples | 000060 |
type: build | build: | π§ Build system | minor | π§ | Modify build or dependencies | 000060 |
type: performance | perf: | β‘οΈ Performance | patch | β‘οΈ | Reduce resource usage | 000060 |
type: test | test: | π¨ Tests | none | π¨ | Add or modify tests | 000060 |
type: ci | ci: | ignored | none | βοΈ | Modify CI/CD | 000060 |
type: refactor | refactor: | ignored | none | β»οΈ | Refactor source code | 000060 |
type: style | style: | ignored | none | π¨ | Modify code style | 000060 |
type: chore | chore: | ignored | none | π§Ή | Misc. change not to source | 000060 |
priority: critical | N/A | N/A | N/A | π₯ | Must be fixed ASAP | ff6600 |
priority: high | N/A | N/A | N/A | π§ | Stalls work; must be fixed soon | cc9911 |
priority: medium | N/A | N/A | N/A | π¨ | Not blocking but important | ff6600 |
priority: low | N/A | N/A | N/A | π© | No need to rush | 99dd00 |
state: ready for dev | N/A | N/A | N/A | π | Ready for development work | cccccc |
state: needs triage | N/A | N/A | N/A | π¦ | Needs to be triaged | 444444 |
state: blocked | N/A | N/A | N/A | π§ | Blocked by another issue | 999999 |
state: needs details | N/A | N/A | N/A | π·οΈ | Requires ticket work | 666666 |
state: discarded | N/A | N/A | N/A | ποΈ | Will not be worked on | eeeeee |
state: invalid | N/A | N/A | N/A | β | Duplicate issue, etc. | eeeeee |
effort: 1 | N/A | N/A | N/A | 1οΈβ£ | Easy (t < 1 hr) | 300040 |
effort: 2 | N/A | N/A | N/A | 2οΈβ£ | Moderate (1 hr <= t < 4 hr) | 600040 |
effort: 3 | N/A | N/A | N/A | 3οΈβ£οΈ | Hard (>= 4 hours) | 900040 |
effort: multipart | N/A | N/A | N/A | *οΈβ£ | References multiple issues | a00010 |
scope: i18n | (i18n) | N/A | N/A | π | Relates to internationalization | 009000 |
Add programmatically
These scripts script should add the labels. They will not remove existing labels; you will have to do that yourself. They may fail if you have existing labels with the same names.
org="my_github_user_or_org"
repo="my_github_repo"
labels=$(cat <<-EOF
{
"labels": [
{
"name": "breaking",
"description": "βοΈ Breaking change",
"color": "#000000"
},
{
"name": "help",
"description": "π Help needed",
"color": "#40f040"
},
{
"name": "bookmark",
"description": "π Important for reference",
"color": "#ffff44"
},
{
"name": "type: fix",
"description": "π Fix a bug",
"color": "#000060"
},
{
"name": "type: security",
"description": "π Fix a security issue",
"color": "#000060"
},
{
"name": "type: feature",
"description": "β¨ Add or change a feature",
"color": "#000060"
},
{
"name": "type: performance",
"description": "β‘οΈ Reduce resource usage",
"color": "#000060"
},
{
"name": "type: docs",
"description": "π Modify docs or examples ",
"color": "#000060"
},
{
"name": "type: build",
"description": "π§ Modify build or dependencies",
"color": "#000060"
},
{
"name": "type: refactor",
"description": "β»οΈ Refactor source code",
"color": "#000060"
},
{
"name": "type: test",
"description": "π¨ Add or modify tests",
"color": "#000060"
},
{
"name": "type: ci",
"description": "βοΈ Modify CI/CD",
"color": "#000060"
},
{
"name": "type: style",
"description": "π¨ Modify code style",
"color": "#000060"
},
{
"name": "type: chore",
"description": "οΈπ§Ή Misc. change not to source",
"color": "#000060"
},
{
"name": "priority: critical",
"description": "π₯ Must be fixed ASAP",
"color": "#ff6600"
},
{
"name": "priority: high",
"description": "π§ Stalls work; must be fixed soon",
"color": "#cc9911"
},
{
"name": "priority: medium",
"description": "π¨ Not blocking but important",
"color": "#cccc11"
},
{
"name": "priority: low",
"description": "π© No need to rush",
"color": "#99dd00"
},
{
"name": "state: ready for dev",
"description": "π Ready for development work",
"color": "#cccccc"
},
{
"name": "state: blocked",
"description": "π§ Blocked by another issue",
"color": "#999999"
},
{
"name": "state: needs details",
"description": "π·οΈ Requires ticket work",
"color": "#666666"
},
{
"name": "state: discarded",
"description": "ποΈ Will not be worked on",
"color": "#eeeeee"
},
{
"name": "state: duplicate",
"description": "β Duplicate issue",
"color": "#eeeeee"
},
{
"name": "state: needs triage",
"description": "π¦ Needs to be triaged",
"color": "#444444"
},
{
"name": "effort: 1",
"description": "1οΈβ£ Easy (t < 1 hr)",
"color": "#300040"
},
{
"name": "effort: 2",
"description": "2οΈβ£ Moderate (1 hr <= t < 4 hr)",
"color": "#600040"
},
{
"name": "effort: 3",
"description": "3οΈβ£ Hard (>= 4 hours)",
"color": "#900040"
},
{
"name": "effort: multipart",
"description": "*οΈβ£ References multiple issues",
"color": "#900040"
},
{
"name": "scope: docker",
"description": "π¬ Docker",
"color": "#009000"
},
{
"name": "scope: i18n",
"description": "π Internationalization",
"color": "#009000"
}
]
}
EOF
)
jq -c '.[]' <<< "${labels}" | while read label; do
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${token}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/${org}/${repo}/labels \
-d '${label}'
done
TODO
Motivation
- Compatible with the Angular commit types and map naturally to changelog headings
- Easy to type and obviously named
- Reuse types that are common in the wild, such as effort and priority
- Try to avoid names and emojis that conflict with well-known types (e.g., gitmoji).
- Not include chat/question types (which Conversations should be used for) or states that occur post-triage, which Projects and issue actions should be used for (e.g., “state: completed”)
References: