本文へ移動
cccskills
無料GitHub で公開

analyze-system

システム分析エージェント - ユビキタス言語、アクター、ロール、権限、ドメイン-コード対応表を抽出。/analyze-system [対象パス] で呼び出し。

インストール方法を見る

含まれるファイル(1)

  • SKILL.md11.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

System Analyzer Agent

既存システムの設計書とコードを分析し、ドメイン理解のための基礎情報を抽出するエージェントです。

概要

このエージェントは以下の中間ファイルを生成します:

  1. ユビキタス言語集 - ビジネスドメインで使用される用語の定義
  2. アクター・ロール・権限 - システムに関わる人・役割・権限の整理
  3. ドメイン-コード対応表 - 設計書の概念とコードの紐付け
  4. 現行システム概要 - 技術スタック、アーキテクチャの概要

前提条件

推奨(/system-investigation の出力):

  • reports/before/{project}/technology-stack.md - 技術スタック
  • reports/before/{project}/codebase-structure.md - コードベース構造

必須:

  • 対象システムのソースコードにアクセス可能であること

ユーザー入力確認(必須)

重要: このスキルを実行する前に、必ず以下の項目をユーザーに確認してください。

1. 調査対象フォルダの確認

引数で対象パスが指定されていない場合は、AskUserQuestionツールで質問してください:

{
  "questions": [{
    "question": "調査対象のフォルダパスを指定してください",
    "header": "対象フォルダ",
    "options": [
      {"label": "カレントディレクトリ", "description": "現在のディレクトリ全体を調査"},
      {"label": "src/", "description": "srcディレクトリを調査"},
      {"label": "パス指定", "description": "カスタムパスを入力"}
    ],
    "multiSelect": false
  }]
}

2. 出力先ディレクトリの確認

デフォルト出力先: ./reports/(カレントディレクトリ配下)

{
  "questions": [{
    "question": "レポートの出力先ディレクトリを確認してください",
    "header": "出力先",
    "options": [
      {"label": "./reports/ (推奨)", "description": "カレントディレクトリ配下のreportsフォルダ"},
      {"label": "カスタムパス", "description": "別のパスを指定"}
    ],
    "multiSelect": false
  }]
}

出力先

解析結果は ./reports/01_analysis/ に出力します(カレントディレクトリ配下)。 重要: 各ステップ完了時に即座にファイルを出力してください(最後にまとめて出力しない)。

reports/
├── 00_summary/
│   └── project_metadata.json    # Step 1完了時
└── 01_analysis/
    ├── system-overview.md       # Step 3完了時
    ├── ubiquitous-language.md   # Step 4完了時
    ├── actors-roles-permissions.md  # Step 5完了時
    └── domain-code-mapping.md   # Step 6完了時

サブエージェント活用

大規模コードベースの場合、Task toolのExploreエージェントを並列起動して効率的に情報収集できます。 詳細は .claude/skills/common/sub-agent-patterns.md の「Pattern 1: コードベース探索エージェント」を参照。

実行プロンプト

あなたは既存システムを分析する専門家エージェントです。以下の手順で分析を実行してください。

Step 1: 入力情報の収集と初期化

まず、出力ディレクトリを作成し、対象ディレクトリの構造を把握します。

# 出力ディレクトリの作成
mkdir -p reports/{00_summary,01_analysis,02_evaluation,03_design,04_stories,05_estimate,06_implementation,07_test-specs,graph/data,graph/visualizations,sizing-estimates}
# Serenaツールを使用
mcp__serena__list_dir で対象ディレクトリをスキャン
mcp__serena__find_file で設計書ファイルを特定(*.md, *.docx, *.xlsx)

このステップ完了時に出力: reports/00_summary/project_metadata.json

{
    "project": { "name": "", "version": "", "created_at": "", "updated_at": "" },
    "source": { "path": "", "type": "", "languages": [], "frameworks": [] },
    "analysis": { "status": "in_progress", "modules_count": 0 }
}

Step 2: 設計書の解析

設計書が存在する場合:

  • ドキュメントを読み取り
  • ビジネス用語を抽出
  • アクターとロールを特定
  • 機能要件と非機能要件を整理

Step 3: コードベースの解析

# Serenaツールを使用してコード構造を把握
mcp__serena__get_symbols_overview で主要ファイルのシンボル一覧を取得
mcp__serena__find_symbol で重要なクラス/関数を特定

以下の観点でコードを分析:

  • ディレクトリ構造 - モジュール分割の方針
  • 名前空間/パッケージ - ドメイン境界の手がかり
  • クラス/インターフェース - ドメインモデルの候補
  • 外部依存 - 使用ライブラリ、フレームワーク

このステップ完了時に出力: reports/01_analysis/system-overview.md

  • 技術スタック、アーキテクチャ概要、モジュール構成を記載

Step 4: ユビキタス言語の抽出

以下のソースからビジネス用語を収集:

  1. 設計書から

    • 要件定義書の用語
    • ER図のエンティティ名
    • ユースケース記述の名詞
  2. コードから

    • クラス名、インターフェース名
    • メソッド名(特にビジネスロジック)
    • 定数、Enum値
    • コメント内のドメイン用語

このステップ完了時に出力: reports/01_analysis/ubiquitous-language.md

Step 5: アクター・ロール・権限の整理

カテゴリ抽出元
アクターユースケース図、認証コード、ロール定義
ロール権限設定、ミドルウェア、デコレータ
権限認可ロジック、ポリシー定義

このステップ完了時に出力: reports/01_analysis/actors-roles-permissions.md

Step 6: ドメイン-コード対応表の作成

設計書の概念とコードの対応を以下の形式で整理:

| 設計書の概念 | コード上の表現 | ファイルパス | 備考 |
|-------------|---------------|-------------|------|
| 注文 | Order class | src/domain/order.ts | 集約ルート |
| 顧客 | Customer class | src/domain/customer.ts | エンティティ |

このステップ完了時に出力: reports/01_analysis/domain-code-mapping.md

Step 7: メタデータの最終更新

すべての解析完了後、reports/00_summary/project_metadata.json を更新:

  • analysis.status を "completed" に変更
  • 各カウントを実際の値で更新

Step 8: Mermaid図の検証

出力したファイルのMermaid図を検証し、エラーがあれば修正:

/fix-mermaid ./reports/01_analysis

出力フォーマット

1. ubiquitous-language.md

# ユビキタス言語集

## 概要
[プロジェクトの概要説明]

## 用語定義

### コアドメイン

| 用語(日本語) | 用語(英語) | 定義 | 使用箇所 |
|--------------|------------|------|---------|
| 注文 | Order | 顧客が商品を購入する単位 | Order.ts, 注文画面 |

### サブドメイン

[サブドメインごとに同様の表を作成]

## 略語・頭字語

| 略語 | 正式名称 | 説明 |
|-----|---------|------|

## 同義語・類義語マッピング

| 用語A | 用語B | 推奨用語 | 理由 |
|------|------|---------|------|

2. actors-roles-permissions.md

# アクター・ロール・権限

## アクター一覧

### 人間アクター
| アクター | 説明 | 主な操作 |
|---------|------|---------|

### システムアクター
| システム | 説明 | 連携方法 |
|---------|------|---------|

## ロール定義

| ロール | 説明 | 権限セット | コード参照 |
|-------|------|-----------|-----------|

## 権限マトリックス

| 権限 | 管理者 | 一般ユーザー | ゲスト | 対象リソース |
|------|--------|------------|--------|------------|

## 認証・認可フロー

```mermaid
sequenceDiagram
    [認証フローの図]

### 3. domain-code-mapping.md

```markdown
# ドメイン-コード対応表

## マッピング概要

[全体的なマッピング方針の説明]

## ドメイン別マッピング

### [ドメイン名1]

| 概念カテゴリ | 設計書での名称 | コード上の実装 | ファイルパス | 実装パターン |
|------------|--------------|--------------|-------------|-------------|
| エンティティ | 注文 | Order | src/domain/order.ts | DDD Entity |
| 値オブジェクト | 金額 | Money | src/domain/money.ts | Value Object |
| リポジトリ | 注文保存 | OrderRepository | src/repo/order.ts | Repository |

### [ドメイン名2]
[同様の構造]

## 未マッピング項目

### 設計書にあるがコードにない
| 概念 | 設計書での記載箇所 | 考えられる理由 |
|-----|------------------|--------------|

### コードにあるが設計書にない
| クラス/関数 | ファイルパス | 推測されるドメイン |
|------------|-------------|------------------|

4. system-overview.md

# 現行システム概要

## 技術スタック

### フロントエンド
| 技術 | バージョン | 用途 |
|-----|----------|------|

### バックエンド
| 技術 | バージョン | 用途 |
|-----|----------|------|

### データベース
| 技術 | バージョン | 用途 |
|-----|----------|------|

### インフラ
| 技術 | 用途 |
|-----|------|

## アーキテクチャ概要

```mermaid
graph TD
    [システム構成図]

モジュール構成

モジュール責務依存関係ファイル数

外部連携

連携先連携方式用途実装箇所

課題・技術的負債

課題深刻度影響範囲推奨対応

## ツール使用ガイドライン

### 優先順位

1. **Serenaツール** - シンボリック解析に最適
   - `get_symbols_overview` - ファイル構造把握
   - `find_symbol` - 特定シンボル検索
   - `find_referencing_symbols` - 参照関係分析

2. **Glob/Grep** - パターンマッチング
   - ファイル検索
   - 文字列パターン検索

3. **Read** - 詳細確認
   - 特定ファイルの内容確認
   - 設計書の読み取り

### 効率的な分析のコツ

- 全ファイルを読まず、まずシンボル概要を取得
- 重要なクラス/関数のみ詳細を確認
- 設計書があれば先に読み、コードの目星をつける
- 並列で複数ファイルを分析可能

## エラーハンドリング

- 設計書が見つからない場合 → コードのみから推論(精度低下を警告)
- コードが解析不能な場合 → 対応言語を確認、手動解析を提案
- 大規模コードベースの場合 → サンプリング分析を提案

## 関連スキル

| スキル | 用途 |
|-------|-----|
| `/system-investigation` | コードベース調査(入力) |
| `/ddd-evaluation` | DDD評価(次ステップ) |
| `/evaluate-mmi` | MMI評価(次ステップ) |
| `/data-model-analysis` | データモデル詳細分析(補完) |
| `/build-graph` | ナレッジグラフ構築(出力活用) |

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

access-control-analysis

無料日本語概要

アクセス制御分析エージェント - ゼロトラストモデルに基づくアクセス制御の現状分析と移行準備評価。/access-control-analysis [対象パス] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

build-graph

無料日本語概要

GraphDB構築エージェント - ユビキタス言語とコード解析結果からRyuGraphデータベースを構築。/build-graph [対象パス] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

compile-report

無料日本語概要

レポートコンパイルエージェント - 分析結果のMarkdownファイルを統合HTMLレポートに変換。/compile-report [出力パス] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

create-domain-story

無料日本語概要

ドメインストーリーテリングエージェント - ドメインストーリーの作成、ビジネスプロセスの可視化。/create-domain-story --domain=[ドメイン名] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

data-model-analysis

無料日本語概要

データモデル分析エージェント - 既存のデータモデルを分析し、エンティティ・リレーションシップ・ドメインルールを抽出。/data-model-analysis [対象パス] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

db-design-analysis

無料日本語概要

DB設計分析エージェント - 既存のデータベース設計を分析し、テーブル定義・インデックス・制約・問題点を抽出。/db-design-analysis [対象パス] で呼び出し。

wfukatsu/architecture-redesign-agent52026年2月12日 更新

wfukatsu のスキルをすべて見る

このスキルの問題を報告する