Help us improve
Share bugs, ideas, or general feedback.
From tsumiki
Executes the TDD Green phase by implementing minimal code to pass failing test cases, verifies tests pass, and records implementation details and quality assessment.
npx claudepluginhub classmethod/tsumiki --plugin tsumikiHow this command is triggered — by the user, by Claude, or both
Slash command
/tsumiki:tdd-green [要件名] [TASK-ID]This command is limited to the following tools:
The summary Claude sees in its command listing — used to decide when to auto-load this command
TDDのGreenフェーズを実行し、Redフェーズで作成したテストを通すための実装を行います。
# context
出力ディレクトリ="./docs/implements"
機能名={{feature_name}}
タスクID={{task_id}}
要件名={{requirement_name}}
信頼性評価=[]
メモファイル=./docs/implements/{要件名}/{{task_id}}/{feature_name}-memo.md
要件定義ファイル=./docs/implements/{要件名}/{{task_id}}/{feature_name}-requirements.md
テストケースファイル=./docs/implements/{要件名}/{{task_id}}/{feature_name}-testcases.md
Redフェーズファイル=./docs/implements/{要件名}/{{task_id}}/{feature_name}-red-phase.md
Greenフェーズファイル=./docs/implements/{要件名}/{{task_id}}/{feature_name}-green-phase.md
# step
- $ARGUMENTS がない場合、「引数に要件名とTASK-IDを指定してください(例: ユーザー認証.../tdd-greenImplements minimal code to pass failing tests in TDD green phase. Provide descriptions of failing tests or test file paths as argument.
Share bugs, ideas, or general feedback.
TDDのGreenフェーズを実行し、Redフェーズで作成したテストを通すための実装を行います。
出力ディレクトリ="./docs/implements" 機能名={{feature_name}} タスクID={{task_id}} 要件名={{requirement_name}} 信頼性評価=[] メモファイル=./docs/implements/{要件名}/{{task_id}}/{feature_name}-memo.md 要件定義ファイル=./docs/implements/{要件名}/{{task_id}}/{feature_name}-requirements.md テストケースファイル=./docs/implements/{要件名}/{{task_id}}/{feature_name}-testcases.md Redフェーズファイル=./docs/implements/{要件名}/{{task_id}}/{feature_name}-red-phase.md Greenフェーズファイル=./docs/implements/{要件名}/{{task_id}}/{feature_name}-green-phase.md
開発コンテキストの準備を実行する:
タスクノートの読み込み(唯一のコンテキストソース)
./docs/implements/{要件名}/{{task_id}}/note.md を読み込み/tsumiki:tdd-tasknote {要件名} {{task_id}} を実行して生成直前フェーズの出力を読み込み
./docs/implements/{要件名}/{{task_id}}/{feature_name}-requirements.md - 要件定義./docs/implements/{要件名}/{{task_id}}/{feature_name}-testcases.md - テストケース定義./docs/implements/{要件名}/{{task_id}}/{feature_name}-red-phase.md - Redフェーズのテスト記録./docs/implements/{要件名}/{{task_id}}/{feature_name}-green-phase.md - 既存のGreenフェーズ記録(存在する場合)./docs/implements/{要件名}/{{task_id}}/{feature_name}-memo.md - 開発履歴メモ(存在する場合)読み込み完了後、step3 を実行する
仕様との差異確認:
<implementation_template> の方針に従って実装を行う
テストを実行し、結果を確認する
npm test -- --findRelatedTests <実装ファイル>pytest <関連テストファイル>npm test -- <テストパターン>実装内容について、品質判定基準に基づいて以下を評価:
品質判定結果をユーザーに表示する
step4 を実行する
Green-phaseファイルの作成・更新:
メモファイルの更新:
step5 を実行する
TodoWrite ツールで TODO ステータスを更新する
自動遷移判定: 以下の条件を満たす場合は自動で /tsumiki:tdd-refactor {要件名} {TASK-ID} を実行
手動確認: 自動遷移条件を満たさない場合は以下を提供:
まず1つのテストケースだけ通す
最も簡単な方法で実装
コード品質基準の考慮
他のテストケースは後回し
エラーハンドリングも最小限
実装コード作成時には、各実装内容について元の資料との照合状況を以下の信号でコメントしてください:
✅ 高品質:
- テスト結果: Taskツールによる実行で全て成功
- 実装品質: シンプルかつ動作する
- リファクタ箇所: 明確に特定可能
- 機能的問題: なし
- コンパイルエラー: なし
- ファイルサイズ: 800行以下または分割計画が明確
- モック使用: 実装コードにモック・スタブが含まれていない
⚠️ 要改善:
- テストの一部が失敗(Taskツールで検出)
- 実装が複雑すぎる
- リファクタ方針が不明
- 機能に懸念がある
- コンパイルエラーが存在
- ファイルサイズが800行を超過し分割計画が不明
- 実装コードにモック・スタブが含まれている
/Users/username/projects/myapp/src/utils/helper.tssrc/utils/helper.ts<implementation_template>
実装コードには以下の日本語コメントを必ず含めてください:
/**
* 【機能概要】: [この関数が何をするかを日本語で説明]
* 【実装方針】: [なぜこのような実装方法を選んだかを説明]
* 【テスト対応】: [どのテストケースを通すための実装かを明記]
* 🔵🟡🔴 信頼性レベル: [この実装が元資料のどの程度に基づいているか]
* @param {type} paramName - [パラメータの説明]
* @returns {type} - [戻り値の説明]
*/
function {{function_name}}(paramName) {
// 【実装内容】: [実装している処理の詳細説明]
}
function processData(input) {
// 【入力値検証】: [入力値の妥当性をチェックする理由と方法] 🔵🟡🔴
if (!input) {
throw new Error('入力値が不正です'); // 【エラー処理】: [なぜこのエラーが必要かを説明] 🔵🟡🔴
}
// 【データ処理開始】: [メイン処理の開始を明示] 🔵🟡🔴
// 【処理方針】: [この処理がテストを通すためにどう貢献するかを説明] 🔵🟡🔴
const result = {
// 【結果構造】: [戻り値の構造とその理由を説明]
validData: [],
invalidData: [],
errors: [],
};
// 【結果返却】: [処理結果を返す理由と内容の説明]
return result;
}
// 【定数定義】: [この定数が必要な理由と使用目的]
const MAX_FILE_SIZE = 1024 * 1024; // 【制限値】: ファイルサイズの上限(1MB)を設定
// 【変数初期化】: [この変数がテスト通過のためになぜ必要かを説明]
let processedCount = 0; // 【カウンタ】: 処理済みファイル数を追跡するためのカウンタ
try {
// 【実処理実行】: [実際の処理を実行する部分の説明]
const data = processFile(filePath);
} catch (error) {
// 【エラー捕捉】: [エラーが発生した場合の対処方針]
// 【テスト要件対応】: [テストで期待されるエラーハンドリングを満たすための処理]
return {
success: false,
error: error.message, // 【エラー情報】: テストで検証されるエラーメッセージを適切に返却
};
}
/**
* 【機能概要】: JSONファイルパスを検証し、有効/無効なパスを分類する
* 【実装方針】: テストケースを通すために最低限必要な機能のみを実装
* 【テスト対応】: tdd-red フェーズで作成されたテストケースを通すための実装
*/
function {{function_name}}(input) {
// 【入力値検証】: 不正な入力値を早期に検出してエラーを防ぐ
if (!input) {
// 【エラー処理】: テストで期待されるエラーケースに対応
throw new Error('入力値が必要です');
}
// 【最小限実装】: テストを通すための最もシンプルな実装
// 【ハードコーディング許可】: リファクタ段階で改善予定のため、現段階では固定値でOK
return {{simple_return_value}};
}