Skip to content
cccskills
FreePublished on GitHub

workers-best-practices

Cloudflare Workersのコードを本番運用品質のベストプラクティスに照らして作成・レビューする。

新しいWorkerの実装、Workerコードのレビュー、wrangler.jsoncの設定、streaming・floating promises・global state・secrets・bindings・observabilityなどのanti-pattern確認で使用する。

事前学習の記憶よりCloudflare公式ドキュメントからの取得を優先する。

The English summary is being prepared. Showing the original description.

Works withCloudflare
See how to install

Files included (3)

  • SKILL.md8.0 KB
  • references/review.md8.0 KB
  • references/rules.md16.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

本ファイルは cloudflare/skills(Apache-2.0)を基に改変しています。詳細は リポジトリルートの ATTRIBUTION.md を参照。

Cloudflare Workers ベストプラクティス

Cloudflare WorkersのAPI、型、設定は更新される可能性がある。Workersコードの作成・レビューでは、事前学習の記憶ではなく最新資料の取得を優先する。

最新情報の取得先

Workersコードを書く・レビューする前に最新版を取得する。API signature、設定field、binding形状を、このSkillに埋め込まれた知識だけで決めない。正本は cloudflare Skill の「最新情報の取得先」(docs MCP 第一手段、不通時の復旧、workers-types / config-schema の取得方法)。ここには本Skill固有の取得先だけを書く。

取得先取得方法使う場面
Cloudflare docs (MCP)cloudflare-docs MCPで workers best practices / API名を検索既定の第一手段。rules、API reference、compatibility dates/flags
Workers best practices (Web)https://developers.cloudflare.com/workers/best-practices/workers-best-practices/MCP不通時。正式なrules、patterns、anti-patterns
Workers types の検証手順references/review.md取得した型でbinding access・handler signatureを照合する手順

最初に最新referenceを取得する

レビューや実装の前に、現在のbest practicesページと必要な型定義を取得する。プロジェクトのnode_modulesが古い場合は、公開済みの最新版を優先する。

# Fetch latest workers types
mkdir -p /tmp/workers-types-latest && \
  pnpm 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
# Types at /tmp/workers-types-latest/package/index.d.ts

補足reference

  • references/rules.md — code examplesとanti-patternsを含む全best practice rules
  • references/review.md — 型・設定・binding access patternの検証とreview process

Rules早見表

設定

Rule要点
Compatibility date新規projectはcompatibility_dateを当日に設定し、既存projectは定期更新する
nodejs_compat多くのlibraryがNode.js built-insへ依存するためnodejs_compat flagを有効化する
wrangler typeswrangler typesでEnvを生成し、binding interfaceを手書きしない
Secretswrangler secret putを使い、configやsourceへsecretをhardcodeしない
wrangler.jsonc非secret設定にはJSONC configを使う。新しい機能にはJSONのみ対応するものがある

RequestとResponse

Rule要点
Streaming大きさが不明または大容量のpayloadはstreamし、無制限のdataへawait response.text()しない
waitUntilresponse後の処理にはctx.waitUntil()を使い、ctxをdestructureしない

Architecture

Rule要点
Bindings over RESTKV、R2、D1、QueuesはCloudflare REST APIでなくin-process bindingを使う
Queues & Workflowsasync/background処理をcritical pathから分離する
Service bindingsWorker間呼び出しはpublic HTTPでなくservice bindingを使う
Hyperdrive外部PostgreSQL/MySQL接続には常にHyperdriveを使う

Observability

Rule要点
Logs & Tracesconfigでobservabilityとhead_sampling_rateを有効化し、structured JSON loggingを使う

Code patterns

Rule要点
No global request staterequest固有dataをmodule-level変数へ保存しない
Floating promises全Promiseをawait、return、void、またはctx.waitUntil()のいずれかで扱う

Security

Rule要点
Web Cryptosecurity用途にはcrypto.randomUUID() / crypto.getRandomValues()を使い、Math.random()を使わない
No passThroughOnException明示的なtry/catchとstructured error responseを使う

検出するanti-patterns

Anti-pattern問題になる理由
無制限のdataにawait response.text()128 MB制限に達するmemory exhaustion
source/configにsecretをhardcodeversion control経由のcredential漏えい
token/ID生成にMath.random()予測可能で暗号学的に安全でない
awaitもwaitUntilもない裸のfetch()floating promiseにより結果やerrorが失われる
request stateをmodule-level mutable変数へ保存request間data漏えい、stale state、I/O error
Worker内からCloudflare REST APIを呼ぶ不要なnetwork hop、認証負荷、latency増加
error handlingにctx.passThroughOnException()bugを隠し、debug不能にする
Env interfaceの手書き実際のwrangler config bindingとdriftする
secret値の直接文字列比較timing side-channel。crypto.subtle.timingSafeEqualを使う
ctxのdestructure(const { waitUntil } = ctx)this bindingが失われ、runtimeでIllegal invocation
any on Env or handler paramsbinding access全体のtype safetyを失う
as unknown as Tのdouble-cast実際の型不整合を隠す。designを修正する
platform base classへのimplementslegacy。this.ctx、this.envを失うためextendsを使う
platform base class内のenv.XDurableObject、WorkerEntrypoint等をextendsするclassではthis.env.Xを使う

レビュー手順

  1. Retrieve — 最新best practices、workers types、wrangler schemaを取得する
  2. Read full files — diffだけでなくfile全体を読み、binding accessの文脈を確認する
  3. Check types — binding access、handler signatures、any、unsafe castsを確認する(references/review.md参照)
  4. Check config — compatibility_date、nodejs_compat、observability、secrets、bindingとcodeの一致を確認する
  5. Check patterns — streaming、floating promises、global state、serialization boundariesを確認する
  6. Check security — crypto、secret handling、timing-safe comparison、error handlingを確認する
  7. Validate with tools — pnpm tsc --noEmitとno-floating-promises lintを実行する
  8. Reference rules — 各ruleの正しいpatternをreferences/rules.mdで確認する

対象範囲

このSkillはWorkers固有のbest practicesとcode reviewを扱う。関連領域は次を使う。

  • Durable Objects: durable-objects Skillをloadする
  • Workflows: Rules of Workflowsを参照する
  • Wrangler CLI commands: wrangler Skillをloadする

最終出力

レビュー結果は、重要度順に「対象file/line、観測した事実、該当rule、影響、最小の修正案、実行した検証」を日本語で報告する。問題がなければ、確認した範囲と未検証事項を明示する。

原則

  • 断定前に取得する。 API、config field、patternに確信がなければ、指摘前に公式資料を取得する。
  • 根拠を示す。 line number、tool output、docs linkを添える。
  • 開発者がコピーする箇所を優先する。 examplesやdocsのWorkers codeは本番へコピーされる。
  • 網羅性より正確性。 動く短いexampleは、errorを含む包括的なexampleよりよい。

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

アプリ・Webサービス・業務ツールの制作を、証拠分析→確定的な初稿→要件定義→体験設計→機能分解→実装→品質ゲート→リリース判定の手順ゲート制で進めるスキル。質問で要件を埋めるのではなく、依頼文・既存コード・資料・ログから最有力案を選び、動く成果物を先に出して差分で改善する。ユーザーが「アプリを作りたい」「ツールを作って」「〜を自動化したい」「システム化したい」「要件定義」「仕様を決めたい」「UI/UXを設計して」「体験を良くしたい」「機能を洗い出して」「MVPを決めたい」「品質チェック」「リリースしていいか判断して」などと言ったら必ず使用する。外部データの取込・マスタ・締め処理を伴う業務システムでは references/data-lifecycle.md も併用する。新規・既存を問わずアプリの制作・改善・リニューアルで使用する。

The English summary is being prepared. Showing the original description.

daishiman/harness-dev10Updated Oct 19, 2026

Webアプリの準備→要件定義→設計→実装→公開→品質ゲートを実行する内部オーケストレーター。Claude Codeの /build-app /improve-app、Codexの $build-app / $improve-app から明示的に委譲された場合、custom agent起動時、または利用者が $app-orchestrator を明示した場合だけ使用する。一般のアプリ相談から暗黙起動しない。

The English summary is being prepared. Showing the original description.

daishiman/harness-dev10Updated Oct 19, 2026

run-extract-blueprint が生成した章別ブループリントの忠実性を独立 context で評価したいとき、事実/推測区別と粒度と被覆を検証し draft_hash に束縛した PASS/FAIL verdict をローカル品質ゲート (C01 の周回内の受入判定・差し戻し) へ渡したいときに使う。

The English summary is being prepared. Showing the original description.

daishiman/harness-dev10Updated Oct 19, 2026

確認点で利用者が見る深さを選んだあと打ち合わせ資料を作り手とは別の目で確かめたいとき、正確さ・言葉・見た目・シンプルさの指摘を資料の編集なしで受け取りたいときに使う。

The English summary is being prepared. Showing the original description.

daishiman/harness-dev10Updated Oct 19, 2026

生成した handout 資料が初心者に伝わるか読みやすさレビューを依頼したいとき、独立 context のレビュアーから指摘と根拠つきの verdict を回収したいときに使う。

The English summary is being prepared. Showing the original description.

daishiman/harness-dev10Updated Oct 19, 2026

Notion ページを描画する直前に粒度を検証したいとき、info-collector-agent ページと同等の section 充足度を section_canonical_map 基準で機械検証したいときに使う。

The English summary is being prepared. Showing the original description.

daishiman/harness-dev10Updated Oct 19, 2026

See all skills by daishiman

Report a problem with this skill