From citadel
Investigates GitHub issues and PRs: pulls open items, classifies them, searches codebase for root causes or reviews contributed code, proposes fixes with file:line references, optionally implements. Use for GitHub triage, not general reviews.
npx claudepluginhub sethgammon/citadel --plugin citadelThis skill uses the workspace's default tool permissions.
**Don't use when:** fixing a specific already-diagnosed issue (use /marshal); monitoring a single PR's CI (use /pr-watch); reviewing code quality outside of GitHub issues (use /review).
Fixes GitHub issues end-to-end with GitHub CLI: views issue, researches context, plans fix, creates branch, implements/tests changes, submits PR.
Analyzes GitHub issues and PR review threads for root cause classification, Codex blind verdict, investigation planning, and review triage actionability.
Resolves GitHub issues via 8-phase workflow: fetch details, analyze requirements, implement solutions, verify correctness, code review, commit changes, create PRs. Activates on resolve, implement, fix requests or issue references.
Share bugs, ideas, or general feedback.
Don't use when: fixing a specific already-diagnosed issue (use /marshal); monitoring a single PR's CI (use /pr-watch); reviewing code quality outside of GitHub issues (use /review).
/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 activityissue-monitor SessionStart hook reports new issues| 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 | 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) |
git remote get-url origin, extract owner/repogh auth status$GH: Windows → "/c/Program Files/GitHub CLI/gh.exe", other → ghSingle issue (/triage 10):
$GH issue view <number> --repo <owner/repo> --json number,title,body,labels,state,comments,createdAt,updatedAt,author,assignees
Batch (/triage or --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 missing priority/type label.
Stale (--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.
Single PR (/triage pr 13):
$GH pr view <number> --repo <owner/repo> --json number,title,body,author,state,files,commits,comments,createdAt,headRefName,baseRefName,mergeable,reviewDecision
$GH pr diff <number> --repo <owner/repo>
All PRs (/triage prs):
$GH pr list --repo <owner/repo> --state open --json number,title,author,createdAt,labels --limit 50
| 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 #<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>
IMPORTANT: All PR actions are external. Show the user the exact comment text and get approval before posting.
Type (exactly one):
| Type | Signal |
|---|---|
bug | Error messages, "doesn't work", stack traces, regression |
feature | "Would be nice", "add support for" |
question | "How do I", "is it possible" |
docs | README/documentation issues |
infra | CI/CD, build, packaging, dependencies |
Severity (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 easy workaround |
Affected Component:
.claude/harness.json — project configuration.planning/ — planning/campaign systemdocs/ — documentationExtract: error messages, environment, reproduction steps, expected vs actual behavior, workarounds.
git log --oneline -20 -- <affected-files> for recent changesFor bugs:
For features/questions:
Set up conditions, run the failing command, confirm error matches, verify proposed fix resolves it.
## 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>
### Affected Code
- `<file>:<line>` — <what's wrong here>
### Proposed Fix
<Specific code changes with file:line references>
### Impact
- Who is affected: <scope>
- Workaround exists: yes/no
- Breaking change: yes/no
### Recommended Action
- [ ] Fix in next release
- [ ] Needs more info from reporter
- [ ] Won't fix — <reason>
- [ ] Duplicate of #<N>
Auto-fix when: root cause clear and verified, fix contained to 1-3 files, no breaking changes, no architectural decisions needed.
Steps:
fix/issue-<number>-<slug>fix: <description> (closes #<number>)Comment with findings when fix needs discussion or user input: post root cause analysis, proposed fix, and questions.
Label only for questions/docs/features: add type + priority labels, optionally point to existing docs.
## Triage Summary
| # | Title | Type | Severity | Action | Status |
|---|-------|------|----------|--------|--------|
| 10 | Cannot find module | bug | high | Auto-fixed → PR #11 | Done |
Apply via $GH issue edit <number> --add-label "<label>":
Type: bug, feature, question, docs, infra
Severity (bugs): critical, high, medium, low
Status: needs-info, confirmed, wont-fix, duplicate
---PR READY---
PR #<N>: <url>
To watch this PR automatically:
Local → /pr-watch <N>
Cloud → open in Claude Code web or mobile, toggle "Auto fix" ON
---
Disclosure: "Triaging GitHub issues and PRs. Read-only — no changes made without showing you first." Reversibility: green — investigation is read-only; any GitHub actions (labels, comments, PRs) shown to user for approval before posting Trust gates:
gh not available or not authenticated: Stop and instruct: "Run gh auth login before using /triage."
No open issues or PRs: Report "No open issues found." and exit cleanly.
Empty/unparseable issue body: Classify as needs-info, comment requesting reproduction steps.
.planning/ missing: /triage reads from GitHub, not local state. Skip .planning/ writes if missing.
"/c/Program Files/GitHub CLI/gh.exe" — always pass --repo <owner/repo>$GH issue comment <number> --repo <owner/repo> --body "..."$GH issue edit <number> --repo <owner/repo> --add-label "bug,high"---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>
- Reversibility: green — investigation read-only; auto-fix PRs can be closed/reverted if unwanted
---