with one click
nodejs-best-practices
Node.js 開發原則與決策。框架選擇、非同步模式、安全性與架構。教你思考而非複製。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Node.js 開發原則與決策。框架選擇、非同步模式、安全性與架構。教你思考而非複製。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
使用 Claude API / Anthropic SDK 建構、除錯和最佳化應用程式。使用此技能建構的應用程式應包含提示快取 (prompt caching)。也處理在 Claude 模型版本之間遷移現有 Claude API 程式碼(4.5 → 4.6,4.6 → 4.7,替換已退役模型)。觸發時機:程式碼匯入 anthropic/@anthropic-ai/sdk;使用者要求使用 Claude API、Anthropic SDKs 或 Managed Agents (/v1/agents, /v1/sessions, /v1/environments);使用者在檔案中新增/修改/調整 Claude 功能(快取、思考、壓縮、工具使用、批次、檔案、引用、記憶)或模型(Opus/Sonnet/Haiku);關於 Anthropic SDK 專案中提示快取/快取命中率的問題。不觸發:檔案匯入 `openai`/其他提供者 SDK,檔案名稱類似 `*-openai.py`/`*-generic.py`,與提供者無關的程式碼,一般程式設計/機器學習。
當編寫呼叫 Gemini API 的程式碼時請使用此技能,用於文字生成、多輪對話、多模態理解、影像生成、串流回應、背景研究任務、函式呼叫、結構化輸出,或從舊的 generateContent API 遷移。此技能涵蓋 Interactions API,這是在 Python 與 TypeScript 中使用 Gemini 模型與代理的建議方式。
Tailwind CSS v4 原則。CSS 優先配置、容器查詢、現代模式、設計 token 架構。
處理使用 Gemini Live API 的即時、雙向串流應用程式時使用此技能。涵蓋基於 WebSocket 的音訊/視訊/文字串流、語音活動偵測 (VAD)、原生音訊功能、函式呼叫、會話管理、用戶端身分驗證的臨時權杖,以及所有 Live API 設定選項。涵蓋的 SDK - google-genai (Python)、@google/genai (JavaScript/TypeScript)。
Python 開發原則與決策。框架選擇、非同步模式、型別提示、專案結構。教你思考而非複製。
自動代理選擇與智慧任務路由。分析使用者請求並自動選擇最佳專家代理,無需使用者明確提及。
| name | nodejs-best-practices |
| description | Node.js 開發原則與決策。框架選擇、非同步模式、安全性與架構。教你思考而非複製。 |
| allowed-tools | Read, Write, Edit, Glob, Grep |
2025 年 Node.js 開發的原則與決策。 學習思考方式,而非記憶程式碼模式。
此技能教導決策原則,而非固定的程式碼複製。
你要建構什麼?
│
├── 邊緣/無伺服器(Cloudflare、Vercel)
│ └── Hono(零依賴、超快冷啟動)
│
├── 高效能 API
│ └── Fastify(比 Express 快 2-3 倍)
│
├── 企業/團隊熟悉度
│ └── NestJS(結構化、DI、裝飾器)
│
├── 遺留/穩定/最大生態系
│ └── Express(成熟、最多中介軟體)
│
└── 帶前端的全端
└── Next.js API Routes 或 tRPC
| 因素 | Hono | Fastify | Express |
|---|---|---|---|
| 最適合 | 邊緣、無伺服器 | 效能 | 遺留、學習 |
| 冷啟動 | 最快 | 快 | 中等 |
| 生態系 | 成長中 | 好 | 最大 |
| TypeScript | 原生 | 優秀 | 好 |
| 學習曲線 | 低 | 中 | 低 |
Node.js 22+:--experimental-strip-types
├── 直接執行 .ts 檔案
├── 簡單專案不需要建構步驟
└── 適用於:腳本、簡單 API
ESM(import/export)
├── 現代標準
├── 更好的 tree-shaking
├── 非同步模組載入
└── 用於:新專案
CommonJS(require)
├── 遺留相容性
├── 更多 npm 套件支援
└── 用於:現有程式碼庫、某些邊界情況
| 執行環境 | 最適合 |
|---|---|
| Node.js | 通用、最大生態系 |
| Bun | 效能、內建打包器 |
| Deno | 安全優先、內建 TypeScript |
請求流程:
│
├── 控制器/路由層
│ ├── 處理 HTTP 細節
│ ├── 在邊界進行輸入驗證
│ └── 呼叫服務層
│
├── 服務層
│ ├── 業務邏輯
│ ├── 框架無關
│ └── 呼叫資料存取層
│
└── 資料存取層
├── 僅資料存取
├── 資料庫查詢
└── ORM 互動
模式:
├── 建立自訂錯誤類別
├── 從任何層拋出
├── 在頂層捕獲(中介軟體)
└── 格式化一致的回應
客戶端取得:
├── 適當的 HTTP 狀態碼
├── 供程式處理的錯誤碼
├── 使用者友善的訊息
└── 無內部細節(安全性!)
日誌取得:
├── 完整堆疊追蹤
├── 請求情境
├── 使用者 ID(如適用)
└── 時間戳
| 情況 | 狀態碼 | 時機 |
|---|---|---|
| 錯誤輸入 | 400 | 客戶端發送了無效資料 |
| 未驗證 | 401 | 缺少或無效的憑證 |
| 無權限 | 403 | 有效驗證,但不被允許 |
| 找不到 | 404 | 資源不存在 |
| 衝突 | 409 | 重複或狀態衝突 |
| 驗證錯誤 | 422 | Schema 有效但業務規則失敗 |
| 伺服器錯誤 | 500 | 我們的問題,記錄所有內容 |
| 模式 | 適用時機 |
|---|---|
async/await | 循序非同步操作 |
Promise.all | 平行獨立操作 |
Promise.allSettled | 平行但部分可失敗 |
Promise.race | 逾時或第一個回應優先 |
I/O 密集型(async 有幫助):
├── 資料庫查詢
├── HTTP 請求
├── 檔案系統
└── 網路操作
CPU 密集型(async 沒幫助):
├── 加密操作
├── 圖片處理
├── 複雜計算
└── → 使用 worker threads 或卸載
在哪裡驗證:
├── API 入口點(請求 body/params)
├── 資料庫操作前
├── 外部資料(API 回應、檔案上傳)
└── 環境變數(啟動時)
| 函式庫 | 最適合 |
|---|---|
| Zod | TypeScript 優先、型別推斷 |
| Valibot | 更小的打包(可 tree-shake) |
| ArkType | 效能關鍵 |
| Yup | 現有 React Form 使用 |
不信任任何東西:
├── 查詢參數 → 驗證
├── 請求 body → 驗證
├── 標頭 → 驗證
├── Cookie → 驗證
├── 檔案上傳 → 掃描
└── 外部 API → 驗證回應
| 類型 | 用途 | 工具 |
|---|---|---|
| 單元 | 業務邏輯 | node:test、Vitest |
| 整合 | API 端點 | Supertest |
| E2E | 完整流程 | Playwright |
node --test src/**/*.test.ts
├── 無外部依賴
├── 好的覆蓋率報告
└── 監看模式可用
實作前:
記住:Node.js 最佳實踐是關於決策,而非記憶模式。每個專案都值得根據其需求進行全新考量。