phx:research
Elixir/Phoenixのトピックについて調査したり、Hexライブラリを評価(--libraryオプション使用)できます。ライブラリについて学習したい場合、パターンを知りたい場合、またはアプローチを比較したい場合に利用してください。HexDocs、ElixirForum、GitHubから検索します。
description の原文を見る
Research Elixir/Phoenix topics or evaluate Hex libraries (--library). Use when learning about libraries, patterns, or comparing approaches. Searches HexDocs, ElixirForum, GitHub.
SKILL.md 本文
Elixir トピックのリサーチ
ウェブ検索と関連ソースの効率的な取得により、トピックをリサーチします。
使用方法
/phx:research Oban unique jobs best practices
/phx:research LiveView file upload with progress
/phx:research --library permit
引数
$ARGUMENTS = リサーチトピック/質問。ライブラリの構造化された評価を行う場合は --library を追加します(${CLAUDE_SKILL_DIR}/references/library-evaluation.md テンプレートを使用)。
重要原則
- 出力をファイルに書き込む、インラインで表示しない — リサーチ出力は会話を圧迫し、将来のセッションでの参照を失う
- リサーチ後に停止する、自動遷移しない — 次のステップはユーザーが決定する
- ブログ記事より公式ソースを優先する — HexDocs と ElixirForum はバージョン固有のコンテキストを持つ
- リサーチ質問ごとに1つのドキュメント — ファイルを分散させない
- 生のユーザー入力を WebSearch クエリとして渡さない — まず分解する
ライブラリ評価モード
$ARGUMENTS に --library が含まれているか、トピックが明らかに Hex 依存の評価についての場合("permit を使うべきか", "sagents を評価する", "oban vs exq を比較") :
${CLAUDE_SKILL_DIR}/references/library-evaluation.mdからテンプレートを読む- 構造化された評価ワークフローに従う
- 1つのドキュメントを
.claude/research/{lib}-evaluation.mdに出力する - 以下の一般的なリサーチワークフローをスキップする
ワークフロー
0. 事前チェック
キャッシュチェック: .claude/research/{topic-slug}.md が既に存在するかチェックします。最近のもの(<24時間)の場合: 既存のサマリーを提示し、「更新するか既存のものを使用するか?」と尋ねます
Tidewave ショートカット: トピックが既存の依存関係(ライブラリが mix.exs に既に含まれている)についてのものの場合、ウェブ検索より Tidewave を優先します:
mcp__tidewave__get_docs(module: "LibraryModule")
これは mix.lock バージョンに一致するドキュメントを返します — より高速、より正確、ウェブトークンなし。Tidewave が利用不可の場合か、トピックがコミュニティの議論を必要とする場合(課題、実装パターン、比較)にのみウェブ検索に進みます。
1. クエリ分解(重要 — 検索前に必ず実施)
生の $ARGUMENTS を WebSearch に渡さない。 まず分解します:
$ARGUMENTSが30語未満で焦点を絞っている → 単一クエリとして使用$ARGUMENTSが30語以上または複数トピック → 2~4つのクエリを抽出
各クエリ: 最大10語、1つの特定な側面を対象。
例:
入力: "detect files, export to md, feed database with embeddings,
use ReqLLM for OpenAI API..."
クエリ:
1. "Elixir PDF text extraction library hex"
2. "Ecto pgvector embeddings setup"
3. "ReqLLM OpenAI embeddings Elixir"
2. 並列ウェブ検索
分解されたすべてのクエリを1つのレスポンス内で並列検索します:
WebSearch(query: "{query1} site:elixirforum.com OR site:hexdocs.pm OR site:github.com")
WebSearch(query: "{query2} site:hexdocs.pm OR site:elixirforum.com")
結果全体で URL を重複排除します。明らかに無関係なヒットは破棄します。
3. 並列リサーチワーカーを起動
URL をトピッククラスタでグループ化します。1~3つのウェブリサーチエージェント(トピッククラスタごとに1つ)を並列で起動します:
Agent(subagent_type: "web-researcher", prompt: """
リサーチ焦点: {分解されたクエリからの特定の側面}
これらの URL をフェッチしてください:
- {url1}
- {url2}
- {url3}
抽出対象: コード例、パターン、課題、バージョン互換性。
500~800語のサマリーを返してください。
""", run_in_background: true)
ルール:
- 1つのトピッククラスタ = 1つのエージェント(無関係な URL を混在させない)
- エージェントあたり最大5つの URL(それ以上は効果が薄れる)
- 合計が1~3つの URL のみの場合、単一のフォアグラウンドエージェントを使用
- URL を明示的に渡す — エージェントは再検索してはいけません
- エージェントは簡潔 — 安価、高速、抽出に焦点を絞ったもの
4. 出力の書き込み(ファイル優先 — インラインで表示しない)
すべてのエージェントが完了した後、サマリーを1つのファイルに統合します。 目標: トピックリサーチの場合 ~5KB、ライブラリ評価の場合 ~3KB。
.claude/research/{topic-slug}.md を作成します:
# リサーチ: {トピック}
## サマリー
{すべてのワーカー結果を組み合わせた2~3文の回答}
## ソース
### {カテゴリ}
- [{タイトル}]({url}) - {重要な洞察}
### コード例
```elixir
# {ソース}より: {これが何を示すか}
{コード}
推奨事項
- {証拠付きの推奨事項}
- {証拠付きの推奨事項}
注意すべき点
- {フォーラム/問題からの課題}
- {バージョン互換性の注記}
### 5. リサーチ後 — 停止
**リサーチサマリーを提示して停止します。** 自動遷移しないでください。
`AskUserQuestion` を使用してユーザーに次のアクションを選択させます:
- 「このリサーチに基づいて機能を計画する」 → `/phx:plan`
- 「特定の発見を調査する」 → `/phx:investigate`
- 「サブトピックについてさらにリサーチする」 → リサーチを継続
- 「完了」 → 終了
**リサーチ後に `/phx:plan` やその他のスキルを自動呼び出ししない。**
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- oliver-kriska
- ライセンス
- MIT
- 最終更新
- 2026/5/12
Source: https://github.com/oliver-kriska/claude-elixir-phoenix / ライセンス: MIT