スキル一覧に戻る
travisennis

add-openrouter-model

by travisennis

An AI assistant for developing software.

5🍴 1📅 2026年1月24日
GitHubで見るManusで実行

SKILL.md


name: add-openrouter-model description: Fetch OpenRouter model details and provide guidance for adding models to acai-ts provider configuration.

Add OpenRouter Model

Fetches model details from OpenRouter API and provides structured information for the agent to add the model to source/models/openrouter-provider.ts.

Usage

Run this script from this file's directory.

./add-model.js google/gemini-3-flash-preview

How It Works

  1. Fetches model data from https://openrouter.ai/api/v1/models
  2. Locates the exact model by the provided OpenRouter ID
  3. Extracts and computes key information:
    • Context window length (context_length)
    • Max output tokens (top_provider.max_completion_tokens)
    • Pricing (pricing.prompt, pricing.completion)
    • Supported features (checks supported_parameters for reasoning/tool calling)
  4. Outputs JSON with all details needed to add the model

JSON Output Format

The script outputs a JSON object wrapped in markers:

--- MODEL_DETAILS_JSON_START ---
{...}
--- MODEL_DETAILS_JSON_END ---

JSON Structure

{
  "modelKey": "gemini-3-flash-preview",
  "openrouterId": "google/gemini-3-flash-preview",
  "providerFile": "./source/models/openrouter-provider.ts",
  "registryId": "openrouter:gemini-3-flash-preview",
  "registryEntry": {
    "id": "openrouter:gemini-3-flash-preview",
    "provider": "openrouter",
    "contextWindow": 1048576,
    "maxOutputTokens": 65535,
    "defaultTemperature": 0.5,
    "promptFormat": "markdown",
    "supportsReasoning": true,
    "supportsToolCalling": true,
    "costPerInputToken": 0.0000005,
    "costPerOutputToken": 0.000003
  },
  "clientConfig": {
    "key": "gemini-3-flash-preview",
    "openrouterId": "google/gemini-3-flash-preview"
  },
  "modelInfo": {
    "id": "google/gemini-3-flash-preview",
    "name": "Gemini 3.0 Flash Preview",
    "contextLength": 1048576,
    "maxCompletionTokens": 65535,
    "pricing": {...},
    "supportedParameters": [...]
  }
}

How to Add Model to Provider File

Step 1: Add to openrouterModels object

In source/models/openrouter-provider.ts, find the openrouterModels const object (starts with const openrouterModels = {). Add the new model entry in alphabetical order by key:

const openrouterModels = {
  "claude-3-5-sonnet": openRouterClient("anthropic/claude-3.5-sonnet"),
  // ... existing models ...
  "gemini-3-flash-preview": openRouterClient("google/gemini-3-flash-preview"),  // ADD THIS
  "sonnet-4.5": openRouterClient("anthropic/claude-sonnet-4.5"),
  // ...
} as const;

Step 2: Add to openrouterModelRegistry object

Find the openrouterModelRegistry object and add the registry entry in alphabetical order by registryId:

export const openrouterModelRegistry: {
  [K in ModelName]: ModelMetadata<ModelName>;
} = {
  "openrouter:claude-3-5-sonnet": {
    id: "openrouter:claude-3-5-sonnet",
    // ... existing entry ...
  },
  // ... existing entries ...
  "openrouter:gemini-3-flash-preview": {
    id: "openrouter:gemini-3-flash-preview",
    provider: "openrouter",
    contextWindow: 1048576,
    maxOutputTokens: 65535,
    defaultTemperature: 0.5,
    promptFormat: "markdown",
    supportsReasoning: true,
    supportsToolCalling: true,
    costPerInputToken: 0.0000005,
    costPerOutputToken: 0.000003,
  },
  // ...
};

Step 3: Validate changes

Run the project's validation commands:

npm run typecheck
npm run lint
npm run format

Field Mapping Reference

JSON FieldRegistry FieldNotes
registryEntry.ididFull registry ID
registryEntry.providerproviderAlways "openrouter"
registryEntry.contextWindowcontextWindowDirect mapping from API
registryEntry.maxOutputTokensmaxOutputTokensFrom top_provider.max_completion_tokens
registryEntry.defaultTemperaturedefaultTemperatureInferred from model ID (-1 for code models)
registryEntry.promptFormatpromptFormatInferred: gemini/claude/qwen/mistral → "markdown", gpt/openai → "xml", deepseek → "bracket"
registryEntry.supportsReasoningsupportsReasoningChecks supported_parameters for include_reasoning or reasoning
registryEntry.supportsToolCallingsupportsToolCallingChecks supported_parameters for tools
registryEntry.costPerInputTokencostPerInputTokenFrom pricing.prompt
registryEntry.costPerOutputTokencostPerOutputTokenFrom pricing.completion

Default Value Inferences

FieldLogic
defaultTemperatureReturns -1 if model ID contains "codex", "coder", or "code"; otherwise 0.5
promptFormatMaps model family to format: gemini/claude/qwen/mistral/moonshotai → "markdown", gpt/openai → "xml", deepseek → "bracket", defaults to "markdown"
maxOutputTokensFalls back to context_length if max_completion_tokens is not available

Error Handling

  • Validates model ID exists in OpenRouter API
  • Shows first 10 available models if ID not found
  • Provides clear error messages with suggestions

Examples

# Add Gemini 3 Flash Preview
./add-model.js google/gemini-3-flash-preview

# Add Claude 3.5 Sonnet
./add-model.js anthropic/claude-3-5-sonnet

# Add DeepSeek V3
./add-model.js deepseek/deepseek-v3.2

スコア

総合スコア

60/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です