/triaging-issues
Triages GitHub issues by routing to oncall teams, applying labels, and closing questions. Use when processing new PyTorch issues or when asked to triage an issue.
$ npx -y skills add pytorch/pytorch --skill triaging-issues --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/triaging-issues
Context preview
The summary Claude sees to decide when to auto-load this skill.
Triages GitHub issues by routing to oncall teams, applying labels, and closing questions. Use when processing new PyTorch issues or when asked to triage an issue.
SKILL.md
triaging-issues.SKILL.mdname: triaging-issues
description: Triages GitHub issues by routing to oncall teams, applying labels, and closing questions. Use when processing new PyTorch issues or when asked to triage an issue.
hooks:
PreToolUse:
- matcher: "mcp__github__issue_write|mcp__github__update_issue|mcp__github__add_issue_comment|mcp__github__transfer_issue"
hooks:
- type: command
command: "python3 \"$CLAUDE_PROJECT_DIR\"/.claude/skills/triaging-issues/scripts/validate_issue_target.py"
- matcher: "mcp__github__issue_write|mcp__github__update_issue"
hooks:
- type: command
command: "python3 \"$CLAUDE_PROJECT_DIR\"/.claude/skills/triaging-issues/scripts/validate_labels.py"
PostToolUse:
- matcher: "mcp__github__issue_write|mcp__github__update_issue|mcp__github__add_issue_comment|mcp__github__transfer_issue"
hooks:
- type: command
command: "python3 \"$CLAUDE_PROJECT_DIR\"/.claude/skills/triaging-issues/scripts/add_bot_triaged.py"PyTorch Issue Triage Skill
This skill helps triage GitHub issues by routing issues, applying labels, and leaving first-line responses.
Contents
- [MCP Tools Available](#mcp-tools-available)
- [Labels You Must NEVER Add](#labels-you-must-never-add)
- [Issue Triage Steps](#issue-triage-for-each-issue)
- Step 0: Already Routed — SKIP
- Step 1: Question vs Bug/Feature
- Step 1.5: Needs Reproduction — External Files
- Step 2: Transfer
- Step 2.5: PT2 Issues — Special Handling
- Step 3: Redirect to Secondary Oncall
- Step 4: Label the Issue
- Step 5: High Priority — REQUIRES HUMAN REVIEW
- Step 6: bot-triaged (automatic)
- Step 7: Mark Triaged
- [V1 Constraints](#v1-constraints)
**Labels reference:** See [labels.json](labels.json) for the full catalog of labels suitable for triage. **ONLY apply labels that exist in this file.** Do not invent or guess label names. This file excludes CI triggers, test configs, release notes, deprecated labels, and labels requiring human decision.
**PT2 triage guide:** See [pt2-triage-rubric.md](pt2-triage-rubric.md) for detailed labeling guidance when triaging PT2/torch.compile issues.
**Response templates:** See [templates.json](templates.json) for standard response messages.
---
MCP Tools Available
Use these GitHub MCP tools for triage:
| Tool | Purpose | |------|---------| | `mcp__github__issue_read` | Get issue details, comments, and existing labels | | `mcp__github__issue_write` | Apply labels or close issues | | `mcp__github__add_issue_comment` | Add comment (only for redirecting questions) | | `mcp__github__search_issues` | Find similar issues for context |
---
Labels You Must NEVER Add
| Prefix/Category | Reason | |-----------------|--------| | Labels not in `labels.json` | Only apply labels that exist in the allowlist | | `ciflow/*` | CI job triggers for PRs only | | `test-config/*` | Test suite selectors for PRs only | | `release notes: *` | Auto-assigned for release notes | | `ci-*`, `ci:*` | CI infrastructure controls | | `sev*` | Severity labels require human decision | | `merge blocking` | Requires human decision | | `actionable`, `needs design`, `needs reproduction`, `needs research` | Reserved for human reviewers after they have reviewed the issue | | Any label containing "deprecated" | Obsolete | | `oncall: releng` | Not a triage redirect target. Use `module: ci` instead |
**If blocked:** When a label is blocked by the hook, add ONLY `triage review` and stop. A human will handle it.
These rules are enforced by a PreToolUse hook that validates all labels against `labels.json`.
Never Override Human Labels
If a human has already applied labels (especially `ci: sev`, severity labels, or priority labels), do NOT remove or replace them. Your job is to supplement, not override.
---
Issue Triage (for each issue)
0) Already Routed — SKIP
**If an issue already has ANY `oncall:` label, SKIP IT entirely.** Do not:
- Add any labels
- Add `triaged`
- Leave comments
- Do any triage work
That issue belongs to the sub-oncall team. They own their queue.
1) Question vs Bug/Feature
- If it is a question (not a bug report or feature request): close and use the `redirect_to_forum` template from `templates.json`.
- If unclear whether it is a bug/feature vs a question: request additional information using the `request_more_info` template and stop.
1.5) External Files
Check if the issue body contains links to external files that users would need to download to reproduce.
**Patterns to detect:**
- File attachments: `.zip`, `.pt`, `.pth`, `.pkl`, `.safetensors`, `.onnx`, `.bin` files
- External storage: Google Drive, Dropbox, OneDrive, Mega, WeTransfer links
- Model hubs: Hugging Face Hub links to model files
**Action:** 1. **Edit the issue body** to remove/redact the download links
- Replace with: `[Link removed - external file downloads are not permitted for security reasons]`
2. Use the `request_self_contained_reproduction` template from `templates.json` 3. Do NOT add `triaged` — wait for the user to provide a reproducible example
1.55) Missing Reproduction — Other Cases
Request a self-contained reproduction and stop when:
- The user reports a hardware-specific issue (e.g., specific GPU model) without a self-contained repro script
- The user references a specific model/checkpoint/dataset that is not publicly runnable in a few lines
- The issue describes version-upgrade breakage but only provides a high-level description without a minimal script
- The repro depends on a specific training setup, distributed environment, or non-trivial infrastructure
1.6) Edge Cases & Numerical Accuracy
If the issue involves extremal values or numerical precision differences:
**Patterns to detect:**
- Values near `torch.finfo(dtype).max` or `torch.finfo(dtype).min`
- NaN/Inf appearing in outputs from valid (but extreme) inputs
- Differences between CPU and GPU results
- Precision differences between dt
Read more
name: triaging-issues
description: Triages GitHub issues by routing to oncall teams, applying labels, and closing questions. Use when processing new PyTorch issues or when asked to triage an issue.
hooks:
PreToolUse:
- matcher: "mcp__github__issue_write|mcp__github__update_issue|mcp__github__add_issue_comment|mcp__github__transfer_issue"
hooks:
- type: command
command: "python3 \"$CLAUDE_PROJECT_DIR\"/.claude/skills/triaging-issues/scripts/validate_issue_target.py"
- matcher: "mcp__github__issue_write|mcp__github__update_issue"
hooks:
- type: command
command: "python3 \"$CLAUDE_PROJECT_DIR\"/.claude/skills/triaging-issues/scripts/validate_labels.py"
PostToolUse:
- matcher: "mcp__github__issue_write|mcp__github__update_issue|mcp__github__add_issue_comment|mcp__github__transfer_issue"
hooks:
- type: command
command: "python3 \"$CLAUDE_PROJECT_DIR\"/.claude/skills/triaging-issues/scripts/add_bot_triaged.py"PyTorch Issue Triage Skill
This skill helps triage GitHub issues by routing issues, applying labels, and leaving first-line responses.
Contents
- [MCP Tools Available](#mcp-tools-available)
- [Labels You Must NEVER Add](#labels-you-must-never-add)
- [Issue Triage Steps](#issue-triage-for-each-issue)
- Step 0: Already Routed — SKIP
- Step 1: Question vs Bug/Feature
- Step 1.5: Needs Reproduction — External Files
- Step 2: Transfer
- Step 2.5: PT2 Issues — Special Handling
- Step 3: Redirect to Secondary Oncall
- Step 4: Label the Issue
- Step 5: High Priority — REQUIRES HUMAN REVIEW
- Step 6: bot-triaged (automatic)
- Step 7: Mark Triaged
- [V1 Constraints](#v1-constraints)
**Labels reference:** See [labels.json](labels.json) for the full catalog of labels suitable for triage. **ONLY apply labels that exist in this file.** Do not invent or guess label names. This file excludes CI triggers, test configs, release notes, deprecated labels, and labels requiring human decision.
**PT2 triage guide:** See [pt2-triage-rubric.md](pt2-triage-rubric.md) for detailed labeling guidance when triaging PT2/torch.compile issues.
**Response templates:** See [templates.json](templates.json) for standard response messages.
---
MCP Tools Available
Use these GitHub MCP tools for triage:
| Tool | Purpose | |------|---------| | `mcp__github__issue_read` | Get issue details, comments, and existing labels | | `mcp__github__issue_write` | Apply labels or close issues | | `mcp__github__add_issue_comment` | Add comment (only for redirecting questions) | | `mcp__github__search_issues` | Find similar issues for context |
---
Labels You Must NEVER Add
| Prefix/Category | Reason | |-----------------|--------| | Labels not in `labels.json` | Only apply labels that exist in the allowlist | | `ciflow/*` | CI job triggers for PRs only | | `test-config/*` | Test suite selectors for PRs only | | `release notes: *` | Auto-assigned for release notes | | `ci-*`, `ci:*` | CI infrastructure controls | | `sev*` | Severity labels require human decision | | `merge blocking` | Requires human decision | | `actionable`, `needs design`, `needs reproduction`, `needs research` | Reserved for human reviewers after they have reviewed the issue | | Any label containing "deprecated" | Obsolete | | `oncall: releng` | Not a triage redirect target. Use `module: ci` instead |
**If blocked:** When a label is blocked by the hook, add ONLY `triage review` and stop. A human will handle it.
These rules are enforced by a PreToolUse hook that validates all labels against `labels.json`.
Never Override Human Labels
If a human has already applied labels (especially `ci: sev`, severity labels, or priority labels), do NOT remove or replace them. Your job is to supplement, not override.
---
Issue Triage (for each issue)
0) Already Routed — SKIP
**If an issue already has ANY `oncall:` label, SKIP IT entirely.** Do not:
- Add any labels
- Add `triaged`
- Leave comments
- Do any triage work
That issue belongs to the sub-oncall team. They own their queue.
1) Question vs Bug/Feature
- If it is a question (not a bug report or feature request): close and use the `redirect_to_forum` template from `templates.json`.
- If unclear whether it is a bug/feature vs a question: request additional information using the `request_more_info` template and stop.
1.5) External Files
Check if the issue body contains links to external files that users would need to download to reproduce.
**Patterns to detect:**
- File attachments: `.zip`, `.pt`, `.pth`, `.pkl`, `.safetensors`, `.onnx`, `.bin` files
- External storage: Google Drive, Dropbox, OneDrive, Mega, WeTransfer links
- Model hubs: Hugging Face Hub links to model files
**Action:** 1. **Edit the issue body** to remove/redact the download links
- Replace with: `[Link removed - external file downloads are not permitted for security reasons]`
2. Use the `request_self_contained_reproduction` template from `templates.json` 3. Do NOT add `triaged` — wait for the user to provide a reproducible example
1.55) Missing Reproduction — Other Cases
Request a self-contained reproduction and stop when:
- The user reports a hardware-specific issue (e.g., specific GPU model) without a self-contained repro script
- The user references a specific model/checkpoint/dataset that is not publicly runnable in a few lines
- The issue describes version-upgrade breakage but only provides a high-level description without a minimal script
- The repro depends on a specific training setup, distributed environment, or non-trivial infrastructure
1.6) Edge Cases & Numerical Accuracy
If the issue involves extremal values or numerical precision differences:
**Patterns to detect:**
- Values near `torch.finfo(dtype).max` or `torch.finfo(dtype).min`
- NaN/Inf appearing in outputs from valid (but extreme) inputs
- Differences between CPU and GPU results
- Precision differences between dt
Tensors and Dynamic neural networks in Python with strong GPU acceleration
Other skills on pytorch.
- /add-uint-support
Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.
Open skill - /aoti-debug
Debug AOTInductor (AOTI) errors and crashes. Use when encountering AOTI segfaults, device mismatch errors, constant loading failures, or runtime errors from aot_compile, aot_load, aoti_compile_and_package, or aoti_load_package.
Open skill - /at-dispatch-v2
Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.
Open skill - /ci-metrics
Query PyTorch CI, GitHub Actions, HUD, Grafana, and infrastructure metrics. Use when users ask about CI duration, job failures, queue times, workflow trends, runner health, dashboard data, or PyTorch infrastructure metrics.
Open skill - /cuda-index-width
Choose 32-bit vs 64-bit index math in PyTorch CUDA kernels. Use when fixing large-tensor indexing overflows, deciding whether to use int64_t, canUse32BitIndexMath, CUDA_KERNEL_LOOP_TYPE, or AT_DISPATCH_INDEX_TYPES, and when considering binary-size or performance impact of
Open skill - /distributed-triage
Sub-triages issues in the oncall:distributed queue by assigning distributed module labels, routing to sub-oncalls, and marking triaged. Use when an issue has been routed to oncall:distributed and needs second-level triage.
Open skill

