Get the FREE Ultimate OpenClaw Setup Guide →

debug-helper

Scanned
npx machina-cli add skill JackyST0/awesome-agent-skills/debug-helper --openclaw
Files (1)
SKILL.md
3.8 KB

Debug Helper

帮助调试代码,分析错误信息,定位问题根源,提供修复建议。

Help debug code by analyzing error messages, identifying root causes, and providing fix suggestions.

When to Use

当用户请求以下操作时使用此 skill:

  • 调试代码 / Debug code
  • 分析错误信息 / Analyze error messages
  • 修复 bug / Fix bugs
  • 理解异常原因 / Understand exception causes
  • 排查问题 / Troubleshoot issues

Instructions

调试步骤 / Debugging Steps

  1. 收集信息 - 获取错误信息、堆栈跟踪、相关代码
  2. 分析错误 - 理解错误类型和消息含义
  3. 定位根源 - 找到导致问题的代码位置
  4. 提供解决方案 - 给出具体的修复建议
  5. 预防建议 - 提供避免类似问题的建议

常见错误类型 / Common Error Types

错误类型可能原因
TypeError类型不匹配、空值操作
ReferenceError未定义变量、作用域问题
SyntaxError语法错误、缺少括号/引号
RuntimeError运行时逻辑错误
NetworkError网络请求失败、超时

分析框架 / Analysis Framework

对于每个错误,需要分析:

  • What: 发生了什么错误
  • Where: 错误发生在哪里
  • Why: 为什么会发生
  • How: 如何修复

输出格式 / Output Format

使用 templates/debug-report.md 模板格式化输出。

Use the templates/debug-report.md template to format output.

## 调试分析报告 / Debug Analysis Report

### 错误概述 / Error Summary
[错误类型和简要描述]

### 根本原因 / Root Cause
[详细分析]

### 修复方案 / Fix
[具体代码修改]

### 预防建议 / Prevention
[如何避免类似问题]

Examples

输入 / Input

错误信息:

TypeError: Cannot read properties of undefined (reading 'map')
    at UserList (UserList.jsx:15:23)
    at renderWithHooks (react-dom.development.js:14985:18)

相关代码:

function UserList({ users }) {
  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

输出 / Output

调试分析报告

错误概述

TypeError: Cannot read properties of undefined (reading 'map')

UserList 组件第 15 行调用 .map() 时,users 变量为 undefined

根本原因

  1. 直接原因: 尝试在 undefined 上调用 .map() 方法
  2. 深层原因:
    • 父组件可能没有传递 users prop
    • 数据获取尚未完成时组件已渲染
    • API 返回格式与预期不符

修复方案

方案 1: 添加默认值(推荐)

function UserList({ users = [] }) {
  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

方案 2: 条件渲染

function UserList({ users }) {
  if (!users || users.length === 0) {
    return <p>No users found</p>;
  }

  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

方案 3: 可选链操作符

function UserList({ users }) {
  return (
    <ul>
      {users?.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

预防建议

  1. 使用 TypeScript - 添加类型检查

    interface Props {
      users: User[];
    }
    
  2. 添加 PropTypes - 运行时类型检查

    UserList.propTypes = {
      users: PropTypes.array.isRequired
    };
    
  3. 检查数据源 - 确保父组件正确传递数据

  4. 处理加载状态 - 在数据获取期间显示加载指示器

Source

git clone https://github.com/JackyST0/awesome-agent-skills/blob/main/examples/debug-helper/SKILL.mdView on GitHub

Overview

Debug Helper analyzes error messages, identifies root causes, and provides actionable fix suggestions. It follows a structured What/Where/Why/How framework and formats results with a debug report template, helping developers quickly understand and fix bugs.

How This Skill Works

It collects the error message, stack trace, and code context; classifies the error type and meaning; locates the root cause and proposes concrete fixes and preventive steps; outputs a structured Debug Analysis Report using the template.

When to Use It

  • Debug code
  • Analyze error messages
  • Fix bugs
  • Understand exception causes
  • Troubleshoot issues

Quick Start

  1. Step 1: Collect the error message, stack trace, and relevant code snippets.
  2. Step 2: Analyze the error type and determine the root cause using What/Where/Why/How.
  3. Step 3: Propose concrete fixes, implement changes, and add prevention (types, guards, loading states).

Best Practices

  • Collect complete context: error message, stack trace, and relevant code before solving.
  • Accurately classify the error type and interpret the message.
  • Identify the exact location of the issue using What/Where/Why/How.
  • Provide concrete, testable fixes with code examples.
  • Add prevention tips (typing, input validation, loading states, and robust data handling).

Example Use Cases

  • TypeError: Cannot read properties of undefined (reading 'map') in UserList.jsx; fix by defaulting users to [] or using optional chaining.
  • ReferenceError: x is not defined in a module; resolve with proper imports/variable declarations.
  • SyntaxError: Unexpected token } in App.jsx; fix by balancing braces or missing parentheses.
  • RuntimeError: Invalid operation due to null data during processing; fix with guards and null checks.
  • NetworkError: Failed to fetch resource due to network issue or CORS; fix with retry logic and proper error handling.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers