requirements-clarification について
TDDに取り組む開発者向けのスキルです。テスト作成前に振る舞い、受け入れ条件、境界ケースを明確にし、要件の誤解による手戻りを抑えます。
主な機能
- 01要件の不足点を特定
- 02分類別の確認質問を提示
- 03境界条件とエラー処理を確認
- 04明確化した要件を文書化
活用シーン
- 01短い機能説明や曖昧な要件の確認
- 02入力・出力・受け入れ条件の定義
- 03テスト前の不正入力時の動作確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ doubleslashse/ claude-marketplace --skill requirements-clarificationインストール後、Claude Code で/requirements-clarificationを入力して読み込まれたか確認します。
詳細
TDD の要件確認
目的
テストを作成する前(RED フェーズ)に、以下を行える程度に要件を十分に理解します。
- テストする動作を把握する
- エッジケースと境界条件を特定する
- 受け入れ基準を理解する
- 要件の誤解による手戻りを防ぐ
使用するタイミング
次の場合は、要件の確認を開始します。
- 機能の説明が 2 文未満である
- 受け入れ基準が提示されていない
- 「エラーを適切に処理する」などの曖昧な表現がある
- 具体的なルールが定義されていないビジネスロジックがある
- 入出力の例が提示されていない
省略するタイミング
次の場合は、要件の確認を省略します。
- 要件に受け入れ基準が明記されている
- ユーザーが詳細なテストシナリオを提示している
- 明確なスキーマを持つ単純な CRUD である
- 明確な再現手順があるバグ修正である
- ユーザーが「要件確認を省略」または「すぐに進める」よう求めている
質問のカテゴリ
1. 機能要件
| 質問 | 目的 |
|---|---|
| 主要な正常系の動作は何ですか? | 主なテストシナリオを確立する |
| この機能で受け付ける入力は何ですか? | パラメーター検証テストを定義する |
| 期待される出力/結果は何ですか? | アサーションの期待値を定義する |
| どのような副作用が発生するべきですか? | 統合箇所を特定する |
| ビジネスルールや制約はありますか? | 検証ロジックを特定する |
2. エッジケースと境界条件
| 質問 | 目的 |
|---|---|
| null/空の入力の場合、どうなりますか? | null の処理をテストする |
| 境界値(最小/最大)はいくつですか? | 境界条件をテストする |
| 必須の依存関係が利用できない場合、どうなりますか? | エラー処理をテストする |
| 並行処理やタイミングに関する懸念はありますか? | スレッドセーフ性をテストする |
3. エラー処理
| 質問 | 目的 |
|---|---|
| どの例外を、どのタイミングでスローするべきですか? | 例外をテストする |
| 無効な入力をどのように処理するべきですか? | 検証をテストする |
| ユーザーにはどのようなエラーメッセージを表示するべきですか? | ユーザーへのフィードバックをテストする |
4. 技術面の確認
| 質問 | 目的 |
|---|---|
| 既存のインターフェース/抽象化には何がありますか? | 依存関係を把握する |
| 既存のパターンのうち、従うべきものはありますか? | コードベースとの一貫性を保つ |
| 参考にできる既存のテストはありますか? | テストスタイルの一貫性を保つ |
| 対象となるテスト範囲(ユニット/統合)は何ですか? | テストを構成する |
要件確認のワークフロー
┌─────────────────────────────────────────────────────────────────┐
│ CLARIFICATION PHASE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Analyze │───▶│ Identify │───▶│ Present │ │
│ │ Requirements │ │ Gaps │ │ Questions │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │
│ ┌──────────────┐ │ │
│ │ Collect │◀──────────┘ │
│ │ Answers │ │
│ └──────────────┘ │
│ │ │
│ ┌──────────────┐ │
│ │ Sufficient? │ │
│ └──────────────┘ │
│ │ │ │
│ YES NO │
│ │ │ │
│ ▼ └──────▶ Ask Follow-up │
│ ┌──────────────┐ │
│ │ Proceed to │ │
│ │ RED Phase │ │
│ └──────────────┘ │
│ │
│ EXIT: Requirements clear enough to define test scenarios │
└─────────────────────────────────────────────────────────────────┘
出力テンプレート
要件確認の後、理解した内容を記録します。
## Clarified Requirements for {Feature}
### Understanding Summary
{Brief summary of what the feature should do}
### Inputs and Outputs
- **Inputs**: {List with types}
- **Outputs**: {Expected results}
- **Validation Rules**: {Business rules}
### Identified Test Scenarios
| Scenario Type | Description | Priority |
|---------------|-------------|----------|
| Happy Path | {description} | High |
| Edge Case | {description} | Medium |
| Error Case | {description} | Medium |
| Boundary | {description} | Medium |
### Ready for RED Phase
最低限の質問(常に検討すること)
- 正常系で期待される動作は何ですか?
- どのような入力を受け付け、どのような出力を生成しますか?
- エラー/無効な入力をどのように処理するべきですか?
コメント
Markdown 対応