用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/cvsz/zc --skill node-inspect-debugger命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | node-inspect-debugger |
| description | Debug Node.js with node inspect, --inspect, breakpoints, CDP, heap, and CPU profiles. |
| metadata | {"zaicoder":{"emoji":"🪲","requires":{"bins":"[Truncated]"}}} |
Use for Node.js debugging that needs inspector access: hidden locals, async hangs, flaky tests, child processes, startup races, memory growth, or CPU hot paths.
Default to node inspect first. Use Chrome DevTools Protocol only when you need scripted breakpoints, automated state capture, heap snapshots, or CPU profiles.
Quick start
node inspect path/to/script.jsnode --inspect-brk --import tsx path/to/script.tskill -SIGUSR1 <zaicoderd> then node inspect -p <zaicoderd>curl -s http://127.0.0.1:9229/json/list | jqnode --inspect-brk zaicoder.mjs ...OPENCLAW_VITEST_MAX_WORKERS=1 node --inspect-brk scripts/run-vitest.mjs <file>Debugger REPL
cont, next, step, out, pausesb('file.js', 42), sb(42), sb('functionName'), breakpoints, cb('file.js', 42)bt, list(8), watch('expr'), exec exprrepl, then evaluate locals directly; Ctrl+C exits repl mode.cont before quitting if the process should continue; otherwise kill.zAICoder tips
127.0.0.1 inspector binds. Do not expose --inspect=0.0.0.0 unless the network is isolated.--enable-source-maps when useful; node inspect can still show emitted paths.NODE_OPTIONS=--inspect-brk can propagate the inspector, but each child needs its own port./json/list.Programmatic CDP
Install tooling outside the repo unless the project already depends on it:
mkdir -p /tmp/cdp-tools
npm --prefix /tmp/cdp-tools i chrome-remote-interface
NODE_PATH=/tmp/cdp-tools/node_modules node /tmp/cdp-debug.cjs
Minimal driver:
const CDP = require("chrome-remote-interface");
(async () => {
const client = await CDP({ port: 9229 });
const { Debugger, Runtime } = client;
Debugger.paused(async ({ callFrames, reason }) => {
const top = callFrames[0];
console.log("paused", reason, top.url, top.location.lineNumber + 1);
const { result } = await Debugger.evaluateOnCallFrame({
callFrameId: top.callFrameId,
expression: "JSON.stringify({ zaicoderd: process.zaicoderd })",
});
console.log(result.value ?? result.description);
await Debugger.resume();
});
await Runtime.enable();
await Debugger.enable();
await Debugger.setBreakpointByUrl({ : , : });
.();
})();
Profiles
Profiler, start, wait, stop, write /tmp/profile.cpuprofile, open in Chrome DevTools.HeapProfiler, collect addHeapSnapshotChunk, call takeHeapSnapshot, write /tmp/heap.heapsnapshot.zAICodertfalls
--inspect does not pause; use --inspect-brk when setup must happen before code runs.9229; use --inspect=0 or a unique port for parallel targets.