--- name: command-generator description: エージェントとスキルの組み合わせから、Commandのマークダウンファイルを生成する。コマンド作成時、スラッシュコマンド定義時、またはユーザーがCommand生成、スラッシュコマンド、コマンド定義、実行フローに言及した際に使用する。 --- # Command Generator ## 概要 このSkillは、ユーザーが提供するエージェント、スキル、実行フローの情報を基に、Commandのマークダウンファイルを生成する。ユーザーとの対話を通じて必要な情報を収集し、標準化されたコマンドのドキュメントを作成する。 ## 責任範囲 このSkillは以下の範囲をカバーする: - 既存コマンドの確認と重複チェック - ユーザーとの対話によるコマンド情報の収集 - 使用するエージェントとスキルの明確化 - 実行フローとデータ受け渡しの定義 - 成果物の出力先とファイル構成の定義 - コマンドファイルの生成 - プラグインアーキテクチャ規約の遵守確認 - markdownlint検証の実施 - ユーザーフィードバックの収集と反映 ## ワークフロー ### フェーズ1: 既存コマンド確認 コマンド生成前に、既存のコマンドを確認し、重複を避ける。 **実施内容:** 1. プラグインディレクトリ内の既存コマンドを確認する 2. 作成予定のコマンドと同じ機能のコマンドが存在しないか確認する 3. 作成予定のコマンド内容と重複する記述が他のコマンドに含まれていないか確認する 4. 既存コマンドで代用できる場合はユーザーに提案する 5. 重複が避けられない場合は、どの内容を削除すべきかユーザーと確認する **確認対象:** - プラグインディレクトリ内のcommandsディレクトリ内のドキュメント **質問例:** ```markdown 【既存コマンド確認】 プラグインディレクトリ内の既存コマンドを確認しました。 以下のコマンドと機能が重複する可能性があります: - [既存コマンド名]: [既存コマンドの説明] 作成予定のコマンドから、これらの重複内容を除外してよろしいですか? ``` **既存コマンドで代用可能な場合:** ```markdown 【確認】 作成予定のコマンドと同じ機能のコマンドが既に存在します: - [既存コマンド名]: [既存コマンドの説明] 既存コマンドで十分な場合は、新規作成は不要です。 それでも新規作成が必要ですか?必要な場合は、既存コマンドとの違いを教えてください。 ``` ### フェーズ2: 情報収集 ユーザーとの対話を通じて、コマンドに必要な情報を収集する。 **実施内容:** 1. コマンドの目的と機能を確認する 2. 使用するエージェントを特定する 3. 使用するスキルを特定する 4. スキルの実行順序を確認する 5. スキル間のデータ受け渡しを確認する 6. 成果物の出力先とファイル構成を確認する 7. 前提条件や制約事項を確認する 8. ユーザーとの対話時は、明確なタイトル付き質問、複数選択肢の提示、推奨オプションの明示を行う **質問例:** ```markdown 【使用するエージェントの確認】 このコマンドが使用するエージェントを確認します。以下のどれですか? 1. 特定のエージェント(要件定義、設計、実装など)【推奨】 2. 複数のエージェント(フェーズをまたぐ場合) 3. エージェントなし(スキルのみ実行) ``` ```markdown 【実行フローの確認】 スキルの実行順序を確認します。以下のどの方式ですか? 1. 順次実行(スキルを1つずつ順番に実行)【推奨】 2. 並列実行(複数のスキルを同時に実行) 3. 条件分岐あり(条件によって実行するスキルが変わる) ``` ### フェーズ3: コンテンツ生成 収集した情報を基に、コマンドファイルのコンテンツを生成する。 **実施内容:** 1. フロントマター(name, description)を作成する 2. 概要セクションを記述する 3. 使用するエージェントを記述する 4. 使用するスキルをリスト化する 5. 実行フローを記述する 6. 成果物のセクションを記述する 7. チェックリストを作成する(該当する場合) **フロントマターの作成:** ```markdown --- name: コマンド名(ケバブケース、例: requirements, design) description: コマンドの簡潔な説明(1行、50文字以内) --- ``` **概要の記述:** - コマンドの目的と機能を明確に記述する - どのフェーズで使用するかを説明する - 簡潔に1〜2段落で記述する **使用するエージェントの記述:** - コマンドが使用するエージェントを明記する - エージェントの役割を簡潔に説明する **使用するスキルの記述:** - コマンドが使用するスキルをリスト化する - 各スキルの役割を簡潔に説明する - 実行順序がわかるようにする **実行フローの記述:** - スキルの実行順序を明確に記述する - 各ステップで使用するスキルを明示的にリスト化する - 条件分岐がある場合はその条件を明記する - 番号付きリストを活用する **重要: 実行フローでのスキル参照方法:** 各ステップで使用するスキルは、以下の形式で明示的にリスト化する。括弧書きでスキルを参照してはいけない。 良い例: ```markdown ## 実行フロー 1. plugin-development-agentが以下のスキルを使用して、既存エージェントを確認し、重複を避ける - agent-generator(エージェント確認) - plugin-architecture-convention(アーキテクチャ規約遵守) 2. plugin-development-agentが以下のスキルを使用して、ユーザーとの対話を通じて情報を収集する - agent-generator(情報収集) - interaction-guidelines(対話パターン) 3. plugin-development-agentが以下のスキルを使用して、コンテンツを生成する - agent-generator(コンテンツ生成) - element-definition-convention(定義ルール遵守) ``` 悪い例(使用してはいけない形式): ```markdown ## 実行フロー 1. plugin-development-agentがagent-generatorスキルを使用して、既存エージェントを確認し、重複を避ける(plugin-architecture-conventionに従う) 2. plugin-development-agentがagent-generatorスキルを使用して、ユーザーとの対話を通じて情報を収集する(interaction-guidelinesに従う) ``` **理由:** - 括弧書き形式では、agent-generatorスキルが他のスキルを参照しているように見える - スキルの独立性原則に反する可能性がある - コマンドが依存関係を管理する責任が不明確になる **成果物の記述:** - コマンド実行後の出力先を明記する - ファイル構成を記述する - ファイルの内容を簡潔に説明する **チェックリストの作成(該当する場合):** - コマンド実行前のチェックリスト - コマンド実行後のチェックリスト - 具体的で検証可能な項目を記述する **プラグインアーキテクチャ規約の遵守:** 生成するコマンドは、プラグインアーキテクチャ規約に従う必要がある(依存関係の管理、汎用性の原則など)。 **重要な制約:** - コマンドが依存関係を管理する責任を持つ - 固有名詞を含めない - エージェントとスキルの組み合わせを明確に定義する - 成果物の出力先を具体的に記述する **重複最小化の確認:** 既存コマンドと重複する内容が含まれていないかを確認し、コマンド固有の内容のみを記述する。 ### フェーズ4: 検証 生成したコンテンツを検証し、品質を確保する。 **実施内容:** 1. 設計原則の遵守を確認する 2. markdownlint検証を実施する 3. テンプレート構造の整合性を確認する 4. ユーザーにプレビューを提示する 5. フィードバックを収集する 6. 必要に応じて修正する **プラグインアーキテクチャ規約の確認:** - プラグインアーキテクチャ規約に従っている - 既存コマンドと重複する内容が含まれていない - 依存関係が明確に定義されている - 固有名詞が使用されていない - エージェントとスキルの組み合わせが明確である ## アウトプット このスキルは以下を生成する: - **コマンドファイル**: コマンドの定義ファイル(ファイル名=コマンド名(ケバブケース)) - フロントマター(name, description) - 概要 - 使用するエージェント - 使用するスキル - 実行フロー - 成果物 - チェックリスト(該当する場合) ## 想定されるエラーと対処法 ### エラー1: 使用するスキルが曖昧 **検出例:** ```markdown このコマンドは、いくつかのスキルを使用する ``` **対処法:** - 使用するスキルを具体的にリスト化する - 各スキルの役割を明記する - 実行順序を明確にする ### エラー2: 実行フローが不明確 **検出例:** ```markdown ## 実行フロー スキルを実行する ``` **対処法:** - スキルの実行順序を番号付きで記述する - 各ステップで使用するスキルを明示的にリスト化する - 条件分岐がある場合はその条件を記述する ### エラー3: 実行フローで括弧書きでスキルを参照している **検出例:** ```markdown ## 実行フロー 1. plugin-development-agentがagent-generatorスキルを使用して、既存エージェントを確認し、重複を避ける(plugin-architecture-conventionに従う) 2. plugin-development-agentがagent-generatorスキルを使用して、ユーザーとの対話を通じて情報を収集する(interaction-guidelinesに従う) ``` **問題点:** - agent-generatorスキルが他のスキルを参照しているように見える - スキルの独立性原則に反する可能性がある - コマンドが依存関係を管理する責任が不明確になる **対処法:** 各ステップで使用するスキルを明示的にリスト化する: ```markdown ## 実行フロー 1. plugin-development-agentが以下のスキルを使用して、既存エージェントを確認し、重複を避ける - agent-generator(エージェント確認) - plugin-architecture-convention(アーキテクチャ規約遵守) 2. plugin-development-agentが以下のスキルを使用して、ユーザーとの対話を通じて情報を収集する - agent-generator(情報収集) - interaction-guidelines(対話パターン) ``` ### エラー4: 成果物の出力先が曖昧 **検出例:** ```markdown ## 成果物 ドキュメントを生成する ``` **対処法:** - 具体的なファイルパスを記述する - ファイル構成を明記する - ファイルの内容を簡潔に説明する ## ベストプラクティス - 使用するスキルは3〜5個程度に抑える(多すぎると複雑になる) - 実行フローは明確で理解しやすくする - **実行フローでは各ステップで使用するスキルを明示的にリスト化する(括弧書きで参照しない)** - 成果物の出力先を具体的に記述する - チェックリストは具体的で検証可能な項目にする - コマンドが全てのスキルの依存関係を管理する責任を持つことを明確にする - markdownlint検証は必ず実施する - ユーザーフィードバックを反映して改善する ## チェックリスト ### 既存コマンド確認完了時 - [ ] プラグインディレクトリ内の既存コマンドを確認した - [ ] 同じ機能のコマンドが存在しないことを確認した - [ ] 重複する内容が他のコマンドに含まれていないことを確認した - [ ] 既存コマンドで代用できない理由が明確である - [ ] 重複する内容を除外する方針を決定した ### 情報収集完了時 - [ ] コマンドの目的と機能が明確になっている - [ ] 使用するエージェントが特定されている - [ ] 使用するスキルが特定されている - [ ] スキルの実行順序が確認されている - [ ] スキル間のデータ受け渡しが確認されている - [ ] 成果物の出力先とファイル構成が確認されている - [ ] 前提条件や制約事項が確認されている ### コンテンツ生成完了時 - [ ] フロントマター(name, description)が記述されている - [ ] 概要が簡潔に記述されている - [ ] 使用するエージェントが明記されている - [ ] 使用するスキルがリスト化されている - [ ] 実行フローが明確に記述されている - [ ] 実行フローで各ステップが使用するスキルが明示的にリスト化されている - [ ] 実行フローで括弧書きでスキルを参照していない - [ ] 成果物の出力先とファイル構成が記述されている - [ ] チェックリストが作成されている(該当する場合) - [ ] プラグインアーキテクチャ規約に従っている - [ ] 既存コマンドと重複する内容が含まれていない - [ ] 依存関係が明確に定義されている - [ ] 固有名詞が使用されていない ### 検証完了時 - [ ] プラグインアーキテクチャ規約の遵守を確認した - [ ] markdownlint検証を実施した(エラーなし) - [ ] テンプレート構造の整合性を確認した - [ ] ユーザーにプレビューを提示した - [ ] フィードバックを収集した - [ ] 必要な修正を完了した ### 最終確認 - [ ] コマンドファイルが生成されている - [ ] すべてのセクションが適切に記述されている - [ ] プラグインアーキテクチャ規約が遵守されている - [ ] markdownlint検証に合格している - [ ] ユーザーの承認を得ている