Initial commit

This commit is contained in:
Zhongwei Li
2025-11-29 18:03:43 +08:00
commit 2d7bed1e9d
8 changed files with 1725 additions and 0 deletions

129
commands/kb-start.md Normal file
View File

@@ -0,0 +1,129 @@
---
description: 啟動新的 TDD 會話。遵循 Kent Beck 的純粹 TDD 理念,從第一個測試開始。
---
# TDD Start - 啟動 TDD 會話
開始一個新的 TDD 開發會話。遵循 Kent Beck 的理念:從測試開始,讓設計演進。
**【功能想法】**{{brief_idea}}
## Kent Beck 的起點
> "開始時不要想太多,從最簡單的測試開始。"
**不要做:**
- ❌ 寫完整的需求文件
- ❌ 規劃所有測試案例
- ❌ 事先設計類別結構
- ❌ 想太多細節
**要做:**
- ✅ 想一個最簡單的情境
- ✅ 寫出第一個測試
- ✅ 讓測試驅動設計
## 開始步驟
### 1. 建立開發記錄
`docs/tdd/{feature_name}/` 建立:
```
journey.md - TDD 開發旅程記錄(不是計劃)
```
### 2. 想第一個測試
問自己:
- 什麼是最簡單的使用情境?
- 什麼是最明顯的行為?
- 從哪裡開始最容易?
**範例思考過程:**
```
功能想法:「計算購物車總價」
❌ 不要想:
- 需要支援優惠券
- 需要處理多幣別
- 需要計算稅金
- ...
✅ 只想:
「一個商品的購物車,總價應該等於商品價格」
這就是第一個測試!
```
### 3. journey.md 初始格式
```markdown
# {feature_name} TDD Journey
## 開始想法
{簡單描述要做什麼1-2 句話}
## TDD 循環記錄
### 第 1 輪 - {日期時間}
#### 🤔 想法
{為什麼要寫這個測試?}
#### 📝 下一步
執行 /kb-red 寫第一個測試
```
## 心態準備
Kent Beck 強調的 TDD 心態:
**好奇心**
- "如果我這樣寫測試會怎樣?"
- 用測試來探索問題
**勇氣**
- 敢於寫會失敗的測試
- 敢於用最簡單的方式實作
**簡單**
- 從最簡單的開始
- 不要過度設計
**反饋**
- 頻繁執行測試
- 快速得到反饋
## 範例:開始一個 Money 類別
```markdown
# Money TDD Journey
## 開始想法
建立一個 Money 類別,可以處理金錢運算。
## TDD 循環記錄
### 第 1 輪 - 2025-10-15 21:30
#### 🤔 想法
最簡單的情境5 元乘以 2 應該等於 10 元。
#### 📝 下一步
執行 /kb-red 寫第一個測試
```
## 下一步
準備好了嗎?執行:
```
/kb-red
```
開始寫你的第一個測試!
## 記住 Kent Beck 的話
> "TDD 的目的不是測試,而是思考。"
> "從最簡單的測試開始,讓複雜度自然演進。"
> "如果不知道該寫什麼測試,那就寫一個你知道答案的測試。"