Gitnexus Debugging

abhigyanpatwari/GitNexus/.claude/skills/gitnexus-debugging

作者 abhigyanpatwari50aa4be3b2c2c9a1561fc44878e5d8f87b99d16e無授權條款47K 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫今天更新

Use when the user is debugging a bug, tracing an error, or asking why something fails. Examples: "Why is X failing?", "Where does this error come from?", "Trace this bug"

AI 產生的概覽

指導使用 GitNexus 的儲存庫查詢、呼叫圖脈絡與執行流追蹤來除錯程式缺陷與錯誤。

功能
此技能提供一套以 GitNexus(一款 MCP 程式碼智慧工具)為基礎的分步除錯流程。它要求代理先綁定正確的已索引儲存庫,再搜尋錯誤文字或症狀,檢視可疑符號的呼叫端與被呼叫端,讀取執行流資源,並在需要時執行 Cypher 或 trace 查詢以追蹤自訂呼叫鏈。最終產出包含儲存庫與索引新鮮度的根因診斷,並附上檢查清單與症狀對應方法表。
適用情境
適用於使用者詢問某功能為何失敗、錯誤來自何處、誰呼叫了某個方法,或希望追蹤缺陷與異常行為時。也適合處理已索引儲存庫中的間歇性故障、傳回值錯誤、效能問題與近期回歸。
執行需求
需要存取 GitNexus 的 MCP 工具(list_repos、query、context、cypher、trace、detect_changes),以及一個已由 GitNexus 建立索引的儲存庫;索引過期時需透過 node .gitnexus/run.cjs analyze 重新分析。此技能不附帶任何指令碼。

Debugging with GitNexus

When to Use

  • "Why is this function failing?"
  • "Trace where this error comes from"
  • "Who calls this method?"
  • "This endpoint returns 500"
  • Investigating bugs, errors, or unexpected behavior

Bind the repository first

A root cause traced in the wrong repository is a wrong root cause.

Call list_repos {} before the first tool call. With one indexed repository, use the examples below as written. With more than one, pass repo on every call: an omitted repo normally errors, but under an MCP policy with a configured default it resolves to that default silently. If you cannot tell which repository is meant, stop and ask. This matters most for cypher, whose statement carries no in-band hint of which database it ran against.

list_repos is paginated, so page with offset: pagination.nextOffset until hasMore is false before concluding a repository is absent.

A stale index describes the code from before your bug, so refresh before trusting a trace, and state the repository and index freshness with the diagnosis.

Workflow

0. list_repos {}                                          → Bind repo1. query({search_query: "<error or symptom>"})            → Find related execution flows2. context({name: "<suspect>"})                    → See callers/callees/processes3. READ gitnexus://repo/{name}/process/{name}                → Trace execution flow4. cypher({statement: "MATCH path..."})                 → Custom traces if needed

If "Index is stale" → run node .gitnexus/run.cjs analyze in terminal. Hot-tool staleness names which index answered (branch/lastCommit) and how fresh it is (status). Re-analyze only for behind or diverged — current is identity, unknown is unmeasurable.

Checklist

- [ ] list_repos {} — bind repo; explicit repo when >1 indexed, ask if ambiguous- [ ] Understand the symptom (error message, unexpected behavior)- [ ] query for error text or related code- [ ] Identify the suspect function from returned processes- [ ] context to see callers and callees- [ ] Trace execution flow via process resource if applicable- [ ] cypher for custom call chain traces if needed- [ ] Read source files to confirm root cause- [ ] State the repository and index freshness with the diagnosis

Debugging Patterns

SymptomGitNexus Approach
Error messagequery for error text → context on throw sites
Wrong return valuecontext on the function → trace callees for data flow
Intermittent failurecontext → look for external calls, async deps
Performance issuecontext → find symbols with many callers (hot paths)
Recent regressiondetect_changes to see what your changes affect — pass worktree for a linked worktree
"How does A reach B?"trace between the two symbols — shortest call chain in one call

Tools

query — find code related to error:

query({search_query: "payment validation error", repo: "my-app"})→ Processes: CheckoutFlow, ErrorHandling→ Symbols: validatePayment, handlePaymentError, PaymentException

context — full context for a suspect:

context({name: "validatePayment", repo: "my-app"})→ Incoming calls: processCheckout, webhookHandler→ Outgoing calls: verifyCard, fetchRates (external API!)→ Processes: CheckoutFlow (step 3/7)

cypher — custom call chain traces. Pass repo alongside the statement; the Cypher text itself names no repository, so the result is unattributable without it:

cypher
MATCH path = (a)-[:CodeRelation {type: 'CALLS'}*1..2]->(b:Function {name: "validatePayment"})RETURN [n IN nodes(path) | n.name] AS chain

trace — shortest call chain between two symbols ("how does A reach B?"), one call instead of chaining context hops:

trace({ from: "processCheckout", to: "fetchRates", repo: "my-app" })→ status: ok, hopCount: 3→ hops: processCheckout → validatePayment → verifyCard → fetchRates→ edges: CALLS (1.0), CALLS (0.95), CALLS (1.0)

When no path exists, trace reports the furthest reachable node — exactly where the chain breaks (dynamic dispatch, reflection, or an external boundary).

Example: "Payment endpoint returns 500 intermittently"

0. list_repos {}   → total: 2 (my-app, billing-api) — bind my-app explicitly on every call
1. query({search_query: "payment error handling", repo: "my-app"})   → Processes: CheckoutFlow, ErrorHandling   → Symbols: validatePayment, handlePaymentError
2. context({name: "validatePayment", repo: "my-app"})   → Outgoing calls: verifyCard, fetchRates (external API!)
3. READ gitnexus://repo/my-app/process/CheckoutFlow   → Step 3: validatePayment → calls fetchRates (external)
4. Root cause: fetchRates calls external API without proper timeout   Repository: my-app  Index: current

With a single indexed repository, step 0 returns total: 1 and the repo argument drops out of every call above.

來源與署名

來源:abhigyanpatwari/GitNexus位於.claude/skills/gitnexus-debugging提交50aa4be

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架