mcpField
I
investigate

investigate

github.com/johnlindquist開発2768 回インストール46 週間前に更新
リポジトリ

investigate について

investigateは、ソースコードをたどって問題を調査する開発者向けデバッグスキルです。ripgrep検索やGit履歴の確認にGeminiの分析を組み合わせ、エラー、仮説、コードの文脈を調べます。

主な機能

  1. 01ripgrepによるコード検索と定義の特定
  2. 02関数の使用箇所と実行フローの追跡
  3. 03エラー、API、クエリ、設定の調査
  4. 04Git履歴から変更を検索
  5. 05Geminiによるエラー分析と仮説検証

活用シーン

  1. 01報告されたエラーの発生箇所を追跡
  2. 02関数の定義と呼び出し元を特定
  3. 03APIエンドポイントやデータベースクエリを調査
  4. 04バグの仮説を立てて検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/johnlindquist/claude --skill investigate

インストール後、Claude Code で/investigateを入力して読み込まれたか確認します。

詳細

調査ツールキット

体系的な検索と AI による分析を通じて問題をデバッグします。

前提条件

# ripgrep for fast search
brew install ripgrep

# Gemini for analysis
pip install google-generativeai
export GEMINI_API_KEY=your_api_key

検索コマンド

ripgrep の基本
# Search for pattern
rg "pattern" src/

# Case insensitive
rg -i "error" src/

# Whole word
rg -w "user" src/

# File types
rg -t ts "function" src/
rg -t py "def " src/

# Exclude patterns
rg "TODO" --glob "!node_modules"

# Show context
rg -C 3 "error" src/  # 3 lines before and after
rg -B 5 "crash" src/  # 5 lines before
rg -A 5 "crash" src/  # 5 lines after

# Just filenames
rg -l "pattern" src/

# Count matches
rg -c "pattern" src/
定義の検索
# Function definitions (TypeScript)
rg "function\s+functionName" src/
rg "(const|let|var)\s+functionName\s*=" src/
rg "export\s+(async\s+)?function\s+\w+" src/

# Class definitions
rg "class\s+ClassName" src/

# Interface/Type definitions
rg "(interface|type)\s+TypeName" src/
使用箇所の追跡
# Where is this function called?
rg "functionName\(" src/

# Where is this imported?
rg "import.*functionName" src/

# Where is this exported?
rg "export.*functionName" src/

調査パターン

バグの調査
# 1. Search for error message
rg "exact error message" .

# 2. Find where error is thrown
rg "throw.*Error" src/ -C 3

# 3. Trace the function
rg "functionThatFails" src/ -C 5

# 4. Check recent changes
git log --oneline -20 --all -- src/problematic-file.ts
git diff HEAD~5 -- src/problematic-file.ts
実行フローの追跡
#!/bin/bash
ENTRY_POINT=$1

echo "=== Entry Point ==="
rg -A 10 "export.*$ENTRY_POINT" src/

echo "=== Called Functions ==="
rg -o "\w+\(" src/$ENTRY_POINT*.ts | sort -u

echo "=== Dependencies ==="
rg "^import" src/$ENTRY_POINT*.ts
AI を活用したデバッグ
# Analyze error with context
ERROR="Your error message here"
CODE=$(cat problematic-file.ts)

gemini -m pro -o text -e "" "Debug this error:

ERROR: $ERROR

CODE:
$CODE

Provide:
1. Most likely cause
2. How to verify
3. How to fix
4. How to prevent in future"
仮説の検証
# Generate hypotheses
gemini -m pro -o text -e "" "Given this bug symptom:

SYMPTOM: [describe what's happening]
CONTEXT: [relevant code/system info]

Generate 5 hypotheses ranked by likelihood, with a test for each."

# Then test each hypothesis
rg "hypothesis-related-pattern" src/

よくある調査

すべてのエラーハンドリングを検索
rg "catch|\.catch|try\s*{" src/ -t ts
rg "throw\s+new" src/ -t ts
API エンドポイントを検索
rg "(get|post|put|delete|patch)\s*\(" src/ -i
rg "router\.(get|post|put|delete)" src/
rg "@(Get|Post|Put|Delete)" src/
データベースクエリを検索
rg "(SELECT|INSERT|UPDATE|DELETE)" src/ -i
rg "\.query\(|\.execute\(" src/
rg "prisma\.\w+\.(find|create|update|delete)" src/
設定を検索
rg "process\.env\." src/
rg "(config|settings)\[" src/
rg "getenv|os\.environ" src/ -t py
セキュリティ問題を検索
# SQL injection potential
rg "query.*\+.*\"|'.*\+" src/

# Hardcoded secrets
rg "(password|secret|key|token)\s*=\s*['\"]" src/ -i

# Unsafe eval
rg "eval\(" src/

詳細調査スクリプト

#!/bin/bash
# investigate.sh - Comprehensive code investigation

TERM=$1
echo "=== Investigating: $TERM ==="

echo ""
echo "### Definitions ###"
rg "^(export\s+)?(function|const|class|interface|type)\s+$TERM" src/

echo ""
echo "### Usage ###"
rg "$TERM" src/ --stats | head -50

echo ""
echo "### Recent Changes ###"
git log --oneline -10 -S "$TERM"

echo ""
echo "### Blame ###"
for f in $(rg -l "$TERM" src/); do
  echo "--- $f ---"
  git blame -L "/$TERM/,+5" "$f" 2>/dev/null | head -10
done

ベストプラクティス

  1. エラーから始める - まず正確なメッセージを検索します
  2. コンテキストを広げる - 周囲のコードには -C、-B、-A を使用します
  3. 履歴を確認する - git log -S でコードがいつ導入されたかを特定できます
  4. 複雑な場合は AI を使う - パターンマッチングでは不十分なときに
  5. 調査結果を記録する - 発見した内容を書き留めます
  6. 仮説を検証する - 思い込む前に確認します

コメント