grepai-trace-callers
指定した関数を呼び出しているコードをGrepAIのトレース機能で検索します。特定の関数の呼び出し元を調査したい場合に使用してください。
description の原文を見る
Find function callers with GrepAI trace. Use this skill to discover what code calls a specific function.
SKILL.md 本文
GrepAI Trace Callers
このスキルは grepai trace callers を使って、特定の関数やメソッドを呼び出しているすべてのコード位置を見つける方法をカバーしています。
このスキルを使う場面
- リファクタリング前に関数のすべての使用箇所を検出する
- 関数の依存関係を理解する
- 変更前の影響分析を行う
- コードの参照と探索
Trace Callersとは
grepai trace callers が答える質問は: 「誰がこの関数を呼び出しているのか?」
func Login(user, pass) {...}
↑
│
┌───────┴───────────────────┐
│ Who calls Login()? │
├───────────────────────────┤
│ • HandleAuth (auth.go:42) │
│ • TestLogin (test.go:15) │
│ • CLI (main.go:88) │
└───────────────────────────┘
基本的な使用方法
grepai trace callers "FunctionName"
例
grepai trace callers "Login"
出力:
🔍 Callers of "Login"
Found 3 callers:
1. HandleAuth
File: handlers/auth.go:42
Context: user.Login(ctx, credentials)
2. TestLoginSuccess
File: handlers/auth_test.go:15
Context: result := Login(testUser, testPass)
3. RunCLI
File: cmd/main.go:88
Context: err := auth.Login(username, password)
JSON出力
プログラムで使用する場合:
grepai trace callers "Login" --json
出力:
{
"query": "Login",
"mode": "callers",
"count": 3,
"results": [
{
"file": "handlers/auth.go",
"line": 42,
"caller": "HandleAuth",
"context": "user.Login(ctx, credentials)"
},
{
"file": "handlers/auth_test.go",
"line": 15,
"caller": "TestLoginSuccess",
"context": "result := Login(testUser, testPass)"
},
{
"file": "cmd/main.go",
"line": 88,
"caller": "RunCLI",
"context": "err := auth.Login(username, password)"
}
]
}
コンパクトJSON (AI最適化)
grepai trace callers "Login" --json --compact
出力:
{
"q": "Login",
"m": "callers",
"c": 3,
"r": [
{"f": "handlers/auth.go", "l": 42, "fn": "HandleAuth"},
{"f": "handlers/auth_test.go", "l": 15, "fn": "TestLoginSuccess"},
{"f": "cmd/main.go", "l": 88, "fn": "RunCLI"}
]
}
TOON出力 (v0.26.0+)
TOON形式はJSONより約50%トークン数が少なくなります:
grepai trace callers "Login" --toon
出力:
callers[3]:
- call_site:
context: "user.Login(ctx, credentials)"
file: handlers/auth.go
line: 42
symbol:
name: HandleAuth
...
注:
--jsonと--toonは相互に排他的です。
抽出モード
GrepAIは2つの抽出モードを提供します:
Fast Mode (デフォルト)
正規表現パターンを使用します。高速で依存なし。
grepai trace callers "Login" --mode fast
Precise Mode
tree-sitter ASTパースを使用します。より正確ですがtree-sitterが必要。
grepai trace callers "Login" --mode precise
比較
| モード | 速度 | 精度 | 依存関係 |
|---|---|---|---|
fast | ⚡⚡⚡ | 良好 | なし |
precise | ⚡⚡ | 優秀 | tree-sitter |
設定
.grepai/config.yaml でtraceを設定します:
trace:
mode: fast # fast or precise
enabled_languages:
- .go
- .js
- .ts
- .py
- .php
- .rs
exclude_patterns:
- "*_test.go"
- "*.spec.ts"
サポートされている言語
| 言語 | 拡張子 |
|---|---|
| Go | .go |
| JavaScript | .js, .jsx |
| TypeScript | .ts, .tsx |
| Python | .py |
| PHP | .php |
| C/C++ | .c, .h, .cpp, .hpp, .cc, .cxx |
| Rust | .rs |
| Zig | .zig |
| C# | .cs |
| Java | .java |
| Pascal/Delphi | .pas, .dpr |
ユースケース
リファクタリング前
# 名前変更前にすべての使用箇所を検出
grepai trace callers "getUserById"
# シグネチャ変更の影響を確認
grepai trace callers "processPayment"
コードベースの理解
# このコア関数を誰が使っているのか?
grepai trace callers "validateToken"
# モジュールへのエントリポイントを検出
grepai trace callers "initialize"
デバッグ
# この関数はどこから呼ばれているのか?
grepai trace callers "problematicFunction"
コードレビュー
# 変更を承認する前に関数の使用法を確認
grepai trace callers "deprecatedMethod"
一般的な名前の処理
関数名が一般的な場合、結果に関係のないコードが含まれる可能性があります:
問題
grepai trace callers "get" # 一般的すぎて多くの誤検出
解決方法
- より具体的な名前を使用:
grepai trace callers "getUserProfile"
- パスで結果をフィルタリング:
grepai trace callers "get" --json | jq '.results[] | select(.file | contains("auth"))'
セマンティック検索との組み合わせ
包括的な理解のために組み合わせて使用します:
# Loginが何をするかを検出 (セマンティック)
grepai search "user login authentication"
# Loginを誰が使っているかを検出 (trace)
grepai trace callers "Login"
スクリプティング例
Bash
# Callersを数える
grepai trace callers "MyFunction" --json | jq '.count'
# Caller関数名を取得
grepai trace callers "MyFunction" --json | jq -r '.results[].caller'
# ファイルパスのみを取得
grepai trace callers "MyFunction" --json | jq -r '.results[].file' | sort -u
Python
import subprocess
import json
result = subprocess.run(
['grepai', 'trace', 'callers', 'Login', '--json'],
capture_output=True,
text=True
)
data = json.loads(result.stdout)
print(f"Found {data['count']} callers of Login:")
for r in data['results']:
print(f" - {r['caller']} in {r['file']}:{r['line']}")
よくある問題
❌ 問題: Callersが見つからない ✅ 解決方法:
- 関数名の綴りを確認 (大文字小文字を区別)
- ファイル形式が
enabled_languagesに含まれていることを確認 grepai watchを実行してシンボルインデックスを更新
❌ 問題: 誤検出が多すぎる ✅ 解決方法:
- より具体的な関数名を使用
- 設定で除外パターンを追加
jqで結果をフィルタリング
❌ 問題: 一部のCallersが見つからない ✅ 解決方法:
- より正確な結果のために
--mode preciseを試す - ファイルが無視パターンに含まれていないか確認
ベストプラクティス
- 正確な関数名を使用: 大文字小文字は重要です
- シンボルインデックスを確認: まず
grepai watchを実行 - スクリプトではJSONを使用: 解析しやすい
- 検索と組み合わせる: セマンティック + trace = 全体像
- 大量の結果をフィルタリング:
jqまたはgrepを使用
出力形式
Trace callersの結果:
🔍 Callers of "Login"
Mode: fast
Language files scanned: 245
Found 3 callers:
1. HandleAuth
File: handlers/auth.go:42
Context: user.Login(ctx, credentials)
2. TestLoginSuccess
File: handlers/auth_test.go:15
Context: result := Login(testUser, testPass)
3. RunCLI
File: cmd/main.go:88
Context: err := auth.Login(username, password)
Tip: Use --json for machine-readable output
Use --mode precise for more accurate results
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- yoanbernabeu
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/yoanbernabeu/grepai-skills / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。