Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/SethGammon/Citadelnpx agentmods add skills/sethgammon/citadel/triageWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/sethgammon/citadel/triage)<a href="https://agentmods.dev/skills/sethgammon/citadel/triage"><img src="https://agentmods.dev/badge/skills/sethgammon/citadel/triage/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/sethgammon/citadel/triage"><img src="https://agentmods.dev/badge/skills/sethgammon/citadel/triage.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00071 | $0.02807 |
| Opus 5.5 | $0.00028 | $0.01123 |
| Sonnet 5.5 | $0.00014 | $0.00561 |
| Haiku 4.5 | $0.00007 | $0.00281 |
Grade A, and why
triage scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 28d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 300 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Triage — GitHub Issue & PR Investigator
When to Use
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 activity- After the
issue-monitorSessionStart hook reports new issues
Codex PR review integration
For Codex-visible PRs, decide whether to use native @codex review, local Citadel triage, or both:
node scripts/codex-pr-review.js plan --repo <owner/repo> --pr <number> --risk <low|medium|high|local-only> --write
Use native @codex review when the diff is GitHub-visible and the main need is a focused P0/P1 review. Use local Citadel triage when the answer depends on unpushed files, local generated artifacts, or hands-on edits. Use both for large or risky PRs.
After Codex posts a GitHub review, fetch and ingest the review comments before deciding merge readiness:
node scripts/codex-review-fetch.js --repo <owner/repo> --pr <number> --write
Use --file <review-comments.json> with the same script when working from exported/offline review data.
Treat ingested P0/P1 findings as blockers until local verification confirms they are fixed or not applicable.
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 |
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 repo from
git remote get-url origin, extractowner/repo - Verify
ghauth status - Set
$GH: Windows →"/c/Program Files/GitHub CLI/gh.exe", other →gh
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 28d ago Changed 26ff25d9249b
- 1mo ago First seen · 300 lines · 71 tokens per session scan A c7b97a640f84
triage is a skill published in the GitHub repository SethGammon/Citadel (925 stars, last pushed yesterday), licensed MIT. It adds 71 tokens to every session and 2,807 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
gerrit-task-query
Use when asked to check, list, or act on tasks for a Gerrit change. Triggers on phrases like "what tasks are blocking", "which tasks are actionable", "check task status", "what do I need to do for this change", "what is blocking this change".
gerrit-workflow
This skill should be used when the user asks to "submit a change to Gerrit", "push for review", "upload a patch", "update a change in Gerrit", "add a patch set", "work with Gerrit", "push to refs/for", "fix a missing Change-Id", "amend a Gerrit change", or any task involving git operations in a repository hosted on…
doubt-driven
Use when a non-trivial decision sits under uncertainty and correctness matters more than speed. Not for patch review: use review. Not for plan attacks: use load-bearing-assumption-test.
code-review
The depth half of a review - the dimensions a diff is read against (correctness, boundaries, concurrency, failure paths, secrets, data access, structure, test quality) and the rule that a finding is refuted before it is reported. The verdict stays with the reviewer agent. Use when reviewing a diff or a pull request…
deslop
The optimization pass, defined - delete before you add, one smell class per pass, behaviour pinned by a test that ran BEFORE the edit. Lints a SKILL.md and prose by the same instinct. Use for the per-story optimization pass or when code has grown noisy without growing capable.
pr-review
Team baseline for PR and code review — produces scope, blockers, nits, and strengths. Auto-triggers when you say review this PR, check this diff, review these changes, pre-review before I share, what do you think of this PR, or review the diff on this branch. Defers to any other installed skill whose description…