workers-best-practices について
workers-best-practicesは、Cloudflare Workersのコードを書く人やレビューする人向けのスキルです。最新のドキュメント、型、設定スキーマを取得してからルールを適用し、根拠のある指摘を報告します。
主な機能
- 01最新のWorkersドキュメントと型の取得
- 02作成・レビュー規則の適用
- 03TypeScriptとPromise lintの確認
- 04根拠と重要度を添えた指摘
活用シーン
- 01最新のWorkers APIに沿ったコード作成
- 02Workerファイルのアンチパターン確認
- 03型、バインディング、設定の検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tejas-kale/ skills --skill workers-best-practicesインストール後、Claude Code で/workers-best-practicesを入力して読み込まれたか確認します。
同梱ファイルreferences/review.mdreferences/rules.md
詳細
Workers のベストプラクティス
Workers API、設定フィールド、バインディングの形状に関する組み込み知識は古くなっています。まず取得してください。断言する API シグネチャ、設定フィールド、バインディングの形状はすべて、このセッションで取得したソースに基づく必要があります。ソースを引用できない情報は報告しないでください。
1. 取得する
1 行も書いたりレビューしたりする前に取得してください。node_modules で固定されているバージョンより、最新の公開バージョンを優先してください。
# Latest workers types → /tmp/workers-types-latest/package/index.d.ts
mkdir -p /tmp/workers-types-latest && \
npm pack @cloudflare/workers-types --pack-destination /tmp/workers-types-latest && \
tar -xzf /tmp/workers-types-latest/cloudflare-workers-types-*.tgz -C /tmp/workers-types-latest
| ソース | 場所 | 用途 |
|---|---|---|
| ベストプラクティスのページ | https://developers.cloudflare.com/workers/best-practices/workers-best-practices/ | 標準的なルールとアンチパターン |
| Workers の型定義 | 上記の npm pack | API シグネチャ、ハンドラーの型、バインディングの型 |
| Wrangler の設定スキーマ | node_modules/wrangler/config-schema.json | 設定フィールド、バインディングの形状、許可される値 |
| Cloudflare のドキュメント | 検索、または https://developers.cloudflare.com/workers/ | API リファレンス、互換性の日付とフラグ |
型定義、設定スキーマ、ベストプラクティスのページがすべてコンテキストに揃ったら完了です。
2. ルールを適用する
references/rules.md は、設定、リクエスト処理、アーキテクチャ、可観測性、コードパターン、セキュリティ、テストなど、すべてのルールの唯一の信頼できる情報源です。それぞれに正しいパターンと、それに置き換わるアンチパターンが記載されています。これを読んでから、ルール一式に取り組んでください。
- 作成 — 該当するセクションのすべてのルールが、作成するコードで満たされていることを確認します。
- レビュー — バインディングへのアクセスやグローバル状態は文脈の中でのみ正しく読み取れるため、差分だけでなくファイル全体を読んでから、各ルールを照らし合わせます。
references/rules.md のすべてのルールを適用するか、該当しないと判断したら完了です。明らかなルールだけに合格した時点では完了ではありません。
3. 検証して報告する
npx tsc --noEmit を実行し、no-floating-promises の lint も実行してください。ツールで確認できるルールは目視ではなく、ツールで確認します。
レビューでは、references/review.md にレビュー固有の参照情報が記載されています。型と設定の検証、シリアライズの境界、説明用コードと実行可能コードの評価方法、リスクレベル、指摘事項の形式が含まれています。指摘事項をまとめる前に読んでください。
すべての指摘事項にファイル名と行番号、根拠の引用、重要度が記載されたら完了です。
指摘すべきアンチパターン
繰り返し見られるものを一覧にしています。それぞれの詳細は references/rules.md を参照してください。
| アンチパターン | 重要な理由 |
|---|---|
上限のないデータに対する await response.text() | メモリ枯渇 — 上限は 128 MB |
| ソースコードや設定にシークレットをハードコードする | バージョン管理を通じた認証情報の漏洩 |
トークンや ID に Math.random() を使う | 予測可能で、暗号学的に安全ではない |
await や waitUntil を使わない fetch() | 浮遊プロミス — 結果が破棄され、エラーが握りつぶされる |
| リクエスト状態にモジュールレベルの可変変数を使う | リクエスト間でのデータ漏洩、古い状態、I/O エラー |
| Worker 内から Cloudflare REST API を呼び出す | ネットワークホップ、認証処理、レイテンシーの増加 |
エラー処理に ctx.passThroughOnException() を使う | バグが隠れ、デバッグが不可能になる |
Env インターフェースを手書きする | 実際の wrangler 設定バインディングとのずれが生じる |
| シークレットを文字列で直接比較する | タイミングサイドチャネル — crypto.subtle.timingSafeEqual を使用する |
ctx を分割代入する(const { waitUntil } = ctx) | this のバインディングが失われ、実行時に「Illegal invocation」が発生する |
Env やハンドラーパラメーターに any を使う | すべてのバインディングアクセスで型安全性が失われる |
as unknown as T で二重キャストする | 実際の型の不整合が隠れる — 設計を修正する |
プラットフォームの基底クラスに implements を使う | レガシーな方法 — this.ctx と this.env が使えなくなる。DurableObject、WorkerEntrypoint、Workflow では extends を使う |
プラットフォームの基底クラス内で env.X を使う | this.env.X を使う必要がある |
対象範囲
Workers 自体が対象です。プラットフォーム全体(Durable Objects、Workflows、Wrangler コマンド、KV/D1/R2)については、cloudflare アンブレラ スキルを読み込んでください。そこにある references/ には、製品ごとのファイルが用意されています。