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 OXI-717/ai-native-toolkit --skill openrouter-setupgit clone --depth 1 https://github.com/OXI-717/ai-native-toolkitWrote 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/oxi-717/ai-native-toolkit/openrouter-setup)<a href="https://agentmods.dev/skills/oxi-717/ai-native-toolkit/openrouter-setup"><img src="https://agentmods.dev/badge/skills/oxi-717/ai-native-toolkit/openrouter-setup.svg" alt="Measured on agentmods" 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.00056 | $0.01968 |
| Opus 5 | $0.00028 | $0.00984 |
| Sonnet 5 | $0.00011 | $0.00394 |
| Haiku 4.5 | $0.00006 | $0.00197 |
Grade A, and why
openrouter-setup scanned grade A with 1 finding 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 7d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
curl -sS https://openrouter.ai/api/v1/models \ How it starts
The opening of the file, as written. The whole thing — 181 lines — stays where its author put it; the contents beside it link to each section on GitHub.
OpenRouter Access Setup (OpenAI-compatible endpoint)
Configure access to models that are gated by waitlists at their native providers (Moonshot, DeepSeek, Zhipu) through OpenRouter's OpenAI-compatible API. One key unlocks all listed models — no per-provider waitlists.
OpenRouter exposes a drop-in OpenAI Chat Completions endpoint:
BASE_URL = https://openrouter.ai/api/v1
AUTH = Bearer $OPENROUTER_API_KEY
Any OpenAI-compatible client works by pointing base_url at OpenRouter and
reading the key from the environment.
Target models
| OpenRouter slug | Native provider | Notes |
|---|---|---|
moonshotai/kimi-k3 |
Moonshot (Kimi) | Kimi-K3, often waitlisted at platform.moonshot.cn |
deepseek/deepseek-v4-pro, deepseek/deepseek-v4-flash |
DeepSeek | V4 ships as separate pro/flash slugs — plain deepseek/deepseek-v4 does not exist and returns 404 |
z-ai/glm-5.2, z-ai/glm-4.6 |
Zhipu (GLM/Z.AI) | GLM family; z-ai/* is the OpenRouter namespace for Zhipu |
Slugs evolve, and a retired one fails only at request time. Check against the live catalogue first — it is public and needs no key:
curl -sS https://openrouter.ai/api/v1/models \
| python3 -c 'import json,sys; print("\n".join(sorted(m["id"] for m in json.load(sys.stdin)["data"] if sys.argv[1] in m["id"])))' moonshotai/
Pass the vendor prefix you care about (moonshotai/, deepseek/, z-ai/) — or
a full slug to confirm one exists. Empty output means the slug is gone.
Pricing is in the same response (pricing field) and on https://openrouter.ai/models.
Security contract (hard rule)
- The key lives ONLY in an environment variable:
OPENROUTER_API_KEY. - Never write the key into a repo file, a committed
.env, a command, or chat output. Do NOTecho "$OPENROUTER_API_KEY". - Persist it in the user's shell profile (
~/.zshrc/~/.bashrc) or a secret manager that exports it into the shell environment — never inside the project tree (the project tree is git-tracked and would leak the secret). - This skill never creates a per-project key file (unlike
.gh-account/.gcloud-account). There is exactly one OpenRouter key, and it is global.
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.
- 7d ago First seen · 181 lines · 56 tokens per session scan A be74756adf26
openrouter-setup is a skill published in the GitHub repository OXI-717/ai-native-toolkit (8 stars, last pushed 14d ago), licensed MIT. It adds 56 tokens to every session and 1,968 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
rework-rate
Measure and interpret PR rework rate — the emerging 5th DORA metric.
go-testing
Trigger: Go tests, go test coverage, Bubbletea teatest, golden files. Apply focused Go testing patterns.
security-review
Perform a focused security review of pending git changes to identify high-confidence security vulnerabilities with real exploitation potential. Use this skill when the user asks for a security review, security audit, vulnerability scan, or wants to check pending changes on a branch for security issues before merging.…
huggingface-llm-trainer
Train or fine-tune language models with TRL or Unsloth on Hugging Face Jobs, including SFT, DPO, GRPO, reward models, and GGUF conversion. Use for cloud LLM training; use huggingface-vision-trainer for vision tasks.
review
Validate plans, execution, or PRs against wish criteria — returns SHIP / FIX-FIRST / BLOCKED with severity-tagged gaps.
reply-to-pr-threads
Draft, confirm, and post replies to GitHub PR review threads. Handles per-category reply formatting, re-fetches thread resolution state so auto-resolved threads are skipped, and posts via GraphQL. Use when the user asks to "reply to PR threads", "post PR thread replies", or "draft PR reply messages".