Communitygithub.com

jakirhussainkhan/dev-skills

AIエージェントの構築、マルチエージェントシステムの設計、アプリケーションへのLLM統合、RAGパイプラインの構築、ベクトルデータベースの操作、MCPサーバーの実装、エージェント通信とオーケストレーションパターンの設計に使用します。キーワード: agent、LLM、RAG、embeddings、vector DB、orchestration、tool use、memory、intent clarification、MCP、LangChain、LangGraph、CrewAI、AutoGen、Microsoft Agent Frameworkでトリガーされます。

dev-skills とは?

このスキルは、AIエージェントの設計と開発に関する包括的なガイドを提供します。プロダクションソフトウェアと同等の厳格さでエージェントを設計するという哲学に基づき、意図の明確化、単一責任原則、仕様先行のアプローチを重視します。サポートするフレームワークは、LangGraph(複雑なステートフルエージェント)、LangChain(RAGパイプライン)、CrewAI(ロールベースのマルチエージェントチーム)、Microsoft Agent Framework(エンタープライズ向け)、AutoGen(レガシー)、およびカスタムMCP(軽量でポータブルなツール)など多岐にわたります。また、RAGパイプライン設計(セマンティックチャンキング、ハイブリッド検索)、エージェントメモリアーキテクチャ(コンテキスト内、短期/長期外部、エピソード記憶)、ツール使用のベストプラクティス(冪等性、バリデーション、タイムアウト)、MCPサーバー構造、セキュリティと安全性(レート制限、サンドボックス化、インジェクション対策)、および自己回復型エージェント設計(検証と再試行ループ、サーキットブレーカー)についても詳しく説明しています。主にClaude Code、Cursor、CodexなどのAIエージェントプラットフォームで活用でき、エージェントの構築から運用までをカバーします。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jakirhussainkhan/dev-skills/tree/HEAD/.github/skills/ai-agent-design

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

AIエージェント設計

核となる哲学

エージェントは魔法ではありません — 入力、出力、メモリ、ツール、そして決定ロジックを持つシステムです。プロダクションソフトウェアと同じ厳格さで設計してください。すべてのエージェントには明確な目的、定義された境界、そして明示的な障害モードが必要です。

エージェント設計の原則

1. 行動する前に意図を明確にする

エージェントは、ユーザーの意図が曖昧な場合 — 不可逆的なアクションを実行する前に — 明確化の質問をしなければなりません。以下のパターンを使用します:

  • 目標は明確か?そうでなければ、焦点を絞った質問を1つする。
  • 制約は既知か?(スコープ、出力形式、データソース)
  • 成功とはどのような状態か?

2. コードの前に仕様書を作成する

エージェントロジックを書く前に、仕様書またはタスクリストファイルを生成します:

  1. エージェントの役割と責任を定義する
  2. アクセスする必要があるすべてのツールをリストアップする
  3. 入力/出力の契約を定義する
  4. 障害モードとフォールバック動作を特定する
  5. その後、コードを書く

3. 単一責任

各エージェントは一つのことをうまく行うべきです。汎用エージェント1つよりも、特化したエージェントのチームを優先します。


オーケストレーションパターン

パターン使用すべき時説明
Sequential (順次)線形パイプラインエージェントが固定順序で連鎖する(ドラフト → レビュー → 公開)
Supervisor (スーパーバイザー)複雑なマルチモジュールタスクリードエージェントが専門ワーカーにルーティングする
ReAct (リアクト)自律的な問題解決推論(思考)+ 行動(ツール使用)を組み合わせる
Group Chat (グループチャット)協調タスク人間による監視付きのマルチエージェント通信
DAG (有向非巡回グラフ)ステートフルワークフロー循環的でステートフルなオーケストレーションのための有向非巡回グラフ

フレームワーク選択ガイド

フレームワーク最適な用途ステータス
LangGraph複雑なステートフルエージェント、循環的ワークフロー、マルチエージェントオーケストレーション、プロダクショングレード✅ アクティブ — GA 2025年5月
LangChainシンプルなRAGパイプライン、線形ワークフロー、迅速なプロトタイピング✅ アクティブ — RAGに使用、エージェントには非推奨
CrewAIロールベースのマルチエージェントチーム(「マネージャー」、「リサーチャー」、「ライター」)✅ アクティブ
Microsoft Agent FrameworkAzureエコシステムにおけるエンタープライズエージェント — AutoGen + Semantic Kernelを置き換え✅ アクティブ — パブリックプレビュー2025年10月、GA目標2026年第1四半期
AutoGenレガシー — 依然として動作するが新機能はなし⚠️ 2025年10月よりメンテナンスモード
カスタム (MCP)オープンスタンダードによる軽量でポータブル、相互運用可能なエージェントツール✅ アクティブ

LangChain vs LangGraph — どちらを使うべきか

LangChainチームは現在、以下のように明確に分割することを推奨しています:

  • LangGraph → エージェント向け:ステートフル、循環的、マルチエージェント、長時間実行タスク
  • LangChain → RAGと線形パイプライン向け:シンプルなドキュメントQ&A、ステップバイステップ変換

LangGraphはLangChain上に構築されています — 両方を一緒に使用でき、LangChainから始めて、より多くの制御が必要になった場合にLangGraphに移行できます。


RAGパイプライン設計

標準的なRAGフロー

ユーザークエリ → クエリの埋め込み化 → ベクトル検索 → チャンク取得 → プロンプト拡張 → LLM → 応答

チャンキング戦略(2026年ベストプラクティス)

  • セマンティックチャンキングを使用 — 文字数ではなく意味で区切る
  • チャンクサイズ:精度重視の場合は256~512トークン、ナラティブコンテンツの場合は1024トークン
  • 常にメタデータを含める:ソース、ページ、セクション、タイムスタンプ

ハイブリッド検索(推奨)

密ベクトル(セマンティック)+ 疎ベクトル(キーワード)を組み合わせて最適な再現率を実現:

最終スコア = α × 密スコア + (1 - α) × 疎スコア

ベクトルデータベース選択

DB最適な用途
pgvector既存のPostgreSQLスタック、シンプルなユースケース
Pineconeマネージド、プロダクション規模、最小限の運用
Weaviateマルチモーダル、ハイブリッド検索組み込み
Milvus高性能、セルフホスト、大規模
Chromaローカル開発、プロトタイピング

エージェントメモリアーキテクチャ

タイプ説明実装
コンテキスト内現在の会話ウィンドウチャット履歴配列
外部短期セッションスコープのメモリRedis / インメモリストア
外部長期セッションをまたぐ永続的メモリベクトルDB + メタデータ
エピソード記憶過去のやり取りの要約要約チェーン → ベクトルストア

コンテキスト腐敗警告: 長いコンテキストウィンドウは、時間の経過とともにエージェントの品質を低下させます。関連性を維持するために、N回のターンごとに要約ステップを実装してください。


ツール使用と関数呼び出し

ツール定義パターン

すべてのツールには以下が必要です:

name: 説明的なツール名
description: このツールを使用すべき時とその機能(明示的に記述)
parameters:
  - name: パラメータ名
    type: 文字列
    description: このパラメータが期待するもの
    required: true

ツール使用のベストプラクティス

  • 可能な限りツールは冪等であるべき
  • 次のステップに渡す前に常にツール出力を検証する
  • 外部ツール呼び出しにはタイムアウトとリトライを実装する
  • デバッグのためにすべてのツール呼び出しをログに記録する

エージェント通信パターン

意図明確化プロトコル

エージェントが曖昧なリクエストを受け取った場合:

  1. 曖昧さを特定する — 具体的に何が不明確か?
  2. 1つの質問をする — すべてではなく、最も重要な質問を一つ
  3. デフォルトを提案する — 「特に指示がなければXと仮定します」
  4. 不可逆的なアクションの前に確認する — 削除、公開、送信の前には必ず確認する

進捗報告

長時間実行タスクの場合、エージェントは以下を報告する必要があります:

[ステップ 1/4] ドキュメントを取得中... ✓
[ステップ 2/4] チャンキングと埋め込み化中... ✓
[ステップ 3/4] ベクトルストアに問い合わせ中...

エラー通知

✗ ツールが失敗しました: [ツール名]
理由: [具体的なエラー]
フォールバック: [代わりに行っていること]

MCP(モデルコンテキストプロトコル)

MCPは、エージェントを外部ツールやデータソースに接続するためのオープンスタンダードです。ポータブルで相互運用可能なエージェントツールを構築する際に使用します。

MCPサーバー構造

my-mcp-server/
├── server.py (または index.ts)
├── tools/
│   └── my_tool.py
└── README.md

MCPを使用すべき時 vs 直接統合

  • MCPを使用:ツールを複数のエージェント/プラットフォームで再利用可能にする必要がある場合
  • 直接統合を使用:プロジェクト固有の単発的なツール実装の場合

詳細なMCPサーバー実装ガイダンスについては、mcp-builderスキルを参照してください。


セキュリティと安全性

  • サンドボックス化なしにエージェントが任意のコードを実行することを決して許可しない
  • すべてのLLM API呼び出しにレート制限を実装する
  • ツールに渡す前にすべての入力を検証およびサニタイズする
  • 監査可能性のためにすべてのエージェントの決定をログに記録する
  • 暴走するトークンコストや再帰ループを防ぐためのガードレールを実装する
  • システムプロンプトインジェクション対策を使用する — ユーザー入力をシステム指示から明確な区切り文字で分離する

回復力のあるエージェント設計(自己回復)

エージェントは本番環境で失敗します。最初から復旧を考慮して設計してください。

検証と再試行ループ(LoopAgentパターン)

出力を生成 → 出力を検証 → 無効な場合:フィードバック + 再生成
最大反復回数:3  ← 無限ループを防ぐサーキットブレーカー

計画・検証・実行・観察・再計画

計画:    計画を生成し、行動する前に実現可能性を確認
実行:    行動を起こす
観察:    成功したか?出力を確認し、テストを実行
再計画:  観察で失敗が示された場合 → 調整して再試行
停止:    最大再試行回数に達した場合 → 失敗を明確に報告し、助けを求める

エージェントフォールバック階層

主要アプローチが失敗 → 代替アプローチを試行
代替アプローチも失敗 → 開発者に明確化を依頼
明確化がない場合 → 安全なデフォルトアクションまたは正常停止

提示前の出力検証

  • 生成されたコードを提示する前にテスト/ lintを実行する
  • 出力形式が要件と一致していることを確認する
  • ジェネレーターの出力をチェックするために別のバリデーターステップ(異なるモデルまたはプロンプト)を使用する
  • 未検証の出力を完了したものとして提示しない

エージェント用サーキットブレーカー

暴走動作を防ぐためにハードリミットを設定します:

  • タスクあたりの最大ツール呼び出し反復回数(例:10)
  • セッションあたりの最大トークン消費量
  • 失敗ステップあたりの最大再試行回数(例:3)
  • ツール呼び出しあたりのタイムアウト

完全な回復力の哲学とコードパターンについては、self-healing-mindsetスキルを参照してください。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

関連スキル