Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this skill when debugging runtime failures in Node.js or Bun: stack traces, async errors, startup crashes, port conflicts, and memory leaks.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-20 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-22 | ✓→✗ | ▼ Worse | 42% | 0% |
| case-18 | ✓→✓ | = Same ✓ | 0% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 33% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 22% | 0% |
Use this skill when debugging runtime failures in Node.js or Bun: stack traces, async errors, startup crashes, port conflicts, and memory leaks.
Rule: the top frames are often internal wrappers. Find the first frame in your project path.
Checklist:
Common causes:
awaitPromise.all where one rejects and the rejection isn’t handled upstreamFix patterns:
await async calls in request handlersprocess.on("unhandledRejection") logging in services (carefully)Prefer explicit boundaries:
ENOENT: missing file → check path + cwd + packagingEADDRINUSE: port in use → pick a new port or kill existing processECONNREFUSED: service not reachable → check host/port, local service runningMODULE_NOT_FOUND: missing dependency/build output → reinstall or rebuildFrequent culprits:
Fix patterns:
--inspect)When reproduction is hard, use a debugger:
--inspect or --inspect-brkPrefer:
Example (structured):
tslogger.error("db.connect_failed", { host, port, cause: String(err) });
Before changing code:
EADDRINUSE)Workflow:
:3000, :5173, etc.)Avoid “random port hopping” without understanding why the port is busy.
grep to locate error strings and catch blocks.When reporting issues:
catch without rethrowing or returning failuretry/catch everywhere without understanding the root causeOther measured skills in the registry, with their headline benchmark lift.