本文へ移動
cccskills
無料GitHub で公開

tdd-impl

Kent Beck/t-wada 流の TDD でテストコードとプロダクションコードを実装する。Triggers on: '/tdd-impl', 'TDDで実装', 'TDD実装'

インストール方法を見る

含まれるファイル(1)

  • SKILL.md5.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

TDD実装(t-wada / Kent Beck 流)

設計が確定した後、テストリスト → Red → Green → Refactor のサイクルで実装する手法。要件理解・設計・必須ゲート通過・セルフレビューはこのスキルの責務外(呼び出し元が回す)。


Phase 1: テストリスト

実装に入る前に、検証したい振る舞いを過不足なくリスト化する。

  • 完了条件・受入基準を「テストとして書ける粒度」に分解
  • 正常系・異常系・境界値を含める
  • 優先順位: 「テスト容易性 × 重要度 × 不確実性」が高いものから着手
  • 1項目 = 1テストに対応

実装中に気付いた観点は着手前に必ずリストへ追記する(書き忘れ防止)。


Phase 2: Red — 1 つだけテストを書く

リストから 1 項目選び、テストコードに翻訳する。

  • Arrange-Act-Assert で構造化
  • 意味のあるアサーションを必ず置く(常に真の検証は禁止)
  • テストが失敗することを確認するまで次に進まない
  • 「正しい理由で失敗している」ことを確認(コンパイルエラーや想定外の例外で落ちていないか)

複数テストを先にまとめて書かない。1テスト→Red→Green→Refactor で1サイクル。


Phase 3: Green — 本当に成功させる

テストを通すための最小限の実装だけを書く。美しさは Refactor まで保留。

厳禁:

  • アサーションの削除や緩和
  • test.skip / コメントアウトでの回避
  • テスト側を書き換えて「とりあえず緑」にする

実装の 3 つのギア

ギアいつ使うかやり方
仮実装(Fake It)一般解への自信が無いとき、最初の一歩ハードコードで通す(例: return 42)
三角測量(Triangulation)仮実装の後、一般化を強制したいとき別ケースのテストを追加し、ハードコードでは通らないようにして一般解を引き出す
明白な実装(Obvious Implementation)一般解への自信が高く、テストとの結びつきが明確いきなり一般化された実装を書く

迷ったら 仮実装 → 三角測量 のルートで安全側に倒す。


Phase 4: Refactor — 緑のうちに改善する

テストが緑のまま、設計を改善する。

Refactor 判断

質問Yes なら refactor
同じロジックが2箇所以上に出現✅
名前が振る舞いを表していない✅
関数が複数の責務を負っている✅
マジック値が散らばっている✅

すべて No ならやらない判断を明示して次のテストへ。

禁止:

  • 今のテストでカバーされていない設計変更
  • 将来必要かもしれない抽象化の先取り
  • テストを赤にする変更(赤になったら直ちに戻す)

Phase 5: 繰り返し

テストリストが空になるまで Phase 2〜4 を繰り返す。各サイクル終了時、既存テストを含む全テストが緑であることを確認する。


既存変更・バグ修正時の追加ルール

  • 変更前に既存テストが全て緑であることを確認(基準点の固定)
  • バグ修正は再現テスト先行: バグを再現する失敗テストを先に書き、それが緑になることで修正の妥当性を示す
  • 変更後にも既存テストが緑であることを確認
  • 後方互換性が壊れる場合は実装を進める前に呼び出し元へ申告

LLM 特有の罠と対策

罠対策
実装ファーストに傾くPhase 2 の Red 観測まで実装ファイルを開かない
テストをまとめ書き1サイクル1テスト。追加観点は次サイクルへ
Green を急いで誤魔化すアサーション緩和・スキップ禁止。仮実装は OK だが三角測量で一般化
Refactor を飛ばす判断チェックリストを通過(やらない判断も明示)
テストリスト軽視追加観点は実装前に必ずリストへ

テストコードのガイドライン

  • プロジェクトのテストフレームワーク・既存パターンに従う
  • 単体テストと結合テストの粒度を分けて書く
  • モックは外部サービス・認証・インフラ層に限定(ビジネスロジックはモックしない)
  • 1テスト1検証、テスト名は振る舞いの説明

完了条件

  • テストリストの全項目がテストとして実装され、すべて緑
  • 既存テストを壊していない
  • 完了条件・受入基準をテストレベルで満たしている

/quality-check はこのスキルの範囲外(呼び出し元が完了後に実行)。


返却内容

  • テストリスト(最終版・チェック状況)
  • 追加・変更したファイル一覧(テスト / プロダクション別)
  • 各サイクルで使ったギア(仮実装/三角測量/明白な実装)と理由
  • 既存テストの実行状況(変更前/変更後)
  • 後方互換性に影響がある場合はその内容

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

codex-review

無料日本語概要

Codexによるread-onlyローカルレビューを実行する。Triggers on: '/codex-review', 'Codexでレビューして', 'クロスモデルレビューして'

masanami/claude-harness52026年10月11日 更新

codex-task

無料日本語概要

調査(read-only)または雑務(workspace-write)をCodexへ委譲し、結論をJSONで受け取る。Triggers on: '/codex-task', 'Codexで調べて', 'Codexにやらせて', 'Codexへ委譲'

masanami/claude-harness52026年10月11日 更新

commit

無料日本語概要

Conventional Commits形式でコミットする。Triggers on: '/commit', 'コミットして', 'commit changes'

masanami/claude-harness52026年10月11日 更新

create-adr

無料日本語概要

恒常的な設計決定を ADR として記録する(退役する機能仕様から ADR 昇格の要否を判定するモードを併せ持つ)。定常フローの必須ステップではなく、必要時に呼ぶ。Triggers on: '/create-adr', 'ADRを書いて', '設計判断を記録', 'ADR昇格を判定'

masanami/claude-harness52026年10月11日 更新

create-e2e

無料日本語概要

仕様(チケットの完了条件・受入基準)からE2Eテストを実装する(非対話)。Triggers on: '/create-e2e', 'E2Eテストを書いて', 'E2Eテストを追加して'

masanami/claude-harness52026年10月11日 更新

create-ticket

無料日本語概要

機能仕様ドキュメントから要件チケットを作成する、または親要件チケットを実装チケット群に分解する。Triggers on: '/create-ticket', 'チケットを作成', 'Issueを作って', 'create ticket', '実装チケットに分解'

masanami/claude-harness52026年10月11日 更新

masanami のスキルをすべて見る

このスキルの問題を報告する