ディスカバリー
非構造化された利害関係者からのインプットを、ソクラテス式の問答を通じて追跡可能な要件に変換します。あなたは単なる書き起こし役ではありません。述べられたことと暗黙の前提を捉え、曖昧さにフラグを立て、/refine-storyがスプリント計画に持ち込む候補ストーリーを生成します。インプットがサポートしていないものは取り入れず、示唆しているものは根拠のある推論として取り入れ、未解決のまま残されているものは質問として残します。
インプット: $ARGUMENTS
開始前
ワークスペース内のdocs/agents/refinement.mdを読んでください。これには、動作モード、言語(en-US または pt-BR、デフォルトは en-US)、および公開パスが定義されています。存在しない場合は、/configure-refinementを要求して停止してください。引数がStatus: open map(またはStatus: mapa aberto)を持つ仕様である場合は、直接「決定マップの再開」にジャンプしてください。インプットが/meeting-minutesから発信された場合、それは既に述べられた事実と推定を分離しています。推定された合意は未確認として扱います。調査と生成される仕様は、設定されたワークスペース言語に従います。
手順
-
読み込みとトリアージ。 インプット、
CONTEXT.mdを読み込み、requirements-rigorのSkillツールを呼び出します。アンチパターン(requirements-rigor内のANTI-PATTERNS.mdを別途参照)と、常に質問を引き起こす用語をスキャンします。このスキャンがトリアージの基礎となります。テキスト量ではなく、抜粋の数で分類します。USABLE(すべての抜粋が要件を構造化している)、PARTIALLY USABLE(少なくとも1つの抜粋が要件を構造化し、少なくとも1つは構造化していない)、UNUSABLE(要件を構造化している抜粋がない)。UNUSABLE: この旨を抜粋ごとの根拠とともに述べ、3~5個の最小限の質問とその受信者(インプット提供者、ただし用語集で識別可能なドメインロールがある場合はそのロール)をリストアップし、requirements-rigor内のQUESTIONNAIRE.mdに従って質問票を作成し、/requirements-discoveryが回答とともに再実行されることをユーザーに通知し、それ以上の成果物を公開せずに停止します。無駄なストーリーは誰の助けにもなりません。PARTIAL: 処理を続行し、最終成果物は未使用の抜粋とそれぞれに不足しているもののリストで始めます。 完了条件: 分類が1行で述べられ、USABLEでない場合は抜粋ごとの根拠が続くこと。 -
幅優先マッピング。 ストーリーを生成する前に、インプット全体をスキャンします。信頼度(High、Medium、Low。Lowは、発見にフォローアップの会話が必要であることを示す)を伴うビジネスドメイン、タイプ(ビジネス、技術、エンドユーザー)と各々が主張する内容を伴う利害関係者、複雑さS、M、L、またはXL(1行で正当化)を伴うエピック。閉じたリストや測定可能な基準のない抜粋は、調査によってサイズが決まるまで部分的な処理のまま残り、エピックにはなりません。インプットが二次情報の場合、メモ取者はタイプ「source」で利害関係者テーブルに入力されます。同じ要件に対して対立する立場の2つの意見:
[CONFLICT]を追加し、両方の立場を一方的に解決せずに記録します。単一の意見によって述べられた要件は、確認が重要な場合(満たされていないロールのニーズ、非意思決定者によるスコープ決定など)に[VALIDATE WITH TEAM]を受け取ります。2つの意見が無関係なトピックを扱っている場合は、すべてにマークしないでください。ビジネスニーズと技術的制約は異なる利害関係者から発生し、異なる重みを持ちます。これらを区別してください。 完了条件: 各インプット抜粋がドメインとエピックにマッピングされるか、未活用としてリストされること。 -
質問する前に事実を検索する。 用語集、
.scratch/内の以前のストーリー、ワークスペースドキュメント、そしてコードモードではコードベースを確認します。言及されている統合は既に存在しますか?しきい値は既に実装されていますか?見つかった事実は、引用元とともに推奨される回答になります。コードなしモードでは、検索はサブエージェントなしでワークスペースファイルに制限されます。何も見つからない場合は、ラウンド1の先頭にこの旨を1行で記述します。 完了条件: 各候補質問が、ソースによって回答済みまたは未解決としてマークされていること。 -
スコープのサイズを決定する。
socratic-examinationのSkillツールを呼び出し、幅優先で調査します。対象成果物(このディスカバリーが提供するもの)、スコープ境界、競合、およびエピックサイズに影響を与える要要因。SLA、チャネル、エッジケースは深さを表し、ステップ5に延期されます。このラウンドの終了時にフロンティアが単一セッションに収まる場合は、ステップ5に進みます。かなりの霧が残っている場合(決定が予想されるが、未回答の依存関係のためにまだ定式化できない)、マップを開きます。TEMPLATE.mdに従ってStatus: open mapで仕様を公開し、定式化可能な質問ごとにissues/NN-decision-<slug>.mdに1つの未解決決定を含むファイルを作成し、別の決定に依存する場合はBlocked by:をマークし、定式化不可能な霧は「Not yet specified」に残します。決定と霧の区別は、現時点で質問を正確に定式化できるかどうかであり、回答できるかどうかではありません。霧をマッピングすることが1つのセッションの目標です。停止し、/requirements-discovery <spec-path>がセッションごとに1つの決定を解決することをユーザーに通知します。 完了条件: 質問フロンティアが単一セッションに収まるか、開かれたマップと保留中の決定ファイルを持つ仕様が存在すること。 -
調査する。 エピックごとに
socratic-examinationのラウンドを深さ方向に続けます。ロール、機能、成果、インプットによって示唆されたエッジケース、依存関係。解決されたドメイン用語は直ちにCONTEXT.mdに追加されます。どの参加者も知らない事実は[TO CONFIRM: whom](または[A CONFIRMAR: quem])を受け取り、フロンティアに残ります。 完了条件: フロンティアが空になるか、ユーザーがクローズを要求した場合。 -
統合する。
TEMPLATE.mdに従ってディスカバリー仕様を書き、skills/refine-story/TEMPLATE.mdに従ってファイルごとに1つの候補ストーリーをStatus: candidate(またはStatus: candidata)と暫定的なINVESTスコアカードとともに作成します。INVESTに合格しないストーリーはクリーンなカードになりません。[INVEST-FAIL]と解決ガイダンスとともに候補のまま残ります。宣言されていない依存関係を含めます。ストーリーが実装可能であるために必要な統合、外部サービス、アーキテクチャ上の決定であり、それぞれブロックされたストーリーと必要なアクションとペアにします。候補ストーリーのすべての行は、インプットまたは有効な[INFERENCE: base]と一致します。裏付けのない追加はゴールドプレーティングであり、削除する必要があります。 完了条件: 仕様と候補ストーリーがdocs/agents/refinement.mdで定義されたパスに存在し、最終的な免責事項が含まれていること。 -
未解決項目をルーティングする。 セッション外の受信者に対する未解決の
[TO CONFIRM]項目。requirements-rigor内のQUESTIONNAIRE.mdに従って、受信者ごとに1つの質問票を仕様と一緒に作成します。 完了条件: 受信者または質問票のない未解決の質問が残っていないこと。 -
報告する。 作成されたエピック、候補ストーリー数、未解決の競合、および次のステップ: ストーリーごとに
/refine-story、またはマップが開いている場合は/requirements-discovery <spec-path>。
決定マップの再開
引数がStatus: open mapを持つ仕様である場合:
- 仕様全体と
issues/内の保留中の決定を読みます。決定は、オープンであり、かつBlocked by:内のすべての決定が解決されている場合にブロック解除されます。 完了条件: どの決定がブロック解除されているかを把握していること。 - 決定を選択します。ユーザーによって指定されたもの、または番号順で最初のブロック解除されたもの。開始する前にファイル内の
Statusをin examinationにマークし、同時セッションがそれを取得するのを防ぎます。 完了条件: ファイルステータスが更新されていること。 socratic-examinationを使用して解決します。セッションごとに1つの決定です。調査タイプの決定は、調査ラウンドなしで外部ソースを引用して読むことによって解決されます。回答をファイルの## Answerの下に直接記録し、Statusをresolvedにマークし、仕様の「調査による決定」セクションに要約とパスを含む行を追加します。 完了条件: 決定が解決され、仕様からリンクされていること。- 回答は周囲の霧を晴らす可能性があります。新たに定式化可能になった項目は「Not yet specified」を離れ、新しい保留中の決定になります。スコープ外の項目は「Out of scope」に移動します。回答によって無効になった決定は、1行の根拠とともにクローズされます。 完了条件: 回答と矛盾する保留中の決定がなく、霧が再評価されていること。
- 保留中の決定が開いていない場合: 仕様を
Status: in progressに更新し、メインステップのステップ5に進みます。コンテキストが許せば同じセッションで、そうでなければ次のセッションで同じコマンドを使用します。 完了条件: 仕様がオープンマップステータスを離れるか、残りの決定数を報告すること。
保留中の決定の形式:
# 決定 NN: <一文での質問>
Status: <open | in examination | resolved | closed>
Blocked by: <NN, NN または none>
Type: <examination | research>
## 質問
<何を決定すべきか、なぜそれが進行を妨げるか>
## 回答
<解決時: 決定、決定者、日付>
最終通知
⚠️ この出力は分析ドラフトです。スプリントに入る前に人間によるレビューが必要です。技術的な実現可能性、コンプライアンス、およびマッピングされていない依存関係を検証してください。