Automated summary
A specialist skill for building, optimizing, and debugging server-side Node.js applications (APIs, CLIs, microservices) with the event loop and bounded resources as the guiding constraints.
Strengths
- Forces reading the existing config and conventions before introducing a second idiom into an otherwise consistent codebase
- Targets real runtime hazards: synchronous CPU work, catastrophic regex backtracking, `.pipe()` chains that leak file descriptors on error
- Explicitly covers process lifecycle — graceful SIGTERM shutdown and exiting after an uncaught exception instead of limping on
- Requires a structured report: blocking risks, stream/backpressure behavior, shutdown path, and where configuration comes from
Limitations
- Purely prescriptive: ships no scripts, linters, or tooling to enforce the rules it states
- Does not go deep on frameworks (Nest, Fastify) or TypeScript build pipelines
- Assumes a long-lived supervised process; a poor fit for serverless or short-lived function runtimes
Reach for it whenever a task involves server-side Node.js code: a new endpoint, a CLI, a microservice, a production incident, or a performance review.
Skip it for front-end code, browser scripting, or a Node project where you only need to add a dependency without changing runtime behavior.
Security analysis
SafeThe skill is purely advisory guidance for Node.js development. It includes Bash/Write/Edit in allowed-tools, but the content contains no destructive commands, no network exfiltration, no obfuscated payloads, and no instructions to disable safety controls. The self-evolve journal write is a benign local file operation.
No concerns found
How this analysis is madeExamples
Add a CSV export endpoint to our Express API. Some tenants have millions of rows — make sure it streams instead of buffering the whole result in memory, and handle errors without leaking connections.Every deploy drops in-flight requests on this Node service. Implement graceful shutdown on SIGTERM (stop accepting, drain, close the pg pool) and audit the request path for anything blocking the event loop.Review how this Node service loads and validates configuration at startup, and check whether we're pulling in packages that `node:` already covers — report the blocking risks and the dependency footprint.name: node-specialist description: Use when you need to build, optimize, or debug Node.js backend applications, APIs, CLIs, or microservices requiring deep ecosystem knowledge and server-side JavaScript expertise. codex-short-description: "Build, optimize, and debug Node.js APIs, CLIs, and microservices" allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep related-skills:
- codebase-explain
- codebase-plan-refactor loop-eligible: false compatibility: claude-code codex opencode
Node Specialist
You build server-side JavaScript. Node's single-threaded event loop is the constraint that shapes every decision.
Match the codebase first
Read the existing configuration, conventions, and dependency choices before applying anything below. Introducing a second idiom into a consistent codebase costs more than it returns; where the existing approach genuinely blocks the work, raise it as its own change rather than resolving it inside an unrelated ticket.
Never block the event loop
One CPU-bound operation stalls every concurrent request on that process. Synchronous filesystem calls, large JSON parses, crypto in a request path, and unbounded regexes are the usual causes. Move CPU work to worker threads or a separate process. A regex over user input that backtracks exponentially is a denial-of-service vector, not a performance nit.
Streams for anything that could be large
Reading a file or a request body fully into memory works until someone sends a large one, then
it takes down the process. Pipe with pipeline so errors and cleanup propagate — manual
.pipe() chains leak file descriptors on error.
Handle process lifecycle deliberately
Graceful shutdown on SIGTERM: stop accepting connections, finish in-flight requests, close pool connections, then exit. Without it, every deploy drops requests. Do not keep running after an uncaught exception — the process is in an unknown state; log and exit, and let the supervisor restart.
Backpressure and bounded resources
Unbounded queues, unbounded connection pools, and unbounded caches all become memory leaks under load. Every buffer needs a limit and a defined behavior when it is reached.
Dependencies are attack surface and startup cost
Node projects accumulate transitive dependencies fast. Audit them, pin them with a committed
lockfile, and prefer the standard library where it is adequate. Check what you actually need
before adding a package for something node: already provides.
Configuration and secrets from the environment
Never in the repository, never in the image. Validate required configuration at startup and fail loudly — a service that boots with a missing variable and fails on first request is worse than one that refuses to start.
Reporting
State the blocking risks, the stream and backpressure behavior, the shutdown path, and where configuration comes from.
<!-- self-evolve:start -->Host portability: tool names in this skill follow Claude Code conventions; on other hosts (Codex, opencode) map them by intent — see PORTABILITY.md.
Self-Evolve Loop
Journal: ~/.ink-and-agency/learnings/node-specialist.md (workspace-local
.ink-and-agency/learnings/node-specialist.md where the sandbox confines writes). Read it
first, append what the run taught last — SELF-EVOLVE.md.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/node-js-specialist-ms71b4c9/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/node-js-specialist-ms71b4c9' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/node-js-specialist-ms71b4c9/download' --output '.skill-downloads/node-js-specialist-ms71b4c9/SKILL.md.part' && mv '.skill-downloads/node-js-specialist-ms71b4c9/SKILL.md.part' '.skill-downloads/node-js-specialist-ms71b4c9/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Environment declared by the author: claude-code codex opencode
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/node-js-specialist-ms71b4c9/SKILL.md' && test -s '.skill-downloads/node-js-specialist-ms71b4c9/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/node-specialist' && cp -R '.skill-downloads/node-js-specialist-ms71b4c9' '.claude/skills/node-specialist'Codex
test -f '.skill-downloads/node-js-specialist-ms71b4c9/SKILL.md' && test -s '.skill-downloads/node-js-specialist-ms71b4c9/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/node-specialist' && cp -R '.skill-downloads/node-js-specialist-ms71b4c9' '.agents/skills/node-specialist'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/node-js-specialist-ms71b4c9'openskills read 'node-js-specialist-ms71b4c9'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/node-js-specialist-ms71b4c9/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
React Hook Form Best Practices
Development
Master React Hook Form: avoid anti-patterns, manage subscriptions, and handle reset, dirty state, and controlled inputs correctly.
Emotion to Mantine Migration
Development
Migrate Emotion styled-components to Mantine components with style props and CSS modules. Use when converting .styled.tsx files or removing @emotion imports.
Scope Creep Detector
Development
Analyzes git diffs against a stated intent to detect scope creep, unrelated files, broad PRs, and oversized changes, then suggests keep, split, or justify actions.