Skip to content

Commit a32d004

Browse files
authored
Merge pull request cli#13030 from cli/cleanup-outdated-triage-doc
Align triage.md with current triage process
2 parents 8f7d208 + 5477387 commit a32d004

1 file changed

Lines changed: 66 additions & 81 deletions

File tree

docs/triage.md

Lines changed: 66 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,117 +1,102 @@
11
# Triage role
22

3-
As we get more issues and pull requests opened on the GitHub CLI, we've decided on a weekly rotation triage role as defined by our First Responder (FR) rotation. The primary responsibility of the FR during that week is to triage incoming issues from the Open Source community, as defined below. An issue is considered "triaged" when the `needs-triage` label is removed.
3+
The primary responsibility of the First Responder (FR) during their weekly rotation is to triage incoming issues and pull requests from the open source community. An issue is considered "triaged" when the `needs-triage` label is removed.
44

5-
## Expectations for triaging incoming issues
5+
## Quick Guide
66

7-
Review and label [open issues missing either the `enhancement`, `bug`, or `docs` label](https://github.com/cli/cli/issues?q=is%3Aopen+is%3Aissue+-label%3Abug%2Cenhancement%2Cdocs+) and the label(s) corresponding to the command space prefixed with `gh-`, such as `gh-pr` for the `gh pr` command set, or `gh-extension` for the `gh extension` command set.
7+
Pick an issue from the triage queue.
88

9-
The heuristics for triaging the different issue types are as follows:
9+
**Your goal:** Do what is needed to remove the `needs-triage` label.
1010

11-
### Bugs
11+
1. **Can we close it?**
12+
- Duplicate → Comment and close as duplicate, linking the original
13+
- Spam → Add `invalid` or `suspected-spam` (auto-closes)
14+
- Abuse → Add `invalid`, remove content, report, block (see [Spam and abuse](#spam-and-abuse))
15+
- Off-topic → Add `off-topic` (auto-closes with comment)
1216

13-
For bugs, the FR should engage with the issue and community with the goal to remove the `needs-triage` label from the issue.
17+
2. **Is it a bug?**
18+
- Reproducible → Add `bug` and a priority label (`priority-1`, `priority-2`, or `priority-3`)
19+
- Not reproducible → Add `unable-to-reproduce` (auto-requests info, 14-day timer)
1420

15-
To be considered triaged, `bug` issues require the following:
21+
3. **Is it an enhancement?**
22+
- Clear value → Add `enhancement` (auto-posts backlog comment)
23+
- Unclear → Comment for clarification and add `more-info-needed` (14-day timer)
1624

17-
- A severity label `priority-1`, `priority-2`, and `priority-3`
18-
- Clearly defined Acceptance Criteria, added to the Issue as a standalone comment (see [example](https://github.com/cli/cli/issues/9469#issuecomment-2292315743))
25+
4. **Is it a pull request?** (see [Community pull requests](#community-pull-requests))
26+
- Spam or AI sludge → Add `invalid` (auto-closes)
27+
- Tiny fix (e.g., typo) → Review, test, and merge directly
28+
- Not linked to a help-wanted issue → Add `no-help-wanted-issue` (auto-closes with comment)
29+
- Valid → Add `ready-for-review` and run CI (auto-removes `needs-triage`, auto-posts acknowledging comment)
1930

20-
#### Bug severities
31+
The `needs-triage` label is automatically removed when end-state labels (`enhancement`, `bug`, `ready-for-review`) are applied or the issue is closed.
2132

22-
| Severity | Description |
23-
| - | - |
24-
| `priority-1` | Affects a large population and inhibits work |
25-
| `priority-2` | Affects more than a few users but doesn't prevent core functions |
26-
| `priority-3` | Affects a small number of users or is largely cosmetic |
27-
28-
### Enhancements and Docs
29-
30-
For `enhancement` issues, the FR's role is to prepare the issue for team review and triage.
31-
32-
When a new issue is opened, the FR **should**:
33+
## Bug Triage
3334

34-
- Acknowledge the issue
35-
- Assign themselves to the issue
36-
- Ensure there is enough information to understand the enhancement's scope and value
37-
- Ask the user for more information about value and use-case, if necessary
38-
- Leave the `needs-triage` label on the issue
39-
- Add the `more-info-needed` and `needs-investigation` labels as needed
35+
1. Try to reproduce the issue
36+
2. If reproducible (or strongly suspect an intermittent bug) → add `bug` and a priority label
37+
3. If not reproducible → add `unable-to-reproduce` (auto-requests info, 14-day timer) or request clarification with `more-info-needed`
4038

41-
When the FR has enough information to be triaged, they should:
42-
- Remove the `more-info-needed` and `needs-investigation` labels
43-
- Remove their assignment from the issue
39+
### Bug Priorities
4440

45-
The FR should **avoid**:
46-
47-
- Thoroughly investigating the enhancement's technical feasibility
48-
- Prematurely accepting the enhancement request
49-
- Removing the `needs-triage` label
50-
- Labeling issues as `help wanted`
41+
| Priority | Description |
42+
|----------|-------------|
43+
| `priority-1` | Affects a large population and inhibits work. **Escalate internally via the appropriate incident channel; may require a hotfix.** |
44+
| `priority-2` | Affects more than a few users but does not prevent core functions |
45+
| `priority-3` | Affects a small number of users or is largely cosmetic |
5146

52-
## Additional triaging labels
47+
## Enhancement Triage
5348

54-
The FR can consider adding any of the following labels below.
49+
**Do:**
50+
- Ensure the value is clear (ask if needed) and apply `more-info-needed` while waiting for clarification
51+
- Apply the `enhancement` label once value is clear (auto-posts backlog comment)
5552

56-
| Label | Description |
57-
| - | - |
58-
| `discuss` | Some issues require discussion with the internal team. Adding this label will automatically open up an internal discussion with the team to facilitate this discussion. |
59-
| `core` | Defines what we would like to do internally. We tend to lean towards `help wanted` by default, and adding `core` should be reserved for trickier issues or implementations we have strong opinions/preferences about. |
60-
| `more-info-needed` | After asking any contributors for more information, add this label so it is clear that the issue has been responded to and we are waiting on the user. |
61-
| `needs-investigation` | Used when the issue requires further investigation before it can be reviewed and triaged. This is often used for issues that are not clearly bugs or enhancements, or when the FR needs to gather more information before proceeding. |
62-
| `invalid` | Added to spam and abusive issues. |
53+
**Don't:**
54+
- Deep-dive technical feasibility
55+
- Prematurely accept or suggest the feature will be added
6356

64-
### Labels for team enhancement triaging
57+
## Community Pull Requests
6558

66-
The FR should **avoid** adding these labels outside of team enhancement triage.
59+
Community pull requests receive `needs-triage` (as well as `external`) just like issues do, but **are not meant to be reviewed as part of triage.**
6760

68-
| Label | Description |
69-
| - | - |
70-
| `good first issue` | Used to denote when an issue may be a good candidate for a first-time contributor to the CLI. These are usually small and well defined issues. |
71-
| `help wanted` | These issues are ready for community contribution. |
72-
| `help wanted candidate` | Used to denote when an issue may be a good candidate for community contribution. Issues labelled this way are discussed internally and may be promoted to `help wanted`. |
61+
The triager's responsibility is to do a quick pass:
7362

74-
## Expectations for community pull requests
63+
1. **Spam or AI sludge** → Add `invalid` label (auto-closes). Block user if necessary.
64+
2. **Tiny mergeable fix** (e.g., typo) → Review, test, and merge.
65+
3. **Not related to a help-wanted issue** → Add `no-help-wanted-issue` (auto-closes with comment).
66+
4. **Valid for review** → Add `ready-for-review` and run CI (auto-removes `needs-triage`, auto-posts acknowledging comment).
7567

76-
All incoming pull requests are assigned to one of the engineers for review on a load-balanced basis.
77-
The person in a triage role for a week could take a glance at these pull requests, mostly to see whether
78-
the changeset is feasible and to allow the associated CI run for new contributors.
68+
The pull request will be auto-assigned to an engineer on the team; that engineer will wait to review until `needs-triage` is removed.
7969

80-
## Spam and abuse
70+
## Spam and Abuse
8171

8272
The primary goal of triaging spam and abuse is to remove distracting and offensive content from our community.
8373

84-
We get a lot of spam. Whenever you determine an issue as spam, add the `invalid` label and close it as "won't do". For spammy comments, simply mark them as spam using GitHub's built-in spam feature.
85-
86-
Abusive contributions are defined by our [Code of Conduct](../.github/CODE-OF-CONDUCT.md). Any contribution you determine abusive should be removed. Repeat offenses or particularly offensive abuse should be reported using GitHub's reporting features and the user blocked. If an entire issue is abusive, label it as `invalid` and close as "won't do".
74+
- **Spam issues:** Add the `invalid` label (auto-closes as "won't do").
75+
- **Spam comments:** Mark as spam using GitHub's built-in feature.
76+
- **Abusive content:** Defined by our [Code of Conduct](../.github/CODE-OF-CONDUCT.md). Remove the content. Repeat offenses or particularly offensive abuse should be reported and the user blocked.
8777

88-
## Weekly PR audit
78+
## Automated Workflows
8979

90-
In the interest of not letting our open PR list get out of hand (20+ total PRs _or_ multiple PRs
91-
over a few months old), try to audit open PRs each week with the goal of getting them merged and/or
92-
closed. It's likely too much work to deal with every PR, but even getting a few closer to done is
93-
helpful.
94-
95-
For each PR, ask:
96-
97-
- is this too stale (more than two months old or too many conflicts)? close with comment
98-
- is this really close but author is absent? push commits to finish, request review
99-
- is this waiting on triage? go through the PR triage flow
100-
101-
## Useful aliases
102-
103-
This gist has some useful aliases for first responders:
104-
105-
https://gist.github.com/vilmibm/ee6ed8a783e4fef5b69b2ed42d743b1a
80+
| Label | Automation |
81+
|-------|------------|
82+
| `needs-triage` | Auto-added on open; removed when classified or closed |
83+
| `more-info-needed` | Auto-closes after 14 days without response |
84+
| `unable-to-reproduce` | Auto-adds `more-info-needed` + posts comment |
85+
| `enhancement` | Auto-posts backlog comment |
86+
| `invalid` | Auto-closes immediately |
87+
| `suspected-spam` | Auto-closes immediately |
88+
| `off-topic` | Auto-posts explanation comment + closes |
89+
| `no-help-wanted-issue` | Auto-posts explanation comment + closes |
90+
| `ready-for-review` | Auto-removes `needs-triage` + posts acknowledging comment |
10691

10792
## Examples
10893

109-
We want our project to be a safe and encouraging open-source environment. Below are some examples
110-
of how to empathetically respond to or close an issue/PR:
94+
We want our project to be a safe and encouraging open-source environment. Below are some examples of how to empathetically respond to or close an issue/PR:
11195

112-
- [Closing a quality PR its scope is too large](https://github.com/cli/cli/pull/1161)
96+
- [Closing a quality PR when its scope is too large](https://github.com/cli/cli/pull/1161)
11397
- [Closing a stale PR](https://github.com/cli/cli/pull/557#issuecomment-639077269)
11498
- [Closing a PR that doesn't follow our CONTRIBUTING policy](https://github.com/cli/cli/pull/864)
11599
- [Responding to a bug report](https://github.com/desktop/desktop/issues/9195#issuecomment-592243129)
116-
- [Closing an issue that out of scope](https://github.com/cli/cli/issues/777#issuecomment-612926229)
100+
- [Closing an issue that is out of scope](https://github.com/cli/cli/issues/777#issuecomment-612926229)
117101
- [Closing an issue with a feature request](https://github.com/desktop/desktop/issues/9722#issuecomment-625461766)
102+

0 commit comments

Comments
 (0)