Phase 3 実行。TDD(RED→GREEN→REFACTOR)を厳守して実装を進める。
推奨モデル: sonnet — コード生成・TDD は sonnet で十分です。複雑なバグ時のみ opus を検討。 現在のモデルが sonnet でない場合、ユーザーに「このPhaseでは sonnet 推奨です。
/model sonnetで切り替えますか?」と確認する。
あなたはPhase 3(実行)を実行します。TDDを厳守してください。
テストを先に書かないコードは書かない
digraph execute {
"Phase 2 承認済み?" [shape=diamond];
"/plan を案内して終了" [shape=box];
"次の Task を取得" [shape=box];
"RED: テストを書く" [shape=box];
"テスト失敗を確認" [shape=box];
"GREEN: 最小実装" [shape=box];
"テスト成功を確認" [shape=box];
"REFACTOR" [shape=box];
"サブエージェントレビュー\n(rails-reviewer\nperformance-checker)" [shape=box];
"指摘あり?" [shape=diamond];
"指摘対応" [shape=box];
"コミット" [shape=box];
"全 Task 完了?" [shape=diamond];
"全テスト + RuboCop" [shape=box];
"結果報告" [shape=doublecircle];
"テスト失敗?" [shape=diamond];
"/debug で調査" [shape=box];
"3回失敗?" [shape=diamond];
"エスカレーション" [shape=box];
"Phase 2 承認済み?" -> "/plan を案内して終了" [label="いいえ"];
"Phase 2 承認済み?" -> "次の Task を取得" [label="はい"];
"次の Task を取得" -> "RED: テストを書く";
"RED: テストを書く" -> "テスト失敗を確認";
"テスト失敗を確認" -> "GREEN: 最小実装";
"GREEN: 最小実装" -> "テスト成功を確認";
"テスト成功を確認" -> "テスト失敗?" ;
"テスト失敗?" -> "REFACTOR" [label="成功"];
"テスト失敗?" -> "/debug で調査" [label="失敗"];
"/debug で調査" -> "3回失敗?";
"3回失敗?" -> "GREEN: 最小実装" [label="いいえ"];
"3回失敗?" -> "エスカレーション" [label="はい"];
"REFACTOR" -> "サブエージェントレビュー\n(rails-reviewer\nperformance-checker)";
"サブエージェントレビュー\n(rails-reviewer\nperformance-checker)" -> "指摘あり?";
"指摘あり?" -> "指摘対応" [label="はい"];
"指摘対応" -> "コミット";
"指摘あり?" -> "コミット" [label="いいえ"];
"コミット" -> "全 Task 完了?";
"全 Task 完了?" -> "次の Task を取得" [label="いいえ"];
"全 Task 完了?" -> "全テスト + RuboCop" [label="はい"];
"全テスト + RuboCop" -> "結果報告";
}
| 言い訳 | 現実 |
|---|---|
| 「このテストは自明だから先に実装」 | 自明でもテストを先に書く。鉄則に例外はない |
| 「テストは後でまとめて書く」 | RED → GREEN → REFACTOR。順番を守る |
| 「小さい修正だからテスト不要」 | TDD省略条件(CLAUDE.md)を確認。迷ったらTDD |
| 「リファクタリングは後でまとめて」 | 各サイクルでREFACTOR。溜めない |
| 「サブエージェントのレビューは省略」 | REFACTOR時に必ず実行する |
| 「とりあえず動くものを作ってから」 | 「とりあえず」はTDD違反の始まり |
独立した Task が複数ある場合、サブエージェントを活用してコンテキストを隔離する:
SDD を使う条件:
SDD を使わない条件:
Phase 2(実装計画)で計画が承認済みであること。 承認がない場合は「先に /plan を実行してください」と案内して終了する。
$ARGUMENTS
Phase 2 で合意した計画に従い、以下のサイクルを繰り返す:
docker compose exec web bundle exec rspec <対象ファイル> で失敗を確認するdocker compose exec web bundle exec rspec <対象ファイル> で成功を確認する/debug で根本原因を調査し、1つずつ修正/debug のエスカレーションフォーマットで報告し、AskUserQuestionで相談## Step N:RED / GREEN / REFACTOR
**何をしたか:** ...
**影響範囲:** ...
**次にやること:** ...
すべてのステップが完了したら:
docker compose exec web bundle exec rspec で全テスト通過を確認docker compose exec web bundle exec rubocop で違反なしを確認current_user、そのプロフィールは current_profile とする_の所有者名_ でつなぐ(例: room_owners_room, room_owners_membership)own_ プレフィックス(例: own_room, own_membership)other_member_ / other_members_ プレフィックス(例: other_member_profile, other_members_membership)room_owner / room_owner_profileuser, profile, room, membership などの汎用名は使わない