Local Testing
lobehub/lobe-ui
Local browser verification for the lobe-ui component library and documentation site.
See runtime state a console.log cannot reach — set real breakpoints, step, and dump the scope chain of a paused Node/TypeScript process.
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill node-inspect-debugger -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard node-inspect-debugger --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/eng-disciplines/.pi/skills/node-inspect-debugger .claude/skills/node-inspect-debugger && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "node-inspect-debugger" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/packages/eng-disciplines/.pi/skills/node-inspect-debugger into .claude/skills/node-inspect-debugger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "node-inspect-debugger", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/packages/eng-disciplines/.pi/skills/node-inspect-debuggerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill node-inspect-debugger -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard node-inspect-debugger --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/eng-disciplines/.pi/skills/node-inspect-debugger .agents/skills/node-inspect-debugger && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "node-inspect-debugger" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/packages/eng-disciplines/.pi/skills/node-inspect-debugger into .agents/skills/node-inspect-debugger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "node-inspect-debugger", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill node-inspect-debugger -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard node-inspect-debugger --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/eng-disciplines/.pi/skills/node-inspect-debugger .cursor/skills/node-inspect-debugger && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "node-inspect-debugger" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/packages/eng-disciplines/.pi/skills/node-inspect-debugger into .cursor/skills/node-inspect-debugger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "node-inspect-debugger", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/BlackBeltTechnology/pi-agent-dashboard.git --path packages/eng-disciplines/.pi/skills/node-inspect-debugger--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill node-inspect-debugger -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard node-inspect-debugger --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/eng-disciplines/.pi/skills/node-inspect-debugger .gemini/skills/node-inspect-debugger && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "node-inspect-debugger" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/packages/eng-disciplines/.pi/skills/node-inspect-debugger into .gemini/skills/node-inspect-debugger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "node-inspect-debugger", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard node-inspect-debuggerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill node-inspect-debugger -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/eng-disciplines/.pi/skills/node-inspect-debugger .github/skills/node-inspect-debugger && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "node-inspect-debugger" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/packages/eng-disciplines/.pi/skills/node-inspect-debugger into .github/skills/node-inspect-debugger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "node-inspect-debugger", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add BlackBeltTechnology/pi-agent-dashboard --skill node-inspect-debugger -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install BlackBeltTechnology/pi-agent-dashboard node-inspect-debugger --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BlackBeltTechnology/pi-agent-dashboard.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/eng-disciplines/.pi/skills/node-inspect-debugger .opencode/skills/node-inspect-debugger && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "node-inspect-debugger" agent skill from https://github.com/BlackBeltTechnology/pi-agent-dashboard/tree/develop/packages/eng-disciplines/.pi/skills/node-inspect-debugger into .opencode/skills/node-inspect-debugger/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "node-inspect-debugger", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
node-inspect-debuggerSee runtime state a console.log cannot reach — set real breakpoints, step, and dump the scope chain of a paused Node/TypeScript process.
Node Inspect Debugger is an agent skill from BlackBeltTechnology/pi-agent-dashboard. See runtime state a console.log cannot reach — set real breakpoints, step, and dump the scope chain of a paused Node/TypeScript process. Use on "set a breakpoint", "inspect runtime state", "console.log isn't enough", "step through this", "what's in this closure at runtime", "attach a debugger". Not a logging or observability-setup workflow.
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/cdp-inspect.ts`).
It sits in Frontend & Design, covering Responsive design. It works with TypeScript. The repository describes itself as: Real-time web dashboard for pi coding-agent sessions. Multi-session view, live chat mirroring, integrated terminal, diff viewer, pi-flows execution, and mobile-first remote… The licence is MIT.
Read from SKILL.md and the folder at commit e23e533. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (TypeScript), which the agent can run.
Shell commands in SKILL.md call:
nodecurlnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Node Inspect Debugger loads about 2.3k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 978 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from BlackBeltTechnology/pi-agent-dashboard at commit e23e533, republished under its MIT licence (© BlackBeltTechnology). 978 words, ~2,290 tokens.
.claude/skills/node-inspect-debugger/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.console.log is a guess with a print statement attached — you have to already suspect where to look and what to print. A breakpoint inverts that: you stop the world at a line and read every local and closure variable in the frame, walk the call stack, and evaluate expressions in the paused context. When the bug lives in state a log can't cheaply reach — a closure captured three calls ago, a paused async frame, the Electron main process, the internals of a long-lived WebSocket server — the inspector is the tool.
This skill is the TOOL half of a pair; the METHOD is systematic-debugging (its Phase 1 "gather evidence" and Phase 3 "test one variable" are exactly when you reach for a breakpoint).
Reach for the inspector when the state you need is expensive or impossible to log:
packages/server, TypeScript run directly via the native loader, or jiti on the PI_DASHBOARD_TS_LOADER=jiti opt-in) — request handlers whose failure depends on accumulated in-memory state.restart-helper.ts) — a detached process whose closure state you can't console.log from the parent.If a single well-placed console.log would answer the question, use the log. The inspector earns its setup cost when the state is deep, closure-bound, or in a process you can't easily instrument.
| Tier | Use when | Interface |
|---|---|---|
REPL (node inspect) | interactive, one-off, you're driving | the node inspect command REPL |
| Programmatic CDP | scripted, repeatable, or attaching from another process | scripts/cdp-inspect.ts (this skill) |
node inspect REPL cheat-sheetnode inspect opens a REPL against the inspector. Core commands:
| Command | Does |
|---|---|
sb('file.ts', N) | set breakpoint at line N of file.ts (see jiti note below — .ts works directly) |
c | continue to next breakpoint |
n / s / o | step next / step-in / step-out |
bt | backtrace (call stack of the paused frame) |
list(5) | show 5 source lines around the pause point |
repl | drop into a REPL evaluated in the paused frame's scope — inspect any local |
watch('expr') | re-evaluate expr at every pause |
exec expr | evaluate one expression in the paused frame |
restart / kill | restart / kill the inspected process |
In repl mode you can read any in-scope variable by name — this is the fastest way to answer "what is x right now?".
The dashboard server runs TypeScript directly (no dist/*.js build) through the Node-native loader @blackbelt-technology/pi-dashboard-shared/platform/native-ts-register.mjs (module.stripTypeScriptTypes, transform mode). Launch the target with the inspector and that register module:
node --inspect-brk=<port> --enable-source-maps --import <native-ts-register-url> cli.tsResolve the URL by package specifier, never by path arithmetic:
import { createRequire } from "node:module";
import { pathToFileURL } from "node:url";
const req = createRequire(process.argv[1] ?? import.meta.url);
const hook = pathToFileURL(req.resolve("@blackbelt-technology/pi-dashboard-shared/platform/native-ts-register.mjs")).href;.ts lines stay aligned for ordinary code; TS-only constructs that transform mode rewrites (enum, namespace, parameter properties) may shift columns. Keep --enable-source-maps on.grep "launch (parent pid" ~/.pi/dashboard/server.log | tail -1.PI_DASHBOARD_TS_LOADER=jiti opt-in, spike-verified)Under the jiti fallback (PI_DASHBOARD_TS_LOADER=jiti) the server runs TypeScript through jiti. Launch the target with the inspector and jiti's register hook:
node --inspect-brk=<port> --enable-source-maps --import <jiti-register-hook-url> cli.ts--inspect-brk=<port> halts at the very first line so you can set breakpoints before anything runs.--enable-source-maps is not required for line-level breakpoints (jiti is line-preserving, see pitfall below) but keep it: it gives exact column precision and correct Error.stack line numbers.The register hook path differs across local / standalone / global installs. Resolve it the same way this repo's launcher (packages/server/bin/pi-dashboard.mjs) does — via createRequire, trying each supported jiti package:
import { createRequire } from "node:module";
import { dirname, join } from "node:path";
import { pathToFileURL } from "node:url";
const req = createRequire(import.meta.url); // or createRequire(process.argv[1])
const JITI_PACKAGES = ["jiti", "@mariozechner/jiti"];
let hook;
for (const pkg of JITI_PACKAGES) {
try {
const pkgJson = req.resolve(`${pkg}/package.json`);
hook = pathToFileURL(join(dirname(pkgJson), "lib", "jiti-register.mjs")).href;
break;
} catch { /* try next */ }
}
// pass `hook` to `node --import <hook> cli.ts`To debug the already-running server instead of a cold --inspect-brk launch, start it with the inspector enabled and discover the port:
NODE_OPTIONS="--inspect=0" pi-dashboard start # 0 = pick a free port
curl -s http://127.0.0.1:<port>/json/list # find the webSocketDebuggerUrl / port--inspect=0 avoids a port collision when something already holds the default 9229.
A common guide warns: "breakpoints hit the emitted JS, not your .ts, and node inspect doesn't follow sourcemaps." This is false for this repo. jiti transpiles line-preserving and registers the compiled JS under the .ts URL (1:1 line alignment). There is no separate dist/*.js file and no sourcemap indirection to fight.
Consequences you can rely on:
sb('cli.ts', 42) in the plain node inspect REPL binds directly to line 42 of the .ts source and hits.Debugger.setBreakpointByUrl('cli.ts', line) over CDP binds to the .ts line.sourceMapURL: "" (jiti attaches none) — this does not mean the breakpoint won't bind. It binds and hits anyway.Do not port the emitted-JS workaround; it's solving a problem jiti doesn't create.
locations but still hitA breakpoint set before the target script has parsed (e.g. right after the --inspect-brk halt) returns locations: [] at set-time. This is not a failure — the breakpoint is deferred and resolves and hits once the script parses. Setting a breakpoint after the script has parsed returns populated locations. Do not treat an empty locations array at set-time as "the breakpoint didn't take."
scripts/cdp-inspect.tsFor scripted or repeatable inspection, this skill ships a dependency-free TypeScript helper. It uses Node 24's global WebSocket — no chrome-remote-interface dependency. It attaches to a paused target, sets a .ts breakpoint, resumes past the entry halt, and on the hit prints the paused frame plus every local and closure variable:
# 1. launch the target halted (see jiti recipe above), noting <port>
# 2. attach + break at a line inside a function:
npx tsx packages/eng-disciplines/.pi/skills/node-inspect-debugger/scripts/cdp-inspect.ts <port> <ts-url> <line>
# prints: PAUSED at <file>:<line> fn=<name>
# local cfg = Object
# local doubled = 42
# closure label = "HELLO"Use it as the ready-made "dump the frame" step whenever the REPL's interactivity isn't worth it.
createRequire, not a hard-coded path.ts breakpoints were set directly (no emitted-JS workaround)locations at set-time was treated as deferred, not failedrepl, exec, or cdp-inspect.ts) — the actual state, not a guess© BlackBeltTechnology, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in packages/eng-disciplines/.pi/skills/node-inspect-debugger of BlackBeltTechnology/pi-agent-dashboard.
Open the folder on GitHubat commit e23e533
Node Inspect Debugger next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Node Inspect Debugger this skillBlackBeltTechnology/pi-agent-dashboard | 316 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Local Testinglobehub/lobe-ui | 2.2k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Frontend Engineer Workflownanocoai/nanoclaw | 31k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Trip Map Builderhiyeshu/trip-map-builder | 242 | — | ~1.7k | Automated safety check: Pass | None | |
| Previewhanamizuki/solopreneur | 152 | — | ~5.2k | Automated safety check: Pass | MIT | |
| Python DebugpyKevin100202/Rocket-Design-and-Manufacturing-Automation-Program-from-Shenzhen22highschool | 170 | — | ~638 | Automated safety check: Pass | None |
lobehub/lobe-ui
Local browser verification for the lobe-ui component library and documentation site.
nanocoai/nanoclaw
Sets a build, test and verify routine for web projects: write typed, accessible code and never call work done until it is checked in a real browser with screenshots.
hiyeshu/trip-map-builder
End-to-end trip planning: gather user constraints, build a reference itinerary, research locations and dining signals via 大众点评 + 小红书, then generate an interactive mobile-first map page (Leaflet +…
hanamizuki/solopreneur
Create an interactive HTML preview of any proposal, plan, idea, doc, brief, or spec and land it in the browsable local Preview Library by default (opens under file:// with a catalog sidebar and…
Kevin100202/Rocket-Design-and-Manufacturing-Automation-Program-from-Shenzhen22highschool
Debug Python with pdb, breakpoint(), post-mortem inspection, and debugpy remote attach.
Ohh-889/skyroc
Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs.
BlackBeltTechnology/pi-agent-dashboard
Browser automation via the agent-browser CLI. An agent skill from BlackBeltTechnology/pi-agent-dashboard.
BlackBeltTechnology/pi-agent-dashboard
Diagnose failed GitHub Actions runs for pi-agent-dashboard: the 11-file workflow taxonomy, affected-test selection, the release pipeline, known failure modes, and how to read gh run logs and…
BlackBeltTechnology/pi-agent-dashboard
Diagnose problems in the running pi-agent-dashboard system: server.log, /api/health, bridge WebSocket connectivity, vitest triage, known-issue FAQ entries.
BlackBeltTechnology/pi-agent-dashboard
Disciplined implementation in pi-agent-dashboard: the rebuild matrix (extension→reload, server→restart, client→build+restart, openspec-apply→full rebuild) plus the project's code discipline rules.
BlackBeltTechnology/pi-agent-dashboard
Monitor and control the pi-dashboard server. An agent skill from BlackBeltTechnology/pi-agent-dashboard.
BlackBeltTechnology/pi-agent-dashboard
Turn a pi session into a Markdown "how-we-did-it" collaboration guideline: reads the session's JSONL transcript and synthesizes a reusable playbook of which prompts worked, what had to be steered…
Works with
Categories
See runtime state a console.log cannot reach — set real breakpoints, step, and dump the scope chain of a paused Node/TypeScript process. Node Inspect Debugger is an agent skill from BlackBeltTechnology/pi-agent-dashboard.log cannot reach — set real breakpoints, step, and dump the scope chain of a paused Node/TypeScript process.
Node Inspect Debugger fits situations like: tasks that involve Responsive design.
Run `npx skills add BlackBeltTechnology/pi-agent-dashboard --skill node-inspect-debugger -a claude-code`. Or copy the skill folder (packages/eng-disciplines/.pi/skills/node-inspect-debugger in BlackBeltTechnology/pi-agent-dashboard) into .claude/skills/node-inspect-debugger in your project. Claude Code loads it when a task matches its description.
Run `npx skills add BlackBeltTechnology/pi-agent-dashboard --skill node-inspect-debugger -a codex`. Or copy the skill folder (packages/eng-disciplines/.pi/skills/node-inspect-debugger in BlackBeltTechnology/pi-agent-dashboard) into .agents/skills/node-inspect-debugger in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add BlackBeltTechnology/pi-agent-dashboard --skill node-inspect-debugger -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/node-inspect-debugger, .gemini/skills/node-inspect-debugger, .github/skills/node-inspect-debugger and .opencode/skills/node-inspect-debugger in your project.
Going by SKILL.md and its folder, Node Inspect Debugger needs TypeScript for the scripts in its folder and the command-line tools its instructions call (node, curl and npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use curl and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Node Inspect Debugger is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Node Inspect Debugger: Local Testing (lobehub/lobe-ui, 2.2k stars), Frontend Engineer Workflow (nanocoai/nanoclaw, 31k stars), Trip Map Builder (hiyeshu/trip-map-builder, 242 stars) and Preview (hanamizuki/solopreneur, 152 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
BlackBeltTechnology (a GitHub organization) maintains it in BlackBeltTechnology/pi-agent-dashboard, which has 316 GitHub stars. The repository holds 66 skills in this directory. The repository was last updated on October 6, 2026.
Source: BlackBeltTechnology/pi-agent-dashboard on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.