mcpField
N
node

node

github.com/mcollina开发2.0k5.9k 次安装1 周前更新
代码仓库

关于 node

面向 Node.js 开发者的技能,提供构建稳健、易维护应用的指导,涵盖运行时实践、故障排查、性能和 TypeScript。

主要功能

  1. 01TypeScript 类型剥离指导
  2. 02错误与异步模式
  3. 03流处理与缓存实践
  4. 04测试与进程诊断
  5. 05性能分析与优化指导
  6. 06日志和配置模式

适用场景

  1. 01使用 Node.js 直接运行 TypeScript
  2. 02构建 CSV 或 ETL 流工作流
  3. 03诊断不稳定测试或卡住的进程
  4. 04排查运行缓慢的代码路径

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/node确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

tile.json
rules/
async-patterns.md
caching.md
environment.md
error-handling.md
flaky-tests.md
graceful-shutdown.md
logging.md
modules.md
node-modules-exploration.md
performance.md
profiling.md
streams.md
stuck-processes-and-tests.md
testing.md
typescript.md
rules/assets/
graceful-server.test.ts
graceful-server.ts

详细介绍

使用场景

在处理 Node.js 代码时,使用此技能获取领域知识,以构建稳健、高性能且易于维护的 Node.js 应用程序。

使用类型剥离的 TypeScript

为 Node.js 编写 TypeScript 时,请使用类型剥离(Node.js 22.6+),而不是 ts-node 或 tsx 等构建工具。类型剥离会在运行时移除类型注解,直接运行 TypeScript,无需转译。

类型剥离兼容性的关键要求:

  • 对仅用于类型的导入使用 import type
  • 使用 const 对象而不是枚举
  • 避免使用命名空间和参数属性
  • 在导入中使用 .ts 扩展名

最小示例——有效的类型剥离 TypeScript 文件:

// greet.ts
import type { IncomingMessage } from 'node:http';

const greet = (name: string): string => `Hello, ${name}!`;
console.log(greet('world'));

直接运行:

node greet.ts

完整配置和示例请参阅 rules/typescript.md。

常见工作流

对于多步骤流程,请先遵循以下高级步骤,再查阅相关规则文件:

优雅关闭:注册信号处理程序(SIGTERM/SIGINT)→ 停止接受新任务 → 排空正在处理的请求 → 关闭外部连接(DB、缓存)→ 使用适当的代码退出。请参阅 rules/graceful-shutdown.md。

错误处理:定义共享错误基类 → 对错误进行分类(操作错误与程序员错误)→ 添加异步边界处理程序(process.on('unhandledRejection'))→ 在调用栈中传递类型化错误 → 在响应或崩溃前记录带有上下文的日志。请参阅 rules/error-handling.md。

诊断不稳定的测试:使用 --test-only 隔离测试 → 检查共享状态或计时器依赖 → 检查异步清理顺序 → 添加重试逻辑作为临时诊断步骤 → 修复根本原因。请参阅 rules/flaky-tests.md。

诊断卡住的进程/测试(node --test 挂起、“process did not exit”、CI 超时、句柄未关闭):隔离文件/测试 → 使用显式超时/报告器运行 → 通过 why-is-node-running(SIGUSR1)检查句柄 → 在创建资源的作用域中进行确定性清理 → 重新运行隔离测试和完整测试套件,直至稳定。请参阅 rules/stuck-processes-and-tests.md。

分析缓慢的执行路径:在真实负载下重现 → 使用 --cpu-prof 捕获 CPU 性能分析文件 → 找出热点函数 → 检查流背压或不必要的序列化 → 使用基准测试验证改进。请参阅 rules/profiling.md 和 rules/performance.md。

高优先级启用清单(流 + 缓存)

当任务提及 CSV、ETL、数据摄取管道、大文件处理、背压、重复查询或去重并发异步调用时,请明确应用此清单:

  1. 使用 node:stream/promises 中的 await pipeline(...)(在指导或代码中优先使用此方式,而不是链式调用 .pipe())。
  2. 在流中转换数据时,至少包含一个明确的 async function* 转换函数。
  3. 出现重复工作时,选择一种缓存策略:
    • lru-cache:用于单进程中有界的内存复用。
    • async-cache-dedupe:用于异步请求去重 / 过期时重新验证行为。
  4. 说明背压的处理方式(通过 pipeline() 隐式处理,或通过 drain 显式处理)。
集成示例模式(CSV/ETL)

对于 CSV/ETL 风格的提示词,优先采用以下答案结构:

  • createReadStream(input)
  • async function* 解析器/转换函数
  • 可选的缓存增强查询(async-cache-dedupe 或 lru-cache)
  • 使用 await pipeline(...) 输出到可写目标

在说明中直接链接相关规则,方便模型获取详情:

使用方法

阅读各个规则文件,了解详细说明和代码示例:

评论

支持 Markdown