skills/generate-frontend-lint-config/SKILL.md
產生或補齊前端 Lint 設定(Prettier + ESLint Flat Config),統一格式化與程式碼品質規則,保留既有自訂偏好。
npx skillsauth add CloudyWing/ai-dotfiles generate-frontend-lint-configInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
本 Skill 同時管理兩個檔案,各自以對應範本為單一來源:
| 目標檔案 | 範本來源 |
| --- | --- |
| .prettierrc.json | ~/.ai-agents/templates/.prettierrc.json |
| eslint.config.js | ~/.ai-agents/templates/eslint.config.js |
修改建議規則時,只改範本檔,不改 SKILL.md。SKILL.md 僅描述執行流程。
範本檔以 Vue 3 + TypeScript 專案為設計基準。若目標專案是純 JS、React、Svelte 等其他技術棧,產生後需手動調整 eslint.config.js,本 Skill 會在後續提醒中說明。
本 Skill 假設目標專案:
package.json,且依賴含 vue、react、svelte、typescript 其中之一,或目錄存在 *.vue、*.ts、*.tsx、*.jsx)。.eslintrc.*,本 Skill 不自動轉換格式,僅產生 eslint.config.js 並提醒使用者手動處理舊版設定。不符合前提時,告知使用者後流程終止。
掃描目標專案:
package.json。package.json 的 dependencies / devDependencies 判斷主要框架(Vue / React / Svelte / 純 TS)。.prettierrc* 或 eslint.config.* / .eslintrc.*。~/.ai-agents/templates/.prettierrc.json 與 ~/.ai-agents/templates/eslint.config.js。printWidth、特定 rules 等)。對 Prettier 與 ESLint 各自比對既有規則與範本規則:
Prettier 衝突項:同一鍵但值不同(如現有 tabWidth: 2、範本為 4)。
ESLint 衝突項:
extends / 引入某 plugin,但範本指定不同版本或不同 plugin。rules 區塊中與範本同名但設定值不同。對每個衝突點,提供最小變更方案:優先保留使用者已設定的值,僅補齊完全缺少的規則。
若衝突點超過 3 個,在進入步驟 4 前先列出衝突清單,讓使用者決定哪些保留、哪些覆蓋。
特別注意:既有檔案的 extends 順序與 plugin 載入順序對 ESLint Flat Config 有語意意義,不可任意重排。
分別顯示 .prettierrc.json 與 eslint.config.js 的預覽內容(或僅顯示新增/修改的段落),停止等待使用者確認後再執行寫入。確認格式:
以下是將要寫入的設定預覽:
【.prettierrc.json】
{
"tabWidth": 4,
...
}
【eslint.config.js】
import js from '@eslint/js';
...
確認後將寫入,請回覆「確認」。
若使用者要求調整,修改後重新顯示確認。
已存在對應檔案:使用 Merge 模式,將缺少的規則插入適當位置:
.prettierrc.json:物件層級合併,保留既有鍵值。eslint.config.js:在現有 export 的陣列中插入缺少的 config 物件;若既有檔案結構與範本差異過大(如使用 legacy .eslintrc 或 CommonJS 寫法),不嘗試自動合併,告知使用者衝突並提供範本內容供手動整合。不存在對應檔案:直接以範本內容建立新檔。
寫入完成後,提醒使用者下列事項(不自動執行):
安裝相依套件:依專案的套件管理器執行對應指令。
# npm
npm install -D eslint @eslint/js typescript-eslint eslint-plugin-vue eslint-config-prettier prettier
# pnpm
pnpm add -D eslint @eslint/js typescript-eslint eslint-plugin-vue eslint-config-prettier prettier
# yarn
yarn add -D eslint @eslint/js typescript-eslint eslint-plugin-vue eslint-config-prettier prettier
若專案非 Vue,移除 eslint-plugin-vue。
加入 npm scripts(若 package.json 尚無對應 scripts):
{
"scripts": {
"lint": "eslint . --fix",
"format": "prettier --write ."
}
}
非 Vue / 純 TS 專案的調整:
eslint.config.js 中 pluginVue 的 import 與 ...pluginVue.configs['flat/recommended'] 一行。eslint-plugin-vue 安裝指令。與 .editorconfig 的對齊:確認 .editorconfig 的 tab_width / indent_size 與 .prettierrc.json 的 tabWidth 一致;end_of_line 與 endOfLine 一致。
IDE 整合:建議啟用 IDE 的 Format on Save,並設定 Prettier 為預設 formatter;ESLint extension 設為 lint on save。
輸出:
tools
產生或補齊 .gitattributes,統一行尾處理、二進位識別與 lock files 標記,保留既有自訂偏好。
testing
依據事實校閱報告修改技術文件:以事實層為不可違反的約束,由改檔者負責表達層的措辭與行文連貫。Use when the user asks to apply fact-check results to a document, or to edit a document based on a previously produced fact-check-report.md.
data-ai
多份資料檔整合流程。當需要將兩份以上的資料檔(如 JSON、CSV)合併、補齊闕漏欄位或去重成單一檔案時使用。以 dry-run、筆數核對與抽樣比對降低整合錯誤。
tools
C# 程式碼風格規範:縮寫大小寫、泛型型別參數、成員排序、空行、換行、三元運算子等 .editorconfig 無法約束的細則。建立全新 C# 專案,或在無既有慣例的專案新增全新檔案時套用。