跳到主要內容

Cursor Rules 完全指南:讓 AI 真正懂你的專案

你用 Cursor 寫了三個月的 code,每次開新 chat 還是要重新解釋:「我們用 Next.js App Router」「不要用 default export」「CSS 用 Tailwind 不要寫 inline style」。

這不是 Cursor 笨。是你沒告訴它規則。

Cursor Rules 是 Cursor 最被低估的功能。它讓你把專案的上下文、慣例、禁止事項寫成一份文件,AI 在每次對話中都會自動讀取。寫好 Rules,等於幫你的 AI 助手做了一次完整的 onboarding。

新舊格式:.cursorrules vs .cursor/rules

先搞清楚兩種格式的差異,因為很多網路教學混在一起講。

舊格式:.cursorrules

專案根目錄放一個 .cursorrules 檔案,寫什麼都行,Cursor 會在每次對話時自動載入。簡單粗暴,但有明顯限制:只能有一個檔案、沒有條件載入、內容一多就變成垃圾場。

新格式:.cursor/rules/

2025 年底 Cursor 推出的新系統。在 .cursor/rules/ 目錄下放多個 .mdc 檔案,每個檔案有 frontmatter 可以設定:

---
description: TypeScript coding conventions
globs: **/*.ts, **/*.tsx
alwaysApply: false
---

- 使用 named export,不用 default export
- 優先使用 interface 而非 type
- 錯誤處理使用 Result pattern

關鍵差異:

  • 多檔案:你可以按主題拆分(coding style、架構規範、API 慣例)
  • globs:指定這條 rule 只在特定檔案類型生效
  • alwaysApply:設為 true 時每次對話都載入,設為 false 時只在符合 globs 的檔案被編輯時才載入
  • auto-attach:Cursor 會根據你正在編輯的檔案自動選擇相關的 rules

建議:直接用新格式。舊的 .cursorrules 還能用,但新格式的組織能力完全不在一個級別。

為什麼 99% 的人沒寫好 Rules

三個常見問題:

第一,太空泛。 「寫乾淨的 code」「遵循最佳實踐」——這種 rule 等於沒寫。AI 需要的是具體的、可執行的指令。不是「寫好的 code」,是「函式超過 20 行就拆分」「API response 統一用 { data, error } 格式」。

第二,太冗長。 有人把整個 coding style guide 貼進去,三千行。Rules 會佔用 context window,太長反而降低 AI 的理解品質。每條 rule 控制在一句話,整份檔案不超過 50 行。

第三,沒有分層。 把框架規範、業務邏輯、UI 慣例全部混在一個檔案裡。當 AI 在寫一個 API endpoint 的時候,它不需要知道你的按鈕圓角是 rounded-xl。用新格式的多檔案 + globs 來分層。

好的 Rules 包含什麼

一份有效的 Rules 通常涵蓋四個層面:

1. 專案上下文

告訴 AI 這個專案是什麼、用了什麼技術、有什麼特殊的架構決策。

- 這是一個 Next.js 15 App Router 專案
- 後端使用 Supabase(auth、database、storage)
- 部署在 Vercel
- 使用 pnpm 作為套件管理器
- monorepo 結構,packages/ 下有共享模組

2. 程式碼慣例

具體的寫法規定,越具體越好。

- 使用 named export,不使用 default export
- React 組件使用 function declaration,不用 arrow function
- 狀態管理用 Zustand,不用 Redux
- 資料抓取用 server component + fetch,不用 useEffect
- 樣式用 Tailwind utility classes,不寫 CSS modules

3. 禁止事項

明確告訴 AI 什麼不能做。這往往比告訴它該做什麼更有效。

- 不要使用 any type
- 不要在 client component 裡直接呼叫資料庫
- 不要用 useEffect 做資料抓取
- 不要在 commit message 裡寫「fix bug」或「update code」
- 不要在沒有 loading 和 error state 的情況下做 async 操作

4. 格式與結構

檔案怎麼組織、命名怎麼規定。

- 組件檔名用 PascalCase:UserProfile.tsx
- 工具函式檔名用 camelCase:formatDate.ts
- API route 放在 app/api/ 下,用 route.ts
- 共享型別放在 types/ 目錄
- 每個組件資料夾包含 index.ts 做 re-export

實戰範例:Next.js + TypeScript 專案

以下是一個實際可用的 rules 結構:

.cursor/rules/
├── general.mdc          # 專案上下文,alwaysApply: true
├── typescript.mdc       # TS 慣例,globs: **/*.ts, **/*.tsx
├── react.mdc            # React 組件規範,globs: **/*.tsx
├── api.mdc              # API route 規範,globs: app/api/**/*
├── database.mdc         # Supabase 查詢慣例,globs: **/db/**/*
└── testing.mdc          # 測試規範,globs: **/*.test.ts

general.mdcalwaysApply: true,確保 AI 永遠知道專案的基本資訊。其他檔案透過 globs 自動匹配——你在寫 API route 的時候,api.mdc 會自動載入;寫測試的時候,testing.mdc 會自動載入。

進階技巧

Per-folder rules:在子目錄放 .cursor/rules/ 可以覆蓋上層的規則。適合 monorepo 中不同 app 有不同慣例的情況。比如 apps/blog/ 用 contentlayer,apps/docs/ 用 fumadocs——各自的 rules 各自管。

Description 要寫好description 欄位不是裝飾。當 alwaysApplyfalse 時,Cursor 用 description 來判斷要不要載入這條 rule。寫清楚它的適用場景,比如「Rules for writing Supabase RLS policies」而不是「database stuff」。

定期維護:Rules 不是寫一次就不管了。每次你發現 AI 又犯同一個錯,就去加一條 rule。每次你發現某條 rule 從來沒生效,就刪掉或改寫。把它當成活文件。

寫 Rules 的 Rules

最後一個後設建議:Rules 的品質取決於你對自己專案的理解程度

如果你寫不出 rules,通常不是因為你不會寫——是因為你還沒想清楚自己的專案到底有哪些慣例。這個釐清的過程本身就有價值。它迫使你把隱性知識變成顯性規則,而這些規則不只幫 AI,也幫未來的你自己、幫你的協作者。

一個人開發不代表沒有規範。有規範的一人團隊,比沒有規範的五人團隊走得更遠。


想看更多 AI 開發工具的實戰設定?我們在 開發者工具教學 裡整理了從 Cursor 到 Claude Code 的完整配置指南。