[{"data":1,"prerenderedAt":1012},["ShallowReactive",2],{"navigation_docs":3,"-introduction-architecture":357,"-introduction-architecture-surround":1009},[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,"page":-1},"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,"page":-1},"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,"page":-1},"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":14,"body":359,"description":990,"extension":1002,"links":1003,"meta":1004,"navigation":1005,"path":15,"seo":1006,"stem":16,"__hash__":1008},"docs\u002F1.introduction\u002F2.architecture.md",{"type":360,"value":361,"toc":989},"minimark",[362,366,371,379,476,486,491,494,528,531,535,558,561,565,569,572,792,801,828,832,838,859,866,870,873,876,924,940,944],[363,364,365],"p",{},"There is one engine. Everything else is a way of reaching it.",[367,368,370],"h2",{"id":369},"one-engine-five-surfaces","One Engine, Five Surfaces",[363,372,373,374,378],{},"A ",[375,376,377],"strong",{},"surface"," is a way of invoking the engine. There are five:",[380,381,382,398],"table",{},[383,384,385],"thead",{},[386,387,388,392,395],"tr",{},[389,390,391],"th",{},"Surface",[389,393,394],{},"Package",[389,396,397],{},"Who invokes it",[399,400,401,416,429,452,465],"tbody",{},[386,402,403,407,413],{},[404,405,406],"td",{},"CLI",[404,408,409],{},[410,411,412],"code",{},"@the-i18n-kit\u002Fcli",[404,414,415],{},"You, in a terminal",[386,417,418,421,426],{},[404,419,420],{},"MCP server",[404,422,423],{},[410,424,425],{},"@the-i18n-kit\u002Fmcp",[404,427,428],{},"Your AI agent, over the Model Context Protocol",[386,430,431,434,439],{},[404,432,433],{},"Nuxt module",[404,435,436],{},[410,437,438],{},"@the-i18n-kit\u002Fnuxt",[404,440,441,442,445,446,445,449],{},"Nuxt, at ",[410,443,444],{},"prepare"," \u002F ",[410,447,448],{},"dev",[410,450,451],{},"build",[386,453,454,457,462],{},[404,455,456],{},"ESLint plugin",[404,458,459],{},[410,460,461],{},"@the-i18n-kit\u002Feslint-plugin-vue",[404,463,464],{},"ESLint, in your editor and in lint runs",[386,466,467,470,473],{},[404,468,469],{},"CI integrations",[404,471,472],{},"GitHub Action, GitLab CI templates",[404,474,475],{},"Your pipeline",[363,477,478,479,481,482,485],{},"The engine itself lives in ",[410,480,412],{},". That package ships two things: the\n",[410,483,484],{},"the-i18n-cli"," binary and the core library behind it — config detection, the\nframework adapters, the scanner, the layer graph and the operations that read and\nwrite locale files.",[487,488,490],"h3",{"id":489},"what-the-engine-does-before-any-command-runs","What the Engine Does Before Any Command Runs",[363,492,493],{},"Every surface resolves the same project model first:",[495,496,497,508,522],"ol",{},[498,499,500,503,504,507],"li",{},[375,501,502],{},"An adapter detects the framework"," — Nuxt, Laravel, Vue, React\u002FNext.js or\ngeneric. Set ",[410,505,506],{},"framework"," in your kit config to pin one when the wrong adapter\nis picked.",[498,509,510,513,514,517,518,521],{},[375,511,512],{},"The adapter resolves config."," Some of it is ",[375,515,516],{},"derived config",", read out of\nthe framework's own files; the rest is ",[375,519,520],{},"declared config",", written by you.",[498,523,524,527],{},[375,525,526],{},"The layer graph is built from that config"," — which apps consume which\nlayers, and which layers more than one app consumes.",[363,529,530],{},"The graph is what makes usage evidence app-scoped. Where it has no app information\nto work from, it treats every canonical layer as globally visible, so a missing\ndescription makes the tooling more conservative rather than more confident.",[367,532,534],{"id":533},"the-mcp-server-and-the-cli","The MCP Server and the CLI",[363,536,537,539,540,542,543,546,547,550,551,546,554,557],{},[410,538,425],{}," declares ",[410,541,412],{}," as a dependency and imports the\noperations from it directly — ",[410,544,545],{},"findOrphanKeys",", ",[410,548,549],{},"checkUndefinedKeys",",\n",[410,552,553],{},"translateMissing",[410,555,556],{},"renameTranslationKey"," and the rest are the same functions the\nCLI commands call.",[363,559,560],{},"What that buys you: when your agent reports 1,103 orphan keys and you re-run the\nscan in your terminal to check, you get 1,103. Not approximately. The scan, the\nscope rules, the uncertain-key classification and the removal guard are one\nimplementation, so the two surfaces cannot drift apart in behavior — only in how\nthey present the result.",[562,563,564],"note",{},"The surfaces do differ in ergonomics. The CLI adds CI gates and exit codes; the MCP\nserver adds tool descriptions, prompts and resources for the agent. The operation\nunderneath is the same call.",[367,566,568],{"id":567},"command-and-tool-names","Command and Tool Names",[363,570,571],{},"A command you learn in the terminal tells you what to ask your agent for, and a\ntool your agent used tells you what to type.",[380,573,574,587],{},[383,575,576],{},[386,577,578,581,584],{},[389,579,580],{},"Operation",[389,582,583],{},"CLI command",[389,585,586],{},"MCP tool",[399,588,589,603,616,629,642,655,669,682,695,708,724,737,753,766,779],{},[386,590,591,594,599],{},[404,592,593],{},"Project setup and layers",[404,595,596],{},[410,597,598],{},"detect",[404,600,601],{},[410,602,268],{},[386,604,605,608,612],{},[404,606,607],{},"Read specific keys",[404,609,610],{},[410,611,202],{},[404,613,614],{},[410,615,296],{},[386,617,618,621,625],{},[404,619,620],{},"Write exact values",[404,622,623],{},[410,624,258],{},[404,626,627],{},[410,628,336],{},[386,630,631,634,638],{},[404,632,633],{},"Missing translations",[404,635,636],{},[410,637,210],{},[404,639,640],{},[410,641,288],{},[386,643,644,647,651],{},[404,645,646],{},"Coverage per locale and layer",[404,648,649],{},[410,650,242],{},[404,652,653],{},[410,654,292],{},[386,656,657,660,665],{},[404,658,659],{},"Empty values",[404,661,662],{},[410,663,664],{},"empty",[404,666,667],{},[410,668,276],{},[386,670,671,674,678],{},[404,672,673],{},"Search keys and values",[404,675,676],{},[410,677,238],{},[404,679,680],{},[410,681,324],{},[386,683,684,687,691],{},[404,685,686],{},"Delete keys",[404,688,689],{},[410,690,218],{},[404,692,693],{},[410,694,312],{},[386,696,697,700,704],{},[404,698,699],{},"Rename across all locales",[404,701,702],{},[410,703,226],{},[404,705,706],{},[410,707,316],{},[386,709,710,713,720],{},[404,711,712],{},"Fill missing locales",[404,714,715,445,717],{},[410,716,246],{},[410,718,719],{},"translate-missing",[404,721,722],{},[410,723,332],{},[386,725,726,729,733],{},[404,727,728],{},"Refresh one key",[404,730,731],{},[410,732,250],{},[404,734,735],{},[410,736,328],{},[386,738,739,742,747],{},[404,740,741],{},"Orphan keys",[404,743,744,746],{},[410,745,222],{}," (dry run by default)",[404,748,749,445,751],{},[410,750,280],{},[410,752,308],{},[386,754,755,758,762],{},[404,756,757],{},"Used but undefined",[404,759,760],{},[410,761,194],{},[404,763,764],{},[410,765,284],{},[386,767,768,771,775],{},[404,769,770],{},"Shadowed keys across layers",[404,772,773],{},[410,774,198],{},[404,776,777],{},[410,778,272],{},[386,780,781,784,788],{},[404,782,783],{},"Add a locale",[404,785,786],{},[410,787,230],{},[404,789,790],{},[410,791,320],{},[363,793,794,797,798,800],{},[410,795,796],{},"the-i18n-cli translate-missing"," is an alias of ",[410,799,246],{},", so the MCP tool name\nworks in the terminal too.",[363,802,803,804,806,807,810,811,546,814,816,817,445,819,821,822,824,825,827],{},"The pairing is not total. Five commands are terminal-side only: ",[410,805,206],{}," (write a\n",[410,808,809],{},".i18n-mcp.json"," from framework detection), ",[410,812,813],{},"list-dirs",[410,815,234],{}," (raw usage sites\nwith file paths and line numbers), and ",[410,818,190],{},[410,820,254],{},", which add skip-if-present\nand skip-if-absent semantics on top of the plain write that ",[410,823,336],{},"\nperforms. ",[410,826,300],{}," has no command counterpart. Where the names differ,\nthe table above is the mapping.",[367,829,831],{"id":830},"the-nuxt-module","The Nuxt Module",[363,833,834,835,837],{},"Nuxt already resolves your layer graph and your locale table. Without the module,\nthat information exists twice: once inside Nuxt, and once restated by hand in\n",[410,836,809],{}," — with nothing that notices when the two disagree.",[363,839,840,842,843,846,847,546,849,851,852,854,855,858],{},[410,841,438],{}," writes what Nuxt resolved to ",[410,844,845],{},".nuxt\u002Fi18n-kit.json"," on\n",[410,848,444],{},[410,850,448],{}," and ",[410,853,451],{},". The CLI reads that artifact in preference to\nhand-written config, and falls back to loading the app through Nuxt when the\nartifact is absent, unparseable, of an unknown version, or older than a\n",[410,856,857],{},"nuxt.config"," it describes. Adding the module changes where the facts come from;\nremoving it degrades rather than breaks.",[363,860,861,862,865],{},"The module also fails the build on ",[410,863,864],{},"protectedLocales"," entries that resolve to no\nlocale or to several — two mistakes that previously looked like they had taken\neffect and had not.",[367,867,869],{"id":868},"the-ci-integrations","The CI Integrations",[363,871,872],{},"The GitHub Action and the GitLab CI templates run the same binary you run locally.\nThey decide job outcomes from its exit code rather than by parsing counts out of\nthe JSON result — reading result fields to decide pass or fail is what coupled\nearlier template versions to output shapes that were never a contract.",[363,874,875],{},"The exit codes carry the distinction a pipeline needs:",[380,877,878,888],{},[383,879,880],{},[386,881,882,885],{},[389,883,884],{},"Code",[389,886,887],{},"Meaning",[399,889,890,904,914],{},[386,891,892,897],{},[404,893,894],{},[410,895,896],{},"0",[404,898,899,900,903],{},"The run succeeded and no ",[375,901,902],{},"gate"," tripped",[386,905,906,911],{},[404,907,908],{},[410,909,910],{},"1",[404,912,913],{},"The run itself failed — bad API key, unreadable project, a translate run that translated nothing",[386,915,916,921],{},[404,917,918],{},[410,919,920],{},"2",[404,922,923],{},"The run succeeded but a gate tripped",[363,925,926,927,550,930,546,933,546,936,939],{},"A gate is a flag that makes the CLI exit non-zero on findings (",[410,928,929],{},"--fail-on-missing",[410,931,932],{},"--fail-on-orphans",[410,934,935],{},"--fail-on-failed",[410,937,938],{},"--fail-under","). A tripped gate is not a\nfailed run, and keeping them at different codes is what lets a job treat a missing\nAPI key differently from a project that has untranslated keys.",[367,941,943],{"id":942},"limits","Limits",[945,946,947,964,983],"ul",{},[498,948,949,952,953,955,956,960,961,963],{},[375,950,951],{},"The CLI package is the dependency boundary."," ",[410,954,425],{}," version ",[957,958,959],"em",{},"n","\nis built against a specific ",[410,962,412],{},"; running a globally installed CLI\nof a different version alongside it means two engine versions on one machine.\nPin both, or install neither globally.",[498,965,966,969,970,973,974,851,976,979,980,982],{},[375,967,968],{},"The Nuxt artifact requires a build."," Policy declared only in ",[410,971,972],{},"nuxt.config.ts","\n— ",[410,975,864],{},[410,977,978],{},"orphanScan"," especially — does not apply to an unbuilt\ncheckout. Keep those two in ",[410,981,809],{}," if a pipeline depends on them.",[498,984,985,988],{},[375,986,987],{},"The layer graph is only as good as its input."," It derives from resolved\nconfig; it does not inspect imports to discover consumption you have not\ndeclared.",{"title":990,"searchDepth":991,"depth":991,"links":992},"",3,[993,997,998,999,1000,1001],{"id":369,"depth":994,"text":370,"children":995},2,[996],{"id":489,"depth":991,"text":490},{"id":533,"depth":994,"text":534},{"id":567,"depth":994,"text":568},{"id":830,"depth":994,"text":831},{"id":868,"depth":994,"text":869},{"id":942,"depth":994,"text":943},"md",null,{},true,{"description":1007,"title":14},"One engine behind five surfaces — the CLI, the MCP server, the Nuxt module, the ESLint plugin and the CI integrations — and why that makes terminal results and agent results identical.","pF2_iwREtiHzKCKJ-SGsjYrwFK4iGlVdEjB9KCirJEM",[1010,1011],{"title":10,"path":11,"stem":12,"description":990,"children":-1},{"title":18,"path":19,"stem":20,"description":990,"children":-1},1787604647515]