# Functional Design

> プロダクト要求定義書（docs/product-requirements.md）から機能設計書（docs/functional-design.md）を作成する。 「機能設計して」「設計書を作って」「PRDを設計に落として」「コンポーネント設計」「データモデル設計」 「シーケンス図を書いて」「ER図を作って」などの依頼時に発火。 システム構成図・データモデル・コンポーネント責務・ユースケースフロー・エラー設計を出力。

- Skill: `majiayu000/functional-design` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add majiayu000/functional-design`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/functional-design/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/functional-design

---


# Functional Design Skill

PRD（何を作るか）を設計（どう実現するか）に落とし込む。

## 入出力

| 種別 | パス |
|------|------|
| 入力 | `docs/product-requirements.md`（必須） |
| 入力 | `docs/functional-design.md`（既存あれば優先） |
| 出力 | `docs/functional-design.md` |

## 参照ファイル

| ファイル | 読むタイミング |
|----------|----------------|
| `./template.md` | 新規作成時のベース |
| `./reference.md` | 必須項目・レビュー観点の確認時 |

## 手順

### 1. PRD読解
```
docs/product-requirements.md を読み、以下を抽出：
- P0（MVP）機能の要件・受け入れ条件
- ターゲットユーザーのワークフロー
- 成功指標（KPI）
- 非機能要件（あれば）
```

### 2. 既存設計の確認
- `docs/functional-design.md` が存在する？
  - **Yes** → 構造を維持して差分更新
  - **No** → `./template.md` をコピーして新規作成

### 3. 設計項目の作成

P0機能ごとに以下を埋める（詳細は `./reference.md` 参照）：

| 項目 | 形式 | 必須 |
|------|------|------|
| システム構成図 | Mermaid graph TB | ✅ |
| データモデル | TypeScript interface | ✅ |
| ER図 | Mermaid erDiagram | 複数エンティティ時 |
| コンポーネント設計 | 責務・インターフェース | ✅ |
| ユースケースフロー | Mermaid sequenceDiagram | ✅ |
| エラーハンドリング | 表形式 | ✅ |
| アルゴリズム設計 | 計算式・実装例 | 複雑ロジック時 |
| API設計 | エンドポイント定義 | Web API時 |
| 画面遷移 | Mermaid stateDiagram | UI有時 |

### 4. PRDとのトレーサビリティ確保
- 各設計セクションに「対応するPRD機能」を明記
- 例: `## 診断機能の設計（PRD: 1. 診断）`

### 5. セルフレビュー

`./reference.md` のレビュー観点でチェック：
- [ ] PRD P0要件をすべてカバーしているか
- [ ] データモデルに型・制約・nullable が明記されているか
- [ ] Mermaidに実コンポーネント名が入っているか
- [ ] エラーハンドリングが網羅されているか

### 6. 出力
`docs/functional-design.md` を作成/更新し、変更点をサマリ提示

## 発火例
- 「機能設計書を作って」
- 「PRDを設計に落として」
- 「データモデルを定義して」
- 「コンポーネント設計をお願い」
- 「診断機能のシーケンス図を書いて」

## 境界（やらないこと）
- **要件定義** → `prd-writing` スキル
- **技術選定の深い根拠** → `architecture-design` スキル
- **実装** → 開発タスクとして別途実施

