setup-pre-commit
作者 mattpococksetup-pre-commit 可協助你加入搭配 lint-staged、Prettier,以及可選的型別檢查/測試執行的 Husky pre-commit 鉤子。當你的 repo 需要一套快速、可重複的提交前安全檢查,且你想在保留既有設定的同時,為目前的套件管理器加入正確腳本時,就適合使用這份 setup-pre-commit 指南。
這個技能的評分是 78/100,代表它很適合放進目錄給使用者參考:它提供了真實、可觸發的工作流程,可用來設定 Husky pre-commit 鉤子,搭配 lint-staged、Prettier、型別檢查與測試;但在驗證與邊緣情境處理上,仍有一些採用上的注意事項。
- 觸發條件明確且實用:聚焦於新增 Husky pre-commit 鉤子、設定 lint-staged,以及在提交時進行格式化、型別檢查與測試。
- 操作步驟具體且有順序性,包含套件管理器偵測、依賴安裝、Husky 初始化、建立鉤子檔案與 Prettier 設定。
- description 與正文提供了足夠的工作流程細節,讓 agent 執行時比一般泛用提示更少猜測,包含精確命令與檔案內容。
- 沒有提供安裝命令或輔助腳本/資源,因此使用者必須完全依賴 SKILL.md 中的說明。
- repo 標記了測試訊號,而指南也說明若 scripts 不存在則要省略 typecheck/test 行,這使流程帶有條件性,還不是完全開箱即用。
setup-pre-commit 技能總覽
setup-pre-commit 技能可幫你建立一套實用的 Git hook 工作流程:在 commit 前執行 Husky pre-commit 檢查、用 lint-staged 搭配 Prettier 做格式化,並可選擇在程式碼進入 commit 前跑 typecheck / test。它最適合已經有 Node 工具鏈的 repo,想要的是一套快速、可重複、而不是自己手工拼湊的 hook 設定。
setup-pre-commit 是拿來做什麼的
當你想在 commit 當下建立一道安全網,先把格式統一好,也提早抓出明顯錯誤時,就該用 setup-pre-commit 技能。它真正要解決的不是單純「安裝 Husky」,而是在不重構整個 repo 的前提下,讓本機 commit 更安全。
什麼情況下特別適合
如果你的 repo 已經在使用,或可以使用,Prettier、typecheck 和 test scripts,並且你希望在 npm、pnpm、Yarn 或 Bun 之間都能套用一致的做法,這個技能就很合適。當你需要在既有專案中快速落地、又不想陷入太多流程辯論時,它也特別實用。
哪些情況下會受限
如果你的專案不是 Node-based、如果你要的是 commit-msg 或 pre-push 邏輯而不是 pre-commit、或你的檢查流程需要比單一 hook 更複雜的編排,這個技能就不那麼適合。它也預設你能先確認有哪些 scripts 存在,再決定要不要把它們加進 hook。
如何使用 setup-pre-commit 技能
安裝並打開正確的檔案
先用 npx skills add mattpocock/skills --skill setup-pre-commit 安裝。接著先讀 SKILL.md,因為真正的工作流程和判斷點都在那裡。如果你的目錄檢視只露出一個檔案,那也足夠照著設定做,但你仍然應該檢查 repository tree,確認 package manager 和 scripts 的線索。
提供正確的 repo 背景資訊
要得到最佳結果,請告訴技能目前有哪些 lockfile、package.json 裡是否已經有 typecheck 和 test,以及是否已經設定 Prettier。像這樣的需求就很清楚:使用 pnpm 在這個 repo 設定 setup-pre-commit;保留既有的 Prettier 設定;只新增已經存在的 scripts。 這比單純說「加 pre-commit hooks」更好,因為它能減少對 package manager 與 hook 內容的猜測。
按照正確順序走工作流程
這個技能的設計順序很簡單:先偵測 package manager,再安裝 dev dependencies,初始化 Husky,寫入 .husky/pre-commit,加入 lint-staged,最後建立或沿用 Prettier 設定。實務上最重要的判斷,是要不要把 npm run typecheck 和 npm run test 放進去;如果相關 scripts 不存在,就應該省略。這個選擇能讓 hook 保持有用,而不是脆弱易壞。
實用的 prompt 範本
請在 prompt 裡直接寫出 repo 現況和想要的政策。例如:用 setup-pre-commit 在這個 monorepo 裡加入 Husky、lint-staged 和 Prettier。lockfile 是 pnpm-lock.yaml,typecheck 存在,test 不存在,而且已經有 .prettierrc。 這樣技能就有足夠資訊產生正確設定,不會亂編 scripts,也不會覆寫現有設定。
setup-pre-commit 技能 FAQ
setup-pre-commit 只適合新專案嗎?
不是。setup-pre-commit 技能其實在既有 repo 裡往往更有價值,因為它能幫你在不手動重建檔案的情況下,加上一套一致的 hook 政策。它最適合你已經知道有哪些 scripts 和設定存在的情境。
我需要同時有 Husky 和 lint-staged 嗎?
就這套流程來說,是的,這正是重點。Husky 負責觸發 hook,lint-staged 則只針對 staged files 做格式化,讓 commit 維持快速。如果你只想要其中一個元件,用一般提示詞可能比 setup-pre-commit 技能更簡單。
它會覆寫我的 Prettier 設定嗎?
如果使用得當,應該不會。這個技能只有在沒有 .prettierrc 時才會建立它,而核心判斷在於你的 repo 是否已經有該保留的 formatter 設定。如果你有既有的風格規範,務必明確說出來。
它適合 CI 還是只適合本機 commit?
它的主要價值是本機 pre-commit 強制檢查,但同樣的檢查通常也會對齊 CI 的期待。如果你的 CI 用的是不同命令,不要直接照抄 hook;要讓 hook 和 pipeline 真正執行的 scripts 一致。這也是 setup-pre-commit for CI Troubleshooting 的主要考量。
如何改善 setup-pre-commit 技能
把 repo 的真實限制講清楚
品質提升最大的地方,就是明確告訴 setup-pre-commit 現有的 package manager、scripts 和 config files。少了這些背景,它很容易產生錯誤的命令前綴、多做不必要的 script,或讓 hook 在第一次 commit 就失敗。
避免常見的 hook 失敗情況
最常見的失敗模式,是在 .husky/pre-commit 裡加入 typecheck 或 test,但其實這些 scripts 根本不存在。另一個常見問題,是格式化整個 repo 的所有檔案,而不是只處理 staged files,結果讓 commit 比必要的慢。如果你希望 hook 穩定可用,就要明確指定當某個 script 不存在時該怎麼辦。
用明確目標提升第一次輸出品質
不要只說要安裝,請直接要求具體成果。比較好的指令像是:加入 Husky pre-commit hooks,在 staged files 上執行 lint-staged,保留既有的 Prettier 設定,並且只在 package.json已定義typecheck 時才加入它。 這樣產出的 setup-pre-commit guide 結果,會比模糊的需求更實用。
完成第一輪後再迭代
初步設定完成後,檢查 hook 是否符合團隊對速度與嚴格度的期待。如果覺得太重,就把昂貴的檢查從 pre-commit 移到 CI;如果覺得太鬆,就補上缺少的 script,或縮小 lint-staged 的範圍。最好的 setup-pre-commit install 結果,是團隊真的會持續使用、而不是最後被停掉的那一套。
