Gitnexus Debugging

abhigyanpatwari/GitNexus/gitnexus-cursor-integration/skills/gitnexus-debugging

by abhigyanpatwari50aa4be3b2c2c9a1561fc44878e5d8f87b99d16eNo license47K starsListed Oct 9, 2026Updated Oct 9, 2026Repository updated today

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"

Instructions onlySoftware Development
AI-generated overview

Guides debugging and error tracing using GitNexus code-graph tools to find root causes.

What it does
This skill provides a workflow for investigating bugs, errors, and unexpected behavior using GitNexus MCP tools. It walks through binding the correct repository, querying for error text, inspecting a suspect symbol's callers and callees, tracing execution flows, and running custom Cypher call-chain queries. It produces a root-cause diagnosis that states the repository and index freshness, and includes debugging patterns for common symptoms such as wrong return values, intermittent failures, performance issues, and regressions.
When to use it
Use it when a user asks why something is failing, where an error comes from, who calls a method, or wants a bug or unexpected behavior traced. It fits investigations of errors, 500 responses, intermittent failures, and recent regressions in an indexed repository.
Requirements
Requires access to the GitNexus MCP tools (list_repos, query, context, cypher, trace, detect_changes) and an indexed repository; a stale index may need re-analysis via a terminal command. It ships no scripts and is instructions only.

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.

Source and attribution

Source:abhigyanpatwari/GitNexusingitnexus-cursor-integration/skills/gitnexus-debuggingat commit50aa4be

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal