error-explain-zhlisted
Install: claude install-skill YuAICode/ai-skills
# error-explain-zh — 通用报错中文诊断
把任意语言的错误信息/堆栈/panic/exception 解读成"为什么报这个错 + 具体怎么改",
不用再对着英文错误文档反复猜。跨语言通用:Go / JavaScript / Python / Java / Rust / Flutter / Dart / Shell / …
## 何时触发
- 用户说"帮我看这个报错"、"这个错误是什么意思"、"这个 panic 怎么回事"、"帮我 debug"
- 用户粘贴了错误日志、stack trace、panic 输出、exception 信息
- 用户贴了 stderr / logcat / Xcode 日志并问"为什么"
> 与 `lambda-logs-zh` 的区别:`lambda-logs-zh` 专门处理 AWS CloudWatch 多条日志的聚类分析;
> `error-explain-zh` 是**通用单次报错诊断**,不限运行时和平台。
## 工作流
### 1. 识别语言 / 运行时与错误类型
- 从错误格式、关键词、文件扩展名推断语言和运行时:
- `goroutine` / `panic:` → Go
- `Traceback (most recent call last)` → Python
- `at Object.<anonymous>` / `UnhandledPromiseRejection` → Node.js/JavaScript
- `Exception in thread "main"` / `at com.` → Java/Kotlin JVM
- `thread 'main' panicked at` → Rust
- `flutter: Error` / `DartError` / `══╡ EXCEPTION CAUGHT BY FLUTTER FRAMEWORK` → Flutter/Dart
- `Caused by:` → Java 链式异常,需向内展开到最内层
- 识别错误**大类**:空指针 / 类型错误 / 连接失败 / 权限拒绝 / 断言失败 / OOM / 配置缺失 / 依赖冲突 / 并发竞争 等
- 若有多种错误混在一起,先按"最先触发的 / 最内层的"排序
### 2. 定位最关键的那一行(真正根因常不在栈顶)
- **栈跟踪逻辑**:从 `Caused by:`、最内层 `goroutine`、`caused by`、`Source error:` 等向内找真实根因帧
- **区分用户代码与库代码**:
- 用户代码帧:文件路径不含 `node_modules/`、`site-packages/`、`GOROOT`、`vendor/`、`jdk/`、`android.jar` 等
- 优先指出**用户代码中的最近帧**——那通常是修复入口
- 若根因在库内部,说明是库的哪个调用/参数触发的
- 若错误信息里有**行号**,仅基于行号做分析;**没有源码时不臆断行号外的代码**
### 3. 中文讲清"为什么报这个错"
用白话解释这个错误的**直接触发机制**,例如:
- "这行代码对 nil 指针做了方法调用,Go 运行时无法找到方法接收者"
- "`ECONNREFUSED` 表示目标端口没有进程在监听,通常是服务未启动或端口配置错误"
- "Python 在 `json.loads` 时遇到了非 UTF