priority-board-triage

priority-board-triage is a skill for Claude Code, Codex from samugit83/redamon. It costs 146 tokens per session (1,798 once invoked), scanned A, original, MIT.

A guide for maintaining a Priority Board's layered triage data. Triage means sorting work by factors such as risk or urgency; this system separates rule-based scores, AI review, and a person's final decision.

In plain words
What is it for?
Use it when changing scoring rules, review inputs, database writes, MCP tools, reports, filters, or UI elements that read the board state.
Why use it?
It prevents one writer from overwriting another layer or accidentally erasing an AI review or human verdict.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is ./agentic/run_tests.sh tests/test_score_model.py # combine_layers + the model.

Good fit Use it when changing scoring rules, review inputs, database writes, MCP tools, reports, filters, or UI elements that read the board state.

Compare 6 skills from other repositories ↓
About the project

RedAmon is an AI framework that connects reconnaissance, exploitation, and post-exploitation activities into an automated security-testing pipeline, while organizing findings and proposing code fixes. It is for authorized penetration testing, security research, and education. The catalogue entries provide skills and instructions for working with the framework.

samugit83/redamon · 3,106 stars · on GitHub · redamon.org

Install

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.

Clone the repo
git clone --depth 1 https://github.com/samugit83/redamon
agentmods
npx agentmods add skills/samugit83/redamon/priority-board-triage

Made for: Claude Code, Codex.

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

agentmods badge for priority-board-triage

README.md
[![agentmods](https://agentmods.dev/badge/skills/samugit83/redamon/priority-board-triage/github.svg)](https://agentmods.dev/skills/samugit83/redamon/priority-board-triage)
Your own site
<a href="https://agentmods.dev/skills/samugit83/redamon/priority-board-triage"><img src="https://agentmods.dev/badge/skills/samugit83/redamon/priority-board-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.

agentmods 80×15 button for priority-board-triage

Your own site · 80×15
<a href="https://agentmods.dev/skills/samugit83/redamon/priority-board-triage"><img src="https://agentmods.dev/badge/skills/samugit83/redamon/priority-board-triage.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 146 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,798 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00146 $0.01798
Opus 5.5 $0.00058 $0.00719
Sonnet 5.5 $0.00029 $0.00360
Haiku 4.5 $0.00015 $0.00180

Measured 15d ago against content hash 1fcf15126a74, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

priority-board-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 15d 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.

skills/priority-board-triage/SKILL.md · 131 lines

How it starts

The opening of the file, as written. The whole thing — 131 lines — stays where its author put it; the contents beside it link to each section on GitHub.

When to Use

  • Changing the risk model, the evidence bundle, the review prompt or its validation.
  • Adding a writer of any triage_* property: a run step, a route, an MCP tool, a migration.
  • Adding a reader of the board state: a report, an MCP tool, a filter, a UI chip.

For the Cypher itself, also follow graph-db-writes; for a new MCP tool, mcp-server-tools.


Critical Rules

  • NOBODY writes a final score. triage_priority_score, triage_tier, triage_tier_rule, triage_risk, triage_factors, triage_state and triage_decided_by (the mixin's _FINAL_SET) come ONLY from score_model.combine_layers(), reached through layers.combine_props(). A writer changes ITS layer and asks combine for the final inside the same transaction. Setting a final directly is how a review or a verdict used to vanish at the next run.

  • Each writer touches one layer.

    Writer Layer Method
    a run's publish BASE (+ a builtin REVIEW it made) publish_triage_layers
    an MCP agent's review REVIEW, channel mcp write_review
    a person (app, or MCP with channel mcp) DECISION set_human_verdict

    A publish never writes a decision, :Muted or updated_at; a review never writes a decision or the base; a verdict never writes the base or a review.

  • NEVER write updated_at from triage. It is the scan's "last seen" stamp: the prune reads it, and the publish's guard skips a node whose updated_at moved since the run read it. A triage write that bumped it would make every finding look re-ingested.

  • Every single-finding write is lock-then-read, in one managed transaction. SET n._triage_lock = true REMOVE n._triage_lock first, then read the node, the live proof (_LIVE_PROOF) and the current layers, then decide and write. Match exactly one node, else ambiguous. A timeout raises TriageWriteBusy, which the API returns as 503 busy. Never read proof from a run's snapshot.

  • Live proof is proof of THIS finding. _LIVE_PROOF mirrors score_model.is_proven; it must not read triage_proof, which records proof on the finding's HOST. Reading it lifted every finding on a compromised host to T1 "proven" at its next rescore. (The mute guards' _PROVEN does read it, on purpose: refusing a mute on a compromised host is the safe direction.)

  • An app decision is never changed or reset over MCP (decided_in_app). Only app-channel decisions by the user themself teach a detector's prior.

  • A review is valid only while triage_ai_evidence_hash == triage_evidence_hash. The hash is bundle_hash(build_bundle(...)): normalised, secret-redacted, capped. Changing the bundle, the redaction or the cap changes every hash and expires every review: bump REVIEW_PROMPT_VERSION deliberately, never by accident.

  • A run never reviews over a valid mcp review, and re-reviews its own (builtin) only on a model or prompt-version change. Fix-item text (fix_lever, ai_quote) comes from builtin reviews only.

  • Keep the legacy readers tolerant. Unknown or legacy values mean "no layer", never a decision. triage_source = 'ai' is a builtin false-positive review; a missing triage_verdict_channel means app. The first publish after an upgrade adopts an unchanged review-v1 review through build_bundle_legacy, and unmute applies the same cleanup to muted nodes. Readers that branch on this: score_model.finding_state, reportData.ts, projectRisk.ts, tooling/scripts/triage_eval.py.

  • A new stored triage_* property goes in TRIAGE_PROPS (triage_mixin.py), which feeds triage_graph_migrate.py, and in TRIAGE_PROPERTIES (webapp/src/lib/triage/properties.ts), which keeps it out of the Recon Delta. Agent-writable text also goes in TRIAGE_TEXT_PROPERTIES, so buildNodeContext never hands it to the in-app agent. Declare it in graph_db/schema_sections.md and re-seed the catalog.

Read the full file on GitHub · 131 lines

Changes

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.

  1. 15d ago First seen · 131 lines · 146 tokens per session scan A 1fcf15126a74

Subscribe to this mod's changes

priority-board-triage is a skill published in the GitHub repository samugit83/redamon (3,106 stars, last pushed today), licensed MIT. It adds 146 tokens to every session and 1,798 once invoked, about $0.0006 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-10-01.