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 majiayu000/spellbook --skill ip-checkgit clone --depth 1 https://github.com/majiayu000/spellbookWrote 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/majiayu000/spellbook/ip-check)<a href="https://agentmods.dev/skills/majiayu000/spellbook/ip-check"><img src="https://agentmods.dev/badge/skills/majiayu000/spellbook/ip-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/majiayu000/spellbook/ip-check"><img src="https://agentmods.dev/badge/skills/majiayu000/spellbook/ip-check.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.00157 | $0.02585 |
| Opus 5 | $0.00078 | $0.01293 |
| Sonnet 5 | $0.00031 | $0.00517 |
| Haiku 4.5 | $0.00016 | $0.00259 |
Grade A, and why
ip-check 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 8d 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 — 110 lines — stays where its author put it; the contents beside it link to each section on GitHub.
IP 质量检测
判定一个 IP(或带凭证的 socks5 代理)是否适合用于 AI 服务(Grok/Claude/ChatGPT),核心是识破"物理在美国、纸面在别国"的租赁 IP 段——这类 IP 会被 ipinfo/MaxMind 等商业地理库判到欧盟,导致 Grok/Claude 区域锁,而风控只看地理库不看物理延迟。
Operating Contract
只读检测,不改任何系统配置。脚本只发出站 HTTP/DNS 查询和(带凭证时)通过代理的探测,不写文件、不改代理设置、不动网络配置。
Direct actions:
- 对用户给出的 IP 或代理凭证跑
ipcheck.py,读 JSON,按 4 条硬标准出记分卡。 - 区分事实(JSON 字段)与推断(如"物理大概率在美东,依据延迟排名")。
Escalate before:
- 用户要求"改配置/切节点/加进 Clash"等落地动作时——那属于 clash-doctor 等运维 skill,本 skill 只负责判定,不代切。
- DNSBL 层报
unreliable(DNS 劫持)时,必须提示用户换网络重跑,不得把未测准当"干净"。 - 代理出口无法确认、TLS 验证失败或代理参数无效时,脚本会返回非零并输出
error;不得改用 gateway 或跳过代理层继续判定。
Evidence-backed pushback:
- 用户坚称某 IP 是美国、但 rdap 显示 RIPE 注册 + country 非 US 时,以 whois/geo 字段反驳,不附和主观判断。
- 单库判 US 不等于合格;三库分歧(split)本身就是"纸面搬家"信号,要指出而非取信最乐观的那一家。
Feedback loop:
- 换节点/换代理后重跑,用记分卡逐条对比(如西班牙段=退货、纽约段=合格),确认问题项确实消除。
- 有 IPQS_KEY/ABUSEIPDB_KEY 时补跑风控源;缺 key 显式标 skipped,不把"未检测"当"通过"。
何时用
- 用户给一个 IP 问"在哪/能用吗/为什么被判定在某国"
- 用户给 socks5 代理凭证(
socks5://user:pass@host:port)问归属或某服务解不解锁 - 买了住宅/机房代理要验收
- 排查 AI 服务的区域锁
运行
脚本随 skill 安装位置运行。优先使用当前 runtime 的安装路径:Codex 通常是 ~/.agents/skills/ip-check/scripts/ipcheck.py,Claude Code 通常是 ~/.claude/skills/ip-check/scripts/ipcheck.py,仓库开发时也可用 skills/ip-check/scripts/ipcheck.py。
python3 <script> <IP> # 只查 IP
python3 <script> socks5://user:pass@host:port # 带凭证多跑代理实测层
python3 <script> <IP> --proxy socks5://user:pass@host:port # IP 与代理分开给
脚本输出结构化 JSON(9 层),你的工作是读 JSON 做判定,不要只转述字段。可选环境变量 IPQS_KEY(IPQualityScore 免费 5000/月)、ABUSEIPDB_KEY(免费 1000/天)存在时自动多跑两个风控源,没有则该项标 skipped。
检测层说明
| 层 | 数据源 | 看什么 |
|---|---|---|
| rdap | rdap.org → RIR | 注册库(ARIN=北美好 / RIPE=欧洲需警惕)、org、lease_flag、country |
| geo | ipinfo + ip-api + ipwho | 三库判定国家是否一致(consensus)还是分歧(split) |
| asn | ipinfo org + rdap | ASN 是否真 ISP、org 是否与 ASN 主体一致 |
| reputation | proxycheck + ipapi.is (+IPQS +AbuseIPDB) | proxy/vpn/datacenter 标记、risk 分、欺诈分 |
| dnsbl | Spamhaus/Barracuda/SORBS/SpamCop | 垃圾邮件黑名单(自带 DNS 劫持检测) |
| ptr | dig -x | 反向 DNS 是否有真住宅域名格式(hsd1/cable/dsl) |
| bgp | RIPEstat | 实际由哪个 ASN 宣告该前缀 |
| services | 代理直连各服务 | Grok/ChatGPT/Anthropic 是否可达、cf_loc、是否区域锁(需代理) |
| exit | 代理查出口 3 次 | 单跳还是轮换池、出口 IP 是否等于服务器 IP(需代理) |
| latency | 代理→各洲 AWS TLS 建连 ×3 | 物理最近的大洲(需代理) |
What ships with it
1 file 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.
- 8d ago First seen · 110 lines · 157 tokens per session scan A 2b79286ab6d8
ip-check is a skill published in the GitHub repository majiayu000/spellbook (278 stars, last pushed today), licensed MIT. It adds 157 tokens to every session and 2,585 once invoked, about $0.0008 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-09-03.
Other skills, from other repositories
pneuma-session
Instructions for renaming an active Pneuma session and replacing its default preview with a useful title and summary. A Pneuma session is one work area inside a larger project.
session-handoff
Use when the user wants to hand off, transfer, pause, or continue the current session in a new session or with another agent — asks for a "session handoff", a "prompt para a próxima sessão", to "continuar de onde paramos", or invokes /session-handoff; also when context is running low and in-flight work must survive a…
aenv
Use when the user wants to set up, switch between, or manage aenv namespaces — named bundles of CLAUDE.md, skills, MCP entries, and other AI-coding-harness config — in a project OR globally across $HOME. Triggers include aenv … mentioned directly, "switch namespace/profile", "activate/deactivate", "create/snapshot a…
cao-session-management
Interact with CAO (CLI Agent Orchestrator) — launch multi-agent sessions, check status, send follow-up instructions, unblock stuck terminals, or shut down sessions. Use when working with CAO sessions in any capacity.
mulmoterminal-keys
Bind keyboard shortcuts and fix keyboard/clipboard behaviour in MulmoTerminal. Writes keymap, which Settings cannot set at all — its Keyboard shortcuts section is read-only, listing every action bound or not plus a send row. Explains copyOnSelect, questionPaneEnabled and terminalSubmit, which have their own Settings…
tokf-discover
Find missed token savings by scanning AI coding session files for commands that ran without tokf filtering.