AgentSkillsCN

s-debug

基于证据的调查来诊断并修复错误。修复前需要运行时证据——绝不能仅凭代码猜测。涵盖假设驱动的调试、仪器记录、Lua错误、污染问题、对抗锁定以及API失败。触发词:错误、bug、调试、修复、崩溃、污染、空值、诊断、假设、运行时、证据、仪器。

SKILL.md
--- frontmatter
name: s-debug
description: >
  Diagnose and fix bugs using evidence-based investigation. Requires runtime
  evidence before fixes—never guess based on code alone. Covers hypothesis-driven
  debugging, instrumentation logging, Lua errors, taint issues, combat lockdown,
  and API failures. Triggers: error, bug, debug, fix, crash, taint, nil value,
  diagnose, hypothesis, runtime, evidence, instrumentation.

Debugging WoW Addons

Systematic debugging and error recovery for WoW addons.

Related Commands

  • c-debug - Reload loop workflow for finding and fixing issues
  • c-review - Full code review (includes debug step)

MCP Tools (Use These First)

MANDATORY: ALWAYS use MCP tools directly instead of the shell.

TaskMCP Tool
Get All Outputaddon.output(agent_mode=true)
Lint Addonaddon.lint(addon="MyAddon")
Scan Deprecationsaddon.deprecations(addon="MyAddon")
Queue Lua Evallua.queue(code=["GetMoney()"])
Get Eval Resultslua.results()

Capabilities

  1. Evidence-Based Debugging — Hypothesis-driven investigation with runtime instrumentation and log proof
  2. Error Analysis — Parse Lua errors, identify root cause in stack traces
  3. Taint Investigation — Track secure/insecure code interaction and "Action blocked" issues
  4. Combat Issues — Debug lockdown-related failures and protected frame issues
  5. API Failures — Handle deprecated or changed APIs (Midnight 12.0 prep)

Routing Logic

Request typeLoad reference
Evidence-based debugging, hypothesis-drivenreferences/evidence-based-debugging.md
Lua errors, nil valuesreferences/error-patterns.md
Debug workflow, isolationreferences/debugging-strategies.md
Error tracking (BugGrabber)../../docs/integration/errors.md
Troubleshooting guide../../docs/integration/troubleshooting.md
Structured logging../../docs/integration/console.md
Frame inspection../../docs/integration/inspect.md

Debug Output Best Practice

CRITICAL: Use MechanicLib:Log() instead of print() for all debug output.

Featureprint()MechanicLib:Log()
Agent access❌ Requires screenshotaddon.output retrieves directly
Filtering❌ None✅ Source + category filters
Copyable❌ No✅ Yes, via Console export
lua
-- ✅ Correct: Agent can see this in addon.output
local MechanicLib = LibStub("MechanicLib-1.0", true)
if MechanicLib then
    MechanicLib:Log("MyAddon", "Debug: value=" .. tostring(val), MechanicLib.Categories.CORE)
end

-- ❌ Avoid: Spams chat, requires screenshot
print("[MyAddon] Debug: value=" .. tostring(val))

Quick Reference

Get Addon Data (Compressed for AI)

Ask user to /reload and confirm, then:

bash
addon.output(agent_mode=true)

Common Error Patterns

  • attempt to index nil value: API returned nil, check if unit exists or data is loaded.
  • Action blocked by Blizzard: You tried to call a protected function in combat.
  • Interface action failed: Taint has spread to a secure UI component.

Systematic Workflow

  1. Gather Evidence: Ask user to /reload, wait for confirmation, then addon.output(agent_mode=true)
  2. Isolate: Can you reproduce with minimal code?
  3. Hypothesis: "If X then Y because Z"
  4. Fix & Validate: Apply minimal fix, ask user to /reload and confirm, then verify with addon.output.