name: triage-issue
description: >
Analyze a single GitHub issue for docker/docs — check whether the problem
still exists, determine a verdict, and report findings. Use when asked to
triage, assess, or review an issue, even if the user doesn't say "triage"
explicitly: "triage issue 1234", "is issue 500 still valid", "should we
close #200", "look at this issue", "what's going on with #200".
argument-hint: ""
context: fork
Triage Issue
Given GitHub issue $ARGUMENTS from docker/docs, figure out whether it's still a real problem and say what should happen next.
1. Fetch the issue
gh issue view $ARGUMENTS --repo docker/docs \
--json number,title,body,state,labels,createdAt,updatedAt,closedAt,assignees,author,comments
2. Understand the problem
Read the issue body and all comments. Identify:
- What is the reported problem?
- What content, URL, or file does it reference?
- Has anyone already proposed a fix or workaround in the comments?
Check for linked PRs in the issue timeline, not only in the issue body or comments:
gh api repos/docker/docs/issues/$ARGUMENTS/timeline --paginate \
--jq '.[] | select(.event=="cross-referenced" or .event=="connected" or .event=="referenced") | {event, created_at, source: .source.issue.html_url, title: .source.issue.title, state: .source.issue.state}'
If an open PR already addresses the issue, don't open another PR. Review the existing PR instead, and report that the issue already has an associated PR. A merged PR is strong evidence the issue is fixed. A closed-without-merge PR means the issue is likely still open.
3. Follow URLs
Find all docs.docker.com URLs in the issue body and comments. For each:
- Fetch the URL to check if it still exists (404 = content removed or moved)
- Check whether the content still contains the problem described
- Note when the page was last updated relative to when the issue was filed
For non-docs URLs (GitHub links, external references), fetch them too if they are central to understanding the issue.
4. Check the repository
If the issue references specific files, content sections, or code:
- Find and read the current version of that content
- Check whether the problem has been fixed, content moved, or file removed
- Remember the
/manualsprefix mapping when looking up files
5. Check for upstream ownership
If the issue is about content in _vendor/ or data/cli/, it cannot be
fixed here. Identify which upstream repo owns it (see the vendored content
table in CLAUDE.md).
6. Decide and act
After investigating, pick one of these verdicts and take the corresponding action on the issue:
Close it — the problem is already fixed, the content no longer exists, or the issue is too outdated to be useful. Close the issue with a comment explaining why:
gh issue close $ARGUMENTS --repo docker/docs \ --comment "Closing: <one-sentence reason>"Fix it — the problem is real and fixable in this repo. Name the file(s) and what needs to change. Label the issue
status/confirmedand removestatus/triageif present:gh api repos/docker/docs/issues/$ARGUMENTS/labels \ --method POST --field 'labels[]=status/confirmed' gh api repos/docker/docs/issues/$ARGUMENTS/labels/status%2Ftriage \ --method DELETE || trueEscalate upstream — the problem is real but lives in vendored content. Name the upstream repo. Label the issue
status/upstreamand removestatus/triageif present:gh api repos/docker/docs/issues/$ARGUMENTS/labels \ --method POST --field 'labels[]=status/upstream' gh api repos/docker/docs/issues/$ARGUMENTS/labels/status%2Ftriage \ --method DELETE || trueLeave it open — you can't determine the current state, or the issue needs human judgment. Label the issue
status/needs-analysis:gh api repos/docker/docs/issues/$ARGUMENTS/labels \ --method POST --field 'labels[]=status/needs-analysis' gh api repos/docker/docs/issues/$ARGUMENTS/labels/status%2Ftriage \ --method DELETE || true
Don't overthink the classification. An old issue isn't stale if the problem still exists. An upstream issue is still valid — it's just not fixable here.
Also apply the most relevant area/ label based on the content affected.
Available area labels: area/accounts, area/admin, area/ai,
area/api, area/billing, area/build, area/build-cloud, area/cli,
area/compose, area/compose-spec, area/config, area/contrib,
area/copilot, area/desktop, area/dhi, area/engine,
area/enterprise, area/extensions, area/get-started, area/guides,
area/hub, area/install, area/networking, area/offload,
area/release-notes, area/samples, area/scout, area/security,
area/storage, area/subscription, area/swarm, area/ux. Pick one
(or at most two if the issue clearly spans areas). Skip if none fit.
gh api repos/docker/docs/issues/$ARGUMENTS/labels \
--method POST --field 'labels[]=area/<name>'
7. Report
Write a short summary: what the issue reports, what you found, and what should happen next. Reference the specific files, URLs, or PRs that support your conclusion. Skip metadata fields — the issue itself has the dates and labels. Mention the action you took (closed, labeled, etc.).
Notes
- Always check timeline cross-references before deciding to fix an issue
- Do not narrate your process — produce the final report
- End every issue comment with an accurate agent-disclosure footer that names
the active coding agent, for example
Generated by CodexorGenerated by Claude Code. .