實戰範例

真實開發情境中的 Cursor AI 使用案例,包含 Prompt 技巧與操作流程。

篩選案例

用 Agent 重構 React 元件

Agent 模式

將一個 500 行的巨型元件(God Component)拆分為多個職責單一的小元件,同時保持功能不變。

使用的 Prompt

@src/components/Dashboard.tsx
這個元件超過 500 行,請幫我重構:
1. 將每個主要功能區塊拆成獨立元件
2. 將資料獲取邏輯抽取到自訂 hooks
3. 保持所有現有功能,不要改變行為
4. 新元件放在 src/components/dashboard/ 目錄下
5. 完成後更新 Dashboard.tsx 引用新的子元件

耗時:約 2 分鐘。省去手動拆分的 1-2 小時工作。

Chat 解釋複雜演算法

Chat 對話

接手遺留程式碼,快速理解一段複雜的搜尋演算法邏輯。

使用的 Prompt

@src/utils/fuzzySearch.ts
請幫我解釋這個模糊搜尋演算法:
1. 整體邏輯是什麼?使用了什麼演算法?
2. 為什麼要用位元運算?
3. 時間複雜度是多少?
4. 這段程式碼有沒有效能瓶頸?
用繁體中文說明,假設我不熟悉字串演算法

5 分鐘內完全理解原本需要 1 小時才能看懂的程式碼。

Rules 統一 TypeScript 風格

Rules 設定

為新加入的團隊成員建立 .cursorrules,確保 AI 協助他們寫出符合團隊規範的程式碼。

關鍵 .cursorrules 內容

## 型別規範
- 禁止使用 any,改用 unknown 或精確型別
- 所有函式參數和回傳值都必須有型別
- 使用 type 而非 interface(除非需要 extends)
- 使用 satisfies 確保物件型別符合期望

## React 規範
- 使用 function 關鍵字定義元件(非箭頭函式)
- Props 型別定義在元件正上方
- 使用 React.FC 時要明確定義 children 型別

設定後,所有 AI 生成的程式碼自動符合團隊規範。

Agent 生成完整 CRUD API

Agent 模式

用一個 Prompt 讓 Agent 自動生成包含 CRUD 操作的 RESTful API,包含路由、控制器、服務層和資料庫 schema。

使用的 Prompt

請為「商品管理」功能建立完整的後端 API:

需求:
- 商品有:名稱、價格、庫存數量、分類、圖片URL
- 支援:新增、查詢(含分頁與篩選)、更新、刪除
- 軟刪除(不真正刪除資料)

技術棧:Fastify + Drizzle ORM + PostgreSQL
請按照現有的 src/routes/products.ts 架構
包含輸入驗證(使用 Zod)和錯誤處理

15 分鐘完成原本需要半天的基礎 API 開發。

Tab 補全加速測試撰寫

Tab 補全

撰寫第一個測試案例後,Tab 補全會預測後續的測試結構,大幅加速測試撰寫速度。

實際操作流程

// 手動輸入第一個測試:
describe('userService', () => {
  it('should create user with valid data', async () => {
    const result = await userService.create({ name: 'Test', email: 'test@example.com' })
    expect(result.id).toBeDefined()
    expect(result.name).toBe('Test')
  })

  // 輸入 it( 後,Tab 自動補全下一個測試:
  it('should throw error when email is duplicate', async () => {
    // Cursor 預測並補全整個測試內容
  })
})

撰寫 10 個測試案例的時間,從 30 分鐘縮短至 8 分鐘。

Cmd+K 加入錯誤處理

Cmd+K

快速為現有的非同步函式加入完整的錯誤處理邏輯,包含重試機制和日誌記錄。

操作流程

// 原始程式碼(選取整個函式):
async function fetchUserData(userId: string) {
  const response = await api.get(`/users/${userId}`)
  return response.data
}

// 選取後按 Cmd+K,輸入:
"加入完整的錯誤處理:
- 網路錯誤時重試 3 次(指數退避)
- 404 時拋出 UserNotFoundError
- 記錄錯誤至 logger
- 加入 TypeScript 型別"

// AI 生成的結果會以 diff 形式顯示,確認後接受

30 秒完成原本需要 5-10 分鐘的錯誤處理模板。

Chat 協助 Code Review

Chat 對話

提交 PR 前,用 Chat 進行自我 Code Review,發現潛在問題。

使用的 Prompt

@src/services/paymentService.ts
這是我今天寫的付款服務,準備提交 PR。
請從以下角度幫我審查:

1. 安全性:有沒有常見的安全漏洞?
2. 邊界情況:有沒有沒處理到的例外?
3. 效能:有沒有 N+1 查詢或不必要的 await?
4. 可測試性:這段程式碼容易撰寫單元測試嗎?
5. 符合 SOLID 原則嗎?

發現問題的話,請具體說明問題位置和建議修改方式

發現了 2 個未處理的邊界情況,避免了生產環境的 bug。

Agent 遷移到新框架

Agent 模式

將 Pages Router 的 Next.js 專案遷移到 App Router 架構。

使用的 Prompt

我需要將這個 Next.js 專案從 Pages Router 遷移到 App Router。

請從 @pages/products 目錄開始:
1. 將 getServerSideProps 轉換為 Server Components
2. 將 useRouter 從 next/router 改為 next/navigation
3. 調整 metadata 的設定方式
4. 確保 loading 和 error 狀態正確處理

完成一個頁面後,讓我確認再繼續下一個

分批遷移策略讓大型重構可控,每步驟都可驗證。

Rules 設定多語言支援規範

Rules 設定

設定 .cursorrules 讓 AI 在生成前端程式碼時,自動考慮 i18n 多語言支援。

關鍵 .cursorrules 內容

## 國際化(i18n)規範
本專案使用 next-intl 處理多語言(繁中/英文)

- 所有用戶可見的文字必須透過 useTranslations() 讀取
- 禁止在元件中硬編碼任何中文或英文字串
- 新增 UI 文字時,同時在 messages/zh-TW.json 和
  messages/en.json 中加入對應的翻譯 key
- 日期和數字格式使用 useFormatter() 處理

設定後,AI 自動在所有生成的元件中加入 i18n 支援。

Chat 分析效能瓶頸

Chat 對話

使用 Chat 分析慢速 API 的效能問題,找出 N+1 查詢並提供最佳化方案。

使用的 Prompt

@src/api/orders/route.ts
這個 API 端點在資料量大時非常慢(> 2 秒)。
ORM 是 Drizzle,資料庫是 PostgreSQL。

請幫我:
1. 找出潛在的 N+1 查詢問題
2. 確認索引策略是否正確
3. 建議如何加入分頁(cursor-based pagination)
4. 是否有可以快取的資料?

請提供具體的程式碼修改建議

發現並修復 N+1 問題後,API 回應時間從 2.1 秒降至 180ms。