Files
gh-masseater-claude-code-pl…/commands/define-requirements.md
2025-11-30 08:39:29 +08:00

8.0 KiB
Raw Permalink Blame History

argument-hint, description, allowed-tools
argument-hint description allowed-tools
<タスク名> 機能要件と非機能要件の詳細仕様を作成
Read
Write
Task
AskUserQuestion

詳細要件仕様書を作成します

タスクの機能要件と非機能要件を詳細化し、specification.md を生成します。

【対象タスク名】 $ARGUMENTS

実行手順

0. ステアリングドキュメントの読み込み

以下のステアリングドキュメントを読み込み、プロジェクトのコンテキストを把握:

  • specs/_steering/product.md - プロダクト方針、ビジネス目標
  • specs/_steering/tech.md - 技術標準
  • specs/_steering/structure.md - プロジェクト構造

ステアリングドキュメントが存在しない場合:

  • 警告メッセージを表示: 「⚠️ ステアリングドキュメントが見つかりません。先に /sdd:steering を実行することを推奨します。」

1. タスクディレクトリの確認

タスク名が指定されている場合:

  • specs/[taskname]/ ディレクトリの存在を確認
  • specs/[taskname]/overview.md が存在するか確認

タスク名が指定されていない場合:

  • specs/ ディレクトリ内の利用可能なタスクをリスト表示
  • AskUserQuestionツールを使用してどのタスクについて作業するかユーザーに選択を求める

2. 既存ドキュメントの読み込み

以下のドキュメントを読み込み、要件定義に必要な情報を抽出:

  • specs/[taskname]/overview.md - プロジェクト概要、主要機能
  • specs/_steering/product.md - プロダクトの Non-Goals、Business Objectives
  • specs/_steering/tech.md - 技術的制約

3. 非機能要件の確認

以下の非機能要件について、ユーザーに必要かどうかを確認してください:

AskUserQuestionツールを使用して、以下を確認:

以下の非機能要件について、このタスクで必要なものを選択してください(複数選択可):

□ パフォーマンス要件(レスポンスタイム、同時接続数、データ処理量など)
□ 可用性要件(稼働率目標、ダウンタイム許容範囲、障害復旧時間など)
□ 保守性要件(コード品質基準、ドキュメント要件、技術的負債の管理など)
□ ユーザビリティ要件UI/UX要件、アクセシビリティ、多言語対応など
□ 制約条件(技術的制約、ビジネス的制約、法的・規制上の制約など)
□ テスト戦略(テストの種類、カバレッジ目標など)
□ 開発環境(必要なツール、セットアップ手順など)

注: セキュリティ要件は常に含まれます

4. specification.mdの生成

specs/[taskname]/specification.md を生成:

# 詳細仕様書

## 機能要件

[overview.mdの主要機能を詳細化]

### 機能1: [機能名]
- **概要**: [1-2行で機能を説明]
- **優先度**: High/Medium/Low
- **実装Phase**: Phase Nplan-phasesで決定後に追加
- **入出力定義**:
  - **入力**:
    - パラメータ名: 型、説明
    - パラメータ名: 型、説明
  - **出力**:
    - レスポンス形式
    - 成功時の戻り値
    - エラー時の戻り値
- **制約・注意事項**(必要な場合のみ):
  - [制約事項や注意点]

### 機能2: [機能名]
...

## 非機能要件

### セキュリティ(必須)
- **認証・認可要件**: [steering/tech.mdから関連する標準を参照]
- **データ暗号化**: [要件]
- **監査ログ**: [要件]
- **セキュリティ標準**: [steering/tech.mdのセキュリティ要件を参照]

[ユーザーが選択した非機能要件のみ以下に含める]

### パフォーマンス(選択時のみ)
- **レスポンスタイム要件**: [具体的な数値]
- **同時接続数**: [具体的な数値]
- **データ処理量**: [具体的な数値]
- **スループット目標**: [具体的な数値]

### 可用性(選択時のみ)
- **稼働率目標**: [例: 99.9%]
- **ダウンタイム許容範囲**: [例: 月間43分以内]
- **障害復旧時間**: [RTO/RPO]
- **監視要件**: [監視項目]

### 保守性(選択時のみ)
- **コード品質基準**: [steering/tech.mdの品質標準を参照]
- **ドキュメント要件**: [要求されるドキュメント]
- **技術的負債の管理**: [方針]
- **リファクタリング方針**: [方針]

### ユーザビリティ(選択時のみ)
- **UI/UX要件**: [要件]
- **アクセシビリティ**: [WCAG準拠レベルなど]
- **多言語対応**: [対応言語]
- **レスポンシブデザイン**: [対応デバイス]

## データ要件

### データモデル概要
[主要なデータエンティティとその関係]

### データ保持期間
[データ種別ごとの保持期間]

### データ移行要件
[既存データからの移行が必要な場合]

## インターフェース要件

### 外部システム連携
[連携する外部システム]

### API仕様概要
[APIの概要、詳細はtechnical-details.mdで定義]

### データフォーマット
[JSON, XML, CSVなど]

## 制約条件(選択時のみ)

### 技術的制約
[steering/tech.mdから関連する制約を参照]

### ビジネス的制約
[steering/product.mdから関連する制約を参照]

### 法的・規制上の制約
[GDPR, 個人情報保護法など]

生成時の注意点:

  • ⚠️ 重要: 詳細であれば詳細であるほど良いわけではない。必要な部分だけを必要なだけ書くこと
  • ⚠️ 重要: 推測される開発期間、工数、見積もり時間などは一切記載しないこと
  • ⚠️ 重要: 「将来的に必要になる」「今後〜が必要」といった適当な推測に基づいた記述は禁止
  • 不明なところは勝手に決めずに「不明」と明記し、複数の案案A、案B、案Cなどを記述すること
  • ステアリングドキュメントの情報を積極的に参照・活用すること
  • 実装Phase番号は空欄にするplan-phasesで決定後に追加

5. 完了報告

✅ 詳細要件仕様書を作成しました
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📍 作成先: specs/[taskname]/specification.md
📝 機能要件: [N]件

💡 次のアクション:
   - 技術詳細化: `/sdd:define-technical [taskname]`
   - 不明点の明確化: `/sdd:clarify-spec [taskname]`
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

注意事項

  • ⚠️ 重要: ステアリングドキュメントを必ず参照し、プロジェクトの方針や標準に準拠すること
  • 不明なところは勝手に決めずに「不明」と明記すること
  • ユーザーが選択しなかった非機能要件セクションは含めないこと
  • specification.mdは機能要件の詳細を記述する場所技術実装の詳細はtechnical-details.mdで記述

内部品質チェック

重要: 以下のチェックはコマンド内部で実施し、生成されるspecファイルには結果を記載しません

ステアリングドキュメントレビュー(内部処理)

ドキュメント生成後、内部的にステアリングドキュメントとの整合性を確認:

  • product.mdのビジネス目標・ターゲットユーザーとの整合性
  • tech.mdのセキュリティ要件との整合性
  • structure.mdのプロジェクト構造との整合性

問題がある場合のみユーザーに修正を促す。準拠している場合は何も出力しない。

矛盾チェック(内部処理)

ドキュメント生成後、内部的に仕様書間の矛盾を確認:

  • overview.mdとspecification.mdの機能定義の整合性
  • データ要件と機能要件の整合性

矛盾がある場合のみユーザーに警告を表示。問題がなければ何も出力しない。