Initial commit
This commit is contained in:
240
commands/kairo-design.md
Normal file
240
commands/kairo-design.md
Normal file
@@ -0,0 +1,240 @@
|
||||
---
|
||||
description: 承認された要件定義書に基づいて、技術設計文書を生成する。データフロー図、TypeScriptインターフェース、データベーススキーマ、APIエンドポイントを含む包括的な設計を行います。
|
||||
---
|
||||
|
||||
# kairo-design
|
||||
|
||||
## 目的
|
||||
|
||||
承認された要件定義書に基づいて、技術設計文書を生成する。データフロー図、TypeScriptインターフェース、データベーススキーマ、APIエンドポイントを含む包括的な設計を行う。
|
||||
|
||||
## 前提条件
|
||||
|
||||
- `docs/spec/` に要件定義書が存在する
|
||||
- 要件がユーザによって承認されている
|
||||
|
||||
## 事前準備
|
||||
|
||||
1. **追加ルールの読み込み**
|
||||
- `docs/rule` ディレクトリが存在する場合は読み込み
|
||||
- `docs/rule/kairo` ディレクトリが存在する場合は読み込み
|
||||
- `docs/rule/kairo/design` ディレクトリが存在する場合は読み込み
|
||||
- 各ディレクトリ内のすべてのファイルを読み込み、追加ルールとして適用
|
||||
|
||||
## 実行内容
|
||||
|
||||
**【信頼性レベル指示】**:
|
||||
各項目について、元の資料(EARS要件定義書・設計文書含む)との照合状況を以下の信号でコメントしてください:
|
||||
|
||||
- 🔵 **青信号**: EARS要件定義書・設計文書を参考にしてほぼ推測していない場合
|
||||
- 🟡 **黄信号**: EARS要件定義書・設計文書から妥当な推測の場合
|
||||
- 🔴 **赤信号**: EARS要件定義書・設計文書にない推測の場合
|
||||
|
||||
2. **技術スタック定義の読み込み**
|
||||
- `docs/tech-stack.md` が存在する場合は読み込み
|
||||
- 存在しない場合は `CLAUDE.md` から技術スタックセクションを読み込み
|
||||
- どちらも存在しない場合は `.claude/commands/tech-stack.md` のデフォルト定義を使用
|
||||
|
||||
3. **要件の分析**
|
||||
- @agent-symbol-searcher で要件定義書を検索し、見つかったファイルをReadツールで読み込み
|
||||
- @agent-symbol-searcher で関連する既存設計文書を確認し、見つかったファイルをReadツールで読み込み
|
||||
- 読み込んだ技術スタック定義に基づいて技術選択を決定
|
||||
- 機能要件と非機能要件を整理する
|
||||
- システムの境界を明確にする
|
||||
|
||||
4. **アーキテクチャ設計**
|
||||
- システム全体のアーキテクチャを決定
|
||||
- フロントエンド/バックエンドの分離
|
||||
- マイクロサービスの必要性を検討
|
||||
|
||||
5. **データフロー図の作成**
|
||||
- Mermaid記法でデータフローを可視化
|
||||
- ユーザーインタラクションの流れ
|
||||
- システム間のデータの流れ
|
||||
|
||||
6. **TypeScriptインターフェースの定義**
|
||||
- NEVER 対象言語がTypeScriptで無い場合はそれに合わせたファイル形式に変更する。インタフェース定義が不要なら生成しない
|
||||
- エンティティの型定義
|
||||
- APIリクエスト/レスポンスの型定義
|
||||
- 共通型の定義
|
||||
|
||||
8. **データベーススキーマの設計**
|
||||
- NEVER 対象がデータベーススキーマが不要の場合は生成しない
|
||||
- テーブル定義
|
||||
- リレーションシップ
|
||||
- インデックス戦略
|
||||
- 正規化レベルの決定
|
||||
|
||||
9. **APIエンドポイントの設計**
|
||||
- NEVER 対象にAPIではない場合、または既存のAPIを利用する場合は生成しない
|
||||
- RESTful API設計
|
||||
- エンドポイントの命名規則
|
||||
- HTTPメソッドの適切な使用
|
||||
- リクエスト/レスポンスの構造
|
||||
|
||||
10. **ファイルの作成**
|
||||
- `docs/design/{要件名}/` ディレクトリに以下を作成:
|
||||
- `architecture.md` - アーキテクチャ概要
|
||||
- `dataflow.md` - データフロー図
|
||||
- `interfaces.ts` - TypeScript型定義
|
||||
- `database-schema.sql` - DBスキーマ
|
||||
- `api-endpoints.md` - API仕様
|
||||
|
||||
## 出力フォーマット例
|
||||
|
||||
### architecture.md
|
||||
|
||||
```markdown
|
||||
# {要件名} アーキテクチャ設計
|
||||
|
||||
## システム概要
|
||||
|
||||
{システムの概要説明}
|
||||
|
||||
## アーキテクチャパターン
|
||||
|
||||
- パターン: {選択したパターン}
|
||||
- 理由: {選択理由}
|
||||
|
||||
## コンポーネント構成
|
||||
|
||||
### フロントエンド
|
||||
|
||||
- フレームワーク: {使用フレームワーク}
|
||||
- 状態管理: {状態管理方法}
|
||||
|
||||
### バックエンド
|
||||
|
||||
- フレームワーク: {使用フレームワーク}
|
||||
- 認証方式: {認証方法}
|
||||
|
||||
### データベース
|
||||
|
||||
- DBMS: {使用するDBMS}
|
||||
- キャッシュ: {キャッシュ戦略}
|
||||
```
|
||||
|
||||
### dataflow.md
|
||||
|
||||
```markdown
|
||||
# データフロー図
|
||||
|
||||
## ユーザーインタラクションフロー
|
||||
|
||||
\`\`\`mermaid
|
||||
flowchart TD
|
||||
A[ユーザー] --> B[フロントエンド]
|
||||
B --> C[API Gateway]
|
||||
C --> D[バックエンド]
|
||||
D --> E[データベース]
|
||||
\`\`\`
|
||||
|
||||
## データ処理フロー
|
||||
|
||||
\`\`\`mermaid
|
||||
sequenceDiagram
|
||||
participant U as ユーザー
|
||||
participant F as フロントエンド
|
||||
participant B as バックエンド
|
||||
participant D as データベース
|
||||
|
||||
U->>F: アクション
|
||||
F->>B: APIリクエスト
|
||||
B->>D: クエリ実行
|
||||
D-->>B: 結果返却
|
||||
B-->>F: レスポンス
|
||||
F-->>U: 画面更新
|
||||
|
||||
\`\`\`
|
||||
```
|
||||
|
||||
### interfaces.ts
|
||||
|
||||
```typescript
|
||||
// エンティティ定義
|
||||
export interface User {
|
||||
id: string;
|
||||
email: string;
|
||||
name: string;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
|
||||
// APIリクエスト/レスポンス
|
||||
export interface CreateUserRequest {
|
||||
email: string;
|
||||
name: string;
|
||||
password: string;
|
||||
}
|
||||
|
||||
export interface ApiResponse<T> {
|
||||
success: boolean;
|
||||
data?: T;
|
||||
error?: {
|
||||
code: string;
|
||||
message: string;
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
### database-schema.sql
|
||||
|
||||
```sql
|
||||
-- ユーザーテーブル
|
||||
CREATE TABLE users (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
email VARCHAR(255) UNIQUE NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- インデックス
|
||||
CREATE INDEX idx_users_email ON users(email);
|
||||
```
|
||||
|
||||
### api-endpoints.md
|
||||
|
||||
```markdown
|
||||
# API エンドポイント仕様
|
||||
|
||||
## 認証
|
||||
|
||||
### POST /auth/login
|
||||
|
||||
リクエスト:
|
||||
\`\`\`json
|
||||
{
|
||||
"email": "user@example.com",
|
||||
"password": "password"
|
||||
}
|
||||
\`\`\`
|
||||
|
||||
レスポンス:
|
||||
\`\`\`json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"token": "jwt-token",
|
||||
"user": { ... }
|
||||
}
|
||||
}
|
||||
\`\`\`
|
||||
|
||||
## ユーザー管理
|
||||
|
||||
### GET /users/:id
|
||||
|
||||
### POST /users
|
||||
|
||||
### PUT /users/:id
|
||||
|
||||
### DELETE /users/:id
|
||||
```
|
||||
|
||||
## 実行後の確認
|
||||
|
||||
- @agent-symbol-searcher で作成した設計と既存システムとの整合性を確認
|
||||
- 作成したファイルの一覧を表示
|
||||
- 設計の主要なポイントをサマリーで表示
|
||||
- ユーザに確認を促すメッセージを表示
|
||||
Reference in New Issue
Block a user