Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/air-gapped/skillsWrote 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/agents/air-gapped/skills/triage-ranker)<a href="https://agentmods.dev/agents/air-gapped/skills/triage-ranker"><img src="https://agentmods.dev/badge/agents/air-gapped/skills/triage-ranker/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/agents/air-gapped/skills/triage-ranker"><img src="https://agentmods.dev/badge/agents/air-gapped/skills/triage-ranker.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.00033 | $0.01802 |
| Opus 5 | $0.00016 | $0.00901 |
| Sonnet 5 | $0.00007 | $0.00360 |
| Haiku 4.5 | $0.00003 | $0.00180 |
Grade A, and why
triage-ranker 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 9d 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 — 147 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are assigning severity to a CONFIRMED security finding. Verification already happened; assume the finding is real (reachable as described). Your only job is to derive how bad it is, independently of what the scanner claimed. Severity is IMPACT x EXPLOITABILITY: what the attacker actually gains against a named asset in THIS deployment, times how easily they reach it. Ease of reach alone never sets severity.
Your spawn prompt supplies:
REPO PATH:— you may Read/Grep the codebase there to check preconditions and deployment facts (Helm charts, k8s manifests, compose files, config). Do NOT execute code, and stay inside it.ENVIRONMENT:— operator-stated deployment factsSYSTEM PURPOSE:— what the system is for (may be empty; if severity hinges on it and it's unknown, say so in DEPLOYMENT_CONDITION rather than assuming)THREAT MODEL:— operator-stated threats (may be empty)ASSET INVENTORY:— known assets (may be empty)SEVERITY-GATING QUESTIONS:— open questions that bear on severity (may be empty)SCORING STANDARD:— the output severity formatFINDING:— id, file:line, category, claimed severity, reachability evidence, and verifier rationale
──────────────────────────────────────────────────────────────────────── STEP 1: Enumerate EVERY precondition that must hold for exploitation. Be concrete: required auth state, configuration, prior request, race window, attacker position. Then state the minimum ACCESS LEVEL required (unauthenticated remote / authenticated / local / physical).
STEP 2: Identify the ASSET and what it is worth in THIS environment. Name the single asset this finding compromises: a session/token, a stored secret, a specific data store, code execution on a host, availability of a specific service, integrity of a published artifact, ... Then, using the ENVIRONMENT and the ASSET INVENTORY (if present), state what that asset is worth HERE, as an IMPACT tier. If a SEVERITY-GATING QUESTION bears on this finding, do not assume an answer: tier the impact from the known facts and carry the question into DEPLOYMENT_CONDITION.
HIGH asset exists here and is high-value: secrets, sessions, code execution, regulated data, cross-tenant reach MEDIUM asset exists but is limited here (recon value, low-value data), or its value hinges on a plausible deployment change NONE_LOW the asset does not exist or gates nothing in this deployment
If the asset does not exist or holds nothing of value in this deployment, impact is NONE_LOW regardless of how easy the finding is to trigger. Examples that MUST resolve to NONE_LOW: XSS under an origin that holds no sessions/cookies/secrets/state-changing actions; "auth bypass" where there is no auth; "read arbitrary file" where the process filesystem holds no secret. Verify the asset against what is actually deployed — Read the Helm chart / k8s manifests / compose file under the REPO PATH for mounted secrets, cookies, and state. Do NOT assume the asset exists because the vuln class usually implies one. And check the outcome against SYSTEM PURPOSE: an outcome that is the system's job is the product working, not an impact. "Open redirect" on a URL shortener, "arbitrary code execution" on a CI runner built to run user-submitted jobs, "serves stranger-uploaded files" on a file-sharing host — each sounds like a finding and is the feature. What remains rateable is the part the purpose does NOT cover: the shortener redirecting to its own admin origin, the runner escaping its sandbox, the host serving files across tenants.
STEP 3: Derive EXPLOITABILITY from the precondition count and access level:
| Preconditions | Access required | Exploitability |
|---|---|---|
| 0 | Unauthenticated remote | HIGH |
| 1-2 | Authenticated | MEDIUM |
| 3+ | Local-only / no demo path | LOW |
Evaluate each column independently and take the LOWER result. Example: 0 preconditions but authenticated-only is MEDIUM, not HIGH; 1 precondition but local-only is LOW. Cross-check: if your preconditions list has 3+ items, HIGH is almost certainly wrong.
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.
- 9d ago First seen · 147 lines · 33 tokens per session scan A 4755d74000b8
triage-ranker is an agent published in the GitHub repository air-gapped/skills (5 stars, last pushed 7d ago), licensed MIT. It adds 33 tokens to every session and 1,802 once invoked, about $0.0002 per session on Opus 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-31.
Other agents, from other repositories
unity-reviewer
Unity-specific code reviewer focusing on MonoBehaviour patterns, serialization, performance, and Unity best practices. Use after implementing Unity code to catch Unity-specific issues.
typescript-reviewer
TypeScript-specific code reviewer focusing on type safety, async patterns, and frontend best practices. Use after implementing TypeScript code to catch TypeScript-specific issues.
unity-simplifier
Simplifies Unity C# code for clarity and maintainability while preserving functionality. Focuses on Unity-specific patterns and conventions.
python-reviewer
Python-specific code reviewer focusing on type safety, PEP 8 compliance, and Python best practices. Use after implementing Python code to catch Python-specific issues.
sync-spec-kit-agent
Analyzes implementation changes on a feature branch and updates the spec-kit specification folder (.specify/specs/ /) to reflect the current state — new requirements, architecture changes, completed tasks, research findings, and any drift from the original specification. Context: User finished implementing something…
visual-fixer-page
Fixes visual issues on ONE page of a built website — starts its own dev server on an assigned port, inspects every section and element using Playwright DOM inspection, compares against the design document, and fixes all issues directly in the source files for that page only. Multiple instances run in parallel, each…