当设计或修改 REST API 响应结构、处理 API 返回值时触发。防止 API 设计缺陷导致的字段错位、类型歧义等问题。
The English summary is being prepared. Showing the original description.
涉及浏览器、编辑器、CDN/WAF、IM 平台、操作系统剪贴板、第三方 SaaS 等"外部黑盒系统"的代码编写或 bug 调试时触发。强制先抓真实环境数据再推理,避免连续 2 轮"凭代码推理"的修复 no-op。
关键词:粘贴/复制异常、跨平台显示不一致、第三方 API 怪结果、CDN/WAF 拦截、本地复现失败、HTML→MD 转换丢属性。
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
"代码没说谎,但黑盒系统的行为不在代码里。"
涉及代码以外的环境(浏览器、编辑器、CDN、IM 平台、第三方 API),编码和调试都必须先抓真实数据,再做推理。
写代码场景
调试场景
| 维度 | 不是黑盒 | 是黑盒(触发本 skill) |
|---|---|---|
| 控制权 | 自己写的代码 | 第三方/平台/浏览器实现 |
| 文档完备性 | 有完整 API 文档 | 文档不全或有未文档化行为 |
| 可调试性 | 能加日志、断点 | 只能从外部观察输入输出 |
| 行为可预测 | 给定输入必然得到给定输出 | 同一输入在不同环境表现不同 |
满足任意 2 项 → 走本 skill 方法论。
不同黑盒类型,第一步该让用户抓什么:
| 黑盒类型 | 优先采集 | 工具/方法 |
|---|---|---|
| 浏览器粘贴/复制 | 实际剪贴板 HTML | navigator.clipboard.read() 列出所有 mime + 打印 outerHTML |
| 第三方编辑器渲染 | 粘贴前 vs 粘贴后 DOM | DevTools Elements 拷 outerHTML 做 diff |
| 跨浏览器渲染 | 真机截图 + DOM 结构 | 真机/BrowserStack;不仅看效果,要拷 DOM |
| HTTP 第三方 API | 完整 request/response | curl -v / Charles / mitmproxy;比对 GET vs POST |
| CDN/WAF 拦截 | 中间节点信息 | curl -I 看 Server / Via 头;空 body + 极简 headers 强信号 |
| IM 平台(微信/钉钉/飞书) | 发送+接收两端实际渲染 | 必须真机截图;不能只看发送端 |
| 操作系统剪贴板 | 所有可用 mime type | navigator.clipboard.read() / macOS pbpaste -Prefer html |
| 移动端 webview | UA + 实际加载的 CSS/JS | Chrome DevTools 远程调试 |
⚠️ 抓数据必须保留原始格式:HTML 用 outerHTML 而非 innerText,JSON 用原始字节,二进制用 hexdump。
Bug 现象 → 涉及外部黑盒?
├─ 是 → 数据采集模板 → 基于数据做假设 → 单变量验证 → 修复 → 追加到 references/
└─ 否 → 走通用系统化调试流程
关键节点:
references/case-{name}.md| ❌ 反模式 | ✅ 正确做法 |
|---|---|
| "我以为浏览器会保留 X 属性" | "实测这个浏览器对 X 属性的行为:[抓出来的数据]" |
| 连续 2 轮"凭代码推理"修复都 no-op,第 3 轮继续推理 | 第 3 轮必须停下,让用户输出真实数据 |
| 用 try-catch / 全局 polyfill 兜底掩盖未理解的行为 | 先理解黑盒实际行为,再决定该不该兜底 |
| 多个变量同时改尝试碰运气 | 单变量验证,有据可循 |
| 修好就完,案例只在脑里 | 追加 references/case-{name}.md,标题含系统名+症状 |
| 凭"主流编辑器/浏览器应该都支持 X" | 列出实测过的版本,未测试的标 unknown |
| skill | 何时用 | 与本 skill 关系 |
|---|---|---|
| 通用系统化调试流程 | 通用 bug 调试 | 上游通用方法论;本 skill 在其之上加"先抓数据"硬规则 |
cc-api-design-safety | 自己设计 API 时 | 主动设计;本 skill 是被动适配第三方 |
修复后追加新案例到 references/,命名约定:
| 前缀 | 用途 | 何时用 |
|---|---|---|
case-{system}-{symptom}.md | 真实案例:已发生过,含具体根因/修复/教训 | 踩过的坑沉淀 |
template-{system}-{symptom}.md | 占位框架:未来该类系统遇到 bug 时填入的模板 | 预留方向、采集模板预填 |
template- 文件踩坑填完后请改名为 case-,保持语义清晰。
当前已有:
> 📋 本回复遵循:`cc-external-system-debugging` - [章节]
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
当设计或修改 REST API 响应结构、处理 API 返回值时触发。防止 API 设计缺陷导致的字段错位、类型歧义等问题。
The English summary is being prepared. Showing the original description.
当设计或修改 REST API 响应结构、处理 API 返回值,或生成 Excel/CSV/PDF/对账文件等下游产物时触发。防止 API 设计缺陷导致的字段错位、类型歧义,以及生成产物时关键字段缺失但静默成功的问题。
The English summary is being prepared. Showing the original description.
网关/代理/WAF/CDN 中间件的安全关键词匹配实现规范,防止纯子串匹配误判正常响应内容中的技术术语(如 Cloudflare、502、error)
The English summary is being prepared. Showing the original description.
当 API/任务可能执行超过 10 秒(批量数据处理、远程 API 批量调用、全表扫描、跨租户聚合)时触发。防止同步接口被网关 30s 超时切断、用户重复点击触发并发、状态缓存内存泄漏等问题。提供异步任务状态机标准模板。
The English summary is being prepared. Showing the original description.
Bash 脚本与系统命令规范。禁止行尾注释,强制使用 tee/heredoc 写入,提升命令执行的可维护性。
The English summary is being prepared. Showing the original description.
当用户操作 .sh、Dockerfile、Makefile、.yml、.yaml 文件,或在 Markdown 中编写 bash 代码块时触发。提供 Bash 编写规范。
The English summary is being prepared. Showing the original description.