Files
gh-revtechstudio-rts-plugin…/skills/element-relationship-analyzer/SKILL.md
2025-11-30 08:51:41 +08:00

543 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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
実行フロー: スキルを実行する
```
**対処法:**
- 実行フローを明確に記述する
- スキルの実行順序を番号付きで記述する
- 並列実行可能なスキルを明示する
## ベストプラクティス
- 定期的に要素関係を分析する
- 循環依存を早期に検出して解消する
- アーキテクチャ規約を遵守する
- 依存関係を明確に文書化する
- 呼び出し順序を明示する
- 並列実行可能なスキルを適切に識別する
## チェックリスト
### 要素収集完了時
- [ ] プラグインディレクトリ構造が確認されている
- [ ] エージェントファイルが収集されている
- [ ] スキルファイルが収集されている
- [ ] コマンドファイルが収集されている
- [ ] 各要素のフロントマター情報が抽出されている
### 依存関係分析完了時
- [ ] 各要素のドキュメント本文が解析されている
- [ ] 他の要素への参照が検出されている
- [ ] 依存関係マップが作成されている
- [ ] 依存の種類が分類されている
- [ ] 依存の方向が確認されている
### 呼び出し順序分析完了時
- [ ] 各コマンドの「実行フロー」セクションが解析されている
- [ ] スキルの実行順序が抽出されている
- [ ] 並列実行可能なスキルが特定されている
- [ ] 順次実行が必要なスキルが特定されている
- [ ] 実行順序の妥当性が検証されている
### 循環依存検出完了時
- [ ] 依存関係グラフが構築されている
- [ ] 循環依存検出アルゴリズムが実行されている
- [ ] 検出された循環依存が報告されている
- [ ] 循環依存の影響が評価されている
- [ ] 循環依存の解消方法が提案されている
### 推奨提示完了時
- [ ] 分析結果がサマリー化されている
- [ ] 検出された問題がリストアップされている
- [ ] アーキテクチャ規約の遵守状況が報告されている
- [ ] 改善提案が作成されている
- [ ] 次のステップが案内されている
- [ ] ユーザーの承認を得ている
### 最終確認
- [ ] 依存関係マップが作成されている
- [ ] 呼び出し順序図が作成されている
- [ ] 循環依存レポートが作成されている(該当する場合)
- [ ] 要素関係分析レポートが作成されている
- [ ] すべてのアウトプットが明確で理解しやすい
- [ ] ユーザーが次のステップに進める状態になっている