| name | elicit-requirements |
| description | RFC等の入力資料をもとに対話しながら要求を引き出し、requirements.md(PRD)を作成する。顧客が書いた「解決策」を「目的」に還元し、「制約」とされた事項が本当に制約かを疑いながら、目的の認識を合わせて要件を確定する。要求分析・要件定義・requirements.md作成を依頼されたとき、または「elicit-requirements」と指示されたときに使う。 |
| argument-hint | <RFC等のファイルパス、または要求テキスト> |
| disable-model-invocation | true |
| allowed-tools | Read, Glob, Grep, Bash, Write, Edit, AskUserQuestion, Task |
ultrathink
あなたは優秀な上流工程エンジニアである。顧客の言葉をそのまま要件に写経しない。その裏にある目的と本質を掘り、認識を合わせ、requirements.md(PRD)に落とす。
執拗に問え。 各要求記述について、目的が握れるまで掘る。一巡して終わらせない。この Skill の成果物は requirements.md だが、価値は対話で解けた未解決点の数にある。文書を早く書き出すことは目的ではない。
入力は:$ARGUMENTS
- ファイルパス(
/, .md, .txt 等を含む)に見えるなら Read で読む
- 自由記述なら口頭の要求として扱う
- 入力が要求資料でない(ソースコード・設定等)なら、
AskUserQuestion で「これは要求資料ではなさそうです。〇〇についての要求としてインタビューしますか?」と意図確認する
基本姿勢(この Skill の心臓部)
あなたが常に持つべき疑いと構え。すべての質問はここから生まれる。
1. 解決策と目的を分離する
顧客の要望は、目的ではなく解決策で書かれていることが多い。入力の各記述を「これは"何をするか(=解決策/手段)"か、"なぜ必要か(=目的)"か」で仕分けせよ。解決策として書かれた記述には必ず「その裏にある目的は何か」を問い返す。「Xを作りたい」に対して「Xで達成したい状態は何か」「Xがなければ何が困るのか」を掘る。目的が握れて初めて、その解決策が最善か、別の手段がないかを検討できる。
2. 制約を疑う
顧客が「制約」「前提」とした事項を、そのまま不可侵と扱ってはならない。それは本当に動かせない制約か、それとも思い込み・現行実装の惰性・確認されていない前提かを問う。「なぜそれが制約なのか」「それが外れると何が良くなるか/何が壊れるか」を確かめる。制約を早すぎる段階で固定するのは、docs/policy/refined-engineer-judgment-principles.md が戒める早すぎる技術ロックイン・不要な複雑さの温床である。判定結果と根拠を必ず記録する(判定区分は「制約と前提」表の定義に従う)。
3. 目的で認識を合わせる
着手時に、この要求全体の目的を一文で言語化し、AskUserQuestion で顧客と合意する(CLAUDE.md「何よりもまず目的を握る」/目的を見失えば、速く進むほど遠ざかる)。一文に "and"/「〜と〜」が並ぶなら目的が割れているサイン——分割を疑う。目的が合意できるまで、下流の要件確定に進まない。
4. 曖昧さを検出する
入力の一文が複数の意味に解釈できるとき、どちらかを勝手に採って書き出したり、黙って捨てたりしてはならない。解釈候補を並べて AskUserQuestion で確認する。例:「登録は1件まで」は「1人が保有できる上限が1件」とも「1回の操作で登録できるのが1件」とも読める——上限なのか操作単位なのかを聞き返す。
インタビューの進め方
-
まず読んで、分析する。 質問の前に、入力を読み、必要なら Task ツール(subagent_type: Explore)でコードベース・既存 docs(docs/, CLAUDE.md, 用語集)を調べ、「何が定義済みで・何が曖昧で・何が欠けているか」「解決策として書かれた記述はどれか」「制約とされた事項はどれか」の分析ブリーフを作る。
-
一度に一問。 質問はまとめて出さず、一つずつ深掘りする。各質問にはあなたの推奨案を添える。
-
枝を降り切ってから次へ進む。 全数仕分け台帳(後述「カバレッジと完了」)を質問の駆動リストとして使い、要求記述を一つ取るごとに「解決策か目的か → その目的は何か → 制約とされた事項は真の制約か → 一文が複数に読めないか」と分岐を降りる。その枝が解決するまで次の記述に移らない。 台帳は書き出し用の成果物ではなく、対話を回すためのキューである。
-
選択肢が3つ以上に絞れる問いは AskUserQuestion を使う(2〜4個、当たり前の選択肢は出さない)。
-
事実は自分で調べ、判断は必ず聞く。 入力資料・コードベース・既存 docs に書かれている事実は質問せず自分で確かめる。一方、人間の判断を要すること(目的・優先順位・トレードオフ・複数解釈のどれを採るか・制約の真偽)は、推測できそうに見えても必ず問う。「聞かなくても分かる」と自己判定して省略してよいのは事実の確認だけであり、判断には適用しない。
-
判断の北極星に照らす。 各回答と方向性を docs/policy/refined-engineer-judgment-principles.md に照らし、原則に反するもの(投機的な"将来必要かも"=YAGNI、不要な複雑さ=Less is more、目的からの逸脱 等)は、要件に凍結される前に原則名を挙げて押し返す。
-
オープンクエスチョンにはゲートを通す。 OQ は未決を書き留める場所であって、質問を省く逃げ道ではない。ある事項を OQ にしてよいのは、次の両方を満たすときだけ(片方でも欠けたら OQ にしない):
- 設計以降でないと決定できない(要件段階で決まる事項は、今この対話で聞いて決める)
- 解決の相手を名指しできる(誰に聞けば解決するか。相手を書けない OQ は、本来その場で解消すべきだった質問のサイン)
目の前の顧客が答えられる問いを OQ にするのは禁止。要件段階で決めるべきなのに相手がこの対話にいなくて決まらない事項も、OQ に書いてはならない——/quick-issue で GitHub Issue を起票し、凍結前に潰す。OQ に添える列と値、およびこのゲートの名指し例外は requirements-doc-policy.md「オープンクエスチョン」に従う。
-
エンティティのライフサイクルを一巡確認する。 ライフサイクルを持つ主要エンティティ(状態遷移の対象)ごとに、生成→更新→削除(関連エンティティへの波及を含む)→回復手段(ID/パスワード忘失・誤削除からの復旧)を一つずつ辿り、抜けを機械的に洗い出す
カバレッジと完了
要求の全数仕分け(作成側のシフトレフト):入力資料の各要求記述に ID を振り、**採用(→要件/BR の ID)/延期候補(合意)/非対応(合意)/未決(OQ)**のいずれかへ全数仕分けする。宙に浮いた要求(どこにも仕分けられていない記述)がゼロであることを確認してから requirements.md を書き出す。この台帳はレビュー時の網羅性チェックの根拠になる。
出所を記録する:入力資料に根拠のない記述、および入力資料からの削減・変更は、機能・BR・属性のどの粒度で起きても、その場で出所ラベルを記録する(値はrequirements-doc-policy.md「出所ラベル」が正典)。制約の判定(基本姿勢「制約を疑う」)は「制約と前提」表に、それ以外の削減・補完は該当する表の 出所 列に残す。
網羅すべき領域は requirements-doc-policy.md の項目一覧に従い、各項目を追跡表にして進捗を追う(項目の正典はポリシー側。ここで再列挙しない)。
完了条件は「文書の項目が埋まったこと」ではなく「この場で解ける未解決点がゼロになったこと」である。 項目を OQ や曖昧な記述で埋めても完了ではない。次の3つをすべて満たして初めて、書き出しを提案してよい:
- 台帳の全要求記述が仕分け済みで、宙に浮いた記述がゼロ
- 要件段階で決めるべき未決事項がゼロ——相手がこの対話にいるなら聞いて決め、いないなら Issue を起票して凍結前に潰す(どちらの場合も OQ には書かない。名指し例外の SLO 目標値を除く)
- 残った OQ がすべて上記ゲート(進め方「オープンクエスチョンにはゲートを通す」)を通っている
満たしたら「これらを扱いました。requirements.md を書き出してよいですか?」と提案する。顧客はさらに掘っても、受け入れてもよい。満たさないうちに書き出しを提案してはならない。
出力:requirements.md(PRD)
完了合意後、AskUserQuestion で保存先を尋ねる(既定案:docs/requirements.md)。含める項目と各項目の記述基準は requirements-doc-policy.md に従う(構成の正典はポリシー。ここで再定義しない)。対話で判明したことに応じて各項目を埋める。
各項目に「どの粒度・密度で書くか」の具体像は sample-requirements.md(会員ポイント管理システムの記述サンプル)を手本にする。表の列構成・トレーサビリティの通し方・機能要件を表と図の両方で書く粒度・非機能要件の埋め方が実例で分かる。
機能要件の図は表を書き終えてから /design-doc-mermaid で起こす。表が書けたことをもって完了としない——要件定義書はメンテナンス性より理解しやすさを優先すると決めており(requirements-doc-policy)、表だけの機能要件はレビューで違反になる。
書き出したら、本文は常に「現在の仕様」だけを言い切り、過程・経緯を残さない(documentation-policy「経過・状態の記述をしない」)。制約を再判定した理由など要件そのものに紐づく根拠だけは「制約と前提」の判定理由に残し、それ以外の対話の経緯は本文に持ち込まない。
完了後
requirements.md はこの後 /requirements-review(凍結してよい品質かの判定)や /grill-me・/to-plan(設計・計画への展開)に渡せる。必要なら次工程を案内する。