| name | nodejs |
| description | Node.js runtime patterns, streams, worker threads, clustering, event loop optimization, and production-grade server architecture |
| layer | domain |
| category | backend |
| triggers | ["node.js","nodejs","express","worker threads","node streams","clustering","event loop","node performance"] |
| inputs | ["Backend architecture requirements","Performance bottleneck descriptions","Scaling requirements"] |
| outputs | ["Node.js implementation patterns","Performance optimization strategies","Production deployment configurations"] |
| linksTo | ["websockets","message-queues","microservices","graphql","prisma","drizzle","redis"] |
| linkedFrom | ["error-handling","logging","testing"] |
| preferredNextSkills | ["prisma","redis","microservices","websockets"] |
| fallbackSkills | ["python","golang"] |
| riskLevel | low |
| memoryReadPolicy | selective |
| memoryWritePolicy | none |
| sideEffects | [] |
Node.js Domain Skill
Purpose
Provide expert-level guidance on Node.js runtime patterns, server architecture, performance optimization, and production deployment. This skill covers the entire Node.js ecosystem from event loop internals to clustering strategies.
Key Patterns
1. Event Loop Awareness
The event loop is single-threaded. Never block it.
const data = fs.readFileSync('/large-file.json');
const parsed = JSON.parse(data);
const stream = fs.createReadStream('/large-file.json');
const parsed = await pipeline(stream, new JSONParseStream());
Phases to understand:
- Timers:
setTimeout, setInterval callbacks
- Pending callbacks: I/O callbacks deferred from previous cycle
- Poll: Retrieve new I/O events; execute I/O callbacks
- Check:
setImmediate callbacks
- Close:
socket.on('close') callbacks
Use setImmediate() to yield to the event loop during CPU-intensive synchronous work:
function processLargeArray(array, callback) {
const CHUNK = 1000;
let index = 0;
function doChunk() {
limit = .(index + , array.);
(; index < limit; index++) {
(array[index]);
}
(index < array.) {
(doChunk);
} {
();
}
}
();
}