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.
npx skills add tianemon/EasyMint --skill untrusted-source-checkgit clone --depth 1 https://github.com/tianemon/EasyMintWrote 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/tianemon/easymint/untrusted-source-check)<a href="https://agentmods.dev/skills/tianemon/easymint/untrusted-source-check"><img src="https://agentmods.dev/badge/skills/tianemon/easymint/untrusted-source-check/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/tianemon/easymint/untrusted-source-check"><img src="https://agentmods.dev/badge/skills/tianemon/easymint/untrusted-source-check.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.00153 | $0.01391 |
| Opus 5.5 | $0.00061 | $0.00556 |
| Sonnet 5.5 | $0.00031 | $0.00278 |
| Haiku 4.5 | $0.00015 | $0.00139 |
Grade C, and why
untrusted-source-check scanned grade C with 2 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.
Downloads and executes remote codehighSupply chain
curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.
执行从网上复制的安装命令(curl … | bash)、引入外来代码或二进制、运行来源不明的 Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
执行从网上复制的安装命令(curl … | bash)、引入外来代码或二进制、运行来源不明的 What it actually says
外部来源核查
一句话原则:不判「命令危不危险」,判「这东西从哪来」。风险不在命令文本,在它的来源与内容。
实证(记住这个案例,它解释了为什么"看来源"比"看内容"强):axios 1.14.1 的 tarball 完整性哈希完全匹配、内容也看不出问题,但它是用被盗 token 绕过项目自己的 CI 直接发布的。 内容看不出问题时,来源看得见。
零、先分清三种情况(不要一律去查)
| 情况 | 动作 |
|---|---|
| 来源可信:用户指名要装的官方包、项目里已有的文件、你自己写的命令 | 直接做——不查、不问、不拦 |
| 来源不可信,但内容能拿到 | 先把内容拿到手,读它(见 一) |
| 内容拿不到 / 读不透:预编译二进制、加密载荷、要握手才给 | 查来源(见 二) |
误判的代价不对称:把可信的东西拿去查,是骚扰;把不可信的东西直接跑,是事故。分不清时按后者处理。
一、先把内容拿到手(拿到之前不执行)
curl … | bash:不要 pipe 进 shell。 先落到文件(curl -fsSL -o x.sh <url>)→ 读它 → 执行那份文件。下载这一步本身就是"把未知变成已知"。- 装依赖:先推迟脚本执行。
npm install --ignore-scripts(把postinstall等 lifecycle script 推迟), 读那些脚本后再决定跑不跑。同时加--allow-git=none——git 依赖可能自带.npmrc把脚本重新打开。 项目里真需要跑脚本的包很少(原生模块那一类),用白名单管理。 - ⚠️ 读的必须就是执行的那一份:绝不"读一遍、再跑一遍原命令"——第二次取到的内容可能不是同一份。 落盘 → 读 → 执行这个本地文件,三步闭环。
二、查来源清单(七项,每项都要有证据,不许凭印象)
- 它是从哪读来的——是哪个文件、网页、issue、README 让你这么做的?那个载体本身可信吗?
- 是官方渠道吗——域名 / 仓库是不是该项目的官方;包名是否与真包近似(typosquatting); 发布者账号历史(新注册、刚改名?)。
- 完整性——有没有签名或校验和。⚠️ 但记住 axios:hash 匹配 ≠ 内容安全。
- 发布通道异常(最强的一项)——以前每个版本都有 provenance、这次没有 ⇒ 强异常。
npm audit signatures一条命令即可覆盖(签名无效会非零退出,缺 provenance 出警告)。 - 行为变化——这个版本比上一版多了什么能力(开始读环境变量?开始发网络请求?)。
- 发布时效——是不是刚发布几小时(社区还没来得及发现问题)。
- 官方替代路径——有没有包管理器 / 官方安装方式 / 镜像的路子?优先替代,而不是执行这个脚本。
三、结论怎么给(不要把技术判断推给用户)
| 结论 | 动作 |
|---|---|
| 可信 | 按官方方式执行——优先走官方通道,而不是那个脚本 |
| 可疑 | 不用;给用户一句话结论 + 为什么 + 替代方案 |
| 查不到 | 默认不用;如实说"查不到可信来源",用户坚持则由用户承担 |
不要问技术选择题("要不要用 --no-sandbox?")。用户不一定是程序员,只需要能答"行 / 不行"。给这样的句子:
「这个包没有官方签名,而它以前每个版本都有——我建议不用它,改用官方安装方式(命令在下面)。」
不要把"我查过了"当作交付——查证结果(查了什么、结论是什么)要说给用户,否则用户无法判断该不该信你。
四、别过度承诺(provenance 证明什么、不证明什么)
- 证明:这个 tarball 由哪个 CI workflow、从哪个 commit 构建;签名身份是 CI 的身份,无长期密钥可泄漏。
- 不证明:源码是良性的、维护者账号没被接管、传递依赖安全、发布流本身可信。
- 采纳率目前约四到六成 ⇒ "没有 provenance 就拒绝"不成立;但**"以前有、这次突然没有"成立**。 ⇒ 用变化检测,不要用合规门槛。
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 First seen · 71 lines · 153 tokens per session scan C 2cea99ed7653
untrusted-source-check is a skill published in the GitHub repository tianemon/EasyMint (79 stars, last pushed 6d ago), licensed MIT. It adds 153 tokens to every session and 1,391 once invoked, about $0.0006 per session on Opus 5.5. A static security scan graded it C with 2 findings (downloads and executes remote code, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-18.
Other skills, from other repositories
eval-hooks
Audit Claude Code and Codex hooks for validity, safety, and correctness across settings.json, hooks.json, config.toml, plugin, and skill or agent frontmatter hooks. Resolves each command, checks event names, handler types, matchers, exit-code and JSON decision strategy, and timeouts against each host's documented…
design-patterns
Detect, suggest, and evaluate GoF design patterns in TypeScript/JavaScript codebases. Use when refactoring code, applying singleton/factory/observer/strategy patterns, reviewing pattern quality, or finding stack-native alternatives for React, Angular, NestJS, and Vue.
eval-agents
Audit custom subagent definitions for Claude Code (.claude/agents/.md) and Codex (.codex/agents/.toml): loadability against the native schema, description overlap, model tier, tool scope, and headless-safe instructions. Use when onboarding to a project with agents, after adding or importing agents, or when the parent…
eval-skills
Audit a project or library of skills for metadata, trigger boundaries, workflow completion criteria, local resource closure, instruction economy, tool scope, effort, and routing evidence. Use before shipping skills, after importing a skill collection, or when a skill triggers too often or not at all.
pr-triage
4-phase PR backlog management with audit, deep code review, validated comments, and optional worktree setup. Use when triaging pull requests, catching up on pending code reviews, or managing a backlog of open PRs. Args: 'all' to review all, PR numbers to focus (e.g. '42 57'), 'en'/'fr' for language, no arg = audit…
source-command-audit-whitepapers
Audit version freshness, FR/EN parity, and metadata quality of all whitepapers and recap cards.