| name | tdd-workflow |
| description | TDD(テスト駆動開発)で実装します。赤-緑-リファクタリングのサイクルに従って開発を進めます。 |
| allowed-tools | Read, Grep, Glob, Bash, Edit, Write, TodoWrite, Task |
TDD ワークフロー
概要
テスト駆動開発(TDD)の手法に従って、以下のサイクルで開発を進めます:
- 赤フェーズ: 失敗するテストを書く
- テスト実行: テストが落ちることを確認
- 緑フェーズ: テストを通す最小限の実装を行う
- テスト成功確認: テストが通ることを確認
- リファクタリング: コードを整理・改善
重要な原則
1. Todoによる計画確認
- 実装前に必ずTodoWriteツールでタスク計画を作成
- ユーザーの確認を得てから実装を開始
- 各フェーズごとにTodoの状態を更新
2. テスト作成のルール
- 最初に小さな動作を確認するテストを書く
- テストのデータはテスト関数内に記述(fixtureは使わない)
- assertionに関係ないデータについてのみfixture利用を許可
3. モックの使用制限
- モックはなるべく使わない
- API呼び出しやDB呼び出しなど外部依存がある時だけ利用を許可
4. コメントのルール
- WHYを書く(なぜこの実装なのか)
- WHATは複数行にまたがる等、コードの可読性に響く場合のみ
- 余計なコメントは書かない
テスト実行方法
重要: テスト実行は必ず test-runner エージェントを使用すること
テストの実行出力は大量になりコンテキストを汚染するため、直接Bashで実行せず、
必ずTaskツールで test-runner エージェントに委譲します。
test-runnerエージェントは以下を自動で行います:
- プロジェクトの種類を判別(Python/Go/Node.js等)
- 適切なテストコマンドを実行
- テスト結果をパースしてフィルタリング
- 失敗したテストの詳細のみを抽出
- 成功/失敗の統計情報を報告
効率的な使用パターン
test-runnerエージェントは初回実行時に「実行コマンド」を返します。
このコマンドをコンテキストに保持し、2回目以降の実行で指定することで、
プロジェクト構成スキャンをスキップできます。
初回実行(コマンド自動判別):
Task tool:
subagent_type: test-runner
prompt: "全テストを実行して結果を要約してください"
→ 返答: 「実行コマンド: uv run pytest -v」を含む
→ コンテキストに記憶: このプロジェクトは `uv run pytest` を使う
2回目以降(コマンド指定で効率化):
Task tool:
subagent_type: test-runner
prompt: "uv run pytest tests/test_user.py::TestUser::test_create -v を実行してください"
→ スキャンをスキップして即実行
TDDサイクルの実施手順
赤フェーズ(テストを書く)
- 実装したい機能の小さな動作を特定
- その動作を検証するテストを書く
- test-runnerエージェントでテストを実行して失敗することを確認
- 失敗理由が想定通りか確認
緑フェーズ(実装する)
- テストを通すための最小限の実装を行う
- 過度な設計や抽象化は避ける
- test-runnerエージェントでテストを実行して成功することを確認
リファクタリングフェーズ
- テストが通っている状態で開始
- コードの重複を削除
- 可読性を向上させる
- 各変更後にtest-runnerエージェントでテストを実行して動作を確認
- 過度な抽象化や将来の拡張性は考慮しない
スラッシュコマンド
各フェーズを個別に実行したい場合は、以下のコマンドを使用:
/tdd:red - 赤フェーズ: 失敗するテストを書く
/tdd:green - 緑フェーズ: テストを通す実装を行う
/tdd:refactor - リファクタリング: コードを整理
実装時の注意事項
- セキュリティ脆弱性(XSS, SQLインジェクション等)に注意
- パスワードやAPIキーをハードコーディングしない
- ユーザーの確認なしにデータを削除しない
- 過度なエラーハンドリングや検証は避ける(システム境界のみ)
- 未使用のコードは完全に削除(後方互換性ハックは不要)