Skip to content
cccskills
FreePublished on GitHub

upgrade-model

Upgrade an AI chat model (fast or good) across backend and frontend.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md4.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Upgrade Chat Model

Upgrades the AI model used in the chat app. There are two model slots:

  • fast (Enter): default/fallback model (first entry in CHAT_MODELS)
  • good (Cmd+Enter): smart mode model (second entry in CHAT_MODELS)

The user must specify which slot to upgrade and the new model name (e.g. claude-opus-4-6).

Steps

1. Determine the change

Ask the user (if not already provided):

  • Which slot: fast or good?
  • What is the new model name? (e.g. claude-opus-4-6)

Derive from the model name:

  • SERDE_NAME: the kebab-case model ID sent over the wire (e.g. claude-opus-4-6)
  • ENUM_VARIANT: PascalCase variant name (e.g. Claude46Opus)
  • CONST_NAME: SCREAMING_SNAKE constant name (e.g. CLAUDE_46_OPUS)
  • CONST_VALUE: display string used by the frontend/provider (e.g. claude-4.6-opus)
  • PRETTY_NAME: human-readable name (e.g. Claude Opus 4.6)

2. Add model to AI crate (if it doesn't already exist)

File: crates/agent/src/model/predefined_model.rs

Check if the enum variant already exists. If not, add all of the following:

  1. Enum variant in pub enum Model (under the Anthropic section):

    #[serde(rename = "{SERDE_NAME}")]
    #[strum(serialize = "{SERDE_NAME}")]
    {ENUM_VARIANT},
    
  2. String constant in pub mod constants::models:

    pub const {CONST_NAME}: &str = "{CONST_VALUE}";
    
  3. Match arm in to_provider_model_string():

    Model::{ENUM_VARIANT} => (ANTHROPIC, {CONST_NAME}),
    
  4. Match arm in from_model_str():

    {CONST_NAME} => Model::{ENUM_VARIANT},
    

File: crates/agent/src/model/predefined_model.rs

  1. Metadata in fn metadata():

    Model::{ENUM_VARIANT} => ModelMetadata {
        context_window: 200_000,
    },
    

    Use the correct context window for the model. Anthropic models are typically 200,000.

  2. Provider in fn provider():

    Model::{ENUM_VARIANT} => Provider::Anthropic,
    

3. Update DCS constants

File: services/document_cognition_service/src/core/model.rs

  • If upgrading the fast slot: change the first entry in CHAT_MODELS and update FALLBACK_MODEL.
  • If upgrading the good slot: change the second entry in CHAT_MODELS.

4. Update DCS chat message handler

File: services/document_cognition_service/src/api/ws/chat_message/mod.rs

Search for the old model variant being used in the model selection logic (e.g. Model::Claude45Opus). Update it to the new variant.

5. Verify Rust compiles

cargo check -p agent -p document_cognition_service

Fix any compilation errors before proceeding.

6. Generate frontend types

Run from apps/web/:

cd apps/web && bun install && bun run gen-api

This builds all Rust OpenAPI and models binaries from local code, generates openapi.json, runs orval for TypeScript types, and generates model.ts from the local models binary. All generated files will reflect your local Rust changes.

7. Run bun check to find frontend usages

cd apps/web && bun check

This will report TypeScript errors everywhere the old model string is used. Fix each one. Common locations:

  • apps/web/src/lib/core/component/AI/constant/model.ts — MODEL_PRETTYNAME, MODEL_PROVIDER_ICON, SMART_MODE_MODEL / DEFAULT_MODEL
  • apps/web/src/lib/core/component/AI/component/input/useChatInput.tsx — hardcoded model references
  • apps/web/src/lib/core/component/AI/signal/pendingSend.test.ts — test data

Replace old model strings and update display names.

8. Format and verify

cd apps/web && bun format && bun check

The only errors remaining should be pre-existing ones unrelated to models (e.g. three, @aws-crypto/sha256-js type issues). All model-related errors must be resolved.

Finally, run the CI check:

cd apps/web && bun run gen-api -- --check

This must pass.

Notes

  • We only support Anthropic models for chat. Other providers exist in the AI crate but are not used for the chat feature.
  • The ExhaustiveMap type in constant/model.ts requires an entry for every model in the Model type, so missing entries will cause type errors.
  • The SMART_MODE_MODEL constant is the "good" model, DEFAULT_MODEL is the "fast" model.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Wrap a new backend endpoint in the TypeScript SDK (packages/sdk), or record it as skipped. Use when `just coverage` fails, or after adding an endpoint to a Rust service.

The English summary is being prepared. Showing the original description.

macro-inc/macro4.8KUpdated Oct 20, 2026

Add or change an in-app feature tour (a view's guided flyover) in the web app. Use when adding a tour to a view, adding or editing tour steps, pointing a step at a new control, or when a step's target needs something opened first.

The English summary is being prepared. Showing the original description.

macro-inc/macro4.8KUpdated Oct 20, 2026

audit

Free

Post-change checks before handing off. Works out which checks apply from the files changed (directory AGENTS.md Checks sections and matching .agents/rules), runs or verifies each, and reports pass/fail/skipped. Use before saying work is done, before pushing, or when asked to audit or verify a change.

The English summary is being prepared. Showing the original description.

macro-inc/macro4.8KUpdated Oct 20, 2026

Enforce hexagonal architecture in the Rust backend. Use before modifying crates/ or Rust services, especially inbound axum/tool/listener adapters, domain services/ports, outbound adapters, authorization, permissions, database access, or external clients.

The English summary is being prepared. Showing the original description.

macro-inc/macro4.8KUpdated Oct 20, 2026

Use when adding collaborative markdown, notes, or descriptions to a feature with collab surfaces. Covers parent entities, service entry points, authorization, content storage, and lifecycle.

The English summary is being prepared. Showing the original description.

macro-inc/macro4.8KUpdated Oct 20, 2026

Build a new AI tool end-to-end — Rust implementation, toolset wiring, infra, schema generation, and frontend UI.

The English summary is being prepared. Showing the original description.

macro-inc/macro4.8KUpdated Oct 20, 2026

See all skills by macro-inc

Report a problem with this skill