Skills openrouter
install
source · Clone the upstream repo
git clone https://github.com/TerminalSkills/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/TerminalSkills/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/openrouter" ~/.claude/skills/terminalskills-skills-openrouter && rm -rf "$T"
manifest:
skills/openrouter/SKILL.mdsafety · automated scan (low risk)
This is a pattern-based risk scan, not a security review. Our crawler flagged:
- references .env files
- references API keys
Always read a skill's source content before installing. Patterns alone don't mean the skill is malicious — but they warrant attention.
source content
OpenRouter — Unified LLM API Gateway
You are an expert in OpenRouter, the unified API gateway for accessing 200+ LLMs through a single OpenAI-compatible endpoint. You help developers route requests to GPT-4o, Claude, Gemini, Llama, Mistral, and other models with automatic fallbacks, cost tracking, rate limiting, and model comparison — enabling multi-model strategies without managing multiple API keys and SDKs.
Core Capabilities
OpenAI-Compatible API
import OpenAI from "openai"; const openai = new OpenAI({ baseURL: "https://openrouter.ai/api/v1", apiKey: process.env.OPENROUTER_API_KEY, defaultHeaders: { "HTTP-Referer": "https://myapp.com", // Required for ranking "X-Title": "My App", // Shows in OpenRouter dashboard }, }); // Use any model with OpenAI SDK const response = await openai.chat.completions.create({ model: "anthropic/claude-sonnet-4-20250514", // Or: "openai/gpt-4o", "google/gemini-2.0-flash" messages: [{ role: "user", content: "Hello!" }], }); // Streaming const stream = await openai.chat.completions.create({ model: "openai/gpt-4o", messages: [{ role: "user", content: "Write a poem" }], stream: true, }); for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content || ""); } // Auto-routing: let OpenRouter pick the best model const autoResponse = await openai.chat.completions.create({ model: "openrouter/auto", // Routes to best model for the task messages: [{ role: "user", content: "Complex reasoning task..." }], }); // Cost-optimized routing const cheapResponse = await openai.chat.completions.create({ model: "openrouter/auto", route: "fallback", // Try cheapest first, fall back to better models: ["openai/gpt-4o-mini", "anthropic/claude-sonnet-4-20250514", "openai/gpt-4o"], messages: [{ role: "user", content: "Simple task" }], });
Model Comparison
// Compare models side-by-side const models = [ "openai/gpt-4o", "anthropic/claude-sonnet-4-20250514", "google/gemini-2.0-flash", "meta-llama/llama-3.1-70b-instruct", ]; const results = await Promise.all( models.map(async (model) => { const start = Date.now(); const response = await openai.chat.completions.create({ model, messages: [{ role: "user", content: testPrompt }], max_tokens: 500, }); return { model, latency: Date.now() - start, tokens: response.usage, cost: response.usage?.total_tokens, // OpenRouter returns cost info output: response.choices[0].message.content, }; }), );
With Vercel AI SDK
import { createOpenRouter } from "@openrouter/ai-sdk-provider"; import { generateText } from "ai"; const openrouter = createOpenRouter({ apiKey: process.env.OPENROUTER_API_KEY }); const { text } = await generateText({ model: openrouter("anthropic/claude-sonnet-4-20250514"), prompt: "Explain quantum computing", });
Installation
npm install openai # Use OpenAI SDK # Or: npm install @openrouter/ai-sdk-provider # For Vercel AI SDK
Best Practices
- One API, all models — Single API key for GPT-4o, Claude, Gemini, Llama, Mistral; no vendor lock-in
- Fallback routing — Configure model fallbacks; if primary is down or overloaded, auto-switch to backup
- Cost tracking — OpenRouter dashboard shows per-model costs; optimize spend by routing simple tasks to cheap models
- OpenAI SDK compatible — Just change
andbaseURL
; all OpenAI SDK features work (tools, streaming, JSON mode)apiKey - Free models — Some models available for free (rate-limited); great for prototyping
- Auto routing — Use
to let the system pick the best model based on task complexityopenrouter/auto - Provider preferences — Set model priorities and fallbacks; optimize for cost, speed, or quality
- Usage limits — Set per-key spending limits in dashboard; prevent runaway costs in production