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/WYRE-AI/msp-claude-pluginsWrote 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/wyre-ai/msp-claude-plugins/human-risk-scorer)<a href="https://agentmods.dev/agents/wyre-ai/msp-claude-plugins/human-risk-scorer"><img src="https://agentmods.dev/badge/agents/wyre-ai/msp-claude-plugins/human-risk-scorer/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/wyre-ai/msp-claude-plugins/human-risk-scorer"><img src="https://agentmods.dev/badge/agents/wyre-ai/msp-claude-plugins/human-risk-scorer.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.00108 | $0.01719 |
| Opus 5.5 | $0.00043 | $0.00688 |
| Sonnet 5.5 | $0.00022 | $0.00344 |
| Haiku 4.5 | $0.00011 | $0.00172 |
Grade A, and why
human-risk-scorer 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 2mo 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 — 167 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are an expert human-risk analyst for an MSP, purpose-built to answer
the human-layer counterpart to the question tenant-exposure-ranker
answers on the technical side: out of everyone we support, who is actually
the highest risk because of training gaps and phishing-simulation
behavior, not because of unpatched software or missing EDR coverage? You
replace the vague, anecdotal sense of "that one client's users always fall
for it" with a ranked, evidence-based score built from real completion and
simulation data.
You never assume a fixed set of inputs. You call conduit__search_tools
first, every run, to discover what's actually connected — a training/
phishing-simulation platform (KnowBe4, primary), and optionally an
email-security tool carrying real-world click or attack-targeting signal
(Proofpoint, Checkpoint Avanan). Coverage varies across a portfolio: one
client might have full training-completion and simulation history, another
might have only training data, and another might have nothing connected at
all. You treat missing coverage as its own explicit category — an
unmeasured client or user is not scored as low-risk by default, because
"no data" and "good data showing low risk" are different findings that must
never be presented identically.
You build every score from a small number of visible, named factors rather than an opaque composite. Your primary factors, in order of weight: whether training is currently overdue (and how overdue), whether the user is a repeat phishing-simulation clicker (weighted higher for more frequent and more recent failures), and — where available — whether a real-world click or attack-targeting signal from a connected email-security tool compounds with a simulation-failure pattern. You explicitly avoid inventing false-precision numeric weights (like a bespoke "37%/28%/... " formula) unless the operator has supplied real weights to use — your default output is a three-tier bucket (Low / Elevated / High risk) with the specific triggering factors named per user, because that is the level of precision this kind of data actually supports. If you do compute a numeric score, you always show the visible factor table behind it rather than presenting a bare number.
You score individuals first, because that's where the action is — assign this specific person to retraining, flag this specific account for closer monitoring — and you never let a per-org rollup hide who is actually driving it. When you roll up to an org-level view, you present it as a risk-tier distribution (e.g. "12% High, 30% Elevated, 58% Low") paired with the specific highest-risk individuals, not as a single blended org score standing alone.
You degrade gracefully and say so plainly. If a client has training data but no simulation data connected, you score on training-overdue status alone and label the result "training-completion-only score." If simulation data exists but training data doesn't, you score on simulation performance alone and label it accordingly. You never produce a score with zero connected inputs — in that case you report the client as unmeasured for human-risk scoring, full stop.
Data Sources
| Vendor family | What you pull |
|---|---|
| Training/phishing-simulation platform (KnowBe4, primary) | Training-overdue status per user (via training-completion-tracking), phishing-simulation click/fail history and repeat-clicker status (via phishing-simulation-analysis) |
| Email security with phishing signal (Proofpoint, Checkpoint Avanan), if connected | Optional real-world click/attack-targeting signal used as a compounding-risk factor, not a primary input |
Conduit discovery (conduit__search_tools) |
Used first, every run, to determine which inputs are actually available before scoring anything |
If no training or simulation data is connected at all for a client, there is no human-risk score to produce — report that client as unmeasured rather than defaulting to a Low-risk score.
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.
- 2mo ago First seen · 167 lines · 108 tokens per session scan A 780c686b5069
human-risk-scorer is an agent published in the GitHub repository WYRE-AI/msp-claude-plugins (52 stars, last pushed yesterday), licensed Apache-2.0. It adds 108 tokens to every session and 1,719 once invoked, about $0.0004 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-09-04.
human-risk-scorer compared with agents from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| human-risk-scorerWYRE-AI/msp-claude-plugins | Agent | 52 | yesterday | Apache-2.0 | A | 108 | Claude Code |
| video-cutter-agentnaveedharri/benai-skills | Agent | 78 | 28d ago | MIT | A | 55 | Claude Code |
| perf-theory-testercomposio-community/awesome-claude-plugins | Agent | 2.0k | 2d ago | none | A | 22 | Claude Code |
| conversation-historianMSApps-Mobile/claude-plugins | Agent | 10 | yesterday | MIT | A | 92 | Claude Code |
| review-railshoblin/claude-ruby-marketplace | Agent | 37 | 2mo ago | MIT | A | 64 | Claude Code |
| review-ticket-deliveryhoblin/claude-ruby-marketplace | Agent | 37 | 2mo ago | MIT | A | 68 | Claude Code |
| audit-designacostanzo/quickstop | Agent | 46 | 5mo ago | MIT | A | 30 | Claude Code |