mcpField
N
nodejs

nodejs

github.com/ulpi-io开发5162 次安装10 周前更新
代码仓库

关于 nodejs

nodejs 是面向 Node.js 和 Bun 后端任务的路由技能。它根据项目情况选择对应参考资料,并遵循输入验证、错误处理、日志、安全和验证方面的约定。

主要功能

  1. 01识别运行时与技术栈约定
  2. 02按任务选择相关参考资料
  3. 03规范边界输入验证
  4. 04指导错误处理、日志与关闭流程
  5. 05通过针对性检查验证改动

适用场景

  1. 01实现 Node.js 后端功能
  2. 02适配 Bun 项目的后端开发
  3. 03为 API 或数据库改动选择约定
  4. 04通过测试和类型检查验证后端改动

安装

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

$npx skills add https://github.com/ulpi-io/skills --skill nodejs

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

包含的文件

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

references/
api-design.md
async-patterns.md
auth.md
bun-runtime.md
caching.md
cli.md
config.md
database.md
docker.md
error-handling.md
http-server.md
logging.md
observability.md
project-structure.md
queues-jobs.md
security.md
stack.md
testing.md
validation.md
websockets.md

详细介绍

此技能是 Node.js/Bun 参考资料集的路由外壳。

不可妥协的规则:

  1. 首先阅读 references/stack.md,以确定运行时(Node.js 或 Bun)、框架和已锁定的决策。
  2. 然后仅加载实际任务所需的参考资料。
  3. TypeScript 严格模式——不得使用 any,不得隐式返回,不得未经检查就访问索引。
  4. 所有异步函数都必须处理错误——不得出现未处理的 Promise 拒绝。在每个边界处使用 try/catch 或 .catch()。
  5. 在系统边界处验证输入——对每个外部输入(请求体、查询参数、环境变量、CLI 参数)使用 Zod schema。绝不信任 req.body。
  6. 使用 pino 进行结构化日志记录——生产代码中不得使用 console.log。以 JSON 格式输出到 stdout,由日志聚合器解析。
  7. 优雅关闭——处理 SIGTERM/SIGINT,排空连接,完成正在执行的工作,并关闭数据库连接池。
  8. 代码或日志中不得包含机密信息——启动时验证环境变量;绝不记录这些变量,也绝不将其包含在错误响应中。

nodejs

输入

  • $request:正在处理的后端任务、子系统、错误或功能

目标

按照项目约定处理 Node.js/Bun 后端工作,确保实现遵循既定的服务器架构、数据访问、错误处理和部署模式。

步骤 0:阅读技术栈约定

始终从以下文件开始:

  • references/stack.md

该文件会说明:运行时(Node.js 或 Bun)、框架(Express/Fastify/Hono/无)、ORM、测试运行器、包管理器和已锁定的依赖选择。

如果存在 bun.lockb 或 bunfig.toml,则运行时为 Bun——还需加载 references/bun-runtime.md,了解原生 API 的差异。

成功标准:开始实现前,项目的运行时、框架和工具链选择均已明确。

步骤 1:仅加载相关参考资料

使用路由表选择参考文件。不要一次性加载整套参考资料。

任务阅读
运行时、TypeScript、包管理器、已锁定的依赖references/stack.md
文件夹约定、入口点、monorepo 布局references/project-structure.md
Express/Fastify/Hono 模式、中间件、路由references/http-server.md
REST 约定、版本控制、分页、错误响应references/api-design.md
Zod/AJV 输入验证、DTO 模式references/validation.md
Prisma/Drizzle/Knex、迁移、连接池references/database.md
JWT、会话、OAuth2、RBAC、中间件防护references/auth.md
错误类、异步错误边界、HTTP 错误响应references/error-handling.md
pino 结构化日志记录、请求关联、日志级别references/logging.md
vitest/jest/bun test、supertest、测试工厂、覆盖率references/testing.md
Promise、流、工作线程、AbortController、关闭references/async-patterns.md
helmet、CORS、速率限制、输入清理、依赖审计references/security.md
Redis、内存缓存、缓存失效模式references/caching.md
BullMQ、作业模式、重试策略、死信队列references/queues-jobs.md
环境变量验证、dotenv、配置模块、机密管理references/config.md
OpenTelemetry、健康检查、指标、分布式追踪references/observability.md
多阶段 Dockerfile、.dockerignore、生产与开发镜像references/docker.md
ws/Socket.io、连接生命周期、扩展、房间references/websockets.md
commander/yargs、参数解析、退出码、stdin/stdoutreferences/cli.md
Bun 原生 API、bun test、bun build、Bun.serve、Bun.$references/bun-runtime.md

多个任务?阅读多个文件。参考资料均可独立使用。

成功标准:仅采用与任务相关的后端约定。

第 2 步:使用核心后端防护措施实现

持续遵循以下规则:

  • TypeScript 严格模式,并启用 noUncheckedIndexedAccess
  • 在边界处验证所有外部输入(Zod 架构)
  • 错误必须有类型、经过捕获,并以结构化 HTTP 响应返回
  • 通过 pino 子日志记录器记录日志,并使用请求关联 ID
  • 通过项目的 ORM/查询构建器访问数据库,而非使用原始 SQL 字符串
  • 在原子性至关重要时,将变更包装在事务中
  • 优雅关闭:SIGTERM 处理程序排空服务器、关闭连接池并干净退出
  • 在启动时验证环境变量——缺少必需配置时立即失败
  • 不使用 any,除非在注释中说明理由,否则不使用 as 类型断言
  • 如果使用 Bun 运行时:优先使用 Bun.serve()、Bun.file()、bun test,而非 Node.js 对应项

成功标准:更改符合项目的后端架构,而非通用默认做法。

第 3 步:验证受影响范围

使用范围最窄的相关验证方式:

  • 单元测试(vitest run、jest 或 bun test)
  • 使用 supertest 或实际 HTTP 调用进行集成测试
  • 类型检查(tsc --noEmit)
  • 代码检查(eslint .)
  • 如果使用 Docker:构建镜像并验证其可以启动

成功标准:更改涉及的后端范围仍可构建、通过类型检查和测试。

防护措施

  • 不要将整本 Node.js 手册内联到 SKILL.md 中。
  • 不要跳过 references/stack.md。
  • 不要在生产代码中使用 console.log——请使用 pino。
  • 不要绕过 API 边界处的输入验证。
  • 不要留下未处理的 Promise 拒绝。
  • 不要硬编码密钥、端口或特定环境的值。
  • 不要添加 disable-model-invocation;这是一个普通的领域技能。

何时加载参考资料

  • references/stack.md 始终加载。

  • references/bun-runtime.md 当项目使用 Bun 时加载(通过 bun.lockb 或 bunfig.toml 检测)。

  • 然后仅加载 references/ 下与任务相关的文件

输出约定

报告:

  1. 加载了哪些参考资料
  2. 选择了哪种架构模式
  3. 所做的更改
  4. 运行的验证

评论

支持 Markdown