[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-vercel-update-provider-models":3,"mdc-noafnb-key":44,"related-repo-vercel-update-provider-models":1820,"related-org-vercel-update-provider-models":1914},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":39,"sourceUrl":42,"mdContent":43},"update-provider-models","update AI SDK provider model IDs","Add new or remove obsolete model IDs for existing AI SDK providers. Use when adding a model to a provider, removing an obsolete model, or processing a list of model changes from an issue. Triggers on \"add model\", \"remove model\", \"new model ID\", \"obsolete model\", \"update model IDs\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"vercel","Vercel","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fvercel.png",[12,14,17],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"LLM","llm",{"name":18,"slug":19,"type":13},"AI SDK","ai-sdk",25670,"https:\u002F\u002Fgithub.com\u002Fvercel\u002Fai","2026-04-06T18:55:52.57314",null,4816,[26,27,28,29,30,31,32,16,33,34,35,36,37,8,38],"anthropic","artificial-intelligence","gemini","generative-ai","generative-ui","javascript","language-model","nextjs","openai","react","svelte","typescript","vue",{"repoUrl":21,"stars":20,"forks":24,"topics":40,"description":41},[26,27,28,29,30,31,32,16,33,34,35,36,37,8,38],"The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents ","https:\u002F\u002Fgithub.com\u002Fvercel\u002Fai\u002Ftree\u002FHEAD\u002Fskills\u002Fupdate-provider-models","---\nname: update-provider-models\ndescription: Add new or remove obsolete model IDs for existing AI SDK providers. Use when adding a model to a provider, removing an obsolete model, or processing a list of model changes from an issue. Triggers on \"add model\", \"remove model\", \"new model ID\", \"obsolete model\", \"update model IDs\".\nmetadata:\n  internal: true\n---\n\n## Update Provider Model IDs\n\nThis skill covers adding new model IDs and removing obsolete ones across the AI SDK codebase. Each workflow uses search to discover all locations that need changes.\n\nYou may be asked to add or remove a single model ID, or to process a list of multiple model ID changes from an issue. For each model ID, follow the appropriate workflow:\n\n- If a new model ID is being added, follow the `\u003Cadding-new-model>` workflow.\n- If an obsolete model ID is being removed, follow the `\u003Cremoving-obsolete-model>` workflow.\n\n## Critical Rules\n\n- **Exact matching**: Model IDs are often substrings of others (e.g. `grok-3` vs `grok-3-mini`). Always verify each search result is the exact model, not a substring match.\n- **Respect sort order**: When inserting into any list (type unions, table rows, arrays), observe the existing order and place the new entry accordingly.\n- **File naming for examples**: Use kebab-case with hyphens replacing dots (e.g. `gpt-5.4-codex` → `gpt-5-4-codex.ts`).\n- **Sequential processing**: When handling multiple models, complete the full workflow for one model before starting the next.\n- **Affected providers**: New model IDs always need to be added to the primary provider package and the AI Gateway. There may be additional affected packages (e.g. Bedrock, Vertex, OpenAI-compatible) if the model is available there or referenced in tests\u002Fdocs.\n- **Never make unrelated changes**: Only update model IDs and related references. Don't modify any other code, text, or formatting in the files you edit.\n- **Never modify `CHANGELOG.md` files of `packages\u002Fcodemod`**: Changelog files are historical records, codemods are migration scripts. Do not edit either when updating model IDs.\n\n\u003Cadding-new-model>\n\n## Workflow for Adding a New Model ID\n\n### Step 1: Identify Scope\n\nDetermine:\n\n- Provider name (e.g. `anthropic`, `openai`, `google`, `xai`)\n- Exact model ID string (e.g. `claude-haiku-4-5-20260218`, `gemini-3.1-pro`, `gpt-5.4-codex`)\n- Model type: chat, embedding, image, etc.\n- Whether this is a new version of an existing older model, or even the stable version of an existing preview or experimental model\n- Whether any provider packages other than the primary one and the AI Gateway need to be updated (e.g. Bedrock, Vertex, OpenAI-compatible)\n  - If a similar model ID is listed in one of those other provider packages, the new model ID should likely be added there as well. Check the provider's documentation for clues on availability.\n\n### Step 2: Find Where Similar Models Are Referenced\n\nSearch for a similar existing model from the same provider (e.g. a lower version, or the preview version being replaced) across `packages\u002F`, `content\u002F`, and `examples\u002F`. This reveals all locations that need updates.\n\n```bash\n# Search quoted occurrences to find all reference locations\ngrep -r \"'\u003Csimilar-model-id>'\" packages\u002F content\u002F examples\u002F --include='*.ts' --include='*.mdx' --include='*.md'\ngrep -r '\"\u003Csimilar-model-id>\"' packages\u002F content\u002F examples\u002F --include='*.ts' --include='*.mdx' --include='*.md'\n```\n\n### Step 3: Update Type Definitions\n\nFor each relevant `packages` file found, add the new model ID to the type union (and const arrays if present), respecting existing sort order.\n\nExamples of common locations for model ID type definitions:\n\n- `packages\u002F\u003Cprovider>\u002Fsrc\u002F*-options.ts` — the primary provider package\n- `packages\u002Fgateway\u002Fsrc\u002Fgateway-language-model-settings.ts` — the AI Gateway package\n- `packages\u002Famazon-bedrock\u002Fsrc\u002F**\u002F*-options.ts` — if the model is available on Amazon Bedrock\n- `packages\u002Fgoogle-vertex\u002Fsrc\u002F*-options.ts` — if the model is available on Google Vertex\n\nThis is NOT an exhaustive list — the search in Step 2 may reveal other files with model ID references that need updating as well.\n\n**Never** replace a model ID here. Only add the new model ID. Replacing references to an older or preview model ID is only relevant in documentation and examples.\n\nExample type union addition:\n\n```typescript\nexport type SomeModelId =\n  | 'existing-model-a'\n  | 'new-model-id' \u002F\u002F ← add in sorted position\n  | 'existing-model-b'\n  | (string & {});\n```\n\nExample const array addition:\n\n```typescript\nexport const reasoningModelIds = [\n  'existing-model-a',\n  'new-model-id', \u002F\u002F ← add in sorted position\n  'existing-model-b',\n] as const;\n```\n\n### Step 4: Update Documentation\n\nFor each `.mdx` file found in `content\u002F`, add or update entries:\n\n- **Capability tables**: Add a row for the new model in the correct position with the appropriate capability checks (`\u003CCheck \u002F>` or `\u003CCross \u002F>`).\n- **Inline code examples**: If replacing a preview\u002Folder model as the recommended one, update code snippets like `const model = provider('old-model')` to use the new model.\n- **\"Latest\" descriptions**: Update text like \"Latest model with enhanced reasoning\" to reference the new model.\n\nIf you found the similar model ID referenced in a specific package's `README.md` file, update the model ID in those code examples as well.\n\n### Step 5: Create or Update Examples\n\n**If the new model replaces an older one**: Find existing examples using the old model and update them to use the new model ID.\n\n**If purely new with no predecessor**: Create new example files, one file per top-level function that is relevant for the new model (e.g. `generateText`, `streamText`, `generateImage`). For example, if it's a new language model, you would create files like:\n\n- `examples\u002Fai-functions\u002Fsrc\u002Fgenerate-text\u002F\u003Cprovider>\u002F\u003Cmodel-kebab>.ts`\n- `examples\u002Fai-functions\u002Fsrc\u002Fstream-text\u002F\u003Cprovider>\u002F\u003Cmodel-kebab>.ts`\n\nOr if it's a new image model, you might create:\n\n- `examples\u002Fai-functions\u002Fsrc\u002Fgenerate-image\u002F\u003Cprovider>\u002F\u003Cmodel-kebab>.ts`\n\nLook for existing example files for the provider in the same folder, to use as a reference for your new example files.\n\nIn your search for the similar model ID, you may have found examples in which the model ID is part of a list of models (e.g. in an array of options for a test or example). In that case, add the new model ID to the same list in the example file, respecting sort order.\n\n### Step 6: Update Tests\n\nWhere reasonable, replace references to the older or preview model with the new model in test files, especially if the new model is now the recommended one.\n\n**Exception:** Do not replace model IDs in fixtures or snapshots, or tests that use those fixtures or snapshots, as those are meant to be stable and reflect actual API responses captured.\n\n### Step 7: Run Tests\n\n```bash\npnpm --filter @ai-sdk\u002F\u003Cprovider> test\npnpm --filter @ai-sdk\u002Fgateway test\n```\n\nAlso run tests for any other affected packages:\n\n```bash\npnpm --filter @ai-sdk\u002Fopenai-compatible test  # if snapshots\u002Ftests were updated\npnpm --filter @ai-sdk\u002Famazon-bedrock test     # if Bedrock options were updated\npnpm --filter @ai-sdk\u002Fgoogle-vertex test      # if Vertex options were updated\n```\n\n\u003C\u002Fadding-new-model>\n\n\u003Cremoving-obsolete-model>\n\n## Workflow for Removing an Obsolete Model ID\n\n### Step 1: Identify Successor\n\nDetermine which model replaces the removed one in examples, tests, and docs. This is relevant for updating references.\n\nIf there is no obvious successor, you should leave old references in place in examples, docs, and tests.\n\n### Step 2: Find All Exact Occurrences\n\nSearch for the model ID with quotes to avoid substring false positives:\n\n```bash\n# Single-quoted (TypeScript source, type unions)\ngrep -r \"'\u003Cmodel-id>'\" packages\u002F content\u002F examples\u002F --include='*.ts' --include='*.mdx' --include='*.md' --include='*.snap'\n\n# Double-quoted (JSON in snapshots, test fixtures with embedded JSON, docs)\ngrep -r '\"\u003Cmodel-id>\"' packages\u002F content\u002F examples\u002F --include='*.ts' --include='*.mdx' --include='*.md' --include='*.snap'\n```\n\nManually verify each result is the exact model and not a substring match (e.g. searching `'grok-3'` must not match `'grok-3-mini'`).\n\n### Step 3: Remove from Type Definitions\n\nRemove the `| 'model-id'` line from union types and entries from const arrays in `*-options.ts` files.\n\n### Step 4: Update Documentation\n\n- Remove rows from capability tables in `.mdx` files.\n- Replace inline code examples and descriptions referencing the removed model with the successor.\n- Update community provider docs in `content\u002Fproviders\u002F05-community-providers\u002F`.\n\n### Step 5: Update Examples\n\n- Replace the removed model with the successor in example files that use it directly.\n- Remove from model lists in examples.\n- Delete dedicated example files only if no unique feature is demonstrated beyond the model itself (e.g. if the file is named after the model).\n\n### Step 6: Update Tests and Snapshots\n\n- Replace the model ID with the successor in `*.test.ts` files.\n- Replace the model ID in `__snapshots__\u002F*.snap` files — model IDs appear in serialized JSON strings.\n- Replace in embedded JSON strings within test fixtures (e.g. `\"model\":\"old-model\"` → `\"model\":\"new-model\"`).\n- Update `examples\u002Fai-functions\u002Fsrc\u002Fe2e\u002F*.test.ts` — remove from model arrays or replace.\n- Update `packages\u002F\u003Cprovider>\u002FREADME.md` if it contains code examples.\n\n### Step 7: Run Tests\n\n```bash\npnpm --filter @ai-sdk\u002F\u003Cprovider> test\n```\n\nAlso run tests for any other affected packages (same as Workflow A Step 7).\n\n\u003C\u002Fremoving-obsolete-model>\n",{"data":45,"body":48},{"name":4,"description":6,"metadata":46},{"internal":47},true,{"type":49,"children":50},"root",[51,60,66,71,102,108,228,1307,1814],{"type":52,"tag":53,"props":54,"children":56},"element","h2",{"id":55},"update-provider-model-ids",[57],{"type":58,"value":59},"text","Update Provider Model IDs",{"type":52,"tag":61,"props":62,"children":63},"p",{},[64],{"type":58,"value":65},"This skill covers adding new model IDs and removing obsolete ones across the AI SDK codebase. Each workflow uses search to discover all locations that need changes.",{"type":52,"tag":61,"props":67,"children":68},{},[69],{"type":58,"value":70},"You may be asked to add or remove a single model ID, or to process a list of multiple model ID changes from an issue. For each model ID, follow the appropriate workflow:",{"type":52,"tag":72,"props":73,"children":74},"ul",{},[75,90],{"type":52,"tag":76,"props":77,"children":78},"li",{},[79,81,88],{"type":58,"value":80},"If a new model ID is being added, follow the ",{"type":52,"tag":82,"props":83,"children":85},"code",{"className":84},[],[86],{"type":58,"value":87},"\u003Cadding-new-model>",{"type":58,"value":89}," workflow.",{"type":52,"tag":76,"props":91,"children":92},{},[93,95,101],{"type":58,"value":94},"If an obsolete model ID is being removed, follow the ",{"type":52,"tag":82,"props":96,"children":98},{"className":97},[],[99],{"type":58,"value":100},"\u003Cremoving-obsolete-model>",{"type":58,"value":89},{"type":52,"tag":53,"props":103,"children":105},{"id":104},"critical-rules",[106],{"type":58,"value":107},"Critical Rules",{"type":52,"tag":72,"props":109,"children":110},{},[111,138,148,174,184,194,204],{"type":52,"tag":76,"props":112,"children":113},{},[114,120,122,128,130,136],{"type":52,"tag":115,"props":116,"children":117},"strong",{},[118],{"type":58,"value":119},"Exact matching",{"type":58,"value":121},": Model IDs are often substrings of others (e.g. ",{"type":52,"tag":82,"props":123,"children":125},{"className":124},[],[126],{"type":58,"value":127},"grok-3",{"type":58,"value":129}," vs ",{"type":52,"tag":82,"props":131,"children":133},{"className":132},[],[134],{"type":58,"value":135},"grok-3-mini",{"type":58,"value":137},"). Always verify each search result is the exact model, not a substring match.",{"type":52,"tag":76,"props":139,"children":140},{},[141,146],{"type":52,"tag":115,"props":142,"children":143},{},[144],{"type":58,"value":145},"Respect sort order",{"type":58,"value":147},": When inserting into any list (type unions, table rows, arrays), observe the existing order and place the new entry accordingly.",{"type":52,"tag":76,"props":149,"children":150},{},[151,156,158,164,166,172],{"type":52,"tag":115,"props":152,"children":153},{},[154],{"type":58,"value":155},"File naming for examples",{"type":58,"value":157},": Use kebab-case with hyphens replacing dots (e.g. ",{"type":52,"tag":82,"props":159,"children":161},{"className":160},[],[162],{"type":58,"value":163},"gpt-5.4-codex",{"type":58,"value":165}," → ",{"type":52,"tag":82,"props":167,"children":169},{"className":168},[],[170],{"type":58,"value":171},"gpt-5-4-codex.ts",{"type":58,"value":173},").",{"type":52,"tag":76,"props":175,"children":176},{},[177,182],{"type":52,"tag":115,"props":178,"children":179},{},[180],{"type":58,"value":181},"Sequential processing",{"type":58,"value":183},": When handling multiple models, complete the full workflow for one model before starting the next.",{"type":52,"tag":76,"props":185,"children":186},{},[187,192],{"type":52,"tag":115,"props":188,"children":189},{},[190],{"type":58,"value":191},"Affected providers",{"type":58,"value":193},": New model IDs always need to be added to the primary provider package and the AI Gateway. There may be additional affected packages (e.g. Bedrock, Vertex, OpenAI-compatible) if the model is available there or referenced in tests\u002Fdocs.",{"type":52,"tag":76,"props":195,"children":196},{},[197,202],{"type":52,"tag":115,"props":198,"children":199},{},[200],{"type":58,"value":201},"Never make unrelated changes",{"type":58,"value":203},": Only update model IDs and related references. Don't modify any other code, text, or formatting in the files you edit.",{"type":52,"tag":76,"props":205,"children":206},{},[207,226],{"type":52,"tag":115,"props":208,"children":209},{},[210,212,218,220],{"type":58,"value":211},"Never modify ",{"type":52,"tag":82,"props":213,"children":215},{"className":214},[],[216],{"type":58,"value":217},"CHANGELOG.md",{"type":58,"value":219}," files of ",{"type":52,"tag":82,"props":221,"children":223},{"className":222},[],[224],{"type":58,"value":225},"packages\u002Fcodemod",{"type":58,"value":227},": Changelog files are historical records, codemods are migration scripts. Do not edit either when updating model IDs.",{"type":52,"tag":229,"props":230,"children":231},"adding-new-model",{},[232,238,245,250,334,340,368,578,584,597,602,649,654,664,669,807,812,931,937,957,1013,1026,1032,1042,1074,1095,1100,1112,1117,1122,1128,1133,1143,1149,1219,1224],{"type":52,"tag":53,"props":233,"children":235},{"id":234},"workflow-for-adding-a-new-model-id",[236],{"type":58,"value":237},"Workflow for Adding a New Model ID",{"type":52,"tag":239,"props":240,"children":242},"h3",{"id":241},"step-1-identify-scope",[243],{"type":58,"value":244},"Step 1: Identify Scope",{"type":52,"tag":61,"props":246,"children":247},{},[248],{"type":58,"value":249},"Determine:",{"type":52,"tag":72,"props":251,"children":252},{},[253,286,311,316,321],{"type":52,"tag":76,"props":254,"children":255},{},[256,258,263,265,270,271,277,278,284],{"type":58,"value":257},"Provider name (e.g. ",{"type":52,"tag":82,"props":259,"children":261},{"className":260},[],[262],{"type":58,"value":26},{"type":58,"value":264},", ",{"type":52,"tag":82,"props":266,"children":268},{"className":267},[],[269],{"type":58,"value":34},{"type":58,"value":264},{"type":52,"tag":82,"props":272,"children":274},{"className":273},[],[275],{"type":58,"value":276},"google",{"type":58,"value":264},{"type":52,"tag":82,"props":279,"children":281},{"className":280},[],[282],{"type":58,"value":283},"xai",{"type":58,"value":285},")",{"type":52,"tag":76,"props":287,"children":288},{},[289,291,297,298,304,305,310],{"type":58,"value":290},"Exact model ID string (e.g. ",{"type":52,"tag":82,"props":292,"children":294},{"className":293},[],[295],{"type":58,"value":296},"claude-haiku-4-5-20260218",{"type":58,"value":264},{"type":52,"tag":82,"props":299,"children":301},{"className":300},[],[302],{"type":58,"value":303},"gemini-3.1-pro",{"type":58,"value":264},{"type":52,"tag":82,"props":306,"children":308},{"className":307},[],[309],{"type":58,"value":163},{"type":58,"value":285},{"type":52,"tag":76,"props":312,"children":313},{},[314],{"type":58,"value":315},"Model type: chat, embedding, image, etc.",{"type":52,"tag":76,"props":317,"children":318},{},[319],{"type":58,"value":320},"Whether this is a new version of an existing older model, or even the stable version of an existing preview or experimental model",{"type":52,"tag":76,"props":322,"children":323},{},[324,326],{"type":58,"value":325},"Whether any provider packages other than the primary one and the AI Gateway need to be updated (e.g. Bedrock, Vertex, OpenAI-compatible)\n",{"type":52,"tag":72,"props":327,"children":328},{},[329],{"type":52,"tag":76,"props":330,"children":331},{},[332],{"type":58,"value":333},"If a similar model ID is listed in one of those other provider packages, the new model ID should likely be added there as well. Check the provider's documentation for clues on availability.",{"type":52,"tag":239,"props":335,"children":337},{"id":336},"step-2-find-where-similar-models-are-referenced",[338],{"type":58,"value":339},"Step 2: Find Where Similar Models Are Referenced",{"type":52,"tag":61,"props":341,"children":342},{},[343,345,351,352,358,360,366],{"type":58,"value":344},"Search for a similar existing model from the same provider (e.g. a lower version, or the preview version being replaced) across ",{"type":52,"tag":82,"props":346,"children":348},{"className":347},[],[349],{"type":58,"value":350},"packages\u002F",{"type":58,"value":264},{"type":52,"tag":82,"props":353,"children":355},{"className":354},[],[356],{"type":58,"value":357},"content\u002F",{"type":58,"value":359},", and ",{"type":52,"tag":82,"props":361,"children":363},{"className":362},[],[364],{"type":58,"value":365},"examples\u002F",{"type":58,"value":367},". This reveals all locations that need updates.",{"type":52,"tag":369,"props":370,"children":375},"pre",{"className":371,"code":372,"language":373,"meta":374,"style":374},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Search quoted occurrences to find all reference locations\ngrep -r \"'\u003Csimilar-model-id>'\" packages\u002F content\u002F examples\u002F --include='*.ts' --include='*.mdx' --include='*.md'\ngrep -r '\"\u003Csimilar-model-id>\"' packages\u002F content\u002F examples\u002F --include='*.ts' --include='*.mdx' --include='*.md'\n","bash","",[376],{"type":52,"tag":82,"props":377,"children":378},{"__ignoreMap":374},[379,391,492],{"type":52,"tag":380,"props":381,"children":384},"span",{"class":382,"line":383},"line",1,[385],{"type":52,"tag":380,"props":386,"children":388},{"style":387},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[389],{"type":58,"value":390},"# Search quoted occurrences to find all reference locations\n",{"type":52,"tag":380,"props":392,"children":394},{"class":382,"line":393},2,[395,401,407,413,418,423,428,433,438,443,448,453,457,461,465,470,474,478,482,487],{"type":52,"tag":380,"props":396,"children":398},{"style":397},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[399],{"type":58,"value":400},"grep",{"type":52,"tag":380,"props":402,"children":404},{"style":403},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[405],{"type":58,"value":406}," -r",{"type":52,"tag":380,"props":408,"children":410},{"style":409},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[411],{"type":58,"value":412}," \"",{"type":52,"tag":380,"props":414,"children":415},{"style":403},[416],{"type":58,"value":417},"'\u003Csimilar-model-id>'",{"type":52,"tag":380,"props":419,"children":420},{"style":409},[421],{"type":58,"value":422},"\"",{"type":52,"tag":380,"props":424,"children":425},{"style":403},[426],{"type":58,"value":427}," packages\u002F",{"type":52,"tag":380,"props":429,"children":430},{"style":403},[431],{"type":58,"value":432}," content\u002F",{"type":52,"tag":380,"props":434,"children":435},{"style":403},[436],{"type":58,"value":437}," examples\u002F",{"type":52,"tag":380,"props":439,"children":440},{"style":403},[441],{"type":58,"value":442}," --include=",{"type":52,"tag":380,"props":444,"children":445},{"style":409},[446],{"type":58,"value":447},"'",{"type":52,"tag":380,"props":449,"children":450},{"style":403},[451],{"type":58,"value":452},"*.ts",{"type":52,"tag":380,"props":454,"children":455},{"style":409},[456],{"type":58,"value":447},{"type":52,"tag":380,"props":458,"children":459},{"style":403},[460],{"type":58,"value":442},{"type":52,"tag":380,"props":462,"children":463},{"style":409},[464],{"type":58,"value":447},{"type":52,"tag":380,"props":466,"children":467},{"style":403},[468],{"type":58,"value":469},"*.mdx",{"type":52,"tag":380,"props":471,"children":472},{"style":409},[473],{"type":58,"value":447},{"type":52,"tag":380,"props":475,"children":476},{"style":403},[477],{"type":58,"value":442},{"type":52,"tag":380,"props":479,"children":480},{"style":409},[481],{"type":58,"value":447},{"type":52,"tag":380,"props":483,"children":484},{"style":403},[485],{"type":58,"value":486},"*.md",{"type":52,"tag":380,"props":488,"children":489},{"style":409},[490],{"type":58,"value":491},"'\n",{"type":52,"tag":380,"props":493,"children":495},{"class":382,"line":494},3,[496,500,504,509,514,518,522,526,530,534,538,542,546,550,554,558,562,566,570,574],{"type":52,"tag":380,"props":497,"children":498},{"style":397},[499],{"type":58,"value":400},{"type":52,"tag":380,"props":501,"children":502},{"style":403},[503],{"type":58,"value":406},{"type":52,"tag":380,"props":505,"children":506},{"style":409},[507],{"type":58,"value":508}," '",{"type":52,"tag":380,"props":510,"children":511},{"style":403},[512],{"type":58,"value":513},"\"\u003Csimilar-model-id>\"",{"type":52,"tag":380,"props":515,"children":516},{"style":409},[517],{"type":58,"value":447},{"type":52,"tag":380,"props":519,"children":520},{"style":403},[521],{"type":58,"value":427},{"type":52,"tag":380,"props":523,"children":524},{"style":403},[525],{"type":58,"value":432},{"type":52,"tag":380,"props":527,"children":528},{"style":403},[529],{"type":58,"value":437},{"type":52,"tag":380,"props":531,"children":532},{"style":403},[533],{"type":58,"value":442},{"type":52,"tag":380,"props":535,"children":536},{"style":409},[537],{"type":58,"value":447},{"type":52,"tag":380,"props":539,"children":540},{"style":403},[541],{"type":58,"value":452},{"type":52,"tag":380,"props":543,"children":544},{"style":409},[545],{"type":58,"value":447},{"type":52,"tag":380,"props":547,"children":548},{"style":403},[549],{"type":58,"value":442},{"type":52,"tag":380,"props":551,"children":552},{"style":409},[553],{"type":58,"value":447},{"type":52,"tag":380,"props":555,"children":556},{"style":403},[557],{"type":58,"value":469},{"type":52,"tag":380,"props":559,"children":560},{"style":409},[561],{"type":58,"value":447},{"type":52,"tag":380,"props":563,"children":564},{"style":403},[565],{"type":58,"value":442},{"type":52,"tag":380,"props":567,"children":568},{"style":409},[569],{"type":58,"value":447},{"type":52,"tag":380,"props":571,"children":572},{"style":403},[573],{"type":58,"value":486},{"type":52,"tag":380,"props":575,"children":576},{"style":409},[577],{"type":58,"value":491},{"type":52,"tag":239,"props":579,"children":581},{"id":580},"step-3-update-type-definitions",[582],{"type":58,"value":583},"Step 3: Update Type Definitions",{"type":52,"tag":61,"props":585,"children":586},{},[587,589,595],{"type":58,"value":588},"For each relevant ",{"type":52,"tag":82,"props":590,"children":592},{"className":591},[],[593],{"type":58,"value":594},"packages",{"type":58,"value":596}," file found, add the new model ID to the type union (and const arrays if present), respecting existing sort order.",{"type":52,"tag":61,"props":598,"children":599},{},[600],{"type":58,"value":601},"Examples of common locations for model ID type definitions:",{"type":52,"tag":72,"props":603,"children":604},{},[605,616,627,638],{"type":52,"tag":76,"props":606,"children":607},{},[608,614],{"type":52,"tag":82,"props":609,"children":611},{"className":610},[],[612],{"type":58,"value":613},"packages\u002F\u003Cprovider>\u002Fsrc\u002F*-options.ts",{"type":58,"value":615}," — the primary provider package",{"type":52,"tag":76,"props":617,"children":618},{},[619,625],{"type":52,"tag":82,"props":620,"children":622},{"className":621},[],[623],{"type":58,"value":624},"packages\u002Fgateway\u002Fsrc\u002Fgateway-language-model-settings.ts",{"type":58,"value":626}," — the AI Gateway package",{"type":52,"tag":76,"props":628,"children":629},{},[630,636],{"type":52,"tag":82,"props":631,"children":633},{"className":632},[],[634],{"type":58,"value":635},"packages\u002Famazon-bedrock\u002Fsrc\u002F**\u002F*-options.ts",{"type":58,"value":637}," — if the model is available on Amazon Bedrock",{"type":52,"tag":76,"props":639,"children":640},{},[641,647],{"type":52,"tag":82,"props":642,"children":644},{"className":643},[],[645],{"type":58,"value":646},"packages\u002Fgoogle-vertex\u002Fsrc\u002F*-options.ts",{"type":58,"value":648}," — if the model is available on Google Vertex",{"type":52,"tag":61,"props":650,"children":651},{},[652],{"type":58,"value":653},"This is NOT an exhaustive list — the search in Step 2 may reveal other files with model ID references that need updating as well.",{"type":52,"tag":61,"props":655,"children":656},{},[657,662],{"type":52,"tag":115,"props":658,"children":659},{},[660],{"type":58,"value":661},"Never",{"type":58,"value":663}," replace a model ID here. Only add the new model ID. Replacing references to an older or preview model ID is only relevant in documentation and examples.",{"type":52,"tag":61,"props":665,"children":666},{},[667],{"type":58,"value":668},"Example type union addition:",{"type":52,"tag":369,"props":670,"children":673},{"className":671,"code":672,"language":37,"meta":374,"style":374},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export type SomeModelId =\n  | 'existing-model-a'\n  | 'new-model-id' \u002F\u002F ← add in sorted position\n  | 'existing-model-b'\n  | (string & {});\n",[674],{"type":52,"tag":82,"props":675,"children":676},{"__ignoreMap":374},[677,702,723,748,769],{"type":52,"tag":380,"props":678,"children":679},{"class":382,"line":383},[680,686,692,697],{"type":52,"tag":380,"props":681,"children":683},{"style":682},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[684],{"type":58,"value":685},"export",{"type":52,"tag":380,"props":687,"children":689},{"style":688},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[690],{"type":58,"value":691}," type",{"type":52,"tag":380,"props":693,"children":694},{"style":397},[695],{"type":58,"value":696}," SomeModelId",{"type":52,"tag":380,"props":698,"children":699},{"style":409},[700],{"type":58,"value":701}," =\n",{"type":52,"tag":380,"props":703,"children":704},{"class":382,"line":393},[705,710,714,719],{"type":52,"tag":380,"props":706,"children":707},{"style":409},[708],{"type":58,"value":709},"  |",{"type":52,"tag":380,"props":711,"children":712},{"style":409},[713],{"type":58,"value":508},{"type":52,"tag":380,"props":715,"children":716},{"style":403},[717],{"type":58,"value":718},"existing-model-a",{"type":52,"tag":380,"props":720,"children":721},{"style":409},[722],{"type":58,"value":491},{"type":52,"tag":380,"props":724,"children":725},{"class":382,"line":494},[726,730,734,739,743],{"type":52,"tag":380,"props":727,"children":728},{"style":409},[729],{"type":58,"value":709},{"type":52,"tag":380,"props":731,"children":732},{"style":409},[733],{"type":58,"value":508},{"type":52,"tag":380,"props":735,"children":736},{"style":403},[737],{"type":58,"value":738},"new-model-id",{"type":52,"tag":380,"props":740,"children":741},{"style":409},[742],{"type":58,"value":447},{"type":52,"tag":380,"props":744,"children":745},{"style":387},[746],{"type":58,"value":747}," \u002F\u002F ← add in sorted position\n",{"type":52,"tag":380,"props":749,"children":751},{"class":382,"line":750},4,[752,756,760,765],{"type":52,"tag":380,"props":753,"children":754},{"style":409},[755],{"type":58,"value":709},{"type":52,"tag":380,"props":757,"children":758},{"style":409},[759],{"type":58,"value":508},{"type":52,"tag":380,"props":761,"children":762},{"style":403},[763],{"type":58,"value":764},"existing-model-b",{"type":52,"tag":380,"props":766,"children":767},{"style":409},[768],{"type":58,"value":491},{"type":52,"tag":380,"props":770,"children":772},{"class":382,"line":771},5,[773,777,783,788,793,798,802],{"type":52,"tag":380,"props":774,"children":775},{"style":409},[776],{"type":58,"value":709},{"type":52,"tag":380,"props":778,"children":780},{"style":779},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[781],{"type":58,"value":782}," (",{"type":52,"tag":380,"props":784,"children":785},{"style":397},[786],{"type":58,"value":787},"string",{"type":52,"tag":380,"props":789,"children":790},{"style":409},[791],{"type":58,"value":792}," &",{"type":52,"tag":380,"props":794,"children":795},{"style":409},[796],{"type":58,"value":797}," {}",{"type":52,"tag":380,"props":799,"children":800},{"style":779},[801],{"type":58,"value":285},{"type":52,"tag":380,"props":803,"children":804},{"style":409},[805],{"type":58,"value":806},";\n",{"type":52,"tag":61,"props":808,"children":809},{},[810],{"type":58,"value":811},"Example const array addition:",{"type":52,"tag":369,"props":813,"children":815},{"className":671,"code":814,"language":37,"meta":374,"style":374},"export const reasoningModelIds = [\n  'existing-model-a',\n  'new-model-id', \u002F\u002F ← add in sorted position\n  'existing-model-b',\n] as const;\n",[816],{"type":52,"tag":82,"props":817,"children":818},{"__ignoreMap":374},[819,846,867,891,910],{"type":52,"tag":380,"props":820,"children":821},{"class":382,"line":383},[822,826,831,836,841],{"type":52,"tag":380,"props":823,"children":824},{"style":682},[825],{"type":58,"value":685},{"type":52,"tag":380,"props":827,"children":828},{"style":688},[829],{"type":58,"value":830}," const",{"type":52,"tag":380,"props":832,"children":833},{"style":779},[834],{"type":58,"value":835}," reasoningModelIds ",{"type":52,"tag":380,"props":837,"children":838},{"style":409},[839],{"type":58,"value":840},"=",{"type":52,"tag":380,"props":842,"children":843},{"style":779},[844],{"type":58,"value":845}," [\n",{"type":52,"tag":380,"props":847,"children":848},{"class":382,"line":393},[849,854,858,862],{"type":52,"tag":380,"props":850,"children":851},{"style":409},[852],{"type":58,"value":853},"  '",{"type":52,"tag":380,"props":855,"children":856},{"style":403},[857],{"type":58,"value":718},{"type":52,"tag":380,"props":859,"children":860},{"style":409},[861],{"type":58,"value":447},{"type":52,"tag":380,"props":863,"children":864},{"style":409},[865],{"type":58,"value":866},",\n",{"type":52,"tag":380,"props":868,"children":869},{"class":382,"line":494},[870,874,878,882,887],{"type":52,"tag":380,"props":871,"children":872},{"style":409},[873],{"type":58,"value":853},{"type":52,"tag":380,"props":875,"children":876},{"style":403},[877],{"type":58,"value":738},{"type":52,"tag":380,"props":879,"children":880},{"style":409},[881],{"type":58,"value":447},{"type":52,"tag":380,"props":883,"children":884},{"style":409},[885],{"type":58,"value":886},",",{"type":52,"tag":380,"props":888,"children":889},{"style":387},[890],{"type":58,"value":747},{"type":52,"tag":380,"props":892,"children":893},{"class":382,"line":750},[894,898,902,906],{"type":52,"tag":380,"props":895,"children":896},{"style":409},[897],{"type":58,"value":853},{"type":52,"tag":380,"props":899,"children":900},{"style":403},[901],{"type":58,"value":764},{"type":52,"tag":380,"props":903,"children":904},{"style":409},[905],{"type":58,"value":447},{"type":52,"tag":380,"props":907,"children":908},{"style":409},[909],{"type":58,"value":866},{"type":52,"tag":380,"props":911,"children":912},{"class":382,"line":771},[913,918,923,927],{"type":52,"tag":380,"props":914,"children":915},{"style":779},[916],{"type":58,"value":917},"] ",{"type":52,"tag":380,"props":919,"children":920},{"style":682},[921],{"type":58,"value":922},"as",{"type":52,"tag":380,"props":924,"children":925},{"style":688},[926],{"type":58,"value":830},{"type":52,"tag":380,"props":928,"children":929},{"style":409},[930],{"type":58,"value":806},{"type":52,"tag":239,"props":932,"children":934},{"id":933},"step-4-update-documentation",[935],{"type":58,"value":936},"Step 4: Update Documentation",{"type":52,"tag":61,"props":938,"children":939},{},[940,942,948,950,955],{"type":58,"value":941},"For each ",{"type":52,"tag":82,"props":943,"children":945},{"className":944},[],[946],{"type":58,"value":947},".mdx",{"type":58,"value":949}," file found in ",{"type":52,"tag":82,"props":951,"children":953},{"className":952},[],[954],{"type":58,"value":357},{"type":58,"value":956},", add or update entries:",{"type":52,"tag":72,"props":958,"children":959},{},[960,985,1003],{"type":52,"tag":76,"props":961,"children":962},{},[963,968,970,976,978,984],{"type":52,"tag":115,"props":964,"children":965},{},[966],{"type":58,"value":967},"Capability tables",{"type":58,"value":969},": Add a row for the new model in the correct position with the appropriate capability checks (",{"type":52,"tag":82,"props":971,"children":973},{"className":972},[],[974],{"type":58,"value":975},"\u003CCheck \u002F>",{"type":58,"value":977}," or ",{"type":52,"tag":82,"props":979,"children":981},{"className":980},[],[982],{"type":58,"value":983},"\u003CCross \u002F>",{"type":58,"value":173},{"type":52,"tag":76,"props":986,"children":987},{},[988,993,995,1001],{"type":52,"tag":115,"props":989,"children":990},{},[991],{"type":58,"value":992},"Inline code examples",{"type":58,"value":994},": If replacing a preview\u002Folder model as the recommended one, update code snippets like ",{"type":52,"tag":82,"props":996,"children":998},{"className":997},[],[999],{"type":58,"value":1000},"const model = provider('old-model')",{"type":58,"value":1002}," to use the new model.",{"type":52,"tag":76,"props":1004,"children":1005},{},[1006,1011],{"type":52,"tag":115,"props":1007,"children":1008},{},[1009],{"type":58,"value":1010},"\"Latest\" descriptions",{"type":58,"value":1012},": Update text like \"Latest model with enhanced reasoning\" to reference the new model.",{"type":52,"tag":61,"props":1014,"children":1015},{},[1016,1018,1024],{"type":58,"value":1017},"If you found the similar model ID referenced in a specific package's ",{"type":52,"tag":82,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":58,"value":1023},"README.md",{"type":58,"value":1025}," file, update the model ID in those code examples as well.",{"type":52,"tag":239,"props":1027,"children":1029},{"id":1028},"step-5-create-or-update-examples",[1030],{"type":58,"value":1031},"Step 5: Create or Update Examples",{"type":52,"tag":61,"props":1033,"children":1034},{},[1035,1040],{"type":52,"tag":115,"props":1036,"children":1037},{},[1038],{"type":58,"value":1039},"If the new model replaces an older one",{"type":58,"value":1041},": Find existing examples using the old model and update them to use the new model ID.",{"type":52,"tag":61,"props":1043,"children":1044},{},[1045,1050,1052,1058,1059,1065,1066,1072],{"type":52,"tag":115,"props":1046,"children":1047},{},[1048],{"type":58,"value":1049},"If purely new with no predecessor",{"type":58,"value":1051},": Create new example files, one file per top-level function that is relevant for the new model (e.g. ",{"type":52,"tag":82,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":58,"value":1057},"generateText",{"type":58,"value":264},{"type":52,"tag":82,"props":1060,"children":1062},{"className":1061},[],[1063],{"type":58,"value":1064},"streamText",{"type":58,"value":264},{"type":52,"tag":82,"props":1067,"children":1069},{"className":1068},[],[1070],{"type":58,"value":1071},"generateImage",{"type":58,"value":1073},"). For example, if it's a new language model, you would create files like:",{"type":52,"tag":72,"props":1075,"children":1076},{},[1077,1086],{"type":52,"tag":76,"props":1078,"children":1079},{},[1080],{"type":52,"tag":82,"props":1081,"children":1083},{"className":1082},[],[1084],{"type":58,"value":1085},"examples\u002Fai-functions\u002Fsrc\u002Fgenerate-text\u002F\u003Cprovider>\u002F\u003Cmodel-kebab>.ts",{"type":52,"tag":76,"props":1087,"children":1088},{},[1089],{"type":52,"tag":82,"props":1090,"children":1092},{"className":1091},[],[1093],{"type":58,"value":1094},"examples\u002Fai-functions\u002Fsrc\u002Fstream-text\u002F\u003Cprovider>\u002F\u003Cmodel-kebab>.ts",{"type":52,"tag":61,"props":1096,"children":1097},{},[1098],{"type":58,"value":1099},"Or if it's a new image model, you might create:",{"type":52,"tag":72,"props":1101,"children":1102},{},[1103],{"type":52,"tag":76,"props":1104,"children":1105},{},[1106],{"type":52,"tag":82,"props":1107,"children":1109},{"className":1108},[],[1110],{"type":58,"value":1111},"examples\u002Fai-functions\u002Fsrc\u002Fgenerate-image\u002F\u003Cprovider>\u002F\u003Cmodel-kebab>.ts",{"type":52,"tag":61,"props":1113,"children":1114},{},[1115],{"type":58,"value":1116},"Look for existing example files for the provider in the same folder, to use as a reference for your new example files.",{"type":52,"tag":61,"props":1118,"children":1119},{},[1120],{"type":58,"value":1121},"In your search for the similar model ID, you may have found examples in which the model ID is part of a list of models (e.g. in an array of options for a test or example). In that case, add the new model ID to the same list in the example file, respecting sort order.",{"type":52,"tag":239,"props":1123,"children":1125},{"id":1124},"step-6-update-tests",[1126],{"type":58,"value":1127},"Step 6: Update Tests",{"type":52,"tag":61,"props":1129,"children":1130},{},[1131],{"type":58,"value":1132},"Where reasonable, replace references to the older or preview model with the new model in test files, especially if the new model is now the recommended one.",{"type":52,"tag":61,"props":1134,"children":1135},{},[1136,1141],{"type":52,"tag":115,"props":1137,"children":1138},{},[1139],{"type":58,"value":1140},"Exception:",{"type":58,"value":1142}," Do not replace model IDs in fixtures or snapshots, or tests that use those fixtures or snapshots, as those are meant to be stable and reflect actual API responses captured.",{"type":52,"tag":239,"props":1144,"children":1146},{"id":1145},"step-7-run-tests",[1147],{"type":58,"value":1148},"Step 7: Run Tests",{"type":52,"tag":369,"props":1150,"children":1152},{"className":371,"code":1151,"language":373,"meta":374,"style":374},"pnpm --filter @ai-sdk\u002F\u003Cprovider> test\npnpm --filter @ai-sdk\u002Fgateway test\n",[1153],{"type":52,"tag":82,"props":1154,"children":1155},{"__ignoreMap":374},[1156,1199],{"type":52,"tag":380,"props":1157,"children":1158},{"class":382,"line":383},[1159,1164,1169,1174,1179,1184,1189,1194],{"type":52,"tag":380,"props":1160,"children":1161},{"style":397},[1162],{"type":58,"value":1163},"pnpm",{"type":52,"tag":380,"props":1165,"children":1166},{"style":403},[1167],{"type":58,"value":1168}," --filter",{"type":52,"tag":380,"props":1170,"children":1171},{"style":403},[1172],{"type":58,"value":1173}," @ai-sdk\u002F",{"type":52,"tag":380,"props":1175,"children":1176},{"style":409},[1177],{"type":58,"value":1178},"\u003C",{"type":52,"tag":380,"props":1180,"children":1181},{"style":403},[1182],{"type":58,"value":1183},"provide",{"type":52,"tag":380,"props":1185,"children":1186},{"style":779},[1187],{"type":58,"value":1188},"r",{"type":52,"tag":380,"props":1190,"children":1191},{"style":409},[1192],{"type":58,"value":1193},">",{"type":52,"tag":380,"props":1195,"children":1196},{"style":403},[1197],{"type":58,"value":1198}," test\n",{"type":52,"tag":380,"props":1200,"children":1201},{"class":382,"line":393},[1202,1206,1210,1215],{"type":52,"tag":380,"props":1203,"children":1204},{"style":397},[1205],{"type":58,"value":1163},{"type":52,"tag":380,"props":1207,"children":1208},{"style":403},[1209],{"type":58,"value":1168},{"type":52,"tag":380,"props":1211,"children":1212},{"style":403},[1213],{"type":58,"value":1214}," @ai-sdk\u002Fgateway",{"type":52,"tag":380,"props":1216,"children":1217},{"style":403},[1218],{"type":58,"value":1198},{"type":52,"tag":61,"props":1220,"children":1221},{},[1222],{"type":58,"value":1223},"Also run tests for any other affected packages:",{"type":52,"tag":369,"props":1225,"children":1227},{"className":371,"code":1226,"language":373,"meta":374,"style":374},"pnpm --filter @ai-sdk\u002Fopenai-compatible test  # if snapshots\u002Ftests were updated\npnpm --filter @ai-sdk\u002Famazon-bedrock test     # if Bedrock options were updated\npnpm --filter @ai-sdk\u002Fgoogle-vertex test      # if Vertex options were updated\n",[1228],{"type":52,"tag":82,"props":1229,"children":1230},{"__ignoreMap":374},[1231,1257,1282],{"type":52,"tag":380,"props":1232,"children":1233},{"class":382,"line":383},[1234,1238,1242,1247,1252],{"type":52,"tag":380,"props":1235,"children":1236},{"style":397},[1237],{"type":58,"value":1163},{"type":52,"tag":380,"props":1239,"children":1240},{"style":403},[1241],{"type":58,"value":1168},{"type":52,"tag":380,"props":1243,"children":1244},{"style":403},[1245],{"type":58,"value":1246}," @ai-sdk\u002Fopenai-compatible",{"type":52,"tag":380,"props":1248,"children":1249},{"style":403},[1250],{"type":58,"value":1251}," test",{"type":52,"tag":380,"props":1253,"children":1254},{"style":387},[1255],{"type":58,"value":1256},"  # if snapshots\u002Ftests were updated\n",{"type":52,"tag":380,"props":1258,"children":1259},{"class":382,"line":393},[1260,1264,1268,1273,1277],{"type":52,"tag":380,"props":1261,"children":1262},{"style":397},[1263],{"type":58,"value":1163},{"type":52,"tag":380,"props":1265,"children":1266},{"style":403},[1267],{"type":58,"value":1168},{"type":52,"tag":380,"props":1269,"children":1270},{"style":403},[1271],{"type":58,"value":1272}," @ai-sdk\u002Famazon-bedrock",{"type":52,"tag":380,"props":1274,"children":1275},{"style":403},[1276],{"type":58,"value":1251},{"type":52,"tag":380,"props":1278,"children":1279},{"style":387},[1280],{"type":58,"value":1281},"     # if Bedrock options were updated\n",{"type":52,"tag":380,"props":1283,"children":1284},{"class":382,"line":494},[1285,1289,1293,1298,1302],{"type":52,"tag":380,"props":1286,"children":1287},{"style":397},[1288],{"type":58,"value":1163},{"type":52,"tag":380,"props":1290,"children":1291},{"style":403},[1292],{"type":58,"value":1168},{"type":52,"tag":380,"props":1294,"children":1295},{"style":403},[1296],{"type":58,"value":1297}," @ai-sdk\u002Fgoogle-vertex",{"type":52,"tag":380,"props":1299,"children":1300},{"style":403},[1301],{"type":58,"value":1251},{"type":52,"tag":380,"props":1303,"children":1304},{"style":387},[1305],{"type":58,"value":1306},"      # if Vertex options were updated\n",{"type":52,"tag":1308,"props":1309,"children":1310},"removing-obsolete-model",{},[1311,1317,1323,1328,1333,1339,1344,1576,1596,1602,1623,1628,1660,1666,1684,1690,1762,1767,1809],{"type":52,"tag":53,"props":1312,"children":1314},{"id":1313},"workflow-for-removing-an-obsolete-model-id",[1315],{"type":58,"value":1316},"Workflow for Removing an Obsolete Model ID",{"type":52,"tag":239,"props":1318,"children":1320},{"id":1319},"step-1-identify-successor",[1321],{"type":58,"value":1322},"Step 1: Identify Successor",{"type":52,"tag":61,"props":1324,"children":1325},{},[1326],{"type":58,"value":1327},"Determine which model replaces the removed one in examples, tests, and docs. This is relevant for updating references.",{"type":52,"tag":61,"props":1329,"children":1330},{},[1331],{"type":58,"value":1332},"If there is no obvious successor, you should leave old references in place in examples, docs, and tests.",{"type":52,"tag":239,"props":1334,"children":1336},{"id":1335},"step-2-find-all-exact-occurrences",[1337],{"type":58,"value":1338},"Step 2: Find All Exact Occurrences",{"type":52,"tag":61,"props":1340,"children":1341},{},[1342],{"type":58,"value":1343},"Search for the model ID with quotes to avoid substring false positives:",{"type":52,"tag":369,"props":1345,"children":1347},{"className":371,"code":1346,"language":373,"meta":374,"style":374},"# Single-quoted (TypeScript source, type unions)\ngrep -r \"'\u003Cmodel-id>'\" packages\u002F content\u002F examples\u002F --include='*.ts' --include='*.mdx' --include='*.md' --include='*.snap'\n\n# Double-quoted (JSON in snapshots, test fixtures with embedded JSON, docs)\ngrep -r '\"\u003Cmodel-id>\"' packages\u002F content\u002F examples\u002F --include='*.ts' --include='*.mdx' --include='*.md' --include='*.snap'\n",[1348],{"type":52,"tag":82,"props":1349,"children":1350},{"__ignoreMap":374},[1351,1359,1460,1468,1476],{"type":52,"tag":380,"props":1352,"children":1353},{"class":382,"line":383},[1354],{"type":52,"tag":380,"props":1355,"children":1356},{"style":387},[1357],{"type":58,"value":1358},"# Single-quoted (TypeScript source, type unions)\n",{"type":52,"tag":380,"props":1360,"children":1361},{"class":382,"line":393},[1362,1366,1370,1374,1379,1383,1387,1391,1395,1399,1403,1407,1411,1415,1419,1423,1427,1431,1435,1439,1443,1447,1451,1456],{"type":52,"tag":380,"props":1363,"children":1364},{"style":397},[1365],{"type":58,"value":400},{"type":52,"tag":380,"props":1367,"children":1368},{"style":403},[1369],{"type":58,"value":406},{"type":52,"tag":380,"props":1371,"children":1372},{"style":409},[1373],{"type":58,"value":412},{"type":52,"tag":380,"props":1375,"children":1376},{"style":403},[1377],{"type":58,"value":1378},"'\u003Cmodel-id>'",{"type":52,"tag":380,"props":1380,"children":1381},{"style":409},[1382],{"type":58,"value":422},{"type":52,"tag":380,"props":1384,"children":1385},{"style":403},[1386],{"type":58,"value":427},{"type":52,"tag":380,"props":1388,"children":1389},{"style":403},[1390],{"type":58,"value":432},{"type":52,"tag":380,"props":1392,"children":1393},{"style":403},[1394],{"type":58,"value":437},{"type":52,"tag":380,"props":1396,"children":1397},{"style":403},[1398],{"type":58,"value":442},{"type":52,"tag":380,"props":1400,"children":1401},{"style":409},[1402],{"type":58,"value":447},{"type":52,"tag":380,"props":1404,"children":1405},{"style":403},[1406],{"type":58,"value":452},{"type":52,"tag":380,"props":1408,"children":1409},{"style":409},[1410],{"type":58,"value":447},{"type":52,"tag":380,"props":1412,"children":1413},{"style":403},[1414],{"type":58,"value":442},{"type":52,"tag":380,"props":1416,"children":1417},{"style":409},[1418],{"type":58,"value":447},{"type":52,"tag":380,"props":1420,"children":1421},{"style":403},[1422],{"type":58,"value":469},{"type":52,"tag":380,"props":1424,"children":1425},{"style":409},[1426],{"type":58,"value":447},{"type":52,"tag":380,"props":1428,"children":1429},{"style":403},[1430],{"type":58,"value":442},{"type":52,"tag":380,"props":1432,"children":1433},{"style":409},[1434],{"type":58,"value":447},{"type":52,"tag":380,"props":1436,"children":1437},{"style":403},[1438],{"type":58,"value":486},{"type":52,"tag":380,"props":1440,"children":1441},{"style":409},[1442],{"type":58,"value":447},{"type":52,"tag":380,"props":1444,"children":1445},{"style":403},[1446],{"type":58,"value":442},{"type":52,"tag":380,"props":1448,"children":1449},{"style":409},[1450],{"type":58,"value":447},{"type":52,"tag":380,"props":1452,"children":1453},{"style":403},[1454],{"type":58,"value":1455},"*.snap",{"type":52,"tag":380,"props":1457,"children":1458},{"style":409},[1459],{"type":58,"value":491},{"type":52,"tag":380,"props":1461,"children":1462},{"class":382,"line":494},[1463],{"type":52,"tag":380,"props":1464,"children":1465},{"emptyLinePlaceholder":47},[1466],{"type":58,"value":1467},"\n",{"type":52,"tag":380,"props":1469,"children":1470},{"class":382,"line":750},[1471],{"type":52,"tag":380,"props":1472,"children":1473},{"style":387},[1474],{"type":58,"value":1475},"# Double-quoted (JSON in snapshots, test fixtures with embedded JSON, docs)\n",{"type":52,"tag":380,"props":1477,"children":1478},{"class":382,"line":771},[1479,1483,1487,1491,1496,1500,1504,1508,1512,1516,1520,1524,1528,1532,1536,1540,1544,1548,1552,1556,1560,1564,1568,1572],{"type":52,"tag":380,"props":1480,"children":1481},{"style":397},[1482],{"type":58,"value":400},{"type":52,"tag":380,"props":1484,"children":1485},{"style":403},[1486],{"type":58,"value":406},{"type":52,"tag":380,"props":1488,"children":1489},{"style":409},[1490],{"type":58,"value":508},{"type":52,"tag":380,"props":1492,"children":1493},{"style":403},[1494],{"type":58,"value":1495},"\"\u003Cmodel-id>\"",{"type":52,"tag":380,"props":1497,"children":1498},{"style":409},[1499],{"type":58,"value":447},{"type":52,"tag":380,"props":1501,"children":1502},{"style":403},[1503],{"type":58,"value":427},{"type":52,"tag":380,"props":1505,"children":1506},{"style":403},[1507],{"type":58,"value":432},{"type":52,"tag":380,"props":1509,"children":1510},{"style":403},[1511],{"type":58,"value":437},{"type":52,"tag":380,"props":1513,"children":1514},{"style":403},[1515],{"type":58,"value":442},{"type":52,"tag":380,"props":1517,"children":1518},{"style":409},[1519],{"type":58,"value":447},{"type":52,"tag":380,"props":1521,"children":1522},{"style":403},[1523],{"type":58,"value":452},{"type":52,"tag":380,"props":1525,"children":1526},{"style":409},[1527],{"type":58,"value":447},{"type":52,"tag":380,"props":1529,"children":1530},{"style":403},[1531],{"type":58,"value":442},{"type":52,"tag":380,"props":1533,"children":1534},{"style":409},[1535],{"type":58,"value":447},{"type":52,"tag":380,"props":1537,"children":1538},{"style":403},[1539],{"type":58,"value":469},{"type":52,"tag":380,"props":1541,"children":1542},{"style":409},[1543],{"type":58,"value":447},{"type":52,"tag":380,"props":1545,"children":1546},{"style":403},[1547],{"type":58,"value":442},{"type":52,"tag":380,"props":1549,"children":1550},{"style":409},[1551],{"type":58,"value":447},{"type":52,"tag":380,"props":1553,"children":1554},{"style":403},[1555],{"type":58,"value":486},{"type":52,"tag":380,"props":1557,"children":1558},{"style":409},[1559],{"type":58,"value":447},{"type":52,"tag":380,"props":1561,"children":1562},{"style":403},[1563],{"type":58,"value":442},{"type":52,"tag":380,"props":1565,"children":1566},{"style":409},[1567],{"type":58,"value":447},{"type":52,"tag":380,"props":1569,"children":1570},{"style":403},[1571],{"type":58,"value":1455},{"type":52,"tag":380,"props":1573,"children":1574},{"style":409},[1575],{"type":58,"value":491},{"type":52,"tag":61,"props":1577,"children":1578},{},[1579,1581,1587,1589,1595],{"type":58,"value":1580},"Manually verify each result is the exact model and not a substring match (e.g. searching ",{"type":52,"tag":82,"props":1582,"children":1584},{"className":1583},[],[1585],{"type":58,"value":1586},"'grok-3'",{"type":58,"value":1588}," must not match ",{"type":52,"tag":82,"props":1590,"children":1592},{"className":1591},[],[1593],{"type":58,"value":1594},"'grok-3-mini'",{"type":58,"value":173},{"type":52,"tag":239,"props":1597,"children":1599},{"id":1598},"step-3-remove-from-type-definitions",[1600],{"type":58,"value":1601},"Step 3: Remove from Type Definitions",{"type":52,"tag":61,"props":1603,"children":1604},{},[1605,1607,1613,1615,1621],{"type":58,"value":1606},"Remove the ",{"type":52,"tag":82,"props":1608,"children":1610},{"className":1609},[],[1611],{"type":58,"value":1612},"| 'model-id'",{"type":58,"value":1614}," line from union types and entries from const arrays in ",{"type":52,"tag":82,"props":1616,"children":1618},{"className":1617},[],[1619],{"type":58,"value":1620},"*-options.ts",{"type":58,"value":1622}," files.",{"type":52,"tag":239,"props":1624,"children":1626},{"id":1625},"step-4-update-documentation-1",[1627],{"type":58,"value":936},{"type":52,"tag":72,"props":1629,"children":1630},{},[1631,1642,1647],{"type":52,"tag":76,"props":1632,"children":1633},{},[1634,1636,1641],{"type":58,"value":1635},"Remove rows from capability tables in ",{"type":52,"tag":82,"props":1637,"children":1639},{"className":1638},[],[1640],{"type":58,"value":947},{"type":58,"value":1622},{"type":52,"tag":76,"props":1643,"children":1644},{},[1645],{"type":58,"value":1646},"Replace inline code examples and descriptions referencing the removed model with the successor.",{"type":52,"tag":76,"props":1648,"children":1649},{},[1650,1652,1658],{"type":58,"value":1651},"Update community provider docs in ",{"type":52,"tag":82,"props":1653,"children":1655},{"className":1654},[],[1656],{"type":58,"value":1657},"content\u002Fproviders\u002F05-community-providers\u002F",{"type":58,"value":1659},".",{"type":52,"tag":239,"props":1661,"children":1663},{"id":1662},"step-5-update-examples",[1664],{"type":58,"value":1665},"Step 5: Update Examples",{"type":52,"tag":72,"props":1667,"children":1668},{},[1669,1674,1679],{"type":52,"tag":76,"props":1670,"children":1671},{},[1672],{"type":58,"value":1673},"Replace the removed model with the successor in example files that use it directly.",{"type":52,"tag":76,"props":1675,"children":1676},{},[1677],{"type":58,"value":1678},"Remove from model lists in examples.",{"type":52,"tag":76,"props":1680,"children":1681},{},[1682],{"type":58,"value":1683},"Delete dedicated example files only if no unique feature is demonstrated beyond the model itself (e.g. if the file is named after the model).",{"type":52,"tag":239,"props":1685,"children":1687},{"id":1686},"step-6-update-tests-and-snapshots",[1688],{"type":58,"value":1689},"Step 6: Update Tests and Snapshots",{"type":52,"tag":72,"props":1691,"children":1692},{},[1693,1705,1718,1737,1750],{"type":52,"tag":76,"props":1694,"children":1695},{},[1696,1698,1704],{"type":58,"value":1697},"Replace the model ID with the successor in ",{"type":52,"tag":82,"props":1699,"children":1701},{"className":1700},[],[1702],{"type":58,"value":1703},"*.test.ts",{"type":58,"value":1622},{"type":52,"tag":76,"props":1706,"children":1707},{},[1708,1710,1716],{"type":58,"value":1709},"Replace the model ID in ",{"type":52,"tag":82,"props":1711,"children":1713},{"className":1712},[],[1714],{"type":58,"value":1715},"__snapshots__\u002F*.snap",{"type":58,"value":1717}," files — model IDs appear in serialized JSON strings.",{"type":52,"tag":76,"props":1719,"children":1720},{},[1721,1723,1729,1730,1736],{"type":58,"value":1722},"Replace in embedded JSON strings within test fixtures (e.g. ",{"type":52,"tag":82,"props":1724,"children":1726},{"className":1725},[],[1727],{"type":58,"value":1728},"\"model\":\"old-model\"",{"type":58,"value":165},{"type":52,"tag":82,"props":1731,"children":1733},{"className":1732},[],[1734],{"type":58,"value":1735},"\"model\":\"new-model\"",{"type":58,"value":173},{"type":52,"tag":76,"props":1738,"children":1739},{},[1740,1742,1748],{"type":58,"value":1741},"Update ",{"type":52,"tag":82,"props":1743,"children":1745},{"className":1744},[],[1746],{"type":58,"value":1747},"examples\u002Fai-functions\u002Fsrc\u002Fe2e\u002F*.test.ts",{"type":58,"value":1749}," — remove from model arrays or replace.",{"type":52,"tag":76,"props":1751,"children":1752},{},[1753,1754,1760],{"type":58,"value":1741},{"type":52,"tag":82,"props":1755,"children":1757},{"className":1756},[],[1758],{"type":58,"value":1759},"packages\u002F\u003Cprovider>\u002FREADME.md",{"type":58,"value":1761}," if it contains code examples.",{"type":52,"tag":239,"props":1763,"children":1765},{"id":1764},"step-7-run-tests-1",[1766],{"type":58,"value":1148},{"type":52,"tag":369,"props":1768,"children":1770},{"className":371,"code":1769,"language":373,"meta":374,"style":374},"pnpm --filter @ai-sdk\u002F\u003Cprovider> test\n",[1771],{"type":52,"tag":82,"props":1772,"children":1773},{"__ignoreMap":374},[1774],{"type":52,"tag":380,"props":1775,"children":1776},{"class":382,"line":383},[1777,1781,1785,1789,1793,1797,1801,1805],{"type":52,"tag":380,"props":1778,"children":1779},{"style":397},[1780],{"type":58,"value":1163},{"type":52,"tag":380,"props":1782,"children":1783},{"style":403},[1784],{"type":58,"value":1168},{"type":52,"tag":380,"props":1786,"children":1787},{"style":403},[1788],{"type":58,"value":1173},{"type":52,"tag":380,"props":1790,"children":1791},{"style":409},[1792],{"type":58,"value":1178},{"type":52,"tag":380,"props":1794,"children":1795},{"style":403},[1796],{"type":58,"value":1183},{"type":52,"tag":380,"props":1798,"children":1799},{"style":779},[1800],{"type":58,"value":1188},{"type":52,"tag":380,"props":1802,"children":1803},{"style":409},[1804],{"type":58,"value":1193},{"type":52,"tag":380,"props":1806,"children":1807},{"style":403},[1808],{"type":58,"value":1198},{"type":52,"tag":61,"props":1810,"children":1811},{},[1812],{"type":58,"value":1813},"Also run tests for any other affected packages (same as Workflow A Step 7).",{"type":52,"tag":1815,"props":1816,"children":1817},"style",{},[1818],{"type":58,"value":1819},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1821,"total":1913},[1822,1834,1852,1864,1883,1893,1903],{"slug":1823,"name":1823,"fn":1824,"description":1825,"org":1826,"tags":1827,"stars":20,"repoUrl":21,"updatedAt":1833},"add-function-examples","add AI function examples for testing","Guide for adding new AI function examples, for testing specific features against the actual provider APIs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1828,1829,1832],{"name":18,"slug":19,"type":13},{"name":1830,"slug":1831,"type":13},"Testing","testing",{"name":9,"slug":8,"type":13},"2026-04-06T18:55:51.318866",{"slug":1835,"name":1835,"fn":1836,"description":1837,"org":1838,"tags":1839,"stars":20,"repoUrl":21,"updatedAt":1851},"add-harness-package","add AI SDK harness packages","Guide for adding new AI SDK harness packages. Use when creating a new @ai-sdk\u002Fharness-\u003Cname> package that adapts a coding-agent runtime to HarnessV1.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1840,1843,1844,1847,1850],{"name":1841,"slug":1842,"type":13},"Agents","agents",{"name":18,"slug":19,"type":13},{"name":1845,"slug":1846,"type":13},"Harness","harness",{"name":1848,"slug":1849,"type":13},"SDK","sdk",{"name":9,"slug":8,"type":13},"2026-06-18T08:29:19.858737",{"slug":1853,"name":1853,"fn":1854,"description":1855,"org":1856,"tags":1857,"stars":20,"repoUrl":21,"updatedAt":1863},"add-provider-package","add new provider packages to AI SDK","Guide for adding new AI provider packages to the AI SDK. Use when creating a new @ai-sdk\u002F\u003Cprovider> package to integrate an AI service into the SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1858,1859,1862],{"name":18,"slug":19,"type":13},{"name":1860,"slug":1861,"type":13},"API Development","api-development",{"name":9,"slug":8,"type":13},"2026-04-06T18:55:47.45549",{"slug":1865,"name":1865,"fn":1866,"description":1867,"org":1868,"tags":1869,"stars":20,"repoUrl":21,"updatedAt":1882},"adr-skill","create and maintain architecture decision records","Create and maintain Architecture Decision Records (ADRs) optimized for agentic coding workflows. Use when you need to propose, write, update, accept\u002Freject, deprecate, or supersede an ADR; bootstrap an adr folder and index; consult existing ADRs before implementing changes; or enforce ADR conventions. This skill uses Socratic questioning to capture intent before drafting, and validates output against an agent-readiness checklist.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1870,1873,1876,1879],{"name":1871,"slug":1872,"type":13},"ADR","adr",{"name":1874,"slug":1875,"type":13},"Architecture","architecture",{"name":1877,"slug":1878,"type":13},"Documentation","documentation",{"name":1880,"slug":1881,"type":13},"Engineering","engineering","2026-04-06T18:55:50.043694",{"slug":19,"name":19,"fn":1884,"description":1885,"org":1886,"tags":1887,"stars":20,"repoUrl":21,"updatedAt":1892},"build AI features with Vercel AI SDK","Answer questions about the AI SDK and help build AI-powered features. Use when developers: (1) Ask about AI SDK functions like generateText, streamText, ToolLoopAgent, embed, or tools, (2) Want to build AI agents, chatbots, RAG systems, or text generation features, (3) Have questions about AI providers (OpenAI, Anthropic, Google, etc.), streaming, tool calling, structured output, or embeddings, (4) Use React hooks like useChat or useCompletion. Triggers on: \"AI SDK\", \"Vercel AI SDK\", \"generateText\", \"streamText\", \"add AI to my app\", \"build an agent\", \"tool calling\", \"structured output\", \"useChat\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1888,1889,1890,1891],{"name":1841,"slug":1842,"type":13},{"name":18,"slug":19,"type":13},{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},"2026-04-06T18:55:48.739463",{"slug":1894,"name":1894,"fn":1895,"description":1896,"org":1897,"tags":1898,"stars":20,"repoUrl":21,"updatedAt":1902},"capture-api-response-test-fixture","capture API response test fixtures","Capture API response test fixture.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1899,1900,1901],{"name":1860,"slug":1861,"type":13},{"name":1830,"slug":1831,"type":13},{"name":9,"slug":8,"type":13},"2026-04-06T18:55:56.374433",{"slug":1904,"name":1904,"fn":1905,"description":1906,"org":1907,"tags":1908,"stars":20,"repoUrl":21,"updatedAt":1912},"develop-ai-functions-example","develop AI SDK function examples","Develop examples for AI SDK functions. Use when creating, running, or modifying examples under examples\u002Fai-functions\u002Fsrc to validate provider support, demonstrate features, or create test fixtures.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1909,1910,1911],{"name":18,"slug":19,"type":13},{"name":1830,"slug":1831,"type":13},{"name":9,"slug":8,"type":13},"2026-04-06T18:55:55.088956",12,{"items":1915,"total":2043},[1916,1938,1952,1971,1982,1997,2003,2011,2017,2024,2031,2037],{"slug":1917,"name":1917,"fn":1918,"description":1919,"org":1920,"tags":1921,"stars":1935,"repoUrl":1936,"updatedAt":1937},"next-cache-components-adoption","enable and migrate to Next.js Cache Components","Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the `cacheComponents` flag, work through a flood of blocking-prerender \u002F instant validation errors, run the `cache-components-instant-false` codemod, or decide between opting routes out with `export const instant = false` and fixing them in place.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1922,1925,1928,1931,1934],{"name":1923,"slug":1924,"type":13},"Caching","caching",{"name":1926,"slug":1927,"type":13},"Frontend","frontend",{"name":1929,"slug":1930,"type":13},"Migration","migration",{"name":1932,"slug":1933,"type":13},"Next.js","next-js",{"name":9,"slug":8,"type":13},141208,"https:\u002F\u002Fgithub.com\u002Fvercel\u002Fnext.js","2026-07-24T05:38:30.118542",{"slug":1939,"name":1939,"fn":1940,"description":1941,"org":1942,"tags":1943,"stars":1935,"repoUrl":1936,"updatedAt":1951},"next-cache-components-optimizer","optimize Next.js cache components","Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components \u002F PPR, on initial load (hard navigation) and client-side navigation (soft navigation). Encode the goal as a failing @next\u002Fplaywright instant() e2e and work it to green, one verified route at a time; the shipped test then guards against regression. Use when asked to make a route's navigation instant (its static shell commits immediately), fix a route whose static shell isn't prerendered\u002Fserved\u002Fprefetched, grow a route's static shell or fix its slow first paint, diagnose which Suspense boundary keeps a route out of its static shell, or write the instant() e2e guard for one. Requires Next.js 16.3+ with cacheComponents; directs an upgrade if older.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1944,1945,1946,1947,1950],{"name":1923,"slug":1924,"type":13},{"name":1926,"slug":1927,"type":13},{"name":1932,"slug":1933,"type":13},{"name":1948,"slug":1949,"type":13},"Performance","performance",{"name":9,"slug":8,"type":13},"2026-07-30T05:31:10.674078",{"slug":1953,"name":1953,"fn":1954,"description":1955,"org":1956,"tags":1957,"stars":1935,"repoUrl":1936,"updatedAt":1970},"next-dev-loop","verify Next.js runtime behavior","Verify Next.js runtime behavior after editing app code. Use this skill to confirm a change actually works in a running app — not just that it compiles or type-checks. Combines \u002F_next\u002Fmcp (Next.js's view) with agent-browser (the browser's view). Requires a running `next dev`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1958,1961,1962,1965,1966,1967],{"name":1959,"slug":1960,"type":13},"Debugging","debugging",{"name":1926,"slug":1927,"type":13},{"name":1963,"slug":1964,"type":13},"Local Development","local-development",{"name":1932,"slug":1933,"type":13},{"name":9,"slug":8,"type":13},{"name":1968,"slug":1969,"type":13},"Web Development","web-development","2026-05-22T06:45:28.627735",{"slug":1972,"name":1972,"fn":1973,"description":1974,"org":1975,"tags":1976,"stars":1935,"repoUrl":1936,"updatedAt":1981},"next-partial-prefetching-adoption","adopt Partial Prefetching in Next.js apps","Turn on Partial Prefetching in a Next.js app and work through the insights it surfaces. Use when the user wants to enable or adopt Partial Prefetching, flip the `partialPrefetching` flag, opt routes in with `export const prefetch = 'partial'`, audit `\u003CLink prefetch={true}>` calls, or resolve the link-prefetch-partial and instant-shell-url-data insights.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1977,1978,1979,1980],{"name":1926,"slug":1927,"type":13},{"name":1932,"slug":1933,"type":13},{"name":1948,"slug":1949,"type":13},{"name":9,"slug":8,"type":13},"2026-07-30T05:31:11.591864",{"slug":1983,"name":1983,"fn":1984,"description":1985,"org":1986,"tags":1987,"stars":1994,"repoUrl":1995,"updatedAt":1996},"turborepo","manage monorepos with Turborepo","Turborepo monorepo build system guidance. Triggers on: turbo.json, task pipelines,\ndependsOn, caching, remote cache, the \"turbo\" CLI, --filter, --affected, CI optimization, environment\nvariables, internal packages, monorepo structure\u002Fbest practices, and boundaries.\n\nUse when user: configures tasks\u002Fworkflows\u002Fpipelines, creates packages, sets up\nmonorepo, shares code between apps, runs changed\u002Faffected packages, debugs cache,\nor has apps\u002Fpackages directories.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1988,1991,1992],{"name":1989,"slug":1990,"type":13},"CI\u002FCD","ci-cd",{"name":1948,"slug":1949,"type":13},{"name":1993,"slug":1983,"type":13},"Turborepo",30809,"https:\u002F\u002Fgithub.com\u002Fvercel\u002Fturborepo","2026-07-30T05:32:14.920116",{"slug":1823,"name":1823,"fn":1824,"description":1825,"org":1998,"tags":1999,"stars":20,"repoUrl":21,"updatedAt":1833},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2000,2001,2002],{"name":18,"slug":19,"type":13},{"name":1830,"slug":1831,"type":13},{"name":9,"slug":8,"type":13},{"slug":1835,"name":1835,"fn":1836,"description":1837,"org":2004,"tags":2005,"stars":20,"repoUrl":21,"updatedAt":1851},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2006,2007,2008,2009,2010],{"name":1841,"slug":1842,"type":13},{"name":18,"slug":19,"type":13},{"name":1845,"slug":1846,"type":13},{"name":1848,"slug":1849,"type":13},{"name":9,"slug":8,"type":13},{"slug":1853,"name":1853,"fn":1854,"description":1855,"org":2012,"tags":2013,"stars":20,"repoUrl":21,"updatedAt":1863},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2014,2015,2016],{"name":18,"slug":19,"type":13},{"name":1860,"slug":1861,"type":13},{"name":9,"slug":8,"type":13},{"slug":1865,"name":1865,"fn":1866,"description":1867,"org":2018,"tags":2019,"stars":20,"repoUrl":21,"updatedAt":1882},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2020,2021,2022,2023],{"name":1871,"slug":1872,"type":13},{"name":1874,"slug":1875,"type":13},{"name":1877,"slug":1878,"type":13},{"name":1880,"slug":1881,"type":13},{"slug":19,"name":19,"fn":1884,"description":1885,"org":2025,"tags":2026,"stars":20,"repoUrl":21,"updatedAt":1892},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2027,2028,2029,2030],{"name":1841,"slug":1842,"type":13},{"name":18,"slug":19,"type":13},{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"slug":1894,"name":1894,"fn":1895,"description":1896,"org":2032,"tags":2033,"stars":20,"repoUrl":21,"updatedAt":1902},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2034,2035,2036],{"name":1860,"slug":1861,"type":13},{"name":1830,"slug":1831,"type":13},{"name":9,"slug":8,"type":13},{"slug":1904,"name":1904,"fn":1905,"description":1906,"org":2038,"tags":2039,"stars":20,"repoUrl":21,"updatedAt":1912},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2040,2041,2042],{"name":18,"slug":19,"type":13},{"name":1830,"slug":1831,"type":13},{"name":9,"slug":8,"type":13},68]