300 lines
8.3 KiB
Markdown
300 lines
8.3 KiB
Markdown
# パターン集
|
||
|
||
SKILL.mdを簡潔に保ちながら、必要な情報を適切なタイミングで提供するための設計パターン。
|
||
|
||
## 目次
|
||
|
||
- 3段階ローディング
|
||
- ディレクトリパターン(ハイレベルガイド / ドメイン分割 / 基本と応用 / コード付き)
|
||
- 自由度パターン
|
||
- ワークフローパターン
|
||
- フィードバックループ
|
||
- テンプレートパターン
|
||
- 条件分岐パターン
|
||
- アンチパターン
|
||
- サイズ目安
|
||
|
||
---
|
||
|
||
## 3段階ローディング
|
||
|
||
```
|
||
Level 1: description(常時) → トリガー判定(〜100トークン/スキル)
|
||
Level 2: SKILL.md(トリガー時) → 指示・手順(〜5kトークン)
|
||
Level 3: references/(必要時) → 詳細情報(実質無制限)
|
||
```
|
||
|
||
Level 3はファイルシステム上に存在するだけで、アクセスされるまでコンテキストを消費しない。スクリプトは実行のみで、コード自体はコンテキストに入らない(出力のみ)。
|
||
|
||
---
|
||
|
||
## ディレクトリパターン
|
||
|
||
### パターン1: ハイレベルガイド
|
||
|
||
概要+クイックスタートをSKILL.mdに、詳細をreferences/に。
|
||
|
||
```
|
||
skill/
|
||
├── SKILL.md # 概要 + クイックスタート
|
||
└── references/
|
||
├── schema.md # 詳細スキーマ
|
||
└── examples.md # 使用例
|
||
```
|
||
|
||
**使用場面**: APIドキュメント、チュートリアル系
|
||
|
||
### パターン2: ドメイン分割
|
||
|
||
複数ドメインをサポート。必要なドメインのみ読む。
|
||
|
||
```
|
||
skill/
|
||
├── SKILL.md # 選択ガイド + 共通手順
|
||
└── references/
|
||
├── aws.md
|
||
├── gcp.md
|
||
└── azure.md
|
||
```
|
||
|
||
**使用場面**: マルチプラットフォーム対応
|
||
|
||
### パターン3: 基本と応用
|
||
|
||
基本機能はSKILL.md、高度な機能はreferences/に分離。
|
||
|
||
```
|
||
skill/
|
||
├── SKILL.md # 基本操作
|
||
└── references/
|
||
└── advanced.md # 高度な機能
|
||
```
|
||
|
||
**使用場面**: 基本と応用で複雑さが異なる
|
||
|
||
### パターン4: コード付きスキル
|
||
|
||
決定的処理をスクリプトで実行し、SKILL.md は目的・実行方法・出力を記載。
|
||
|
||
```
|
||
skill/
|
||
├── SKILL.md # 目的 + 実行方法 + 出力
|
||
├── scripts/
|
||
│ └── do-something.ts # 決定的処理
|
||
└── references/ (任意)
|
||
```
|
||
|
||
**使用場面**: ファイルシステム操作、外部ツール連携、状態管理
|
||
|
||
スクリプトの実行意図を明確にする:
|
||
- 「`analyze_form.py` を実行してフィールドを抽出」→ 実行
|
||
- 「`analyze_form.py` の抽出アルゴリズムを参照」→ 読む
|
||
|
||
---
|
||
|
||
## 自由度パターン
|
||
|
||
タスクの性質に応じて、指示の具体度を3段階で調整する。
|
||
|
||
### 高自由度(テキストベースの方針)
|
||
|
||
ヒューリスティクスが指針となり、文脈で判断が変わり、複数のアプローチが妥当な場合。
|
||
|
||
```markdown
|
||
## コードレビュー
|
||
|
||
1. コード構造と設計を分析
|
||
2. バグや境界ケースの可能性を確認
|
||
3. 可読性・保守性の改善を提案
|
||
4. プロジェクト規約への準拠を検証
|
||
```
|
||
|
||
### 中自由度(パラメータ付きの擬似コード)
|
||
|
||
設定が挙動に影響し、ある程度の変動は許容されるが、推奨パターンがある場合。
|
||
|
||
```markdown
|
||
## レポート生成
|
||
|
||
以下のテンプレートを必要に応じてカスタマイズ:
|
||
|
||
def generate_report(data, format="markdown", include_charts=True):
|
||
# データ処理
|
||
# 指定形式で出力
|
||
# オプションでチャートを含める
|
||
```
|
||
|
||
### 低自由度(具体的なスクリプト、変更禁止)
|
||
|
||
操作が壊れやすく、一貫性が必須で、特定の手順を踏む必要がある場合。
|
||
|
||
```markdown
|
||
## データベースマイグレーション
|
||
|
||
以下のスクリプトをそのまま実行:
|
||
|
||
python scripts/migrate.py --verify --backup
|
||
|
||
コマンドを変更したり、フラグを追加しないこと。
|
||
```
|
||
|
||
---
|
||
|
||
## ワークフローパターン
|
||
|
||
複雑なタスクを明確なステップに分解する。チェックリストを使うとClaudeが進捗を追跡できる。
|
||
|
||
```markdown
|
||
## ワークフロー
|
||
|
||
このチェックリストをコピーして進捗を管理:
|
||
|
||
- [ ] Step 1: フォームを解析(analyze_form.py実行)
|
||
- [ ] Step 2: フィールドマッピングを作成(fields.json編集)
|
||
- [ ] Step 3: マッピングを検証(validate_fields.py実行)
|
||
- [ ] Step 4: フォームに記入(fill_form.py実行)
|
||
- [ ] Step 5: 出力を検証(verify_output.py実行)
|
||
|
||
**Step 1: フォームを解析**
|
||
実行: `python scripts/analyze_form.py input.pdf`
|
||
...
|
||
|
||
**Step 5: 出力を検証**
|
||
検証に失敗した場合、Step 2に戻る。
|
||
```
|
||
|
||
**ポイント**:
|
||
- 明確なステップがスキップを防ぐ
|
||
- チェックリストでClaudeとユーザーの双方が進捗を把握
|
||
|
||
---
|
||
|
||
## フィードバックループ
|
||
|
||
「実行 → 検証 → 修正 → 再検証」のパターン。出力品質を大幅に改善する。
|
||
|
||
### コード付きスキルの場合
|
||
|
||
```markdown
|
||
## 編集プロセス
|
||
|
||
1. `word/document.xml` を編集
|
||
2. **即座に検証**: `python scripts/validate.py unpacked_dir/`
|
||
3. 検証失敗時:
|
||
- エラーメッセージを確認
|
||
- XMLを修正
|
||
- 再度検証を実行
|
||
4. **検証が通るまで次に進まない**
|
||
5. リビルド: `python scripts/pack.py unpacked_dir/ output.docx`
|
||
```
|
||
|
||
### コードなしスキルの場合
|
||
|
||
```markdown
|
||
## コンテンツレビュー
|
||
|
||
1. STYLE_GUIDE.md のガイドラインに従ってコンテンツを作成
|
||
2. チェックリストでレビュー:
|
||
- 用語の一貫性
|
||
- 例のフォーマット準拠
|
||
- 必須セクションの網羅
|
||
3. 問題があれば修正して再レビュー
|
||
4. 全要件を満たすまで次に進まない
|
||
```
|
||
|
||
**ポイント**: バリデーションスクリプトのエラーメッセージは具体的に(例: 「フィールド 'signature_date' が見つかりません。利用可能: customer_name, order_total」)
|
||
|
||
---
|
||
|
||
## テンプレートパターン
|
||
|
||
出力形式を指定する。要件の厳密さに応じて表現を変える。
|
||
|
||
### 厳密な要件
|
||
|
||
```markdown
|
||
## レポート構造
|
||
|
||
必ずこのテンプレート構造を使用:
|
||
|
||
# [分析タイトル]
|
||
|
||
## 要約
|
||
[主要な発見の概要(1段落)]
|
||
|
||
## 主要な発見
|
||
- 発見1(データ付き)
|
||
- 発見2(データ付き)
|
||
|
||
## 推奨事項
|
||
1. 具体的なアクション
|
||
2. 具体的なアクション
|
||
```
|
||
|
||
### 柔軟なガイダンス
|
||
|
||
```markdown
|
||
## レポート構造
|
||
|
||
以下はデフォルト形式。分析内容に応じて判断:
|
||
|
||
# [分析タイトル]
|
||
## 要約
|
||
## 主要な発見
|
||
## 推奨事項
|
||
|
||
セクションは分析の種類に応じて調整すること。
|
||
```
|
||
|
||
---
|
||
|
||
## 条件分岐パターン
|
||
|
||
Claudeを決定ポイントで適切な分岐へ導く。
|
||
|
||
```markdown
|
||
## ドキュメント変更ワークフロー
|
||
|
||
1. 変更の種類を判定:
|
||
|
||
**新規作成?** → 下の「作成ワークフロー」へ
|
||
**既存の編集?** → 下の「編集ワークフロー」へ
|
||
|
||
2. 作成ワークフロー:
|
||
- docx-jsライブラリを使用
|
||
- ドキュメントをゼロから構築
|
||
- .docx形式にエクスポート
|
||
|
||
3. 編集ワークフロー:
|
||
- 既存ドキュメントを展開
|
||
- XMLを直接修正
|
||
- 変更ごとにバリデーション
|
||
- 完了後にリパック
|
||
```
|
||
|
||
ワークフローが大規模になる場合は、別ファイルに分離してClaudeに適切なファイルを読ませる。
|
||
|
||
---
|
||
|
||
## アンチパターン
|
||
|
||
| 問題 | 解決 |
|
||
|------|------|
|
||
| SKILL.md 500行超え | references/に分割 |
|
||
| references/が深いネスト(2階層以上) | 1階層に平坦化 |
|
||
| 情報の重複 | 1箇所にのみ記載(SSoT) |
|
||
| descriptionにトリガーなし | トリガーフレーズ3つ以上 |
|
||
| 用語の不統一(「抽出」「取得」「取り出し」混在) | 1つの概念に1つの用語 |
|
||
| 選択肢の提示しすぎ | デフォルト1つ + 例外時の代替 |
|
||
| 時間依存情報(「2025年8月以前は〜」) | 現在の方法のみ記載 |
|
||
|
||
---
|
||
|
||
## サイズ目安
|
||
|
||
| ファイル | 推奨 | 上限 |
|
||
|----------|------|------|
|
||
| description | 〜200文字 | 1024文字 |
|
||
| SKILL.md | 〜200行 | 500行 |
|
||
| references/各ファイル | 〜300行 | 目次必須(100行超) |
|