Kipt

Node.js skill for Claude Code: Matteo Collina's node skill explained

The Node.js skill from Matteo Collina gives your agent Node best practices: TypeScript type stripping, streams, errors, tests, shutdown. How to install it.

By the Kipt team · Updated 24 October 2026

Source: mcollina/skills · Maintainer: community: Matteo Collina · License: MIT · Checked: 24 October 2026

What is the Node.js skill?

The node skill is an Agent Skill that gives Claude Code, Codex, Cursor and other agents Node.js best practices for TypeScript projects: run .ts files with native type stripping, compose streams with pipeline(), shut down gracefully, and diagnose flaky or hanging tests with the built-in test runner.

It lives in mcollina/skills, the MIT-licensed collection of Matteo Collina, who is listed as a Technical Steering Committee voting member in the Node.js README, alongside his Fastify skill and OAuth skill. The README describes the node skill in one line: "Best practices for Node.js development."

The SKILL.md description is long and trigger-heavy. It starts: "Provides domain-specific best practices for Node.js development with TypeScript, covering type stripping, async patterns, error handling, streams, modules, testing, performance, caching, logging, and more." It then lists phrases such as "native TypeScript in Node", "strip types" and "ts-node alternative" so the agent loads the skill when you use them.

As of 24 October 2026, its skills.sh page listed 5.8K installs (snapshot, 24 October 2026), and the repo had about 2.0K stars.

What does it do?

The SKILL.md has four parts: type stripping, common workflows, a streams and caching checklist, and an index of rule files.

TypeScript with type stripping. The skill says to use type stripping "instead of build tools like ts-node or tsx." For that to work, code must use import type for type-only imports, const objects instead of enums, no namespaces or parameter properties, and .ts extensions in imports. Those constraints match the Node.js TypeScript docs, which say enums, namespaces with runtime code and parameter properties need transformation, and that file extensions are mandatory in imports.

Common workflows. Short step sequences for five jobs:

  • Graceful shutdown: handle SIGTERM and SIGINT, stop new work, drain requests, close connections, exit.
  • Error handling: a shared error base class, operational vs programmer errors, unhandledRejection handlers.
  • Flaky tests: isolate the test, check shared state and timers, inspect teardown order.
  • Stuck processes and tests: run with a timeout, then find open handles with why-is-node-running.
  • Profiling: reproduce under load, capture a CPU profile, find hot functions, then benchmark.

Streams and caching checklist. When a task mentions CSV, ETL, large files, backpressure or repeated lookups, the agent should use await pipeline(...) from node:stream/promises, include an async function* transform, and pick lru-cache for bounded in-process reuse or async-cache-dedupe to collapse concurrent calls for the same key.

Rule files. The rules/ folder holds 15 Markdown files plus a sample graceful-server.ts with a test:

Rule file Main recommendation
typescript.md Type stripping setup and tsconfig
async-patterns.md Promise.all, controlled concurrency, AbortController
error-handling.md Coded errors with @fastify/create-error or a minimal pattern
streams.md pipeline, async generators, backpressure
modules.md Prefer ES Modules, file extensions, dynamic imports
testing.md Built-in node:test runner
flaky-tests.md, stuck-processes-and-tests.md --test-reporter, --test-timeout, why-is-node-running
performance.md Don't block the event loop, worker threads with Piscina
caching.md lru-cache, async-cache-dedupe, mnemonist
profiling.md Flame graphs with @platformatic/flame, load tests with autocannon
logging.md Structured JSON logs with pino
environment.md --env-file and process.loadEnvFile()
graceful-shutdown.md close-with-grace
node-modules-exploration.md Navigating node_modules

The folder also has a tile.json manifest that names the package mcollina/node-best-practices.

How do you install the node skill?

The repo README lists the skills but has no install section and the repo has no Claude Code plugin marketplace. The skills.sh page gives this command for the skills CLI:

npx skills add https://github.com/mcollina/skills --skill node

Add -g to make it available across projects, or -a claude-code to target Claude Code. Claude Code reads standalone skills from .claude/skills/ in a project or ~/.claude/skills/ for all projects, per the Claude Code skills docs. Codex and Cursor read the same SKILL.md format; see Codex skills and Cursor skills.

If you build on Fastify, consider installing fastify-best-practices too; both skills recommend the same type stripping setup and several of the same libraries.

How do you use it?

The skill is model-invoked, so the agent can load it whenever you work on Node.js code, or you can call it with /node in Claude Code.

Example prompts (suggestions, not quotes from the repo):

  • Set up this new service to run TypeScript with Node type stripping, no build step. Update tsconfig and package.json scripts.
  • Our CSV import loads the whole file into memory. Rewrite it as a stream pipeline with backpressure and cached lookups.
  • node --test hangs in CI after the last test. Find what keeps the process alive and fix the teardown.
  • Add graceful shutdown to server.ts so deploys drain in-flight requests.
  • Profile the /search endpoint under load and tell me where time goes.

Expect answers that reach for Node built-ins first (node:test, --env-file, node:stream/promises) and for specific libraries where the rules name one.

Tips and limits

From the repo and Node's docs, not from testing:

  • Version numbers differ slightly. The rule file typescript.md says type stripping runs without flags on Node.js 22.19+, 23.6+ and 24+. Node's docs say it is enabled by default from v22.18.0 and v23.6.0. If you are on 22.18, you don't need the flag.
  • Opinionated library choices. The rules recommend pino, close-with-grace, Piscina, autocannon and @fastify/create-error, several from the Fastify and Pino ecosystem Collina works on. If your team uses other tools, say so in your prompt or CLAUDE.md.
  • Broad trigger. The skill says to use it "whenever you are dealing with Node.js code". In a repo where you don't want TypeScript-first advice, install it per project instead of with -g.
  • Not Node internals. C++ addons, V8 and libuv belong to the separate nodejs-core skill in the same repo.
  • Security audits. On 24 October 2026, skills.sh showed Pass from Gen Agent Trust Hub, Socket and Snyk. The skill runs no scripts; the .ts files are examples.

Under the MIT License you can copy and change the skill as long as you keep the copyright notice.

Save it in your Kipt library

Kipt keeps your prompts and skills as Markdown in a private GitHub repo you own. In Kipt, open Skills and paste the skills/node folder link into the import box; Kipt reads the SKILL.md and the rules/ files. Paste the repo link instead and Kipt shows a list of Collina's skills to pick from. Everything you save installs into Claude Code or Codex with one command:

npx skills add https://github.com/<you>/<repo>.git --all -g

Kipt is not affiliated with Matteo Collina or mcollina/skills.

Similar skills

Questions

What is the node skill?

node is an MIT-licensed Agent Skill in Matteo Collina's mcollina/skills repo. It gives a coding agent Node.js best practices for TypeScript projects, with 15 rule files covering type stripping, async patterns, errors, streams, modules, testing, flaky and stuck tests, performance, caching, profiling, logging, environment config and graceful shutdown.

How do I install the Node.js skill?

Run npx skills add https://github.com/mcollina/skills --skill node, the command on its skills.sh page. The repo README lists the skills but gives no install command and no Claude Code plugin marketplace, so the skills CLI is the documented route.

Does the node skill use ts-node or tsx?

No. It tells the agent to run TypeScript with Node.js type stripping instead of ts-node or tsx. That means import type for type-only imports, const objects instead of enums, no namespaces or parameter properties, and .ts extensions in imports.

Which Node.js version does the skill need?

The SKILL.md cites Node.js 22.6 or later for type stripping, and its testing rule targets the built-in test runner on Node.js 22 or later. Node's own docs say type stripping is on by default from v22.18.0 and v23.6.0, and stable from v24.12.0 and v25.2.0.

Who is Matteo Collina?

The nodejs/node README lists Matteo Collina as a voting member of the Node.js Technical Steering Committee, and the Pino README lists him on its team. The node skill recommends several libraries from that ecosystem, such as pino for logging, close-with-grace for shutdown and autocannon for HTTP benchmarks.

More in Skill directory

All guides

Keep your prompts and skills in one place, in your own GitHub. Install every skill with one command.

Get started

Kipt is an independent product, not affiliated with or endorsed by Anthropic, OpenAI, Cursor or GitHub. Claude, ChatGPT, Codex, Cursor and GitHub are trademarks of their owners.