customaize-agent:prompt-engineering
このスキルは、Agent用のコマンド、フック、スキルを記述したり、サブAgentやその他のLLM操作用のプロンプトを作成したりする場合に使用します。プロンプトの最適化、LLM出力の改善、本番環境向けのプロンプトテンプレート設計などに活用できます。
description の原文を見る
Use this skill when you writing commands, hooks, skills for Agent, or prompts for sub agents or any other LLM interaction, including optimizing prompts, improving LLM outputs, or designing production prompt templates.
SKILL.md 本文
プロンプトエンジニアリングパターン
LLM の性能、信頼性、制御可能性を最大限に引き出すための高度なプロンプトエンジニアリング技法です。
コア機能
1. Few-Shot ラーニング
ルールを説明する代わりに、例を示してモデルを教えます。希望する動作を示す2~5個の入出力ペアを含めます。一貫した形式設定、特定の推論パターン、エッジケースの処理が必要な場合に使用します。例が多いほど精度が向上しますが、トークンを消費します。タスクの複雑さに応じてバランスを取ってください。
例:
サポートチケットから重要情報を抽出します:
入力: "ログインできず、エラー403が出続けています"
出力: {"issue": "authentication", "error_code": "403", "priority": "high"}
入力: "機能リクエスト: 設定にダークモードを追加してほしい"
出力: {"issue": "feature_request", "error_code": null, "priority": "low"}
これを処理してください: "10MBを超えるファイルアップロードができず、タイムアウトが発生します"
2. Chain-of-Thought プロンプティング
最終的な答えの前に段階的な推論をリクエストします。「段階を追って考えてみましょう」(ゼロショット)を追加するか、推論トレースの例を含めます(フューショット)。複数ステップのロジック、数学的推論が必要な複雑な問題、またはモデルの思考プロセスを検証したい場合に使用します。解析的タスクの精度を30~50%向上させます。
例:
このバグレポートを分析し、根本原因を判定してください。
段階を追って考えます:
1. 期待される動作は何ですか?
2. 実際の動作は何ですか?
3. 最近変更された可能性がある点は何ですか?
4. どのコンポーネントが関連していますか?
5. 最も可能性の高い根本原因は何ですか?
バグ: "昨日デプロイされたキャッシュ更新後、ユーザーはドラフトを保存できません"
3. プロンプト最適化
テストと改善を通じてプロンプトを体系的に改善します。シンプルな状態から開始し、パフォーマンス(精度、一貫性、トークン使用量)を測定してから、反復します。エッジケースを含む様々な入力でテストします。A/Bテストを使用して変動を比較します。一貫性とコストが重要な本番環境プロンプトに必須です。
例:
バージョン1(シンプル): "この記事を要約してください"
→ 結果: 長さが一貫性がなく、重要なポイントを見落とす
バージョン2(制約を追加): "3つの箇条書きで要約してください"
→ 結果: 構造は良いが、依然としてニュアンスを見落とす
バージョン3(推論を追加): "3つの主な知見を特定してから、それぞれを要約してください"
→ 結果: 一貫性があり、正確で、重要な情報をキャプチャする
4. テンプレートシステム
変数、条件付きセクション、モジュール型コンポーネントを備えた再利用可能なプロンプト構造を構築します。マルチターンの会話、ロールベースの相互作用、または同じパターンが異なる入力に適用される場合に使用します。重複を削減し、類似タスク間での一貫性を確保します。
例:
# 再利用可能なコードレビューテンプレート
template = """
この{language}コードを{focus_area}についてレビューしてください。
コード:
{code_block}
以下の観点からフィードバックを提供してください:
{checklist}
"""
# 使用例
prompt = template.format(
language="Python",
focus_area="security vulnerabilities",
code_block=user_code,
checklist="1. SQL injection\n2. XSS risks\n3. Authentication"
)
5. システムプロンプト設計
会話全体を通じて持続するグローバルな動作と制約を設定します。モデルのロール、専門知識レベル、出力形式、セーフティガイドラインを定義します。ターンごとに変わるべきではない安定した命令にシステムプロンプトを使用し、変動するコンテンツ用にユーザーメッセージトークンを確保します。
例:
システム: あなたはAPI設計を専門とするシニアバックエンドエンジニアです。
ルール:
- スケーラビリティとパフォーマンスを常に考慮してください
- デフォルトではRESTfulパターンを提案してください
- セキュリティ上の懸念は即座にフラグを立ててください
- コード例はPythonで提供してください
- アーリーリターンパターンを使用してください
レスポンスをフォーマットしてください:
1. 分析
2. 推奨事項
3. コード例
4. トレードオフ
主なパターン
段階的な情報開示
シンプルなプロンプトから開始し、必要な場合のみ複雑さを追加します:
-
レベル1: 直接指示
- "この記事を要約してください"
-
レベル2: 制約を追加
- "この記事を3つの�条書きで要約し、主な知見に焦点を当ててください"
-
レベル3: 推論を追加
- "この記事を読み、主な知見を特定してから、3つの箇条書きで要約してください"
-
レベル4: 例を追加
- 入出力ペアを含む2~3個の要約例を含めます
指示の階層構造
[システムコンテキスト] → [タスク指示] → [例] → [入力データ] → [出力形式]
エラー復旧
失敗に上手に対処するプロンプトを構築します:
- フォールバック命令を含めます
- 信頼度スコアをリクエストします
- 不確実な場合は代替解釈をリクエストします
- 欠落情報を示す方法を指定します
ベストプラクティス
- 具体的である: 曖昧なプロンプトは一貫性のない結果を生成します
- 説明するのではなく示す: 例は説明より効果的です
- 徹底的にテストする: 多様で代表的な入力で評価します
- 迅速に反復する: 小さな変更が大きな影響をもたらすことができます
- パフォーマンスを監視する: 本番環境でメトリクスを追跡します
- バージョン管理: プロンプトをコードとして適切にバージョン管理します
- 意図を文書化する: プロンプトが構造化された理由を説明します
よくある落とし穴
- 過度な設計: シンプルなプロンプトを試す前に複雑なプロンプトで始める
- 例のポイ捨て: ターゲットタスクと一致しない例を使用する
- コンテキストオーバーフロー: 過度な例でトークン制限を超える
- 曖昧な命令: 複数の解釈の余地を残す
- エッジケースを無視する: 異常な境界入力でテストしない
統合パターン
RAGシステムとの連携
# 取得したコンテキストをプロンプトエンジニアリングと組み合わせます
prompt = f"""以下のコンテキストが与えられています:
{retrieved_context}
{few_shot_examples}
質問: {user_question}
上記のコンテキストに基づいてのみ、詳細な回答を提供してください。コンテキストに十分な情報が含まれていない場合は、欠落している情報を明確に述べてください。"""
検証との連携
# 自己検証ステップを追加します
prompt = f"""{main_task_prompt}
レスポンスを生成した後、以下の基準を満たしていることを確認してください:
1. 質問に直接答えている
2. 提供されたコンテキストからのみ情報を使用している
3. 特定のソースを引用している
4. 不確実な点を認識している
検証に失敗した場合は、レスポンスを修正してください。"""
パフォーマンス最適化
トークン効率
- 冗長な単語とフレーズを削除します
- 最初の定義後は略語を一貫して使用します
- 類似した命令を統合します
- 安定したコンテンツはシステムプロンプトに移動します
レイテンシ削減
- 品質を犠牲にしないでプロンプト長を最小化します
- 長文出力にはストリーミングを使用します
- 一般的なプロンプトプレフィックスをキャッシュします
- 可能な場合は類似したリクエストをバッチ処理します
エージェントプロンプティングのベストプラクティス
Anthropicの公式なエージェントプロンプティングベストプラクティスに基づいています。
コア原則
コンテキストウィンドウ
「コンテキストウィンドウ」とは、言語モデルが新しいテキストを生成する際に参照して遡ることができるテキスト全体の量と、生成する新しいテキストの量の合計を指します。これは言語モデルが訓練された大規模なデータコーパスとは異なり、モデルの「作業メモリ」を表しています。より大きなコンテキストウィンドウにより、モデルはより複雑で長いプロンプトを理解して応答できますが、より小さなコンテキストウィンドウは長いプロンプトの処理や拡張された会話での一貫性を保つ能力を制限する可能性があります。
- 段階的なトークン累積: 会話がターンを進むにつれて、各ユーザーメッセージとアシスタントレスポンスがコンテキストウィンドウ内に累積されます。前のターンは完全に保持されます。
- 線形成長パターン: コンテキスト使用量は各ターンで線形に成長し、前のターンは完全に保持されます。
- 200K トークン容量: 利用可能なコンテキストウィンドウ全体(200,000トークン)は、会話履歴を保存し、新しい出力を生成するための最大容量を表します。
- 入出力フロー: 各ターンは以下で構成されます:
- 入力フェーズ: すべての前の会話履歴と現在のユーザーメッセージを含みます
- 出力フェーズ: 将来の入力の一部となるテキストレスポンスを生成します
簡潔さが鍵
コンテキストウィンドウは共有資産です。あなたのプロンプト、コマンド、スキルはClaudeが知る必要があるすべてのものとコンテキストウィンドウを共有します。以下を含みます:
- システムプロンプト
- 会話履歴
- その他のコマンド、スキル、フック、メタデータ
- 実際のリクエスト
デフォルトの前提: Claudeは既に非常に賢い
Claudeが既に知らないコンテキストのみを追加します。各情報を吟味してください:
- 「Claudeは本当にこの説明が必要ですか?」
- 「Claudeはこれを既に知っていると仮定できますか?」
- 「この段落のトークンコストは正当ですか?」
良い例: 簡潔 (約50トークン):
## PDF テキストを抽出
テキスト抽出にはpdfplumberを使用します:
```python
import pdfplumber
with pdfplumber.open("file.pdf") as pdf:
text = pdf.pages[0].extract_text()
```
悪い例: 冗長すぎる (約150トークン):
## PDF テキストを抽出
PDF(Portable Document Format)ファイルは、テキスト、画像、その他のコンテンツを含む一般的なファイル形式です。PDFからテキストを抽出するには、ライブラリを使用する必要があります。PDF処理に利用できるライブラリは多数ありますが、使いやすく、ほとんどのケースに対応するため、pdfplumberをお勧めします。最初にpipを使用してインストールする必要があります。その後、以下のコードを使用できます...
簡潔版は、Claudeが PDF とライブラリの動作を既に知っていると仮定しています。
適切な自由度を設定
タスクの脆弱性と可変性のレベルに合わせて特異性のレベルを一致させます。
高い自由度 (テキストベースの指示):
以下の場合に使用します:
- 複数のアプローチが有効である
- 決定はコンテキストに依存する
- ヒューリスティクスがアプローチを指導する
例:
## コードレビュープロセス
1. コード構造と構成を分析します
2. 潜在的なバグやエッジケースを確認します
3. 可読性と保守性の改善を提案します
4. プロジェクト規約への準拠を検証します
中程度の自由度 (疑似コードまたはパラメータ付きスクリプト):
以下の場合に使用します:
- 推奨パターンが存在する
- ある程度の変動が許容される
- 設定が動作に影響する
例:
## レポートを生成
このテンプレートを使用し、必要に応じてカスタマイズします:
```python
def generate_report(data, format="markdown", include_charts=True):
# データを処理
# 指定形式で出力を生成
# オプションで視覚化を含める
```
低い自由度 (特定のスクリプト、パラメータなしまたはほぼなし):
以下の場合に使用します:
- 操作が脆弱でエラーが起きやすい
- 一貫性が極めて重要
- 特定のシーケンスが従われなければならない
例:
## データベースマイグレーション
このスクリプトを正確に実行します:
```bash
python scripts/migrate.py --verify --backup
```
コマンドを変更したり、追加フラグを追加したりしないでください。
類推: Claudeをパスを探索するロボットと考えてください:
- 両側に崖がある狭い橋: 前に進む安全な方法は1つだけです。特定のガードレールと正確な指示を提供してください(低い自由度)。例: 正確なシーケンスで実行する必要があるデータベースマイグレーション。
- 危険のないオープンフィールド: 成功に導く多くのパスがあります。一般的な方向を示し、Claudeが最適なルートを見つけることを信頼してください(高い自由度)。例: コンテキストが最適なアプローチを決定するコードレビュー。
エージェント通信の説得原則
プロンプト(Claude Code用のコマンド、フック、スキル、またはサブエージェント用プロンプト、その他の LLM インタラクション)を作成する場合に役立ちます。
概要
LLM は人間と同じ説得原則に反応します。このサイコロジーを理解することは、より効果的なスキルを設計するのに役立ちます。これは、操作することではなく、プレッシャーの下でも重要な慣行が確実に従われるようにすることです。
研究基盤: Meincke他(2025)は7つの説得原則をN=28,000のAI会話でテストしました。説得技法はコンプライアンス率を2倍以上に増加させました(33% → 72%, p < .001)。
7つの原則
1. 権威
それは何か: 専門知識、資格、または公式な情報源への敬意。
プロンプトでの動き方:
- 命令的言語: 「YOU MUST」、「Never」、「Always」
- 交渉の余地がないフレーミング: 「例外なし」
- 決定疲労と正当化を排除する
使用する場合:
- 規律を強制するスキル(TDD、検証要件)
- セーフティクリティカルな慣行
- 確立されたベストプラクティス
例:
✅ テストの前にコードを書く? 削除してください。最初からやり直してください。例外なし。
❌ 可能な場合はテストを最初に作成することを検討してください。
2. コミットメント
それは何か: 前の行動、声明、または公開宣言との一貫性。
プロンプトでの動き方:
- アナウンスをリクエストする: 「スキル使用を発表する」
- 明確な選択を強制する: 「A、B、またはCを選択」
- 追跡を使用する: チェックリスト用TodoWrite
使用する場合:
- スキルが実際に従われることを確保する
- マルチステップのプロセス
- アカウンタビリティメカニズム
例:
✅ スキルを見つけたら、「[スキル名]を使用しています」とアナウンスしなければなりません。
❌ どのスキルを使用しているか相手に知らせることを検討してください。
3. スカーシティ
それは何か: 時間制限または利用可能性の制限からの緊急性。
プロンプトでの動き方:
- 時間制限のある要件: 「進む前に」
- シーケンシャルな依存関係: 「X直後に」
- 先延ばしを防ぐ
使用する場合:
- 即座の検証要件
- 時間に敏感なワークフロー
- 「後でやります」を防ぐ
例:
✅ タスク完了後、即座に進める前にコードレビューをリクエストしてください。
❌ 便利な時にコードをレビューできます。
4. ソーシャルプルーフ
それは何か: 他者が何をするか、または何が正常と考えられるかへの同調。
プロンプトでの動き方:
- 普遍的なパターン: 「毎回」、「常に」
- 障害モード: 「YなしのX = 障害」
- 規範を確立する
使用する場合:
- 普遍的な慣行の文書化
- 一般的な失敗について警告する
- 標準を強化する
例:
✅ TodoWriteトラッキングなしのチェックリスト = ステップがスキップされます。毎回。
❌ TodoWriteがチェックリストに役立つと感じる人もいます。
5. ユニティ
それは何か: 共有アイデンティティ、「私たち」感、内集団の帰属意識。
プロンプトでの動き方:
- 協調的言語: 「私たちのコードベース」、「私たちは同僚」
- 共有目標: 「私たちの両方が品質を望んでいます」
使用する場合:
- 協調的ワークフロー
- チーム文化の確立
- 非階級的な慣行
例:
✅ 私たちは一緒に働く同僚です。私は正直な技術判断が必要です。
❌ 私が間違っていたら私に伝えるべきです。
6. 相互性
それは何か: 受け取った利益を返す義務。
動き方:
- 控えめに使用する - 操作的に感じることがある
- プロンプトではほとんど必要ない
いつ避けるか:
- ほぼ常に(他の原則がより効果的)
7. 好意
それは何か: 好きな人たちとの協力を好む傾向。
動き方:
- コンプライアンスに使用しないでください
- 正直なフィードバック文化と矛盾する
- イエスマン化を作成する
いつ避けるか:
- 規律強制に常に
プロンプトタイプ別の原則の組み合わせ
| プロンプトタイプ | 使用 | 避ける |
|---|---|---|
| 規律を強制するもの | 権威 + コミットメント + ソーシャルプルーフ | 好意、相互性 |
| ガイダンス/技法 | 適度な権威 + ユニティ | 強い権威 |
| 協調的 | ユニティ + コミットメント | 権威、好意 |
| リファレンス | 明確性のみ | すべての説得 |
なぜこれが機能するのか: 心理学
明確なルールは正当化を削減する:
- 「YOU MUST」は決定疲労を排除する
- 絶対的な言語は「これは例外ですか?」という質問を排除する
- 明示的なアンチ正当化は特定の抜け穴に対抗する
実装意図は自動的な動作を作成する:
- 明確なトリガー + 必須アクション = 自動実行
- 「X のとき、Y をする」は「一般的に Y をする」より効果的
- コンプライアンスの認知負荷を削減する
LLM はパラヒューマンである:
- これらのパターンを含む人間のテキストで訓練された
- 権威言語は訓練データ内のコンプライアンスに先行する
- コミットメントシーケンス(ステートメント → アクション)は頻繁にモデル化される
- ソーシャルプルーフパターン(誰もが X をします)は規範を確立する
倫理的な使用
正当:
- 重要な慣行が確実に従われるようにする
- 効果的なドキュメントを作成する
- 予測可能な障害を防ぐ
不正当:
- 個人的な利益のために操作する
- 偽りの緊急性を作成する
- 罪悪感ベースのコンプライアンス
テスト: この技法が完全に理解したユーザーの真摯な利益に役立つかどうか?
クイックリファレンス
プロンプトを設計する際に、以下を質問してください:
- それはどのタイプですか? (規律対ガイダンス対リファレンス)
- どのような動作を変えたいですか?
- どの原則が適用されますか? (通常、規律には権威 + コミットメント)
- 多すぎる組み合わせをしていませんか? (すべて7つを使用しないでください)
- これは倫理的ですか? (ユーザーの真摯な利益に役立ちますか?)
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- christophacham
- ライセンス
- MIT
- 最終更新
- 2026/3/3
Source: https://github.com/christophacham/agent-skills-library / ライセンス: MIT