en un clic
nodejs-best-practices
Node.js 開發原則與決策。框架選擇、非同步模式、安全性與架構。教你思考而非複製。
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
Node.js 開發原則與決策。框架選擇、非同步模式、安全性與架構。教你思考而非複製。
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
使用 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 最佳實踐是關於決策,而非記憶模式。每個專案都值得根據其需求進行全新考量。