agentleFS
allysgrandiose674allysgrandiose674/Armory/triage/SKILL.md

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

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.
  • LesaniSkill

    writing-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

  • GoogleSkill

    setup-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

  • liufeng1976Skill

    setup-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

  • simo97Skill

    migrate-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

  • LesaniSkill

    writing-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

  • RoentekSkill

    loop-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

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
  1. Very specific:

    After the issue-monitor SessionStart hook reports new issues

    line 27
  2. Very specific:

    Verify gh auth status

    line 44
  3. Distinctive:

    Read the full diff: Not just the PR description.

    line 102
  4. Distinctive:

    IMPORTANT: All PR actions (commenting, requesting changes, approving) are external actions.

    line 140
  5. Distinctive:

    If the bug is in code you can execute (hooks, scripts):

    line 221
  6. Distinctive:

    Run the failing command

    line 223
  7. Distinctive:

    Verify the proposed fix resolves it

    line 225
  8. Distinctive:

    No architectural decisions needed

    line 269
  9. Very specific:

    Create a branch: fix/issue-<number>-<slug>

    line 272
  10. Distinctive:

    Run typecheck/build to verify

    line 274
  11. Very specific:

    Commit with message: fix: <description> (closes #<number>)

    line 275
  12. Distinctive:

    Add priority label if applicable

    line 289
  13. Distinctive:

    After all issues are processed, output a summary table:

    line 294
  14. Very specific:

    gh CLI not available or not authenticated: Run gh auth status in Phase 0.

    line 355
  15. Distinctive:

    Do NOT post generic "thanks for reporting" comments without substance

    line 365
  16. Distinctive:

    Do NOT propose fixes without reading the actual code first

    line 366
  17. Distinctive:

    Do NOT label without investigating — classification requires reading the issue AND the code

    line 367
  18. Distinctive:

    Do NOT auto-fix if the root cause is unclear — comment with findings instead

    line 368
  19. Distinctive:

    Do NOT close issues without explanation

    line 369
  20. Distinctive:

    Do NOT comment on issues asking for more info if the answer is in the codebase

    line 370
  21. Distinctive:

    Do NOT guess at fixes — verify by reading code and running checks

    line 371
  22. Very specific:

    Always use --repo <owner/repo> to avoid depending on git remote config

    line 376

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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-monitor SessionStart hook reports new issues

Inputs

InputSourceRequired
Issue/PR numberArgument (e.g., /triage 10, /triage pr 13)No — omit to triage all open
Modepr prefix for PRs (e.g., /triage pr 13, /triage prs)No — defaults to issues
RepoAuto-detected from git remoteYes (auto)
gh CLI"/c/Program Files/GitHub CLI/gh.exe" on Windows, gh elsewhereYes (auto)

Execution Protocol

Phase 0 — Environment Setup

  1. Detect the GitHub repo from git remote get-url origin
  2. Extract owner/repo from the remote URL
  3. Verify gh auth status
  4. Determine the gh CLI path:
    • Windows: "/c/Program Files/GitHub CLI/gh.exe"
    • Other: gh
  5. Store as $GH for 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,assignees

Batch mode (/triage or /triage --batch):

$GH issue list --repo <owner/repo> --state open --json number,title,labels,createdAt,updatedAt --limit 50

Filter 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 100

Filter 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,reviewDecision

Then 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 50

Phase 1b — PR Review Protocol

For pull requests, the investigation is different from issues. You are reviewing contributed code.

PR Classification

TypeSignal
bugfixFixes a reported issue, closes #N
featureAdds new functionality
refactorRestructures without changing behavior
docsDocumentation only
infraCI/CD, build, packaging, installer

PR Review Checklist

  1. Read the full diff. Not just the PR description. The code is the truth.
  2. Check for regressions. Does this PR reintroduce a bug we already fixed? Search closed issues and recent commits for overlap.
  3. Check for conflicts with in-flight work. Does this touch the same files as open PRs or recent commits on dev/main?
  4. Verify the approach. Is this the right solution? Could it be simpler?
  5. Check cross-platform. Does it assume Unix? Does it handle Windows paths? Does it use $CLAUDE_PROJECT_DIR (broken on Windows, see #10)?
  6. Check conventions. Does the code follow the project's existing patterns?
  7. 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):

TypeSignal
bugError 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"
infraCI/CD, build, packaging, release, dependency issues

Severity (for bugs only):

SeverityCriteria
criticalBlocks installation or core functionality for all users
highBreaks a major feature or affects many users
mediumBreaks a minor feature or has a workaround
lowCosmetic, 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 system
  • docs/ — 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:

  1. Error text search — grep for exact error messages, error codes, exception types
  2. File search — if the issue mentions specific files, read them
  3. Function search — if stack traces name functions, find their definitions
  4. Pattern search — look for the anti-pattern or bug class described
  5. Related changes — git log --oneline -20 -- <affected-files> to see recent changes
  6. Cross-reference — check if similar issues exist or were previously fixed

3c. Root Cause Analysis

For bugs, determine:

  1. What breaks — the specific code path that fails
  2. Why it breaks — the root cause (not the symptom)
  3. When it was introduced — git blame / log if applicable
  4. Who is affected — scope of impact (all users, Windows only, specific config, etc.)
  5. What the fix is — specific code change with file:line references

For features/questions:

  1. Is it already possible? — search for existing functionality
  2. Where would it go? — which component/layer
  3. What's the effort? — trivial/small/medium/large
  4. Are there blockers? — dependencies, architecture constraints

3d. Reproduce (when possible)

If the bug is in code you can execute (hooks, scripts):

  1. Set up the conditions described in the issue
  2. Run the failing command
  3. Confirm the error matches
  4. 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:

  1. Create a branch: fix/issue-<number>-<slug>
  2. Implement the fix
  3. Run typecheck/build to verify
  4. Commit with message: fix: <description> (closes #<number>)
  5. Push and open PR linking the issue
  6. Comment on the issue with the PR link
  7. Output the auto-fix handoff block (see Auto-fix Handoff section below)

Comment with findings (when fix needs discussion or user input):

  1. Post a structured comment on the issue with:
    • Root cause analysis
    • Proposed fix (if known)
    • Questions (if more info needed)
  2. Add appropriate labels

Label only (for questions, docs, features):

  1. Add type label
  2. Add priority label if applicable
  3. 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 defect
  • feature — enhancement request
  • question — usage question
  • docs — documentation issue
  • infra — build/CI/packaging

Severity labels (bugs only):

  • critical — blocks core functionality
  • high — major feature broken
  • medium — minor feature or has workaround
  • low — cosmetic or edge case

Status labels:

  • needs-info — waiting for reporter response
  • confirmed — reproduced, fix identified
  • wont-fix — intentional behavior or out of scope
  • duplicate — 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>
---

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.