[{"data":1,"prerenderedAt":878},["ShallowReactive",2],{"navigation_docs_en":3,"-en-eslint-config-editor":46,"-en-eslint-config-editor-surround":873},[4,31,36,41],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"ESLint Config","\u002Fen\u002Feslint-config","en\u002F1.eslint-config\u002F1.index",[9,11,15,19,23,27],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-shield-check",{"title":12,"path":13,"stem":14},"Package JSON Lint","\u002Fen\u002Feslint-config\u002Fpackage-json","en\u002F1.eslint-config\u002F2.package-json",{"title":16,"path":17,"stem":18},"Nuxt Integration","\u002Fen\u002Feslint-config\u002Fnuxt","en\u002F1.eslint-config\u002F3.nuxt",{"title":20,"path":21,"stem":22},"Framework Integrations","\u002Fen\u002Feslint-config\u002Fframeworks","en\u002F1.eslint-config\u002F4.frameworks",{"title":24,"path":25,"stem":26},"Advanced Usage","\u002Fen\u002Feslint-config\u002Fadvanced","en\u002F1.eslint-config\u002F5.advanced",{"title":28,"path":29,"stem":30},"Editor & CI Integration","\u002Fen\u002Feslint-config\u002Feditor","en\u002F1.eslint-config\u002F6.editor",{"title":32,"path":33,"stem":34,"icon":35},"Prettier Config","\u002Fen\u002Fprettier-config","en\u002F2.prettier-config","i-lucide-paintbrush",{"title":37,"path":38,"stem":39,"icon":40},"EditorConfig","\u002Fen\u002Feditorconfig","en\u002F3.editorconfig","i-lucide-file-cog",{"title":42,"path":43,"stem":44,"icon":45},"CLI","\u002Fen\u002Fcli","en\u002F4.cli","i-lucide-terminal",{"id":47,"title":28,"body":48,"description":867,"extension":868,"links":869,"meta":870,"navigation":117,"path":29,"seo":871,"stem":30,"__hash__":872},"docs_en\u002Fen\u002F1.eslint-config\u002F6.editor.md",{"type":49,"value":50,"toc":858},"minimark",[51,55,60,77,387,399,403,406,412,422,469,473,510,514,521,562,578,581,657,660,666,760,847,854],[52,53,28],"h1",{"id":54},"editor-ci-integration",[56,57,59],"h2",{"id":58},"vs-code","VS Code",[61,62,63,64,71,72,76],"p",{},"Install the ",[65,66,70],"a",{"href":67,"rel":68},"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=dbaeumer.vscode-eslint",[69],"nofollow","VS Code ESLint extension"," and add the following to ",[73,74,75],"code",{},".vscode\u002Fsettings.json",":",[78,79,84],"pre",{"className":80,"code":81,"filename":75,"language":82,"meta":83,"style":83},"language-jsonc shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \u002F\u002F Let ESLint handle formatting; disable Prettier and formatOnSave\n  \"prettier.enable\": false,\n  \"editor.formatOnSave\": false,\n\n  \u002F\u002F Fix on save\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": \"explicit\",\n    \"source.organizeImports\": \"never\"\n  },\n\n  \u002F\u002F Silence stylistic rules in the Problems panel but still auto-fix them\n  \"eslint.rules.customizations\": [\n    { \"rule\": \"style\u002F*\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"format\u002F*\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-indent\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-spacing\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-spaces\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-order\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-dangle\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*-newline\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*quotes\", \"severity\": \"off\", \"fixable\": true },\n    { \"rule\": \"*semi\", \"severity\": \"off\", \"fixable\": true }\n  ],\n\n  \u002F\u002F Run ESLint on every supported language\n  \"eslint.validate\": [\n    \"javascript\",\n    \"javascriptreact\",\n    \"typescript\",\n    \"typescriptreact\",\n    \"vue\",\n    \"html\",\n    \"markdown\",\n    \"json\",\n    \"jsonc\",\n    \"yaml\",\n    \"toml\",\n    \"xml\",\n    \"gql\",\n    \"graphql\",\n    \"astro\",\n    \"svelte\",\n    \"css\",\n    \"less\",\n    \"scss\",\n    \"pcss\",\n    \"postcss\"\n  ]\n}\n","jsonc","",[73,85,86,94,100,106,112,119,125,131,137,143,149,154,160,166,172,178,184,190,196,202,208,214,220,226,232,237,243,249,255,261,267,273,279,285,291,297,303,309,315,321,327,333,339,345,351,357,363,369,375,381],{"__ignoreMap":83},[87,88,91],"span",{"class":89,"line":90},"line",1,[87,92,93],{},"{\n",[87,95,97],{"class":89,"line":96},2,[87,98,99],{},"  \u002F\u002F Let ESLint handle formatting; disable Prettier and formatOnSave\n",[87,101,103],{"class":89,"line":102},3,[87,104,105],{},"  \"prettier.enable\": false,\n",[87,107,109],{"class":89,"line":108},4,[87,110,111],{},"  \"editor.formatOnSave\": false,\n",[87,113,115],{"class":89,"line":114},5,[87,116,118],{"emptyLinePlaceholder":117},true,"\n",[87,120,122],{"class":89,"line":121},6,[87,123,124],{},"  \u002F\u002F Fix on save\n",[87,126,128],{"class":89,"line":127},7,[87,129,130],{},"  \"editor.codeActionsOnSave\": {\n",[87,132,134],{"class":89,"line":133},8,[87,135,136],{},"    \"source.fixAll.eslint\": \"explicit\",\n",[87,138,140],{"class":89,"line":139},9,[87,141,142],{},"    \"source.organizeImports\": \"never\"\n",[87,144,146],{"class":89,"line":145},10,[87,147,148],{},"  },\n",[87,150,152],{"class":89,"line":151},11,[87,153,118],{"emptyLinePlaceholder":117},[87,155,157],{"class":89,"line":156},12,[87,158,159],{},"  \u002F\u002F Silence stylistic rules in the Problems panel but still auto-fix them\n",[87,161,163],{"class":89,"line":162},13,[87,164,165],{},"  \"eslint.rules.customizations\": [\n",[87,167,169],{"class":89,"line":168},14,[87,170,171],{},"    { \"rule\": \"style\u002F*\", \"severity\": \"off\", \"fixable\": true },\n",[87,173,175],{"class":89,"line":174},15,[87,176,177],{},"    { \"rule\": \"format\u002F*\", \"severity\": \"off\", \"fixable\": true },\n",[87,179,181],{"class":89,"line":180},16,[87,182,183],{},"    { \"rule\": \"*-indent\", \"severity\": \"off\", \"fixable\": true },\n",[87,185,187],{"class":89,"line":186},17,[87,188,189],{},"    { \"rule\": \"*-spacing\", \"severity\": \"off\", \"fixable\": true },\n",[87,191,193],{"class":89,"line":192},18,[87,194,195],{},"    { \"rule\": \"*-spaces\", \"severity\": \"off\", \"fixable\": true },\n",[87,197,199],{"class":89,"line":198},19,[87,200,201],{},"    { \"rule\": \"*-order\", \"severity\": \"off\", \"fixable\": true },\n",[87,203,205],{"class":89,"line":204},20,[87,206,207],{},"    { \"rule\": \"*-dangle\", \"severity\": \"off\", \"fixable\": true },\n",[87,209,211],{"class":89,"line":210},21,[87,212,213],{},"    { \"rule\": \"*-newline\", \"severity\": \"off\", \"fixable\": true },\n",[87,215,217],{"class":89,"line":216},22,[87,218,219],{},"    { \"rule\": \"*quotes\", \"severity\": \"off\", \"fixable\": true },\n",[87,221,223],{"class":89,"line":222},23,[87,224,225],{},"    { \"rule\": \"*semi\", \"severity\": \"off\", \"fixable\": true }\n",[87,227,229],{"class":89,"line":228},24,[87,230,231],{},"  ],\n",[87,233,235],{"class":89,"line":234},25,[87,236,118],{"emptyLinePlaceholder":117},[87,238,240],{"class":89,"line":239},26,[87,241,242],{},"  \u002F\u002F Run ESLint on every supported language\n",[87,244,246],{"class":89,"line":245},27,[87,247,248],{},"  \"eslint.validate\": [\n",[87,250,252],{"class":89,"line":251},28,[87,253,254],{},"    \"javascript\",\n",[87,256,258],{"class":89,"line":257},29,[87,259,260],{},"    \"javascriptreact\",\n",[87,262,264],{"class":89,"line":263},30,[87,265,266],{},"    \"typescript\",\n",[87,268,270],{"class":89,"line":269},31,[87,271,272],{},"    \"typescriptreact\",\n",[87,274,276],{"class":89,"line":275},32,[87,277,278],{},"    \"vue\",\n",[87,280,282],{"class":89,"line":281},33,[87,283,284],{},"    \"html\",\n",[87,286,288],{"class":89,"line":287},34,[87,289,290],{},"    \"markdown\",\n",[87,292,294],{"class":89,"line":293},35,[87,295,296],{},"    \"json\",\n",[87,298,300],{"class":89,"line":299},36,[87,301,302],{},"    \"jsonc\",\n",[87,304,306],{"class":89,"line":305},37,[87,307,308],{},"    \"yaml\",\n",[87,310,312],{"class":89,"line":311},38,[87,313,314],{},"    \"toml\",\n",[87,316,318],{"class":89,"line":317},39,[87,319,320],{},"    \"xml\",\n",[87,322,324],{"class":89,"line":323},40,[87,325,326],{},"    \"gql\",\n",[87,328,330],{"class":89,"line":329},41,[87,331,332],{},"    \"graphql\",\n",[87,334,336],{"class":89,"line":335},42,[87,337,338],{},"    \"astro\",\n",[87,340,342],{"class":89,"line":341},43,[87,343,344],{},"    \"svelte\",\n",[87,346,348],{"class":89,"line":347},44,[87,349,350],{},"    \"css\",\n",[87,352,354],{"class":89,"line":353},45,[87,355,356],{},"    \"less\",\n",[87,358,360],{"class":89,"line":359},46,[87,361,362],{},"    \"scss\",\n",[87,364,366],{"class":89,"line":365},47,[87,367,368],{},"    \"pcss\",\n",[87,370,372],{"class":89,"line":371},48,[87,373,374],{},"    \"postcss\"\n",[87,376,378],{"class":89,"line":377},49,[87,379,380],{},"  ]\n",[87,382,384],{"class":89,"line":383},50,[87,385,386],{},"}\n",[61,388,389,390,393,394,398],{},"The ",[73,391,392],{},"rules.customizations"," block is the key insight: stylistic rules stay ",[395,396,397],"strong",{},"fixable"," (so save still reformats) but don't clutter the Problems panel with squiggles you don't care about.",[56,400,402],{"id":401},"neovim","Neovim",[61,404,405],{},"A few ways to get format-on-save in Neovim:",[407,408,410],"h3",{"id":409},"nvim-lspconfig",[73,411,409],{},[61,413,414,415,418,419,76],{},"Use the built-in ",[73,416,417],{},"EslintFixAll"," command and trigger it on ",[73,420,421],{},"BufWritePre",[78,423,427],{"className":424,"code":425,"language":426,"meta":83,"style":83},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","lspconfig.eslint.setup({\n  on_attach = function(client, bufnr)\n    vim.api.nvim_create_autocmd('BufWritePre', {\n      buffer = bufnr,\n      command = 'EslintFixAll',\n    })\n  end,\n})\n","lua",[73,428,429,434,439,444,449,454,459,464],{"__ignoreMap":83},[87,430,431],{"class":89,"line":90},[87,432,433],{},"lspconfig.eslint.setup({\n",[87,435,436],{"class":89,"line":96},[87,437,438],{},"  on_attach = function(client, bufnr)\n",[87,440,441],{"class":89,"line":102},[87,442,443],{},"    vim.api.nvim_create_autocmd('BufWritePre', {\n",[87,445,446],{"class":89,"line":108},[87,447,448],{},"      buffer = bufnr,\n",[87,450,451],{"class":89,"line":114},[87,452,453],{},"      command = 'EslintFixAll',\n",[87,455,456],{"class":89,"line":121},[87,457,458],{},"    })\n",[87,460,461],{"class":89,"line":127},[87,462,463],{},"  end,\n",[87,465,466],{"class":89,"line":133},[87,467,468],{},"})\n",[407,470,472],{"id":471},"alternatives","Alternatives",[474,475,476,490,500],"ul",{},[477,478,479,486,487],"li",{},[65,480,483],{"href":481,"rel":482},"https:\u002F\u002Fgithub.com\u002Fstevearc\u002Fconform.nvim",[69],[73,484,485],{},"conform.nvim"," — formatter runner with ESLint as a ",[73,488,489],{},"formatter",[477,491,492,499],{},[65,493,496],{"href":494,"rel":495},"https:\u002F\u002Fgithub.com\u002Fnvimtools\u002Fnone-ls.nvim",[69],[73,497,498],{},"none-ls.nvim"," — exposes ESLint through the null-ls protocol",[477,501,502,509],{},[65,503,506],{"href":504,"rel":505},"https:\u002F\u002Fgithub.com\u002Fmfussenegger\u002Fnvim-lint",[69],[73,507,508],{},"nvim-lint"," — lightweight linter runner",[56,511,513],{"id":512},"editor-specific-disables","Editor Specific Disables",[61,515,516,517,520],{},"When ESLint runs inside a code editor, a handful of rules report as ",[395,518,519],{},"non-fixable"," so your editor doesn't aggressively rewrite code you're still typing:",[474,522,523,532,541,550],{},[477,524,525],{},[65,526,529],{"href":527,"rel":528},"https:\u002F\u002Feslint.org\u002Fdocs\u002Frules\u002Fprefer-const",[69],[73,530,531],{},"prefer-const",[477,533,534],{},[65,535,538],{"href":536,"rel":537},"https:\u002F\u002Fgithub.com\u002Flevibuzolic\u002Feslint-plugin-no-only-tests",[69],[73,539,540],{},"test\u002Fno-only-tests",[477,542,543],{},[65,544,547],{"href":545,"rel":546},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Feslint-plugin-unused-imports",[69],[73,548,549],{},"unused-imports\u002Fno-unused-imports",[477,551,552,555,556,555,559],{},[73,553,554],{},"pnpm\u002Fjson-enforce-catalog",", ",[73,557,558],{},"pnpm\u002Fjson-prefer-workspace-settings",[73,560,561],{},"pnpm\u002Fjson-valid-catalog",[61,563,564,565,568,569,572,573,577],{},"These rules still ",[395,566,567],{},"report"," in your editor, they just don't auto-fix. When you run ",[73,570,571],{},"eslint"," in the terminal or through ",[65,574,576],{"href":575},"#lint-staged","Lint Staged",", they behave normally.",[61,579,580],{},"Motivation: an unused import you just pasted shouldn't vanish the moment your editor auto-saves. If you'd rather have uniform behaviour across editor and CLI, opt out:",[78,582,587],{"className":583,"code":584,"filename":585,"language":586,"meta":83,"style":83},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import pleaseai from '@pleaseai\u002Feslint-config'\n\nexport default pleaseai({\n  isInEditor: false,\n})\n","eslint.config.ts","ts",[73,588,589,613,617,634,649],{"__ignoreMap":83},[87,590,591,595,599,602,606,610],{"class":89,"line":90},[87,592,594],{"class":593},"s7zQu","import",[87,596,598],{"class":597},"sTEyZ"," pleaseai ",[87,600,601],{"class":593},"from",[87,603,605],{"class":604},"sMK4o"," '",[87,607,609],{"class":608},"sfazB","@pleaseai\u002Feslint-config",[87,611,612],{"class":604},"'\n",[87,614,615],{"class":89,"line":96},[87,616,118],{"emptyLinePlaceholder":117},[87,618,619,622,625,629,632],{"class":89,"line":102},[87,620,621],{"class":593},"export",[87,623,624],{"class":593}," default",[87,626,628],{"class":627},"s2Zo4"," pleaseai",[87,630,631],{"class":597},"(",[87,633,93],{"class":604},[87,635,636,640,642,646],{"class":89,"line":108},[87,637,639],{"class":638},"swJcz","  isInEditor",[87,641,76],{"class":604},[87,643,645],{"class":644},"sfNiH"," false",[87,647,648],{"class":604},",\n",[87,650,651,654],{"class":89,"line":114},[87,652,653],{"class":604},"}",[87,655,656],{"class":597},")\n",[56,658,576],{"id":659},"lint-staged",[61,661,662,663,76],{},"Run ESLint on changed files as a pre-commit hook so bad code never reaches ",[73,664,665],{},"main",[78,667,672],{"className":668,"code":669,"filename":670,"language":671,"meta":83,"style":83},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"simple-git-hooks\": {\n    \"pre-commit\": \"bun lint-staged\"\n  },\n  \"lint-staged\": {\n    \"*\": \"eslint --fix\"\n  }\n}\n","package.json","json",[73,673,674,678,695,717,721,733,751,756],{"__ignoreMap":83},[87,675,676],{"class":89,"line":90},[87,677,93],{"class":604},[87,679,680,683,687,690,692],{"class":89,"line":96},[87,681,682],{"class":604},"  \"",[87,684,686],{"class":685},"spNyl","simple-git-hooks",[87,688,689],{"class":604},"\"",[87,691,76],{"class":604},[87,693,694],{"class":604}," {\n",[87,696,697,700,704,706,708,711,714],{"class":89,"line":102},[87,698,699],{"class":604},"    \"",[87,701,703],{"class":702},"sBMFI","pre-commit",[87,705,689],{"class":604},[87,707,76],{"class":604},[87,709,710],{"class":604}," \"",[87,712,713],{"class":608},"bun lint-staged",[87,715,716],{"class":604},"\"\n",[87,718,719],{"class":89,"line":108},[87,720,148],{"class":604},[87,722,723,725,727,729,731],{"class":89,"line":114},[87,724,682],{"class":604},[87,726,659],{"class":685},[87,728,689],{"class":604},[87,730,76],{"class":604},[87,732,694],{"class":604},[87,734,735,737,740,742,744,746,749],{"class":89,"line":121},[87,736,699],{"class":604},[87,738,739],{"class":702},"*",[87,741,689],{"class":604},[87,743,76],{"class":604},[87,745,710],{"class":604},[87,747,748],{"class":608},"eslint --fix",[87,750,716],{"class":604},[87,752,753],{"class":89,"line":127},[87,754,755],{"class":604},"  }\n",[87,757,758],{"class":89,"line":133},[87,759,386],{"class":604},[761,762,763,794,821],"code-group",{},[78,764,769],{"className":765,"code":766,"filename":767,"language":768,"meta":83,"style":83},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bun add -D lint-staged simple-git-hooks\nbunx simple-git-hooks\n","bun","bash",[73,770,771,787],{"__ignoreMap":83},[87,772,773,775,778,781,784],{"class":89,"line":90},[87,774,767],{"class":702},[87,776,777],{"class":608}," add",[87,779,780],{"class":608}," -D",[87,782,783],{"class":608}," lint-staged",[87,785,786],{"class":608}," simple-git-hooks\n",[87,788,789,792],{"class":89,"line":96},[87,790,791],{"class":702},"bunx",[87,793,786],{"class":608},[78,795,798],{"className":765,"code":796,"filename":797,"language":768,"meta":83,"style":83},"pnpm add -D lint-staged simple-git-hooks\npnpm exec simple-git-hooks\n","pnpm",[73,799,800,812],{"__ignoreMap":83},[87,801,802,804,806,808,810],{"class":89,"line":90},[87,803,797],{"class":702},[87,805,777],{"class":608},[87,807,780],{"class":608},[87,809,783],{"class":608},[87,811,786],{"class":608},[87,813,814,816,819],{"class":89,"line":96},[87,815,797],{"class":702},[87,817,818],{"class":608}," exec",[87,820,786],{"class":608},[78,822,825],{"className":765,"code":823,"filename":824,"language":768,"meta":83,"style":83},"npm install -D lint-staged simple-git-hooks\nnpx simple-git-hooks\n","npm",[73,826,827,840],{"__ignoreMap":83},[87,828,829,831,834,836,838],{"class":89,"line":90},[87,830,824],{"class":702},[87,832,833],{"class":608}," install",[87,835,780],{"class":608},[87,837,783],{"class":608},[87,839,786],{"class":608},[87,841,842,845],{"class":89,"line":96},[87,843,844],{"class":702},"npx",[87,846,786],{"class":608},[61,848,849,850,853],{},"The second command wires the hook into your ",[73,851,852],{},".git\u002Fhooks"," directory — you only need to run it once per clone.",[855,856,857],"style",{},"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 .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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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":83,"searchDepth":96,"depth":96,"links":859},[860,861,865,866],{"id":58,"depth":96,"text":59},{"id":401,"depth":96,"text":402,"children":862},[863,864],{"id":409,"depth":102,"text":409},{"id":471,"depth":102,"text":472},{"id":512,"depth":96,"text":513},{"id":659,"depth":96,"text":576},"VS Code, Neovim, editor-specific disables, and pre-commit hooks via lint-staged.","md",null,{},{"title":28,"description":867},"WqvhoTByI9R2U-UbejVEpqX7P0feKK0UsgNqrEJN1DE",[874,876],{"title":24,"path":25,"stem":26,"description":875,"children":-1},"Config Composer, type-aware rules, command codemods, plugin renaming, and versioning policy.",{"title":32,"path":33,"stem":34,"description":877,"icon":35,"children":-1},"Shared Prettier configuration for PleaseAI projects.",1776318394024]