[{"data":1,"prerenderedAt":927},["ShallowReactive",2],{"navigation_docs":3,"-configuration-where-config-lives":357,"-configuration-where-config-lives-surround":924},[4,22,40,53,78,107,132,153,167,176,347],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Introduction","\u002Fintroduction","1.introduction",[9,13,17],{"title":10,"path":11,"stem":12},"Why the-i18n-kit","\u002Fintroduction\u002Fwhy","1.introduction\u002F1.why",{"title":14,"path":15,"stem":16},"Architecture","\u002Fintroduction\u002Farchitecture","1.introduction\u002F2.architecture",{"title":18,"path":19,"stem":20},"Built for Agents","\u002Fintroduction\u002Fbuilt-for-agents","1.introduction\u002F3.built-for-agents",false,{"title":23,"icon":24,"path":25,"stem":26,"children":27,"page":21},"ESLint Plugin","i-lucide-shield-check","\u002Feslint-plugin","10.eslint-plugin",[28,32,36],{"title":29,"path":30,"stem":31},"Install and Presets","\u002Feslint-plugin\u002Finstall","10.eslint-plugin\u002F1.install",{"title":33,"path":34,"stem":35},"The Rules","\u002Feslint-plugin\u002Frules","10.eslint-plugin\u002F2.rules",{"title":37,"path":38,"stem":39},"Layer-Aware Missing Keys","\u002Feslint-plugin\u002Flayer-aware","10.eslint-plugin\u002F3.layer-aware",{"title":41,"path":42,"stem":43,"children":44,"page":21},"Getting Started","\u002Fgetting-started","2.getting-started",[45,49],{"title":46,"path":47,"stem":48},"Set Up the MCP Server","\u002Fgetting-started\u002Fagent-setup","2.getting-started\u002F1.agent-setup",{"title":50,"path":51,"stem":52},"From an Unconfigured Repository to a Gated CI Job","\u002Fgetting-started\u002Fcold-start","2.getting-started\u002F2.cold-start",{"title":54,"path":55,"stem":56,"children":57,"page":21},"Monorepos","\u002Fmonorepos","3.monorepos",[58,62,66,70,74],{"title":59,"path":60,"stem":61},"Layers","\u002Fmonorepos\u002Flayers","3.monorepos\u002F1.layers",{"title":63,"path":64,"stem":65},"The Consumer Graph","\u002Fmonorepos\u002Fconsumer-graph","3.monorepos\u002F2.consumer-graph",{"title":67,"path":68,"stem":69},"The Shared Library Scenario","\u002Fmonorepos\u002Fshared-libraries","3.monorepos\u002F3.shared-libraries",{"title":71,"path":72,"stem":73},"Duplicates and Divergence","\u002Fmonorepos\u002Fduplicates-and-divergence","3.monorepos\u002F4.duplicates-and-divergence",{"title":75,"path":76,"stem":77},"Misplaced Usages","\u002Fmonorepos\u002Fmisplaced-usages","3.monorepos\u002F5.misplaced-usages",{"title":79,"path":80,"stem":81,"children":82,"page":21},"Frameworks","\u002Fframeworks","4.frameworks",[83,87,91,95,99,103],{"title":84,"path":85,"stem":86},"Detection","\u002Fframeworks\u002Fdetection","4.frameworks\u002F1.detection",{"title":88,"path":89,"stem":90},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F2.nuxt",{"title":92,"path":93,"stem":94},"Laravel","\u002Fframeworks\u002Flaravel","4.frameworks\u002F3.laravel",{"title":96,"path":97,"stem":98},"Vue","\u002Fframeworks\u002Fvue","4.frameworks\u002F4.vue",{"title":100,"path":101,"stem":102},"React \u002F Next.js","\u002Fframeworks\u002Freact-next","4.frameworks\u002F5.react-next",{"title":104,"path":105,"stem":106},"Generic","\u002Fframeworks\u002Fgeneric","4.frameworks\u002F6.generic",{"title":108,"path":109,"stem":110,"children":111,"page":21},"Configuration","\u002Fconfiguration","5.configuration",[112,116,120,124,128],{"title":113,"path":114,"stem":115},"Where Configuration Lives","\u002Fconfiguration\u002Fwhere-config-lives","5.configuration\u002F1.where-config-lives",{"title":117,"path":118,"stem":119},"Precedence and Conflicts","\u002Fconfiguration\u002Fprecedence","5.configuration\u002F2.precedence",{"title":121,"path":122,"stem":123},"Declared vs. Derived Configuration","\u002Fconfiguration\u002Fdeclared-vs-derived","5.configuration\u002F3.declared-vs-derived",{"title":125,"path":126,"stem":127},"Configuration Fields","\u002Fconfiguration\u002Freference","5.configuration\u002F4.reference",{"title":129,"path":130,"stem":131},"Referring to Locales","\u002Fconfiguration\u002Flocale-refs","5.configuration\u002F5.locale-refs",{"title":133,"path":134,"stem":135,"children":136,"page":21},"Nuxt Module","\u002Fnuxt-module","6.nuxt-module",[137,141,145,149],{"title":138,"path":139,"stem":140},"Install and Setup","\u002Fnuxt-module\u002Finstall","6.nuxt-module\u002F1.install",{"title":142,"path":143,"stem":144},"What It Publishes","\u002Fnuxt-module\u002Fwhat-it-publishes","6.nuxt-module\u002F2.what-it-publishes",{"title":146,"path":147,"stem":148},"What It Validates","\u002Fnuxt-module\u002Fvalidation","6.nuxt-module\u002F3.validation",{"title":150,"path":151,"stem":152},"Options and Limits","\u002Fnuxt-module\u002Foptions-and-limits","6.nuxt-module\u002F4.options-and-limits",{"title":154,"icon":155,"path":156,"stem":157,"children":158,"page":21},"CI\u002FCD","i-lucide-git-pull-request","\u002Fci-cd","7.ci-cd",[159,163],{"title":160,"path":161,"stem":162},"GitHub Actions","\u002Fci-cd\u002Fgithub-actions","7.ci-cd\u002F1.github-actions",{"title":164,"path":165,"stem":166},"GitLab CI","\u002Fci-cd\u002Fgitlab-ci","7.ci-cd\u002F2.gitlab-ci",{"title":168,"path":169,"stem":170,"children":171,"page":21},"Concepts","\u002Fconcepts","8.concepts",[172],{"title":173,"path":174,"stem":175},"Translation Modes","\u002Fconcepts\u002Ftranslation-modes","8.concepts\u002F1.translation-modes",{"title":177,"path":178,"stem":179,"children":180},"Reference","\u002Freference","9.reference",[181,183,261,339,343],{"title":177,"path":178,"stem":182},"9.reference\u002Findex",{"title":184,"path":185,"stem":186,"children":187},"CLI Commands","\u002Freference\u002Fcli","9.reference\u002F1.cli\u002Findex",[188,189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257],{"title":184,"path":185,"stem":186},{"title":190,"path":191,"stem":192},"add","\u002Freference\u002Fcli\u002Fadd","9.reference\u002F1.cli\u002Fadd",{"title":194,"path":195,"stem":196},"check","\u002Freference\u002Fcli\u002Fcheck","9.reference\u002F1.cli\u002Fcheck",{"title":198,"path":199,"stem":200},"find-duplicates","\u002Freference\u002Fcli\u002Ffind-duplicates","9.reference\u002F1.cli\u002Ffind-duplicates",{"title":202,"path":203,"stem":204},"get","\u002Freference\u002Fcli\u002Fget","9.reference\u002F1.cli\u002Fget",{"title":206,"path":207,"stem":208},"init","\u002Freference\u002Fcli\u002Finit","9.reference\u002F1.cli\u002Finit",{"title":210,"path":211,"stem":212},"missing","\u002Freference\u002Fcli\u002Fmissing","9.reference\u002F1.cli\u002Fmissing",{"title":214,"path":215,"stem":216},"move","\u002Freference\u002Fcli\u002Fmove","9.reference\u002F1.cli\u002Fmove",{"title":218,"path":219,"stem":220},"remove","\u002Freference\u002Fcli\u002Fremove","9.reference\u002F1.cli\u002Fremove",{"title":222,"path":223,"stem":224},"remove-orphans","\u002Freference\u002Fcli\u002Fremove-orphans","9.reference\u002F1.cli\u002Fremove-orphans",{"title":226,"path":227,"stem":228},"rename","\u002Freference\u002Fcli\u002Frename","9.reference\u002F1.cli\u002Frename",{"title":230,"path":231,"stem":232},"scaffold","\u002Freference\u002Fcli\u002Fscaffold","9.reference\u002F1.cli\u002Fscaffold",{"title":234,"path":235,"stem":236},"scan","\u002Freference\u002Fcli\u002Fscan","9.reference\u002F1.cli\u002Fscan",{"title":238,"path":239,"stem":240},"search","\u002Freference\u002Fcli\u002Fsearch","9.reference\u002F1.cli\u002Fsearch",{"title":242,"path":243,"stem":244},"status","\u002Freference\u002Fcli\u002Fstatus","9.reference\u002F1.cli\u002Fstatus",{"title":246,"path":247,"stem":248},"translate","\u002Freference\u002Fcli\u002Ftranslate","9.reference\u002F1.cli\u002Ftranslate",{"title":250,"path":251,"stem":252},"translate-key","\u002Freference\u002Fcli\u002Ftranslate-key","9.reference\u002F1.cli\u002Ftranslate-key",{"title":254,"path":255,"stem":256},"update","\u002Freference\u002Fcli\u002Fupdate","9.reference\u002F1.cli\u002Fupdate",{"title":258,"path":259,"stem":260},"write","\u002Freference\u002Fcli\u002Fwrite","9.reference\u002F1.cli\u002Fwrite",{"title":262,"path":263,"stem":264,"children":265},"MCP Tools","\u002Freference\u002Fmcp","9.reference\u002F2.mcp\u002Findex",[266,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335],{"title":262,"path":263,"stem":264},{"title":268,"path":269,"stem":270},"discover","\u002Freference\u002Fmcp\u002Fdiscover","9.reference\u002F2.mcp\u002Fdiscover",{"title":272,"path":273,"stem":274},"find_duplicate_keys","\u002Freference\u002Fmcp\u002Ffind_duplicate_keys","9.reference\u002F2.mcp\u002Ffind_duplicate_keys",{"title":276,"path":277,"stem":278},"find_empty_translations","\u002Freference\u002Fmcp\u002Ffind_empty_translations","9.reference\u002F2.mcp\u002Ffind_empty_translations",{"title":280,"path":281,"stem":282},"find_orphan_keys","\u002Freference\u002Fmcp\u002Ffind_orphan_keys","9.reference\u002F2.mcp\u002Ffind_orphan_keys",{"title":284,"path":285,"stem":286},"find_undefined_keys","\u002Freference\u002Fmcp\u002Ffind_undefined_keys","9.reference\u002F2.mcp\u002Ffind_undefined_keys",{"title":288,"path":289,"stem":290},"get_missing_translations","\u002Freference\u002Fmcp\u002Fget_missing_translations","9.reference\u002F2.mcp\u002Fget_missing_translations",{"title":292,"path":293,"stem":294},"get_translation_status","\u002Freference\u002Fmcp\u002Fget_translation_status","9.reference\u002F2.mcp\u002Fget_translation_status",{"title":296,"path":297,"stem":298},"get_translations","\u002Freference\u002Fmcp\u002Fget_translations","9.reference\u002F2.mcp\u002Fget_translations",{"title":300,"path":301,"stem":302},"list_namespaces","\u002Freference\u002Fmcp\u002Flist_namespaces","9.reference\u002F2.mcp\u002Flist_namespaces",{"title":304,"path":305,"stem":306},"move_translation_key","\u002Freference\u002Fmcp\u002Fmove_translation_key","9.reference\u002F2.mcp\u002Fmove_translation_key",{"title":308,"path":309,"stem":310},"remove_orphan_keys","\u002Freference\u002Fmcp\u002Fremove_orphan_keys","9.reference\u002F2.mcp\u002Fremove_orphan_keys",{"title":312,"path":313,"stem":314},"remove_translations","\u002Freference\u002Fmcp\u002Fremove_translations","9.reference\u002F2.mcp\u002Fremove_translations",{"title":316,"path":317,"stem":318},"rename_translation_key","\u002Freference\u002Fmcp\u002Frename_translation_key","9.reference\u002F2.mcp\u002Frename_translation_key",{"title":320,"path":321,"stem":322},"scaffold_locale","\u002Freference\u002Fmcp\u002Fscaffold_locale","9.reference\u002F2.mcp\u002Fscaffold_locale",{"title":324,"path":325,"stem":326},"search_translations","\u002Freference\u002Fmcp\u002Fsearch_translations","9.reference\u002F2.mcp\u002Fsearch_translations",{"title":328,"path":329,"stem":330},"translate_key","\u002Freference\u002Fmcp\u002Ftranslate_key","9.reference\u002F2.mcp\u002Ftranslate_key",{"title":332,"path":333,"stem":334},"translate_missing","\u002Freference\u002Fmcp\u002Ftranslate_missing","9.reference\u002F2.mcp\u002Ftranslate_missing",{"title":336,"path":337,"stem":338},"write_translations","\u002Freference\u002Fmcp\u002Fwrite_translations","9.reference\u002F2.mcp\u002Fwrite_translations",{"title":340,"path":341,"stem":342},"GitHub Action","\u002Freference\u002Faction","9.reference\u002F3.action",{"title":344,"path":345,"stem":346},"Programmatic API","\u002Freference\u002Fprogrammatic-api","9.reference\u002F4.programmatic-api",{"title":348,"icon":349,"path":350,"stem":351,"children":352,"page":21},"Extra Topics","i-lucide-microscope","\u002Fextra-topics","91.extra-topics",[353],{"title":354,"path":355,"stem":356},"How Detection Scores Adapters","\u002Fextra-topics\u002Fdetection-scoring","91.extra-topics\u002F1.detection-scoring",{"id":358,"title":113,"body":359,"description":457,"extension":918,"links":919,"meta":920,"navigation":498,"path":114,"seo":921,"stem":115,"__hash__":923},"docs\u002F5.configuration\u002F1.where-config-lives.md",{"type":360,"value":361,"toc":909},"minimark",[362,371,376,424,427,442,448,451,596,610,635,652,657,668,778,782,800,810,825,829,863,869,873,905],[363,364,365,366,370],"p",{},"Kit policy — the things you tell the tool that it cannot see for itself — is\ndeclared in one of two files. Every field either of them accepts, with its type\nand its constraints, is in the\n",[367,368,369],"a",{"href":126},"configuration field reference",".",[372,373,375],"h2",{"id":374},"the-two-files","The Two Files",[377,378,379,395],"table",{},[380,381,382],"thead",{},[383,384,385,389,392],"tr",{},[386,387,388],"th",{},"Where",[386,390,391],{},"Applies",[386,393,394],{},"Requires",[396,397,398,413],"tbody",{},[383,399,400,407,410],{},[401,402,403],"td",{},[404,405,406],"code",{},"i18n-kit.config.ts",[401,408,409],{},"Immediately, from the file on disk",[401,411,412],{},"Nothing beyond the CLI",[383,414,415,420,422],{},[401,416,417],{},[404,418,419],{},".i18n-mcp.json",[401,421,409],{},[401,423,412],{},[363,425,426],{},"Both accept the same field names and validate against one shared zod schema,\nwith a type-level guard that fails the CLI build if the schema and the\ndocumented config type drift apart.",[428,429,430,431,434,435,438,439,370],"note",{},"Policy is not declared in ",[404,432,433],{},"nuxt.config.ts",". ",[404,436,437],{},"@the-i18n-kit\u002Fnuxt"," publishes what\nNuxt already resolved — the layer graph and the locale table — so you do not\nrestate those by hand. It carries no glossary, no protected locales and no scan\nrules. See ",[367,440,441],{"href":122},"declared versus derived",[443,444,446],"h3",{"id":445},"i18n-kitconfigts",[404,447,406],{},[363,449,450],{},"A TypeScript file that exports its config as the default export:",[452,453,458],"pre",{"className":454,"code":455,"filename":406,"language":456,"meta":457,"style":457},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineI18nKitConfig } from '@the-i18n-kit\u002Fcli\u002Fconfig'\n\nexport default defineI18nKitConfig({\n  context: 'A B2B booking platform.',\n  glossary: { anny: 'Brand name. NEVER translate.' },\n  protectedLocales: ['de-formal'],\n})\n","ts","",[404,459,460,493,500,518,539,564,587],{"__ignoreMap":457},[461,462,465,469,473,477,480,483,486,490],"span",{"class":463,"line":464},"line",1,[461,466,468],{"class":467},"s7zQu","import",[461,470,472],{"class":471},"sMK4o"," {",[461,474,476],{"class":475},"sTEyZ"," defineI18nKitConfig",[461,478,479],{"class":471}," }",[461,481,482],{"class":467}," from",[461,484,485],{"class":471}," '",[461,487,489],{"class":488},"sfazB","@the-i18n-kit\u002Fcli\u002Fconfig",[461,491,492],{"class":471},"'\n",[461,494,496],{"class":463,"line":495},2,[461,497,499],{"emptyLinePlaceholder":498},true,"\n",[461,501,503,506,509,512,515],{"class":463,"line":502},3,[461,504,505],{"class":467},"export",[461,507,508],{"class":467}," default",[461,510,476],{"class":511},"s2Zo4",[461,513,514],{"class":475},"(",[461,516,517],{"class":471},"{\n",[461,519,521,525,528,530,533,536],{"class":463,"line":520},4,[461,522,524],{"class":523},"swJcz","  context",[461,526,527],{"class":471},":",[461,529,485],{"class":471},[461,531,532],{"class":488},"A B2B booking platform.",[461,534,535],{"class":471},"'",[461,537,538],{"class":471},",\n",[461,540,542,545,547,549,552,554,556,559,561],{"class":463,"line":541},5,[461,543,544],{"class":523},"  glossary",[461,546,527],{"class":471},[461,548,472],{"class":471},[461,550,551],{"class":523}," anny",[461,553,527],{"class":471},[461,555,485],{"class":471},[461,557,558],{"class":488},"Brand name. NEVER translate.",[461,560,535],{"class":471},[461,562,563],{"class":471}," },\n",[461,565,567,570,572,575,577,580,582,585],{"class":463,"line":566},6,[461,568,569],{"class":523},"  protectedLocales",[461,571,527],{"class":471},[461,573,574],{"class":475}," [",[461,576,535],{"class":471},[461,578,579],{"class":488},"de-formal",[461,581,535],{"class":471},[461,583,584],{"class":475},"]",[461,586,538],{"class":471},[461,588,590,593],{"class":463,"line":589},7,[461,591,592],{"class":471},"}",[461,594,595],{"class":475},")\n",[363,597,598,601,602,605,606,609],{},[404,599,600],{},"defineI18nKitConfig"," returns its argument unchanged. Its entire job is the\ntype: ",[404,603,604],{},"protectedLocales"," autocompletes, and a misspelled ",[404,607,608],{},"protectedLocals"," is a\nred squiggle while you write it rather than a failed command later.",[363,611,612,613,616,617,616,620,616,623,626,627,630,631,634],{},"Five other extensions are accepted, so a JavaScript project does not have to\nadopt TypeScript to get a checked config: ",[404,614,615],{},".mts",", ",[404,618,619],{},".js",[404,621,622],{},".mjs",[404,624,625],{},".cjs"," and\n",[404,628,629],{},".cts",". If a directory contains more than one, the CLI uses the first in that\norder — ",[404,632,633],{},".ts"," first — and warns, naming the files it ignored.",[428,636,637,638,640,641,643,644,647,648,651],{},"Import ",[404,639,489],{},". The CLI aliases that specifier to the copy of\n",[404,642,600],{}," already running, so a config written against these docs\nloads even under a bare ",[404,645,646],{},"npx"," in a project that never installed the package. The\npre-rename spelling ",[404,649,650],{},"the-i18n-cli\u002Fconfig"," resolves the same way, and keeps\nworking until the deprecation window closes.",[443,653,655],{"id":654},"i18n-mcpjson",[404,656,419],{},[363,658,659,660,663,664,667],{},"The original format, still supported and still what ",[404,661,662],{},"the-i18n-cli init"," writes.\nIt accepts the same keys, plus a ",[404,665,666],{},"$schema"," pointer for editor completion:",[452,669,673],{"className":670,"code":671,"filename":419,"language":672,"meta":457,"style":457},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"$schema\": \"node_modules\u002F@the-i18n-kit\u002Fmcp\u002Fschema.json\",\n  \"context\": \"A B2B booking platform.\",\n  \"glossary\": { \"anny\": \"Brand name. NEVER translate.\" },\n  \"protectedLocales\": [\"de-formal\"]\n}\n","json",[404,674,675,679,702,721,752,773],{"__ignoreMap":457},[461,676,677],{"class":463,"line":464},[461,678,517],{"class":471},[461,680,681,684,687,690,692,695,698,700],{"class":463,"line":495},[461,682,683],{"class":471},"  \"",[461,685,666],{"class":686},"spNyl",[461,688,689],{"class":471},"\"",[461,691,527],{"class":471},[461,693,694],{"class":471}," \"",[461,696,697],{"class":488},"node_modules\u002F@the-i18n-kit\u002Fmcp\u002Fschema.json",[461,699,689],{"class":471},[461,701,538],{"class":471},[461,703,704,706,709,711,713,715,717,719],{"class":463,"line":502},[461,705,683],{"class":471},[461,707,708],{"class":686},"context",[461,710,689],{"class":471},[461,712,527],{"class":471},[461,714,694],{"class":471},[461,716,532],{"class":488},[461,718,689],{"class":471},[461,720,538],{"class":471},[461,722,723,725,728,730,732,734,736,740,742,744,746,748,750],{"class":463,"line":520},[461,724,683],{"class":471},[461,726,727],{"class":686},"glossary",[461,729,689],{"class":471},[461,731,527],{"class":471},[461,733,472],{"class":471},[461,735,694],{"class":471},[461,737,739],{"class":738},"sBMFI","anny",[461,741,689],{"class":471},[461,743,527],{"class":471},[461,745,694],{"class":471},[461,747,558],{"class":488},[461,749,689],{"class":471},[461,751,563],{"class":471},[461,753,754,756,758,760,762,764,766,768,770],{"class":463,"line":541},[461,755,683],{"class":471},[461,757,604],{"class":686},[461,759,689],{"class":471},[461,761,527],{"class":471},[461,763,574],{"class":471},[461,765,689],{"class":471},[461,767,579],{"class":488},[461,769,689],{"class":471},[461,771,772],{"class":471},"]\n",[461,774,775],{"class":463,"line":566},[461,776,777],{"class":471},"}\n",[372,779,781],{"id":780},"how-each-one-reaches-a-command","How Each One Reaches a Command",[363,783,784,785,788,789,792,793,795,796,799],{},"Both files are read directly from disk. Every adapter funnels through one\nloader, ",[404,786,787],{},"loadProjectConfig",", which searches from the project directory upward\nfor the nearest ",[404,790,791],{},"i18n-kit.config.*"," and the nearest ",[404,794,419],{}," — the way\nESLint, Prettier and ",[404,797,798],{},"tsconfig.json"," resolve theirs. The search stops at the\nfirst directory that has one, so a config in an app directory shadows one at the\nrepository root rather than merging with it.",[363,801,802,803,805,806,809],{},"The CLI never loads your Nuxt config to read policy out of it. What\n",[404,804,437],{}," writes to ",[404,807,808],{},".nuxt\u002Fi18n-kit.json"," during a build is the layer\ngraph and the locale table — facts Nuxt resolved that would otherwise have to be\nrestated by hand. Policy is not in there.",[363,811,812,813,817,818,820,821,824],{},"Because both files are read straight from disk, the policy in them applies to\nthe first command run in a checkout that has built nothing — which is what a CI\njob that runs the kit before the build, or a container with only the repository\nmounted, is. That matters most for the two keys that ",[814,815,816],"em",{},"suppress"," work:\n",[404,819,604],{},", which excludes locales from automatic translation, and\n",[404,822,823],{},"orphanScan",", which narrows what counts as an orphan key.",[372,826,828],{"id":827},"choosing","Choosing",[830,831,832,842,853],"ul",{},[833,834,835,841],"li",{},[836,837,838,839,370],"strong",{},"Start with ",[404,840,406],{}," It is checked by your editor, needs no\nbuild, and works on every framework the kit supports.",[833,843,844,849,850,852],{},[836,845,846,847],{},"Keep ",[404,848,419],{}," if you already have one and it is doing its job, or\nif something other than a person generates it. There is no deadline to\nmigrate, and ",[404,851,206],{}," still writes this format.",[833,854,855,862],{},[836,856,857,858],{},"Install ",[367,859,860],{"href":139},[404,861,437],{}," alongside either file\nif you are on Nuxt. It does not hold policy; it removes the need to restate\nthe locales and layers Nuxt already knows about.",[363,864,865,866,370],{},"You can use more than one. What you cannot do is declare the same key in two of\nthem: that is an error naming both, not a merge. See\n",[367,867,868],{"href":118},"precedence and conflicts",[372,870,872],{"id":871},"limits","Limits",[830,874,875,897,900],{},[833,876,877,878,616,881,884,885,888,889,892,893,896],{},"The kit does not read ",[404,879,880],{},"package.json",[404,882,883],{},".env",", or a ",[404,886,887],{},"config\u002F"," directory for its\nown settings. Provider credentials are the exception: an API key comes from\nthe ",[404,890,891],{},"--apiKey"," flag or a provider environment variable such as\n",[404,894,895],{},"OPENAI_API_KEY",", never from a config file that could be committed.",[833,898,899],{},"Neither file supports extending, importing or composing another kit config.\nThe nearest one wins outright.",[833,901,902,904],{},[404,903,419],{}," keeps its name for compatibility even though the CLI reads it\ntoo, not only the MCP server.",[906,907,908],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":457,"searchDepth":502,"depth":502,"links":910},[911,915,916,917],{"id":374,"depth":495,"text":375,"children":912},[913,914],{"id":445,"depth":502,"text":406},{"id":654,"depth":502,"text":419},{"id":780,"depth":495,"text":781},{"id":827,"depth":495,"text":828},{"id":871,"depth":495,"text":872},"md",null,{},{"description":922,"title":113},"The two files kit policy can be declared in, how each reaches the CLI, and how to choose between them.","xrFr_fxx3ir7Cl7C9v3WaRyOi1iqSpS6RT3TKM1uN_Y",[925,926],{"title":104,"path":105,"stem":106,"description":457,"children":-1},{"title":117,"path":118,"stem":119,"description":457,"children":-1},1787604651168]