name: design-spec description: >- 明確化された要件から技術設計仕様を作成する時に使用する。 ユーザーと対話しながら、技術スタック・アーキテクチャ・データモデル・インターフェース・ テスト戦略・トレードオフを詰める。メインエージェントが使用し、define-reqs の後、plan-tasks の前に実行する。 user-invocable: false allowed-tools: [Read, Glob, Grep, AskUserQuestion]
技術設計ワークフロー
明確化された要件を技術設計仕様へ変換する対話プロセスを定義する。 メインエージェントがユーザーと対話しながら設計を詰めるために使用する。
準備
対象のフィーチャー名を確認し、要件定義書の存在を確認する。
.artifacts/features/<feature>/requirements.mdが 存在する 場合: フェーズ 1 へ進む。- 存在しない 場合: ユーザーへ通知し、先に
define-reqsを実行するか、要件をインラインで提供するよう案内する。
フェーズ 1: 現状分析
.artifacts/features/<feature>/requirements.mdを読み込む。- 既存コードベースがある場合は
Grep/Globでアーキテクチャ・パターン・規約を把握する。 .artifacts/project_architecture.mdが存在する場合は読み込み、既存構造との整合を取る。.artifacts/research/*.mdが存在する場合は読み込み、調査結果を設計へ反映する。
フェーズ 2: 設計
仕様書で以下の領域を扱う。
- 技術スタック: 言語・フレームワーク・外部サービスの選定と根拠。
- アーキテクチャ: 全体構造・データフロー・提案するディレクトリ構成。
- データモデル / スキーマ: エンティティ・型定義・バリデーションルール。
- インターフェース仕様: API エンドポイント・関数シグネチャ・状態管理方針。
- UI/UX コンポーネント: 主要コンポーネント・画面遷移・インタラクション(該当する場合)。
- テスト戦略: 単体テスト対象・ハッピーパス / エラーパスの定義・テストコマンド例。
- 非機能要件: セキュリティ・パフォーマンス・スケーラビリティ・保守性。
- トレードオフ分析: 重要な設計決定ごとにメリット・デメリット・代替案・決定根拠を記録する。
曖昧な点や不足要件があれば、書き出し前に AskUserQuestion で確認する。
アーキテクチャ原則
- モジュール性と関心の分離: 単一責任・高凝集 / 低結合・明確なインターフェース。
- スケーラビリティ: 水平スケーリング能力・可能な限りステートレス設計。
- 保守性: 明確なコード構成・一貫したパターン・テストのしやすさ。
- セキュリティ: セキュア・バイ・デフォルト・最小権限の原則・監査証跡。
- パフォーマンス: ネットワークリクエストの最小化・適切なキャッシュ・遅延ロード。
検出すべきアンチパターン
設計中に以下を検出した場合はフラグを立てて対処する。
- Big Ball of Mud: 明確な構造がない。
- Golden Hammer: 同じ解決策をあらゆる問題に適用する。
- Premature Optimization: 計測なしに最適化する。
- Tight Coupling: コンポーネント間の過度な依存。
- God Object: 1 つのクラス / モジュールがすべてを担う。
- Analysis Paralysis: 過剰な計画で実装が進まない。
フェーズ 3: 完了の扱い
設計が固まった時点で本スキルの責務は完了とする。成果物ファイルへの書き出し・ユーザーへの報告・ 次フェーズへの案内は本スキルでは行わない。これらは呼び出し元(コマンドまたはエージェント定義)が担う。
重要な設計決定(技術選定・アーキテクチャ分割・データモデル)について、以下の順で ステップごとに思考を展開すること。最終出力には含めず、内部推論として用いる。
- 要件との対応: requirements.md のどの受け入れ基準・非機能要件に応える決定か。
- 既存資産との整合: project_architecture.md や既存コードの慣習と矛盾しないか。
- 代替案の列挙: 候補となる選択肢を 2〜3 個挙げ、それぞれのメリット・デメリットを評価する。
- トレードオフの評価: 性能・保守性・実装コスト・将来拡張性のバランスを判定する。
- 決定の確定: 採用案と却下案を明示し、判断根拠を一文で要約する。
- 未決事項の特定: 決め切れない論点があれば
AskUserQuestionで確認すべき項目として整理する。
- 未決の前提を明示する: 要件で「未決」のままの項目は、設計上の前提として明示的に記録する。
- 現在の要件にだけ応える: 過剰設計を避ける。投機的な将来拡張は考慮しない。
- 判断根拠を残す: 重要な決定にはメリット・デメリット・代替案・選定理由を併記する。