Files
gh-revtechstudio-rts-plugin…/skills/skill-granularity-convention/SKILL.md
2025-11-30 08:51:41 +08:00

342 lines
10 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: skill-granularity-convention
description: スキルの適切な粒度を定義1スキル1目的、分割基準、結合基準する。スキル設計時、粒度判断時、またはユーザーがスキル粒度、1スキル1目的、分割基準、結合基準、スキル設計原則に言及した際に使用する。
---
# Skill Granularity Convention
## 概要
このSkillは、スキルの適切な粒度を定義し、1スキル1目的の原則を明確化する。スキルを分割すべき基準、結合すべき基準、適切な粒度の判断方法について指針を提供し、保守性と再利用性の高いスキル設計を実現することを目的とする。
## 責任範囲
このSkillは以下の範囲をカバーする:
- 1スキル1目的の原則の定義
- スキル分割の基準と判断方法
- スキル結合の基準と判断方法
- 適切な粒度の判断指標
- 粒度判断のベストプラクティス
## 基本方針
- 1スキル1目的を厳守する
- 責任範囲を明確に定義する
- 複数の目的が含まれる場合は分割を検討する
- 過度に細分化しない(実用性を保つ)
- コンテキストサイズを最小化する
- 再利用性と保守性を重視する
## 1スキル1目的の原則
### 原則の定義
各スキルは、一つの明確な目的を持つべきである。
**目的の定義:**
- スキルが達成すべき具体的な成果物または作業内容
- 責任範囲セクションで明確に表現できる範囲
- ユーザーが「このスキルは〜をする」と一文で説明できる範囲
### 原則の適用
スキルの目的が明確であることを確認する:
- スキルのdescriptionが1行で簡潔に説明できる
- 責任範囲が3〜5項目で列挙できる
- ワークフローが2〜5フェーズで構成できるWorkflow Skillの場合
- カテゴリが2〜5個で構成できるConvention Skillの場合
良い例:
```markdown
---
name: api-designer
description: RESTful API仕様を設計する
---
## 責任範囲
- エンドポイントの定義
- リクエスト/レスポンス形式の設計
- 認証・認可方式の設計
```
目的が「API仕様を設計する」と明確
悪い例:
```markdown
---
name: system-designer
description: システム全体を設計する
---
## 責任範囲
- アーキテクチャ設計
- データベース設計
- API設計
- UI/UX設計
- セキュリティ設計
- パフォーマンス設計
```
(目的が広すぎて、複数のスキルに分割すべき)
## スキル分割の基準
### 分割すべきケース
以下の場合は、スキルを分割することを検討する:
1. **複数の異なる目的が含まれる場合**
- 一つのスキルで複数の成果物を生成する
- 責任範囲が6項目以上ある
- descriptionが2文以上必要になる
2. **ワークフローが複雑すぎる場合**
- ワークフローのフェーズが6個以上ある
- 各フェーズの実施内容が5項目以上ある
- フェーズ間の依存関係が複雑である
3. **カテゴリが多すぎる場合**
- カテゴリが6個以上あるConvention Skillの場合
- 各カテゴリのルールが5項目以上ある
- カテゴリ間の関連性が薄い
4. **規約部分が肥大化する場合**
- Workflow Skillに含まれる規約が大量にある
- 規約の説明が長く、ワークフローの理解を妨げる
- 規約を他のスキルでも再利用したい
### 分割方法
#### パターン1: 目的別に分割
システム設計スキルを目的別に分割:
- アーキテクチャ設計スキル
- データベース設計スキル
- API設計スキル
- UI/UX設計スキル
#### パターン2: フェーズ別に分割
要件定義スキルをフェーズ別に分割:
- 要件収集スキル
- 要件整理スキル
- 要件検証スキル
#### パターン3: 規約を分離
コード生成スキルから規約を分離:
- コード生成スキルWorkflow Skill
- コーディング規約スキルConvention Skill
良い例:
```text
分割前:
- system-designerシステム全体を設計する
分割後:
- architecture-designerシステムアーキテクチャを設計する
- database-schema-designerデータベーススキーマを設計する
- api-designerRESTful API仕様を設計する
- ui-component-architectUIコンポーネント構成を設計する
```
悪い例:
```text
分割前:
- api-designerRESTful API仕様を設計する
分割後:
- endpoint-designerエンドポイントを設計する
- request-designerリクエスト形式を設計する
- response-designerレスポンス形式を設計する
- auth-designer認証方式を設計する
```
(過度に細分化されており、実用性が低い)
## スキル結合の基準
### 結合すべきケース
以下の場合は、スキルを結合することを検討する:
1. **スキルが小さすぎる場合**
- 責任範囲が1〜2項目しかない
- ワークフローが1フェーズしかない
- 単独では実用的でない
2. **スキル間の依存関係が強い場合**
- 常に一緒に実行される
- 一方のスキルの出力が他方の入力になる
- 分離することで理解が困難になる
3. **重複が多い場合**
- 複数のスキルで同じ規約やガイドラインを記述している
- 同じ前提条件や制約事項を持っている
- 統合することで重複を削減できる
### 結合方法
#### パターン1: 関連する作業を統合
エンドポイント設計、リクエスト設計、レスポンス設計を統合:
- API設計スキルすべてを含む
#### パターン2: 規約を直接記述
コード生成スキルに規約を直接記述:
- コード生成スキル(規約を含む)
良い例:
```text
結合前:
- endpoint-designerエンドポイントを設計する
- request-designerリクエスト形式を設計する
- response-designerレスポンス形式を設計する
結合後:
- api-designerRESTful API仕様を設計する
```
悪い例:
```text
結合前:
- architecture-designerシステムアーキテクチャを設計する
- database-schema-designerデータベーススキーマを設計する
- api-designerRESTful API仕様を設計する
結合後:
- system-designerシステム全体を設計する
```
目的が広すぎて、1スキル1目的の原則に反する
## 適切な粒度の判断方法
### 判断指標
以下の指標を使用して、スキルの粒度が適切かどうかを判断する:
1. **descriptionの明確さ**
- 1行50文字以内で説明できる → 適切
- 2文以上必要 → 分割を検討
2. **責任範囲の項目数**
- 3〜5項目 → 適切
- 1〜2項目 → 結合を検討
- 6項目以上 → 分割を検討
3. **ワークフローのフェーズ数Workflow Skill**
- 2〜5フェーズ → 適切
- 1フェーズ → 結合を検討
- 6フェーズ以上 → 分割を検討
4. **カテゴリ数Convention Skill**
- 2〜5カテゴリ → 適切
- 1カテゴリ → 結合を検討
- 6カテゴリ以上 → 分割を検討
5. **ドキュメントサイズ**
- 200〜400行 → 適切
- 200行未満 → 結合を検討
- 400行以上 → 分割を検討
### 判断フロー
```text
1. descriptionが1行で説明できるか
├─ はい → 2へ
└─ いいえ → 分割を検討
2. 責任範囲が3〜5項目か
├─ はい → 3へ
├─ いいえ1〜2項目 → 結合を検討
└─ いいえ6項目以上 → 分割を検討
3. ワークフロー/カテゴリが2〜5個か
├─ はい → 適切な粒度
├─ いいえ1個 → 結合を検討
└─ いいえ6個以上 → 分割を検討
```
## ベストプラクティス
### 実用性を重視する
- 理論的に分割可能でも、実用性がなければ分割しない
- ユーザーが使いやすい粒度を優先する
- コマンドで組み合わせることを前提に設計する
### コンテキストサイズを最小化する
- 不要な情報を含めない
- 規約やガイドラインは必要最小限にする
- 他のスキルと重複する内容を避ける
### 再利用性を考慮する
- 複数のコマンドから使用されるスキルは独立させる
- 特定のコマンド専用のスキルは統合を検討する
### 保守性を確保する
- 変更頻度が異なる内容は分離する
- 安定した部分と変更される部分を分ける
## チェックリスト
### スキル作成時
- [ ] descriptionが1行50文字以内で説明できる
- [ ] 責任範囲が3〜5項目である
- [ ] ワークフロー/カテゴリが2〜5個である
- [ ] 1スキル1目的の原則を守っている
- [ ] 複数の異なる目的が含まれていない
### スキル分割検討時
- [ ] 複数の異なる目的が含まれているか確認した
- [ ] ワークフローが複雑すぎないか確認した
- [ ] カテゴリが多すぎないか確認した
- [ ] 規約部分が肥大化していないか確認した
- [ ] 分割後の各スキルが実用的であるか確認した
### スキル結合検討時
- [ ] スキルが小さすぎないか確認した
- [ ] スキル間の依存関係が強いか確認した
- [ ] 重複が多いか確認した
- [ ] 結合後も1スキル1目的の原則を守れるか確認した
### 粒度判断時
- [ ] descriptionの明確さを確認した
- [ ] 責任範囲の項目数を確認した
- [ ] ワークフロー/カテゴリ数を確認した
- [ ] ドキュメントサイズを確認した
- [ ] 実用性を考慮した
### 最終確認
- [ ] 適切な粒度になっている
- [ ] 1スキル1目的の原則が守られている
- [ ] 実用性がある
- [ ] コンテキストサイズが最小化されている
- [ ] 再利用性と保守性が確保されている