---
name: brainstorming
description: "アイデアや要件を対話的に設計書（PBI INPUT PACKAGE）へ昇華する。Use when: 「こういう機能を作りたい」「どう実装すればいい？」「要件を整理したい」「設計を考えたい」「ブレスト」「アイデア出し」「what if」「どういうアプローチがある？」「PBI INPUT PACKAGEを作りたい」「技術調査の方向性を決めたい」。実装計画の作成にはai-dev-workflowを使用。"
---

# Brainstorming

アイデアや曖昧な要件を、対話的なドリルダウンで設計書（PBI INPUT PACKAGE）に昇華する。

## Iron Law

`NO CODE WITHOUT APPROVED DESIGN FIRST`

設計が承認されるまで、一切のコード実装を禁止する。「シンプルだから」「急いでいるから」は理由にならない。

## Common Rationalizations

| こう思ったら | 現実 |
|---|---|
| 「シンプルだから設計不要」 | シンプルなタスクほど設計が速い。省略する理由にならない |
| 「前に似たことをやったから分かる」 | コードベースは変化する。今の状態を調査しろ |
| 「ユーザーが急いでいるから質問を省略」 | 曖昧なまま進めると手戻りの方が遅い |

**核心原則**: コードを書く前に、ユーザーが本当に何を求めているかを確認する。

## Philosophy

- **1質問ずつ**: 一度に複数の質問をしない。ユーザーの回答を受けてから次の質問を決める
- **YAGNI**: 「将来必要になるかも」は削る。今必要な最小構成を設計する
- **代替案を提示**: 最初のアイデアに飛びつかない。2-3のアプローチをトレードオフ付きで提示する
- **既存パターン優先**: コードベースの既存実装を調査し、一般論ではなくプロジェクト固有のパターンに従う
- **インクリメンタル承認**: 各ステップでユーザーの承認を得てから次に進む

---

## 8ステップ プロセス

### Step 1: プロジェクトコンテキスト探索

ユーザーのアイデアを聞いた後、まずコードベースを調査する。

```text
調査対象:
□ 関連する既存コード（Grep/Globで検索）
□ 類似機能の実装パターン
□ アーキテクチャの制約
□ 関連するテストパターン
```

**出力**: 関連コードと制約の要約をユーザーに報告する。

### Step 2: 明確化質問（1つずつ）

ユーザーの意図を正確に把握するため、**1つずつ**質問する。

質問の優先順位:
1. **Why**: なぜこの機能が必要か？（ユーザーの課題・目的）
2. **Who**: 誰が使うか？（エンドユーザー、管理者、API利用者）
3. **What**: 具体的に何ができるようになるか？（受入基準）
4. **Scope**: 何をやらないか？（明示的な除外範囲）
5. **Constraints**: 技術的制約、期限、依存関係は？

**ルール**:
- 回答から次の質問を導出する（スクリプト的に全質問を投げない）
- 3-5問で十分な理解が得られたら次のステップへ進む
- ユーザーが「もう十分」と言ったら即座に次へ

### Step 3: アプローチ提案

2-3のアプローチを提示する。各アプローチには:

```markdown
### アプローチ A: {名前}

**概要**: 1-2文で説明
**トレードオフ**:
- メリット
- デメリット・リスク
**変更範囲**: {影響するファイル数・領域}
**工数目安**: 小 / 中 / 大
```

**ルール**:
- 最もシンプルなアプローチを最初に提示する
- 各アプローチの「やらないこと」を明確にする
- ユーザーが選びやすいよう推奨を示す（ただし押し付けない）

### Step 4: ユーザー承認チェックポイント

ユーザーにアプローチを選んでもらう。

```text
「アプローチ A/B/C のどれで進めますか？
また、変更・追加したい点があれば教えてください。」
```

### Step 5: 設計書ドラフト作成

選ばれたアプローチを基に、`pbi-input.md`形式の設計書を作成する。

```markdown
# PBI INPUT PACKAGE: {タイトル}

> 生成日: YYYY-MM-DD
> 生成方法: brainstormingスキル

## Context / Why
{なぜやるか。ユーザーの課題・目的}

## What（Scope）

### In scope
{やること。具体的な機能・振る舞い}

### Out of scope
{やらないこと。明示的な除外範囲}

## 受入基準
- [ ] {基準1}
- [ ] {基準2}
- [ ] {基準3}

## Notes from Refinement
{議論で決まったこと。ブレスト中の意思決定を記録}

## Estimation Evidence

### Risks
{リスク}

### Unknowns
{不明点}

### Assumptions
{前提条件}
```

### Step 6: Specレビュー（自動セルフチェック）

設計書を以下の観点で自動チェックする:

```text
チェック項目:
□ Context / Why が具体的か（「便利だから」ではなく課題ベース）
□ 受入基準が検証可能か（テストで確認できる粒度）
□ Out of scope が明確か（曖昧な境界がないか）
□ 既存アーキテクチャとの整合性
□ YAGNIに反する要素がないか（過剰な設計）
□ セキュリティ観点の漏れ（認証・認可、入力バリデーション）
```

**結果**: PASS / WARN（改善提案付き）/ FAIL（修正必須）

### Step 7: 修正サイクル

Step 6でWARN/FAILが出た場合:
1. 指摘事項をユーザーに報告
2. 修正案を提示
3. ユーザー承認を得て修正
4. 再度Step 6を実行

### Step 8: 完了と遷移

設計書がPASSしたら:

1. `docs/working/TASK-XXXX/pbi-input.md` に保存（チケット番号が分かる場合）
2. 次のステップを案内:

```text
設計書の作成が完了しました。

次のステップ:
1. `/ai-dev-workflow TASK-XXXX plan` — 実装計画を生成
2. 設計書の内容を手動で調整（必要に応じて）
3. チームメンバーと共有してフィードバックを得る
```

---

## 重要ルール

- **第1原則を遵守**: ファイル生成前にユーザー確認を取る
- **1質問ずつ**: 複数の質問を同時にしない
- **既存コード最優先**: コードベースを調査してから設計する
- **過度に複雑にしない**: ユーザーが求めている以上の設計をしない
- **対話を楽しむ**: 機械的な質問ではなく、ユーザーのアイデアを一緒に育てる姿勢

## 不採用案の記録（decision-log 連携）

Step 4 でアプローチが選択されたら、**不採用にしたアプローチを `decision-log.jsonl` の `alternatives_rejected` に構造化記録**する。

- 形式: `"alternatives_rejected": [{"option": "不採用案", "rationale": "不採用理由"}]`（option=不採用案、rationale=不採用理由）
- **必須**: high-risk / critical mode、または human decision のとき
- 任意: standard 以下（推奨だが必須化しない）
- **正本は decision-log.jsonl**。設計書（pbi-input）の `Notes from Refinement` はそこへの参照・要約に留め、不採用理由を二重管理しない
- スキーマ: `docs/working/templates/decision-log-schema.md`

> **参照解決順（導入先で必ずこの順に探す）**: 本 Skill が参照する `docs/**` は上流リポジトリ基準の相対パスであり、`install.sh --claude` / plugin（Claude marketplace）/ Codex の **3 経路とも配布対象外**（解決不可）。(1) 導入先リポジトリの同名パスを探す → (2) 見つからなければ **「正本 `<path>` を参照できなかった」と明示**し、本 Skill 内の記述を代替正本として扱い、推測で内容を補わない。**plugin root 配下の探索は `docs/**` には適用しない**: plugin が配布するのは `agents` / `commands` / `skills` / `rules` 等の定義ディレクトリのみで `docs/` を配布対象として認識せず、plugin root 配下に相当する配布物が存在しないため、plugin root 段を置いても必ず空振りする（クラス A の rules 参照が plugin root 配下で解決できるのは `rules/` が実際に配布されるからであり、この非対称を `docs/**` に持ち込まない）。


## 関連スキル

- **ai-dev-workflow**: brainstorming完了後、実装計画の生成に使用
- **skill-creator**: 新しいスキルの設計にbrainstormingを適用可能
