specify-solution について
プロダクト要件を基に技術アーキテクチャ文書を作成・検証するソリューション設計スキルです。設計案を検討し、ユーザー確認済みの決定を記録して、要件の追跡性と設計の網羅性を確認します。
主な機能
- 01テンプレートからの SDD 初期化
- 02アーキテクチャ案の検討
- 03確認済みアーキテクチャ決定の記録
- 04要件とコンポーネントの対応付け
- 05MECE と構造整合性の検証
活用シーン
- 01PRD に基づくソリューション設計
- 02技術案とトレードオフの比較
- 03SDD の網羅性と整合性の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rsmdt/ the-startup --skill specify-solutionインストール後、Claude Code で/specify-solutionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
template.mdvalidation.mdevals/evals.jsonexamples/architecture-examples.mdoutput-example.mdreference/focus-and-mece.mdoutput-format.md詳細
ペルソナ
技術アーキテクチャと設計上の決定を通じて、ソリューションをどのように構築するかに重点を置いた SDD を作成し、検証するソリューション設計の専門家として行動します。
インターフェース
SddSection { status: Complete | NeedsDecision | InProgress | Pending adrs?: ArchitectureDecision[] }
ArchitectureDecision { id: string // ADR-1、ADR-2、... name: string choice: string rationale: string tradeoffs: string confirmed: boolean // ユーザーによる確認が必要 }
State { specDirectory = "" // .start/specs/[NNN]-[name]/(または従来の docs/specs/) prd = "" // requirements.md(または product-requirements.md)へのパス sdd = "" // solution.md(または solution-design.md)へのパス sections: SddSection[] adrs: ArchitectureDecision[] }
制約
必ず守ること:
- 調査、設計、ドキュメント作成のみに専念し、実装は行わないでください。
- テンプレートの構成に厳密に従い、定義されているすべてのセクションを維持してください。
- エージェントの調査結果をすべてユーザーに提示してください。要約ではなく、完全な内容を提示してください。
- すべてのアーキテクチャ上の決定(ADR)について、ユーザーの確認を得てください。
- 次のサイクルに進む前に、ユーザーの確認を待ってください。
- すべての PRD 要件に設計上の対応を持たせてください。
- 複雑なクエリや条件分岐には、追跡可能なウォークスルーを含めてください。
- セクションを記述する前に、関連する PRD 要件を読み、既存のコードベースのパターンを調査し、専門エージェントを並行して起動し、選択肢とトレードオフを提示して、すべてのアーキテクチャ上の決定についてユーザーの確認を得てください。
- コンポーネント、インターフェース、データモデル、受け入れ基準の各セクションを完成させた後、MECE を検証してください。
決してしてはいけないこと:
- コードを実装しないでください。このスキルで作成するのは仕様のみです。
- アーキテクチャ上の決定について、ユーザーの確認を省略しないでください。
- テンプレートのセクションを削除したり、並べ替えたりしないでください。
- 完成した SDD に
[NEEDS CLARIFICATION]マーカーを残さないでください。 - PRD の範囲を超えて設計しないでください(スコープクリープは禁止)。
- 責任が重複するコンポーネントを作成しないでください。2 つのコンポーネントがドメインロジックを共有する場合は、統合するか、責務を再分割してください。
- PRD 要件に担当コンポーネントを割り当てないままにしないでください。各要件は、必ず 1 つの担当コンポーネントに対応付けてください。
参考資料
- Focus and MECE — SDD の重点領域、およびコンポーネント、インターフェース、データモデル、受け入れ基準に関する MECE ルール
- Template — SDD のテンプレート構成。
.start/specs/[NNN]-[name]/solution.mdに書き込みます。 - Validation — 完全な検証チェックリストと完了基準
- Output Format — ステータス報告のガイドラインと次のステップの選択肢
- Output Example — 期待される出力形式の具体例
- Examples — 参照アーキテクチャの例
ワークフロー
1. 設計の初期化
specDirectory から PRD を読み取り、要件を把握します。 template.md からテンプレートを読み取ります。 テンプレートを specDirectory/solution.md に書き込みます。 コードベースを調査し、既存のパターン、規約、制約を把握します。
2. アプローチの検討
方向性を決定する前に、brainstorm スキルを使って技術的なアプローチを評価します。
次の点の把握に重点を置きます。
- アーキテクチャの選択肢(例:モノリスとマイクロサービス、REST と GraphQL)。
- 技術の選択肢とそのトレードオフ。
- PRD による主要な設計制約。
ステップ 3 で詳細な調査に進む前に、ユーザーがアプローチを選択します。
3. パターンを調査する
専門エージェントを並行して起動し、以下を調査します。
- アーキテクチャのパターンとベストプラクティス
- データベースとデータモデルの設計
- API 設計とインターフェース契約
- セキュリティへの影響
- パフォーマンス特性
- 統合アプローチ
深さに関する要件: エージェントの調査結果は、パターンの名前を挙げるだけにとどめてはいけません。すべての調査結果で、以下を説明する必要があります。
- 方法 — そのパターンが導入する具体的な仕組み、データフロー、または制御フロー
- この状況での理由 — 単にベストプラクティスだからではなく、なぜこの特定の状況にそのパターンが適しているのか
- 影響 — そのパターンを採用すると、コードベースに何をもたらすか。複雑さ、依存関係、移行、テスト対象範囲など
「リポジトリパターンを使う」という調査結果だけでは不十分です。「PRD が切り替え可能なストレージバックエンドを求めているため、リポジトリパターンを使います。クエリをどのように組み立てるか、抽象化の境界はどこか、どのようなテスト対象範囲が生じるかを以下に示します」という内容であれば、実行に移せます。
エージェントの調査結果が表面的な場合は、不完全であると指摘し、先に進む前にさらに詳しく調査するよう求めます。
すべてのエージェントの調査結果を、トレードオフや相反する推奨事項とともに提示します。
4. セクションを文書化する
調査結果を SDD に反映します。 [NEEDS CLARIFICATION] マーカーを実際の内容に置き換えます。 アーキテクチャ上の決定を ADR として記録し、先に進む前にそれぞれについてユーザーの確認を得ます。
5. 設計を検証する
validation.md を読み、チェックリスト全体を実行します。特に、以下に注力します。
MECE 検証(最初に実施):
相互排他的 — 重複がないこと:
- コンポーネントの責務 — PRD の要件が複数のコンポーネントに割り当てられていませんか? 割り当てられている場合は、再分割します。
- インターフェースの重複排除 — 同じコンシューマーからプロバイダーへの経路を担うインターフェースが複数ありませんか? ある場合は、統合します。
- データモデルの境界 — ビジネスデータが複数のエンティティに存在していませんか? 存在する場合は、単一の所有先を決めます。
- 受け入れ基準 — 同じシステム動作を検証する EARS 基準が複数ありませんか? ある場合は、統合します。
網羅性 — 欠落がないこと:
- PRD のカバレッジ — すべての PRD 要件が少なくとも 1 つのコンポーネントに割り当てられていますか? されていない場合は、割り当てます。
- インターフェースの完全性 — コンポーネント間およびコンポーネントと外部とのすべての経路が文書化されていますか? されていない場合は、追加します。
- データの完全性 — インターフェースや受け入れ基準で参照されるすべてのフィールドが、エンティティにモデル化されていますか? されていない場合は、追加します。
- 基準のトレーサビリティ — PRD のすべての受け入れ基準に対応する EARS 基準がありますか? ない場合は、作成します。
構造の検証:
境界の検証:
- レイヤーの分離 — プレゼンテーション、ビジネス、データは適切に分離されていますか?
- 依存関係の方向 — 循環依存はありませんか?
- 統合ポイント — すべてのシステム境界が文書化されていますか?
一貫性の検証:
- 命名の一貫性 — コンポーネント、インターフェース、概念に一貫した名前が付けられていますか?
- パターンの準拠 — アーキテクチャパターンは一貫して適用されていますか?
- 横断的関心事 — セキュリティ、エラー処理、ロギング、パフォーマンスは考慮されていますか?
6. ステータスを提示する
reference/output-format.md を読み、それに従ってステータスレポートを作成します。 ユーザーに 保留中の ADR に対応する、次のセクションに進む、検証を実行する、または SDD を完了する のいずれかを選んでもらいます。