Claude-skill-registry adding-models

Guide for adding new LLM models to Letta Code. Use when the user wants to add support for a new model, needs to know valid model handles, or wants to update the model configuration. Covers models.json configuration, CI test matrix, and handle validation.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/adding-models" ~/.claude/skills/majiayu000-claude-skill-registry-adding-models && rm -rf "$T"
manifest: skills/data/adding-models/SKILL.md
safety · automated scan (low risk)
This is a pattern-based risk scan, not a security review. Our crawler flagged:
  • makes HTTP requests (curl)
Always read a skill's source content before installing. Patterns alone don't mean the skill is malicious — but they warrant attention.
source content

Adding Models

This skill guides you through adding a new LLM model to Letta Code.

Quick Reference

Key files:

  • src/models.json
    - Model definitions (required)
  • .github/workflows/ci.yml
    - CI test matrix (optional)
  • src/tools/manager.ts
    - Toolset detection logic (rarely needed)

Workflow

Step 1: Find Valid Model Handles

Query the Letta API to see available models:

curl -s https://api.letta.com/v1/models/ | jq '.[] | .handle'

Or filter by provider:

curl -s https://api.letta.com/v1/models/ | jq '.[] | select(.handle | startswith("google_ai/")) | .handle'

Common provider prefixes:

  • anthropic/
    - Claude models
  • openai/
    - GPT models
  • google_ai/
    - Gemini models
  • google_vertex/
    - Vertex AI
  • openrouter/
    - Various providers

Step 2: Add to models.json

Add an entry to

src/models.json
:

{
  "id": "model-shortname",
  "handle": "provider/model-name",
  "label": "Human Readable Name",
  "description": "Brief description of the model",
  "isFeatured": true,  // Optional: shows in featured list
  "updateArgs": {
    "context_window": 180000,
    "temperature": 1.0  // Optional: provider-specific settings
  }
}

Field reference:

  • id
    : Short identifier used with
    --model
    flag (e.g.,
    gemini-3-flash
    )
  • handle
    : Full provider/model path from the API (e.g.,
    google_ai/gemini-3-flash-preview
    )
  • label
    : Display name in model selector
  • description
    : Brief description shown in selector
  • isFeatured
    : If true, appears in featured models section
  • updateArgs
    : Model-specific configuration (context window, temperature, reasoning settings, etc.)

Provider prefixes:

  • anthropic/
    - Anthropic (Claude models)
  • openai/
    - OpenAI (GPT models)
  • google_ai/
    - Google AI (Gemini models)
  • google_vertex/
    - Google Vertex AI
  • openrouter/
    - OpenRouter (various providers)

Step 3: Test the Model

Test with headless mode:

bun run src/index.ts --new --model <model-id> -p "hi, what model are you?"

Example:

bun run src/index.ts --new --model gemini-3-flash -p "hi, what model are you?"

Step 4: Add to CI Test Matrix (Optional)

To include the model in automated testing, add it to

.github/workflows/ci.yml
:

# Find the headless job matrix around line 122
model: [gpt-5-minimal, gpt-4.1, sonnet-4.5, gemini-pro, your-new-model, glm-4.6, haiku]

Toolset Detection

Models are automatically assigned toolsets based on provider:

  • openai/*
    codex
    toolset
  • google_ai/*
    or
    google_vertex/*
    gemini
    toolset
  • Others →
    default
    toolset

This is handled by

isGeminiModel()
and
isOpenAIModel()
in
src/tools/manager.ts
. You typically don't need to modify this unless adding a new provider.

Common Issues

"Handle not found" error: The model handle is incorrect. Run the validation script to see valid handles.

Model works but wrong toolset: Check

src/tools/manager.ts
to ensure the provider prefix is recognized.