Skip to main content

ix-debug

Root cause analysis — trace execution path to a failure, narrow candidates, read minimal source only at suspected failure points.

Aller à l'installation

Informations de source

Dépôt
ix-infrastructure/ix-cursor-plugin
Dernière activité de la source
24 avril 2026 à 21:13
Langue détectée de SKILL.md
anglais
Étoiles
1
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
ix-debug
description
Root cause analysis — trace execution path to a failure, narrow candidates, read minimal source only at suspected failure points.
argument-hint
<error message, symptom description, or name of failing function> [--save [path]]
## Argument parsing Strip `--save` and any following path token from `$ARGUMENTS` before resolving the entry point. - If `--save <path>` is present, set `SAVE_PATH` to that path. - If `--save` is present without a path, auto-generate `ix-debug-<target-slug>.md` in cwd (target slug = the first symbol or first three words of the symptom with spaces and slashes replaced by `-`). - If `--save` is absent, `SAVE_PATH` is empty — do not write a file. ## Pro check (optional) Call `ix_briefing` with `{}`. If `ok` is `true`, Pro is available. Extract `data.decisions` for use in Pro steps below. If it returns `ok: false`, skip all **[Pro]** labeled steps. **[Pro]** If `data.decisions` is non-empty, scan for a recorded decision matching this symptom area before proceeding. Surface any relevant match — it may already explain the behavior or constrain the fix. ## Goal Answer: *where in the execution path is this likely failing, and why?* Stop once you have 1–3 root cause candidates with supporting evidence. ## Phase 1 — Locate the entry point (always) Call `ix_locate` with `{ "symbol": "<$ARGUMENTS>" }`. If `$ARGUMENTS` is a symptom description rather than a symbol name, also call `ix_text` with `{ "pattern": "<$ARGUMENTS>", "limit": 10 }`. Identify the most likely entry point (where the failure originates or first manifests). ## Phase 2 — Explain (always) Call `ix_explain` with `{ "symbol": "<entry-point>" }`. Extract: `role.role`, `importance.level`, `facts.callerCount`, `facts.calleeCount`. Identify whether this is: - A **boundary** (external input, API, event) — failure likely from unexpected input - An **orchestrator** — failure likely from wrong sequencing or state - A **utility/helper** — failure likely from wrong assumptions by caller **Stop if:** the explanation makes the failure source obvious → skip to Output. ## Phase 3 — Decide: inline or delegate Use the Phase 1–2 results to choose the path: - **Inline path (simple bug):** the likely failure is still within a single subsystem, the role confidence is high, and `facts.calleeCount` ≤ 10 → continue to Phase 4. - **Delegate path (complex bug):** role confidence is low, OR `facts.calleeCount` > 10 → use the Agent tool with `subagent_type: "ix-memory:ix-bug-investigator"` and pass the pre-computed context below. **You MUST pass pre-computed context so the agent skips redundant work.** Launch the agent with: > Investigate: $ARGUMENTS > > **Pre-computed context (skip Steps 1–2):** > Entry point: [symbol, subsystem, file — from Phase 1] > Entity type: [boundary / orchestrator / utility — from Phase 2] > Explain output: [paste ix_explain result] > > Start from Step 3. The symptom is: [description]. The entry point classification suggests: [hint from Phase 2]. If the Agent tool is unavailable, continue inline through Phases 4–6, reduce breadth, preserve the 2-read cap, and surface uncertainty rather than over-reading. ## Phase 4 — Trace the execution path (inline path) Call `ix_trace` with `{ "symbol": "<entry-point>" }`. Walk the downstream path. At each step, look for: - Functions that validate or transform state (potential incorrect assumptions) - Cross-subsystem calls (where contracts might differ) - Functions with high callee count (potential god functions, many failure points) **Narrow:** Identify the 1–3 nodes most likely to contain the bug. **Delegate if:** the trace crosses subsystem boundaries, reveals multiple plausible contract boundaries, or fans out enough that confidence drops. Use the Phase 3 delegation prompt. **Stop if:** trace reveals an obvious candidate → proceed to Phase 6. ## Phase 5 — Callers (inline path, if failure might come from upstream) Call `ix_callers` with `{ "symbol": "<entry-point>" }` (limit 10). Check whether the fault is in how this is *called* rather than in its own logic. ## Phase 6 — Targeted code read (inline path, only at suspected failure points) For each root cause candidate (max 2): Call `ix_read` with `{ "symbol": "<candidate-function>" }`. Read **the specific function only**. Look for: - Edge cases in input handling - Assumptions about state that might be violated - Missing null/error checks - Incorrect sequencing **Hard limit:** 2 `ix_read` calls maximum. If still ambiguous, surface the candidates and uncertainty to the user. ## Phase 7 — Synthesize - If you delegated in Phase 3 or 4, present the agent's result directly. Do not re-run locate/explain/trace in the main thread. - If you stayed inline, use the Output format below. ## Output ``` ## Debug: [entry point] **Execution path:** [entry-point] → [step] → [step] → [suspected failure point] **Root cause candidates:** 1. [function/file] — [reason: what assumption might be wrong] 2. [function/file] — [reason] **Evidence:** - [what graph data supports each candidate] - [what code read revealed, if any] **Confidence:** [high / medium / low] — [why] **Next steps:** - Add logging at [specific point] to confirm - Check [specific edge case] in [function] - Run `/ix-investigate <X>` to understand [unclear component] more deeply ``` ## Save step **Only if `SAVE_PATH` is non-empty:** - Write the full output to `SAVE_PATH`. - Confirm to the user: `Saved to <SAVE_PATH>`. - Do not write the file if `--save` was not passed.
Voir sur GitHub