Claude Code Plugins

Community-maintained marketplace

Feedback

|

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name design-planning
description ソフトウェア設計計画スキル。要件分析、アーキテクチャ設計、API設計、データベース設計、 実装ロードマップの作成を体系的に行います。Clean Architectureに準拠した設計を サブエージェントとの並列作業で効率的に実施します。

Design Planning Skill

ソフトウェアプロジェクトの包括的な設計計画を作成するスキル。

対応領域

領域 フォーカス 詳細ガイド
Architecture システム構成, レイヤー構造, コンポーネント設計 ./agents/architecture-designer.md
API RESTful API, エンドポイント定義, リクエスト/レスポンス仕様 ./agents/api-designer.md
Database ER図, テーブル設計, マイグレーション計画 ./agents/database-designer.md

判断フロー

設計が必要な状況は?
│
├─ 新機能の包括的設計 ─────────────→ ✅ サブエージェント並列設計
│
├─ 複数レイヤーにまたがる変更 ────→ ✅ サブエージェント並列設計
│
├─ 単一領域の設計(APIのみ等)───→ ✅ 直接設計(該当領域のみ)
│
├─ 小規模変更(1カラム追加等)───→ ✅ 直接設計(軽量)
│
├─ バグ修正・スタイル修正 ────────→ ❌ 設計不要
│
└─ ドキュメント更新のみ ──────────→ ❌ 設計不要

サブエージェント並列設計

大規模な設計が必要な場合、専門サブエージェントを並列起動。

┌──────────────────────────────────────────────────────────────┐
│ 1. 要件分析フェーズ                                          │
│    └── 機能要件・非機能要件を整理                            │
├──────────────────────────────────────────────────────────────┤
│ 2. 並列設計フェーズ(サブエージェント起動)                  │
│    ├── Architecture Designer → システム構成の設計            │
│    ├── API Designer         → API仕様の設計                  │
│    └── Database Designer    → データモデルの設計             │
├──────────────────────────────────────────────────────────────┤
│ 3. 統合フェーズ                                              │
│    └── 各設計の整合性確認と調整                              │
├──────────────────────────────────────────────────────────────┤
│ 4. 計画策定フェーズ                                          │
│    └── 実装ロードマップの作成                                │
└──────────────────────────────────────────────────────────────┘

設計ワークフロー(5ステップ)

    ┌───────────────────────────────────────────────────────┐
    │                                                       │
    ▼                                                       │
┌────────┐   ┌────────┐   ┌────────┐   ┌────────┐         │
│要件    │──→│アーキ  │──→│詳細    │──→│実装    │         │
│分析    │   │テクチャ│   │設計    │   │計画    │         │
└────────┘   └────────┘   └────────┘   └────────┘         │
                                            │              │
                                            ▼              │
                                       ┌────────┐         │
                                       │レビュー│─────────┘
                                       │& 承認  │
                                       └────────┘

Step 1: 要件分析

整理する項目:

カテゴリ 内容
機能要件 ユーザーストーリー, 必須/追加機能, 入出力
非機能要件 パフォーマンス, セキュリティ, スケーラビリティ
制約条件 技術的制約, ビジネス制約, スケジュール

成果物例:

### 機能要件
- FR-001: [機能名] - [説明]

### 非機能要件
- NFR-001: [要件名] - [説明]

### 制約条件
- CON-001: [制約名] - [説明]

Step 2: アーキテクチャ設計

設計項目:

項目 内容
システム構成 コンポーネント特定, 関係定義, 外部連携
レイヤー構造 API層, UseCase層, Domain層, Infrastructure層
技術選定 フレームワーク, ライブラリ, インフラ

成果物例:

### レイヤー構造
| レイヤー | 責務 | 主要コンポーネント |
|---------|------|------------------|
| API | HTTPリクエスト処理 | Router, Controller |
| UseCase | ビジネスロジック調整 | Service, UseCase |
| Domain | ビジネスルール | Entity, ValueObject |
| Infrastructure | 外部システム連携 | Repository, Client |

Step 3: 詳細設計

設計項目:

項目 内容
API設計 エンドポイント, リクエスト/レスポンス, エラー
DB設計 テーブル定義, リレーション, インデックス
クラス設計 インターフェース, クラス図, シーケンス図

API設計例:

### POST /api/v1/users
**Request**:
{ "name": "string", "email": "string" }

**Response** (201):
{ "id": 1, "name": "string", "email": "string" }

DB設計例:

### users テーブル
| カラム | 型 | NULL | 説明 |
|--------|-----|------|------|
| id | SERIAL | NO | 主キー |
| name | VARCHAR(100) | NO | ユーザー名 |
| email | VARCHAR(255) | NO | メールアドレス |

Step 4: 実装計画

策定項目:

項目 内容
タスク分解 設計→実装タスク, 依存関係, 優先順位
見積もり 工数, リスク特定
マイルストーン フェーズ分け, デモポイント

成果物例:

### Phase 1: 基盤構築
- [ ] DBスキーマ作成
- [ ] エンティティ・リポジトリ実装

### Phase 2: API実装
- [ ] エンドポイント実装
- [ ] バリデーション実装

Step 5: レビューと承認

  • セルフレビュー(チェックリスト確認)
  • レビュー依頼(観点を明示)
  • フィードバック反映

設計パターン

Clean Architecture

┌─────────────────────────────────────────────┐
│                   API層                      │
│  (Router, Controller, Request/Response)      │
├─────────────────────────────────────────────┤
│                UseCase層                     │
│      (Service, UseCase, Input/Output)        │
├─────────────────────────────────────────────┤
│                Domain層                      │
│    (Entity, ValueObject, DomainService)      │
├─────────────────────────────────────────────┤
│            Infrastructure層                  │
│  (Repository実装, ExternalClient, ORM)       │
└─────────────────────────────────────────────┘

依存関係ルール:

  • 上位層 → 下位層への依存はOK
  • 下位層 → 上位層への依存はNG
  • Domain層は他のどの層にも依存しない

Repository Pattern

# Domain層: インターフェース定義
class UserRepositoryInterface(ABC):
    @abstractmethod
    def find_by_id(self, user_id: int) -> Optional[User]:
        pass

# Infrastructure層: 実装
class SQLAlchemyUserRepository(UserRepositoryInterface):
    def find_by_id(self, user_id: int) -> Optional[User]:
        model = self._session.query(UserModel).filter(
            UserModel.id == user_id
        ).first()
        return self._to_entity(model) if model else None

プロジェクト固有ガイドライン

Backend (Python/FastAPI)

# API層: HTTPリクエストの処理のみ
@router.post("/users", response_model=UserResponse)
async def create_user(
    request: UserCreateRequest,
    usecase: CreateUserUseCase = Depends(get_create_user_usecase)
):
    return await usecase.execute(request.to_input())

# UseCase層: ビジネスロジックの調整
class CreateUserUseCase:
    async def execute(self, input: CreateUserInput) -> CreateUserOutput:
        user = User.create(input.name, input.email)
        saved = await self._repo.save(user)
        return CreateUserOutput.from_entity(saved)

# Domain層: ビジネスルール
class User:
    @classmethod
    def create(cls, name: str, email: Email) -> "User":
        if not name:
            raise DomainError("Name is required")
        return cls(name=name, email=email)

Frontend (TypeScript/SvelteKit)

// Presentational Component(表示専用)
interface UserCardProps {
  user: User;
  onEdit: (user: User) => void;
  onDelete: (id: number) => void;
}

// 型安全性の確保
interface ApiResponse<T> {
  data: T;
  error: ApiError | null;
}

設計チェックリスト

🔴 必須

  • 要件が明確になっている
  • Clean Architectureに準拠している
  • 依存関係の方向が正しい
  • API仕様が定義されている
  • DBスキーマが正規化されている

🟡 推奨

  • 非機能要件を考慮している
  • エラーレスポンスが定義されている
  • インデックスが適切に設計されている
  • マイグレーション計画がある
  • テスト計画がある

🟢 Nice to have

  • 拡張性を考慮している
  • トレードオフを文書化している
  • 将来の変更点を予測している

ベストプラクティス

DO ✅

  • 要件を明確にしてから設計を始める
  • 既存アーキテクチャとの整合性を確認
  • 小さな単位で設計・レビューを実施
  • 設計と実装のギャップを継続的に埋める
  • YAGNI原則(必要になるまで作らない)

DON'T ❌

  • 要件が曖昧なまま設計を進める
  • 過剰な抽象化をする
  • 将来の要件に過度に対応する
  • 設計ドキュメントを放置する
  • 実装可能性を無視した設計

設計ドキュメント構成

# [機能名] 設計書

## 1. 概要
- 目的
- スコープ

## 2. 要件
- 機能要件(FR-xxx)
- 非機能要件(NFR-xxx)

## 3. アーキテクチャ設計
- システム構成図
- コンポーネント一覧

## 4. 詳細設計
- API設計
- データベース設計

## 5. 実装計画
- タスク一覧
- マイルストーン

## 6. リスクと対策

参照ファイル

ファイル 説明
./agents/architecture-designer.md アーキテクチャ設計詳細
./agents/api-designer.md API設計詳細
./agents/database-designer.md データベース設計詳細
.claude/rules/backend/layer-rules.md Backendレイヤールール
.claude/rules/backend/database-rules.md データベース設計規約