|
| 1 | +--- |
| 2 | +name: triage-issues |
| 3 | +description: > |
| 4 | + Triage one or more GitHub issues for the docker/docs repository. Analyzes each |
| 5 | + issue's content, checks whether the problem still exists in the repo and on the |
| 6 | + live site, and produces a structured verdict. Use this skill whenever the user |
| 7 | + asks to triage, analyze, review, or assess GitHub issues — e.g. "triage issue |
| 8 | + 1234", "what's the status of these issues", "which of these can be closed", |
| 9 | + "look at issues 100 200 300 and tell me what to do with them". |
| 10 | +--- |
| 11 | + |
| 12 | +# Triage Issues |
| 13 | + |
| 14 | +Given one or more GitHub issue numbers from the docker/docs repository, analyze |
| 15 | +each issue and produce a structured verdict on its current status. |
| 16 | + |
| 17 | +## Workflow |
| 18 | + |
| 19 | +### 1. Fetch all issues in parallel |
| 20 | + |
| 21 | +For each issue number, fetch everything in a single call: |
| 22 | + |
| 23 | +```bash |
| 24 | +gh issue view <number> --repo docker/docs \ |
| 25 | + --json number,title,body,state,labels,createdAt,updatedAt,closedAt,assignees,author,comments |
| 26 | +``` |
| 27 | + |
| 28 | +When triaging multiple issues, fetch all of them in parallel before starting |
| 29 | +analysis — don't process one at a time. |
| 30 | + |
| 31 | +### 2. Analyze each issue |
| 32 | + |
| 33 | +For each issue, work through these checks: |
| 34 | + |
| 35 | +#### a. Understand the problem |
| 36 | + |
| 37 | +Read the issue body and all comments. Identify: |
| 38 | +- What is the reported problem? |
| 39 | +- What content, URL, or file does it reference? |
| 40 | +- Are there linked PRs? Check whether they were merged or closed without merge. |
| 41 | +- Has anyone already proposed a fix or workaround in the comments? |
| 42 | + |
| 43 | +#### b. Follow URLs |
| 44 | + |
| 45 | +Find all `docs.docker.com` URLs in the issue body and comments. For each one: |
| 46 | +- Fetch the URL to check if it still exists (404 = content removed or moved) |
| 47 | +- Check whether the content still contains the problem described |
| 48 | +- Note when the page was last updated relative to when the issue was filed |
| 49 | + |
| 50 | +For non-docs URLs (GitHub links, external references), fetch them too if they |
| 51 | +are central to understanding the issue. |
| 52 | + |
| 53 | +#### c. Check the repository |
| 54 | + |
| 55 | +If the issue references specific files, content sections, or code: |
| 56 | +- Use file tools to find and read the current version of that content |
| 57 | +- Check whether the problem has been fixed, the content moved, or the file removed |
| 58 | +- Remember the `/manuals` prefix mapping when looking up files |
| 59 | + |
| 60 | +#### d. Check for upstream ownership |
| 61 | + |
| 62 | +If the issue is about content in `_vendor/` or `data/cli/`, it cannot be fixed |
| 63 | +here. Identify which upstream repo owns it and note that in your analysis. |
| 64 | + |
| 65 | +### 3. Determine verdict |
| 66 | + |
| 67 | +Assign one of these verdicts based on what you found: |
| 68 | + |
| 69 | +| Verdict | When to use | |
| 70 | +|---------|-------------| |
| 71 | +| **OPEN** | Issue is valid and still unfixed in this repo | |
| 72 | +| **CLOSEABLE_FIXED** | Content has been updated, corrected, or removed since the issue was filed | |
| 73 | +| **UPSTREAM** | Problem exists but originates in vendored/upstream content | |
| 74 | +| **INDETERMINATE** | Not enough information to determine current state | |
| 75 | +| **STALE** | Outdated with no recent activity; references content or features that no longer exist; context has changed enough that a new issue would be more appropriate | |
| 76 | + |
| 77 | +Be confident when evidence is clear. Use INDETERMINATE only when you genuinely |
| 78 | +cannot determine the current state after checking. |
| 79 | + |
| 80 | +### 4. Report results |
| 81 | + |
| 82 | +#### Single issue |
| 83 | + |
| 84 | +Print a structured report: |
| 85 | + |
| 86 | +``` |
| 87 | +## Issue #<number>: <title> |
| 88 | +
|
| 89 | +**Verdict:** <VERDICT> |
| 90 | +**Confidence:** <high|medium|low> |
| 91 | +**Filed:** <creation date> |
| 92 | +**Last activity:** <last comment or update date> |
| 93 | +**Labels:** <labels or "none"> |
| 94 | +
|
| 95 | +### Summary |
| 96 | +<One or two sentences describing the reported problem.> |
| 97 | +
|
| 98 | +### Analysis |
| 99 | +<What you checked and what you found. Reference specific URLs, files, or |
| 100 | +content. Note any linked PRs or related issues.> |
| 101 | +
|
| 102 | +### Recommendation |
| 103 | +<Concrete next step: close with a comment, fix specific content, escalate |
| 104 | +to upstream repo, request more info from reporter, etc.> |
| 105 | +``` |
| 106 | + |
| 107 | +#### Multiple issues |
| 108 | + |
| 109 | +Start with a summary table, then print the full report for each issue: |
| 110 | + |
| 111 | +``` |
| 112 | +| Issue | Title | Verdict | Confidence | |
| 113 | +|-------|-------|---------|------------| |
| 114 | +| #123 | ... | OPEN | high | |
| 115 | +| #456 | ... | STALE | medium | |
| 116 | +
|
| 117 | +--- |
| 118 | +
|
| 119 | +## Issue #123: ... |
| 120 | +[full report] |
| 121 | +
|
| 122 | +--- |
| 123 | +
|
| 124 | +## Issue #456: ... |
| 125 | +[full report] |
| 126 | +``` |
| 127 | + |
| 128 | +## Notes |
| 129 | + |
| 130 | +- A merged PR linked to an issue is strong evidence the issue is fixed |
| 131 | +- A closed-without-merge PR means the issue is likely still open |
| 132 | +- Check creation date and last activity to assess staleness — issues with no |
| 133 | + activity in over a year that reference old product versions are candidates |
| 134 | + for STALE |
| 135 | +- Do not narrate your process; just produce the final report(s) |
0 commit comments