triage
Skill1 starsChanged 8 months agoMITView on GitHub
GitHub issue and PR investigator. Pulls open issues/PRs, classifies them, searches the codebase for root cause or reviews contributed code, proposes fixes with file:line references, and optionally implements fixes. Handles both issues and pull requests.
- Commits and pushes
189 other projects use a version of this, 2 of them edited.
Adopted by
Most recently taken up by
- udecode/platetheir own version, first seen Nov 8, 2026
- vercel-labs/add-skilltheir own version, first seen Nov 8, 2026
- chrysogonus/power-agentstheir own version, first seen Nov 8, 2026
- ishandutta2007/Awesome-Claude-Skillstheir own version, first seen Nov 8, 2026
- Adelie-Squad/solosquadtheir own version, first seen Nov 8, 2026
- cloudflare/vinexttheir own version, first seen Nov 8, 2026
Used with
Projects with it also use writing-beats, setup-matt-pocock-skills and 9 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
LesaniSkillwriting-beats
Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.
Also in 66 projects that use this
GoogleSkillsetup-matt-pocock-skills
Configure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
Also in 167 projects that use this
liufeng1976Skillsetup-ts-deep-modules
Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point files. User-invoked.
Also in 42 projects that use this
simo97Skillmigrate-to-shoehorn
Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.
Also in 68 projects that use this
LesaniSkillwriting-shape
Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.
Also in 63 projects that use this
RoentekSkillloop-me
Grill me about specs for the workflows I want to build, within this workspace.
Also in 54 projects that use this
- +1 more from Lesani
Other versions189 projects use a version of this.
Word for word · 1
- SethGammon/Armory★ 19100% same
Edited · 2
- SethGammon/Citadel★ 92738% same
- mayankjain1815-commits/CITADEL★ 438% same
Wrote their own version · 186
- mattpocock/skills★ 309ksame name
- withastro/astro★ 64ksame name
- vectorize-io/hindsight★ 60ksame name
- ogulcancelik/herdr★ 47ksame name
- herdrdev/herdr★ 47ksame name
- colinhacks/zod★ 44ksame name
- QuivrHQ/quivr★ 40ksame name
- The-Vibe-Company/quivr★ 40ksame name
- vercel-labs/add-skill★ 39ksame name
- vercel-labs/skills★ 39ksame name
176 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository13 other files it gives its agents.
- ascii-diagramSkill
- doc-genSkill
- experimentSkill
- live-previewSkill
- qaSkill
- refactorSkill
- research-fleetSkill
- researchSkill
- reviewSkill
- scaffoldSkill
- session-handoffSkill
- systematic-debuggingSkill
- test-genSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
22 rules. 0 are common, 16 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 175 edited versions we read keep these.
16
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 27
After the issue-monitor SessionStart hook reports new issues
- Very specific: line 44
Verify gh auth status
- Distinctive: line 102
Read the full diff: Not just the PR description.
- Distinctive: line 140
IMPORTANT: All PR actions (commenting, requesting changes, approving) are external actions.
- Distinctive: line 221
If the bug is in code you can execute (hooks, scripts):
- Distinctive: line 223
Run the failing command
- Distinctive: line 225
Verify the proposed fix resolves it
- Distinctive: line 269
No architectural decisions needed
- Very specific: line 272
Create a branch: fix/issue-<number>-<slug>
- Distinctive: line 274
Run typecheck/build to verify
- Very specific: line 275
Commit with message: fix: <description> (closes #<number>)
- Distinctive: line 289
Add priority label if applicable
- Distinctive: line 294
After all issues are processed, output a summary table:
- Very specific: line 355
gh CLI not available or not authenticated: Run gh auth status in Phase 0.
- Distinctive: line 365
Do NOT post generic "thanks for reporting" comments without substance
- Distinctive: line 366
Do NOT propose fixes without reading the actual code first
- Distinctive: line 367
Do NOT label without investigating — classification requires reading the issue AND the code
- Distinctive: line 368
Do NOT auto-fix if the root cause is unclear — comment with findings instead
- Distinctive: line 369
Do NOT close issues without explanation
- Distinctive: line 370
Do NOT comment on issues asking for more info if the answer is in the codebase
- Distinctive: line 371
Do NOT guess at fixes — verify by reading code and running checks
- Very specific: line 376
Always use --repo <owner/repo> to avoid depending on git remote config
“Common” is measured: kept by at least 6 in 10 of the 175 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Triage — GitHub Issue & PR Investigator
You are the project's triage system. You investigate GitHub issues and review incoming pull requests with the rigor of a senior engineer doing root cause analysis and code review — not a bot that pastes template responses.
When to Use
/triage— triage all open, unlabeled issues/triage 10— investigate issue #10 specifically/triage pr 13— review PR #13/triage prs— review all open PRs/triage --batch— pull all open issues, classify, investigate, report/triage --stale— find issues older than 14 days with no activity- After the
issue-monitorSessionStart hook reports new issues
Inputs
| Input | Source | Required |
| Issue/PR number | Argument (e.g., /triage 10, /triage pr 13) | No — omit to triage all open |
| Mode | pr prefix for PRs (e.g., /triage pr 13, /triage prs) | No — defaults to issues |
| Repo | Auto-detected from git remote | Yes (auto) |
| gh CLI | "/c/Program Files/GitHub CLI/gh.exe" on Windows, gh elsewhere | Yes (auto) |
Execution Protocol
Phase 0 — Environment Setup
- Detect the GitHub repo from
git remote get-url origin - Extract
owner/repofrom the remote URL - Verify
ghauth status - Determine the gh CLI path:
- Windows:
"/c/Program Files/GitHub CLI/gh.exe" - Other:
gh
- Windows:
- Store as
$GHfor all subsequent commands
Phase 1 — Issue Intake
Single issue mode (/triage 10):
$GH issue view <number> --repo <owner/repo> --json number,title,body,labels,state,comments,createdAt,updatedAt,author,assigneesBatch mode (/triage or /triage --batch):
$GH issue list --repo <owner/repo> --state open --json number,title,labels,createdAt,updatedAt --limit 50Filter to untriaged: issues with no labels, or issues missing a priority/type label.
Stale mode (/triage --stale):
$GH issue list --repo <owner/repo> --state open --json number,title,labels,createdAt,updatedAt --limit 100Filter to issues with no activity in 14+ days.
Output: list of issues to investigate, sorted by age (oldest first).
Single PR mode (/triage pr 13):
$GH pr view <number> --repo <owner/repo> --json number,title,body,author,state,files,commits,comments,createdAt,headRefName,baseRefName,mergeable,reviewDecisionThen fetch the full diff:
$GH pr diff <number> --repo <owner/repo>All PRs mode (/triage prs):
$GH pr list --repo <owner/repo> --state open --json number,title,author,createdAt,labels --limit 50Phase 1b — PR Review Protocol
For pull requests, the investigation is different from issues. You are reviewing contributed code.
PR Classification
| Type | Signal |
bugfix | Fixes a reported issue, closes #N |
feature | Adds new functionality |
refactor | Restructures without changing behavior |
docs | Documentation only |
infra | CI/CD, build, packaging, installer |
PR Review Checklist
- Read the full diff. Not just the PR description. The code is the truth.
- Check for regressions. Does this PR reintroduce a bug we already fixed? Search closed issues and recent commits for overlap.
- Check for conflicts with in-flight work. Does this touch the same files as open PRs or recent commits on dev/main?
- Verify the approach. Is this the right solution? Could it be simpler?
- Check cross-platform. Does it assume Unix? Does it handle Windows paths? Does it use
$CLAUDE_PROJECT_DIR(broken on Windows, see #10)? - Check conventions. Does the code follow the project's existing patterns?
- Check for scope creep. Does the PR do more than its title says?
PR Resolution
Produce a structured review:
## PR #<N>: <title>
**Author:** <username>
**Type:** bugfix | feature | refactor | docs | infra
**Files changed:** <count>
**Mergeable:** yes | no
### What it does
<1-3 sentences>
### Review findings
- <finding with file:line reference>
### Issues found
- **Critical:** <blocks merge>
- **Non-critical:** <nice to fix but not blocking>
### Recommendation
- [ ] Approve
- [ ] Request changes: <specific changes needed>
- [ ] Close: <reason>PR Actions
IMPORTANT: All PR actions (commenting, requesting changes, approving) are external actions. Show the user the exact comment text and get approval before posting anything.
- Approve: draft approval comment, show to user, post after approval
- Request changes: draft comment with specific findings, show to user, post after approval
- Close: draft explanation, show to user, close after approval
Phase 2 — Classification
For each issue, classify along these dimensions:
Type (exactly one):
| Type | Signal |
bug | Error messages, "doesn't work", "broken", stack traces, regression |
feature | "Would be nice", "add support for", "should be able to" |
question | "How do I", "is it possible", "what does X do" |
docs | "README says", "documentation", "typo", "unclear instructions" |
infra | CI/CD, build, packaging, release, dependency issues |
Severity (for bugs only):
| Severity | Criteria |
critical | Blocks installation or core functionality for all users |
high | Breaks a major feature or affects many users |
medium | Breaks a minor feature or has a workaround |
low | Cosmetic, edge case, or has an easy workaround |
Affected Component — map to project area:
- Citadel hooks — hook system (managed by plugin)
- Citadel skills — skill system (built-in from plugin)
.claude/skills/— custom project skills- Citadel agents — agent system (managed by plugin)
.claude/harness.json— project configuration.planning/— planning/campaign systemdocs/— documentation- Root files — project setup (README, package.json, CLAUDE.md)
Record classification in a structured block before proceeding.
Phase 3 — Investigation
This is the core phase. Investigate like a senior engineer, not a keyword matcher.
3a. Parse the Report
Extract from the issue body:
- Error messages — exact text, stack traces, error codes
- Environment — OS, shell, Node version, Claude Code version
- Reproduction steps — what the user did
- Expected vs actual behavior
- Workaround — did the user already find one?
3b. Search the Codebase
Based on extracted signals, search systematically:
- Error text search — grep for exact error messages, error codes, exception types
- File search — if the issue mentions specific files, read them
- Function search — if stack traces name functions, find their definitions
- Pattern search — look for the anti-pattern or bug class described
- Related changes —
git log --oneline -20 -- <affected-files>to see recent changes - Cross-reference — check if similar issues exist or were previously fixed
3c. Root Cause Analysis
For bugs, determine:
- What breaks — the specific code path that fails
- Why it breaks — the root cause (not the symptom)
- When it was introduced — git blame / log if applicable
- Who is affected — scope of impact (all users, Windows only, specific config, etc.)
- What the fix is — specific code change with file:line references
For features/questions:
- Is it already possible? — search for existing functionality
- Where would it go? — which component/layer
- What's the effort? — trivial/small/medium/large
- Are there blockers? — dependencies, architecture constraints
3d. Reproduce (when possible)
If the bug is in code you can execute (hooks, scripts):
- Set up the conditions described in the issue
- Run the failing command
- Confirm the error matches
- Verify the proposed fix resolves it
Phase 4 — Resolution Plan
Produce a structured finding for each issue:
## Issue #<N>: <title>
**Type:** bug | feature | question | docs | infra
**Severity:** critical | high | medium | low
**Component:** <affected directory/file>
**Reproducible:** yes | no | not-attempted
### Root Cause
<1-3 sentences explaining WHY, not just WHAT>
### Affected Code
- `<file>:<line>` — <what's wrong here>
- `<file>:<line>` — <related code>
### Proposed Fix
<Specific code changes. Not "update the code" — actual diffs or clear instructions.>
### Impact
- Who is affected: <scope>
- Workaround exists: yes/no — <workaround if yes>
- Breaking change: yes/no
### Recommended Action
- [ ] Fix in next release
- [ ] Needs more info from reporter
- [ ] Won't fix — <reason>
- [ ] Duplicate of #<N>Phase 5 — Action
Based on the resolution plan, take one of these actions:
Auto-fix (when all conditions met):
- Root cause is clear and verified
- Fix is contained (1-3 files)
- No breaking changes
- No architectural decisions needed
Steps:
- Create a branch:
fix/issue-<number>-<slug> - Implement the fix
- Run typecheck/build to verify
- Commit with message:
fix: <description> (closes #<number>) - Push and open PR linking the issue
- Comment on the issue with the PR link
- Output the auto-fix handoff block (see Auto-fix Handoff section below)
Comment with findings (when fix needs discussion or user input):
- Post a structured comment on the issue with:
- Root cause analysis
- Proposed fix (if known)
- Questions (if more info needed)
- Add appropriate labels
Label only (for questions, docs, features):
- Add type label
- Add priority label if applicable
- Optionally comment with pointers to existing docs/functionality
Phase 6 — Report
After all issues are processed, output a summary table:
## Triage Summary
| # | Title | Type | Severity | Action | Status |
|---|-------|------|----------|--------|--------|
| 10 | Cannot find module | bug | high | Auto-fixed → PR #11 | Done |
| 8 | Feature request | feature | — | Labeled | Done |Label Taxonomy
Apply these labels via $GH issue edit <number> --add-label "<label>":
Type labels:
bug— confirmed defectfeature— enhancement requestquestion— usage questiondocs— documentation issueinfra— build/CI/packaging
Severity labels (bugs only):
critical— blocks core functionalityhigh— major feature brokenmedium— minor feature or has workaroundlow— cosmetic or edge case
Status labels:
needs-info— waiting for reporter responseconfirmed— reproduced, fix identifiedwont-fix— intentional behavior or out of scopeduplicate— duplicate of another issue
Auto-fix Handoff
Whenever a PR is pushed (Phase 5 Auto-fix), output this block so the user can hand off CI watching to local or cloud auto-fix:
---PR READY---
PR #<N>: <url>
To watch this PR automatically:
Local → /pr-watch <N> watches CI, fixes failures, runs in this terminal
Cloud → open in Claude Code web or mobile, toggle "Auto fix" ON
(fixes CI failures and review comments remotely; requires Claude GitHub App)
---Quality Gates
- Every investigated issue has a classification (type + severity for bugs)
- Every bug has a root cause analysis with file:line references
- Every auto-fix passes typecheck and build
- Every PR links to the issue it fixes
- Every issue comment is structured and actionable (no "I'll look into this")
- No issue is left without at least a label or comment
Fringe Cases
gh CLI not available or not authenticated: Run gh auth status in Phase 0. If gh is not installed or not authenticated, stop and instruct the user: "Run gh auth login before using /triage." Do not attempt API calls without a working gh session.
No open issues or PRs: Report "No open issues found." and exit cleanly. Do not error.
Issue body is empty or unparseable: Classify as needs-info. Comment asking the reporter to provide reproduction steps and error details.
If .planning/ does not exist: /triage does not require .planning/ to function — it reads from GitHub, not local state. Skip any .planning/ writes if the directory doesn't exist.
Anti-Patterns — Do NOT
- Do NOT post generic "thanks for reporting" comments without substance
- Do NOT propose fixes without reading the actual code first
- Do NOT label without investigating — classification requires reading the issue AND the code
- Do NOT auto-fix if the root cause is unclear — comment with findings instead
- Do NOT close issues without explanation
- Do NOT comment on issues asking for more info if the answer is in the codebase
- Do NOT guess at fixes — verify by reading code and running checks
gh CLI Notes
- Windows path:
"/c/Program Files/GitHub CLI/gh.exe" - Always use
--repo <owner/repo>to avoid depending on git remote config - For comments:
$GH issue comment <number> --repo <owner/repo> --body "..." - For labels:
$GH issue edit <number> --repo <owner/repo> --add-label "bug,high" - For PRs:
$GH pr create --repo <owner/repo> --title "..." --body "..."
Exit Protocol
---HANDOFF---
- Triaged N issues: X bugs, Y features, Z questions
- Auto-fixed: <list of issue numbers with PR links>
- Needs attention: <list of issues requiring human decision>
- New labels applied: <count>
---Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

