Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:51:41 +08:00
commit e19586cfce
31 changed files with 7129 additions and 0 deletions

View File

@@ -0,0 +1,542 @@
---
name: element-relationship-analyzer
description: プラグイン要素間の依存関係や呼び出し順序を分析する。プラグイン整合性確認時、依存関係検証時、またはユーザーが要素間依存、呼び出し順序、循環依存、アーキテクチャ検証に言及した際に使用する。
---
# Element Relationship Analyzer
## 概要
このSkillは、プラグイン内の要素エージェント、スキル、コマンド間の依存関係や呼び出し順序を分析する。プラグインの整合性を確認し、循環依存やアーキテクチャ違反を検出して、適切な依存関係の構築を支援する。
## 責任範囲
このSkillは以下の範囲をカバーする:
- プラグイン要素(エージェント、スキル、コマンド)の収集
- 要素間の依存関係の分析
- 要素の呼び出し順序の分析
- 循環依存の検出と報告
- アーキテクチャ規約違反の検出
- 依存関係の最適化提案
## ワークフロー
### フェーズ1: 要素収集
プラグインディレクトリから全ての要素を収集し、基本情報を抽出する。
**実施内容:**
1. プラグインディレクトリ構造を確認する
2. エージェントファイルを収集する
3. スキルファイルを収集する
4. コマンドファイルを収集する
5. 各要素のフロントマター情報を抽出する
**収集対象:**
- エージェント: `agents/[agent-name].md`
- スキル: `skills/*/SKILL.md`
- コマンド: `commands/[command-name].md`
**抽出情報:**
- name要素名
- description説明
- toolsエージェントのみ
- 依存する要素の参照(本文中のエージェント名、スキル名、コマンド名)
**良い例:**
```markdown
【要素収集結果】
プラグイン名: database-design-plugin
プラグインディレクトリ: D:\projects\database-design-plugin
エージェント (1個):
- database-design-agent
- 説明: データベース設計フェーズ全体に対する責任を持つ
- tools: "*"
スキル (7個):
ワークフロースキル:
- entity-definition-collector
- 説明: エンティティ定義を収集する
- normalization-processor
- 説明: 正規化を実施する
- er-diagram-generator
- 説明: ER図を生成する
- table-definition-writer
- 説明: テーブル定義書を作成する
- ddl-script-generator
- 説明: DDLスクリプトを生成する
コンベンションスキル:
- database-naming-conventions
- 説明: データベース命名規則を定義
- normalization-rules
- 説明: 正規化ルールを定義
コマンド (2個):
- design-database
- 説明: データベース設計全体を実行
- generate-schema
- 説明: スキーマ定義のみを生成
```
**悪い例:**
```markdown
【要素収集結果】
何かある
```
### フェーズ2: 依存関係分析
各要素が参照する他の要素を分析し、依存関係を明確にする。
**実施内容:**
1. 各要素のドキュメント本文を解析する
2. 他の要素への参照を検出する
3. 依存関係マップを作成する
4. 依存の種類を分類する(必須依存、オプション依存)
5. 依存の方向を確認する(エージェント→スキル、スキル→スキル、コマンド→エージェント/スキル)
**依存関係の検出方法:**
- エージェント: 本文中のスキル名参照
- スキル: 本文中の他のスキル名参照(※プラグインアーキテクチャ規約では推奨されない)
- コマンド: 「使用するエージェント」「使用するスキル」セクションからの参照
**良い例:**
```markdown
【依存関係分析結果】
コマンド: design-database
- 使用するエージェント:
- database-design-agent必須
- 使用するスキル:
- entity-definition-collector必須
- normalization-processor必須
- er-diagram-generator必須
- table-definition-writer必須
- ddl-script-generator必須
- database-naming-conventions必須
- normalization-rules必須
コマンド: generate-schema
- 使用するエージェント:
- database-design-agent必須
- 使用するスキル:
- entity-definition-collector必須
- normalization-processor必須
- database-naming-conventions必須
- normalization-rules必須
エージェント: database-design-agent
- 依存するスキル: なし
※アーキテクチャ規約に従い、エージェントは直接スキルを参照しない
スキル: entity-definition-collector
- 依存するスキル: なし
※アーキテクチャ規約に従い、スキルは他のスキルを参照しない
スキル: normalization-processor
- 依存するスキル: なし
スキル: er-diagram-generator
- 依存するスキル: なし
スキル: table-definition-writer
- 依存するスキル: なし
スキル: ddl-script-generator
- 依存するスキル: なし
スキル: database-naming-conventions
- 依存するスキル: なし
スキル: normalization-rules
- 依存するスキル: なし
```
**悪い例:**
```markdown
【依存関係分析結果】
いろいろ依存している
```
### フェーズ3: 呼び出し順序分析
コマンドにおけるスキルの呼び出し順序を分析する。
**実施内容:**
1. 各コマンドの「実行フロー」セクションを解析する
2. スキルの実行順序を抽出する
3. 並列実行可能なスキルを特定する
4. 順次実行が必要なスキルを特定する
5. 実行順序の妥当性を検証する
**分析基準:**
- スキルの実行順序が明確であるか
- 依存関係に基づいた順序になっているか
- 並列実行可能なスキルが適切に識別されているか
- データの受け渡しが明確であるか
**良い例:**
```markdown
【呼び出し順序分析結果】
コマンド: design-database
実行フロー:
1. database-design-agent が entity-definition-collector を使用してエンティティ定義を収集
- 入力: ユーザーからの要求、既存システムの情報
- 出力: エンティティ一覧、属性リスト
- 並列実行: 不可(最初のステップ)
2. database-design-agent が normalization-processor を使用して正規化を実施
- 入力: エンティティ定義ステップ1の出力
- 出力: 正規化されたテーブル定義
- 並列実行: 不可ステップ1に依存
- 使用する規約: normalization-rules
3. database-design-agent が以下のスキルを並列実行:
- er-diagram-generator: ER図を生成
- 入力: 正規化されたテーブル定義ステップ2の出力
- 出力: ER図Mermaid形式
- table-definition-writer: テーブル定義書を作成
- 入力: 正規化されたテーブル定義ステップ2の出力
- 出力: テーブル定義書Markdown形式
- ddl-script-generator: DDLスクリプトを生成
- 入力: 正規化されたテーブル定義ステップ2の出力
- 出力: DDLスクリプト
- 並列実行: 可能全てステップ2の出力を使用、相互依存なし
妥当性: OK
- 各ステップの入力と出力が明確
- 依存関係に基づいた順序
- 並列実行可能なステップが適切に識別されている
コマンド: generate-schema
実行フロー:
1. database-design-agent が entity-definition-collector を使用してエンティティ定義を収集
2. database-design-agent が normalization-processor を使用して正規化を実施
妥当性: OK
- 最小限のステップのみ実行
- 依存関係が明確
```
**悪い例:**
```markdown
【呼び出し順序分析結果】
順番に実行する
```
### フェーズ4: 循環依存検出
要素間の循環依存を検出し、報告する。
**実施内容:**
1. 依存関係グラフを構築する
2. 循環依存を検出するアルゴリズムを実行する
3. 検出された循環依存を報告する
4. 循環依存の影響を評価する
5. 循環依存の解消方法を提案する
**検出方法:**
- 深さ優先探索DFSによる循環検出
- トポロジカルソートによる順序確認
**良い例:**
```markdown
【循環依存検出結果】
循環依存: 検出されませんでした
依存関係グラフ:
design-database コマンド
database-design-agent エージェント
entity-definition-collector スキル
normalization-processor スキル
er-diagram-generator スキル
table-definition-writer スキル
ddl-script-generator スキル
database-naming-conventions スキル
normalization-rules スキル
generate-schema コマンド
database-design-agent エージェント
entity-definition-collector スキル
normalization-processor スキル
database-naming-conventions スキル
normalization-rules スキル
トポロジカルソート結果:
1. database-naming-conventionsコンベンション、依存なし
2. normalization-rulesコンベンション、依存なし
3. entity-definition-collectorワークフロー、コンベンションに依存可能
4. normalization-processorワークフロー、コンベンションに依存可能
5. er-diagram-generatorワークフロー、依存なし
6. table-definition-writerワークフロー、依存なし
7. ddl-script-generatorワークフロー、依存なし
8. database-design-agentエージェント、スキルを使用
9. design-databaseコマンド、エージェントとスキルを使用
10. generate-schemaコマンド、エージェントとスキルを使用
アーキテクチャ規約遵守: OK
- エージェントは他の要素を参照していない
- スキルは他のスキルを参照していない
- コマンドのみがエージェントとスキルを参照している
```
**悪い例(循環依存が存在する場合):**
```markdown
【循環依存検出結果】
循環依存: 検出されました
循環1:
skill-a → skill-b → skill-c → skill-a
問題: スキルが他のスキルを参照している(アーキテクチャ規約違反)
影響: スキルの独立性が損なわれ、再利用性が低下
解消方法:
- スキル間の参照を削除する
- 共通の処理をコンベンションスキルに分離する
- コマンドで依存関係を管理する
循環2:
command-a → agent-b → command-a
問題: コマンドとエージェントが相互参照している
影響: 無限ループの可能性
解消方法:
- エージェントからコマンドへの参照を削除する
- エージェントはスキルのみを使用するようにする
```
### フェーズ5: 推奨提示
分析結果をまとめ、改善提案をユーザーに提示する。
**実施内容:**
1. 分析結果をサマリー化する
2. 検出された問題をリストアップする
3. アーキテクチャ規約の遵守状況を報告する
4. 改善提案を作成する
5. 次のステップを案内する
**提示形式:**
```markdown
【要素関係分析レポート】
プラグイン名: database-design-plugin
分析日時: 2025-11-15
【サマリー】
要素数:
- エージェント: 1個
- スキル: 7個ワークフロー: 5個、コンベンション: 2個
- コマンド: 2個
依存関係:
- 総依存数: 14個
- 循環依存: 0個
- アーキテクチャ規約違反: 0個
品質評価: 優良
- 循環依存なし
- アーキテクチャ規約遵守
- 依存関係が明確
【詳細分析結果】
依存関係マップ:
- design-database → database-design-agent, 5つのワークフロースキル, 2つのコンベンションスキル
- generate-schema → database-design-agent, 2つのワークフロースキル, 2つのコンベンションスキル
呼び出し順序:
- design-database: 3ステップステップ3は3つのスキルを並列実行
- generate-schema: 2ステップ順次実行
循環依存: なし
アーキテクチャ規約遵守:
- ✓ エージェントは他の要素を参照していない
- ✓ スキルは他のスキルを参照していない
- ✓ コマンドのみがエージェントとスキルを参照している
- ✓ 依存関係の方向が正しい(コマンド→エージェント→スキル)
【改善提案】
改善点: なし
このプラグインは適切に設計されています。
【推奨事項】
1. 定期的に要素関係を分析し、循環依存が発生していないか確認する
2. 新しい要素を追加する際は、アーキテクチャ規約を遵守する
3. コマンドの実行フローを明確に記述する
4. 並列実行可能なスキルを適切に識別する
【次のステップ】
1. プラグイン全体の品質検証plugin-validator スキルを使用)
2. プラグインのパッケージングplugin-packager スキルを使用)
```
**良い例:**
分析結果が明確で、問題点、改善提案、推奨事項が示されている。
**悪い例:**
```markdown
【要素関係分析レポート】
分析した
問題なし
```
## アウトプット
このスキルは以下を生成する:
- **依存関係マップ**: 要素間の依存関係を整理したマッピング
- **呼び出し順序図**: コマンドにおけるスキルの呼び出し順序を図示したドキュメント
- **循環依存レポート**: 検出された循環依存とその解消方法
- **要素関係分析レポート**: 分析結果、問題点、改善提案をまとめたレポート
## 想定されるエラーと対処法
### エラー1: 循環依存が検出された
**検出例:**
```markdown
skill-a → skill-b → skill-a
```
**対処法:**
- スキル間の参照を削除する
- 共通の処理をコンベンションスキルに分離する
- コマンドで依存関係を管理する
### エラー2: アーキテクチャ規約違反
**検出例:**
```markdown
エージェントがスキルを直接参照している
スキルが他のスキルを参照している
```
**対処法:**
- エージェントからスキルへの直接参照を削除する
- スキル間の参照を削除する
- コマンドで依存関係を管理する
### エラー3: 呼び出し順序が不明確
**検出例:**
```markdown
実行フロー: スキルを実行する
```
**対処法:**
- 実行フローを明確に記述する
- スキルの実行順序を番号付きで記述する
- 並列実行可能なスキルを明示する
## ベストプラクティス
- 定期的に要素関係を分析する
- 循環依存を早期に検出して解消する
- アーキテクチャ規約を遵守する
- 依存関係を明確に文書化する
- 呼び出し順序を明示する
- 並列実行可能なスキルを適切に識別する
## チェックリスト
### 要素収集完了時
- [ ] プラグインディレクトリ構造が確認されている
- [ ] エージェントファイルが収集されている
- [ ] スキルファイルが収集されている
- [ ] コマンドファイルが収集されている
- [ ] 各要素のフロントマター情報が抽出されている
### 依存関係分析完了時
- [ ] 各要素のドキュメント本文が解析されている
- [ ] 他の要素への参照が検出されている
- [ ] 依存関係マップが作成されている
- [ ] 依存の種類が分類されている
- [ ] 依存の方向が確認されている
### 呼び出し順序分析完了時
- [ ] 各コマンドの「実行フロー」セクションが解析されている
- [ ] スキルの実行順序が抽出されている
- [ ] 並列実行可能なスキルが特定されている
- [ ] 順次実行が必要なスキルが特定されている
- [ ] 実行順序の妥当性が検証されている
### 循環依存検出完了時
- [ ] 依存関係グラフが構築されている
- [ ] 循環依存検出アルゴリズムが実行されている
- [ ] 検出された循環依存が報告されている
- [ ] 循環依存の影響が評価されている
- [ ] 循環依存の解消方法が提案されている
### 推奨提示完了時
- [ ] 分析結果がサマリー化されている
- [ ] 検出された問題がリストアップされている
- [ ] アーキテクチャ規約の遵守状況が報告されている
- [ ] 改善提案が作成されている
- [ ] 次のステップが案内されている
- [ ] ユーザーの承認を得ている
### 最終確認
- [ ] 依存関係マップが作成されている
- [ ] 呼び出し順序図が作成されている
- [ ] 循環依存レポートが作成されている(該当する場合)
- [ ] 要素関係分析レポートが作成されている
- [ ] すべてのアウトプットが明確で理解しやすい
- [ ] ユーザーが次のステップに進める状態になっている