アプリ・Webサービス・業務ツールの制作を、証拠分析→確定的な初稿→要件定義→体験設計→機能分解→実装→品質ゲート→リリース判定の手順ゲート制で進めるスキル。質問で要件を埋めるのではなく、依頼文・既存コード・資料・ログから最有力案を選び、動く成果物を先に出して差分で改善する。ユーザーが「アプリを作りたい」「ツールを作って」「〜を自動化したい」「システム化したい」「要件定義」「仕様を決めたい」「UI/UXを設計して」「体験を良くしたい」「機能を洗い出して」「MVPを決めたい」「品質チェック」「リリースしていいか判断して」などと言ったら必ず使用する。外部データの取込・マスタ・締め処理を伴う業務システムでは references/data-lifecycle.md も併用する。新規・既存を問わずアプリの制作・改善・リニューアルで使用する。
workers-best-practices
Cloudflare Workersのコードを本番運用品質のベストプラクティスに照らして作成・レビューする。新しいWorkerの実装、Workerコードのレビュー、wrangler.jsoncの設定、streaming・floating promises・global state・secrets・bindings・observabilityなどのanti-pattern確認で使用する。事前学習の記憶よりCloudflare公式ドキュメントからの取得を優先する。
インストール方法を見る含まれるファイル(3)
- SKILL.md8.0 KB
- references/review.md8.0 KB
- references/rules.md16.1 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
本ファイルは 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 rulesreferences/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 types | wrangler typesでEnvを生成し、binding interfaceを手書きしない |
| Secrets | wrangler secret putを使い、configやsourceへsecretをhardcodeしない |
| wrangler.jsonc | 非secret設定にはJSONC configを使う。新しい機能にはJSONのみ対応するものがある |
RequestとResponse
| Rule | 要点 |
|---|---|
| Streaming | 大きさが不明または大容量のpayloadはstreamし、無制限のdataへawait response.text()しない |
| waitUntil | response後の処理にはctx.waitUntil()を使い、ctxをdestructureしない |
Architecture
| Rule | 要点 |
|---|---|
| Bindings over REST | KV、R2、D1、QueuesはCloudflare REST APIでなくin-process bindingを使う |
| Queues & Workflows | async/background処理をcritical pathから分離する |
| Service bindings | Worker間呼び出しはpublic HTTPでなくservice bindingを使う |
| Hyperdrive | 外部PostgreSQL/MySQL接続には常にHyperdriveを使う |
Observability
| Rule | 要点 |
|---|---|
| Logs & Traces | configでobservabilityとhead_sampling_rateを有効化し、structured JSON loggingを使う |
Code patterns
| Rule | 要点 |
|---|---|
| No global request state | request固有dataをmodule-level変数へ保存しない |
| Floating promises | 全Promiseをawait、return、void、またはctx.waitUntil()のいずれかで扱う |
Security
| Rule | 要点 |
|---|---|
| Web Crypto | security用途には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をhardcode | version 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 params | binding access全体のtype safetyを失う |
as unknown as Tのdouble-cast | 実際の型不整合を隠す。designを修正する |
platform base classへのimplements | legacy。this.ctx、this.envを失うためextendsを使う |
platform base class内のenv.X | DurableObject、WorkerEntrypoint等をextendsするclassではthis.env.Xを使う |
レビュー手順
- Retrieve — 最新best practices、workers types、wrangler schemaを取得する
- Read full files — diffだけでなくfile全体を読み、binding accessの文脈を確認する
- Check types — binding access、handler signatures、
any、unsafe castsを確認する(references/review.md参照) - Check config —
compatibility_date、nodejs_compat、observability、secrets、bindingとcodeの一致を確認する - Check patterns — streaming、floating promises、global state、serialization boundariesを確認する
- Check security — crypto、secret handling、timing-safe comparison、error handlingを確認する
- Validate with tools —
pnpm tsc --noEmitとno-floating-promiseslintを実行する - Reference rules — 各ruleの正しいpatternを
references/rules.mdで確認する
対象範囲
このSkillはWorkers固有のbest practicesとcode reviewを扱う。関連領域は次を使う。
- Durable Objects:
durable-objectsSkillをloadする - Workflows: Rules of Workflowsを参照する
- Wrangler CLI commands:
wranglerSkillをloadする
最終出力
レビュー結果は、重要度順に「対象file/line、観測した事実、該当rule、影響、最小の修正案、実行した検証」を日本語で報告する。問題がなければ、確認した範囲と未検証事項を明示する。
原則
- 断定前に取得する。 API、config field、patternに確信がなければ、指摘前に公式資料を取得する。
- 根拠を示す。 line number、tool output、docs linkを添える。
- 開発者がコピーする箇所を優先する。 examplesやdocsのWorkers codeは本番へコピーされる。
- 網羅性より正確性。 動く短いexampleは、errorを含む包括的なexampleよりよい。
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
Webアプリの準備→要件定義→設計→実装→公開→品質ゲートを実行する内部オーケストレーター。Claude Codeの /build-app /improve-app、Codexの $build-app / $improve-app から明示的に委譲された場合、custom agent起動時、または利用者が $app-orchestrator を明示した場合だけ使用する。一般のアプリ相談から暗黙起動しない。
run-extract-blueprint が生成した章別ブループリントの忠実性を独立 context で評価したいとき、事実/推測区別と粒度と被覆を検証し draft_hash に束縛した PASS/FAIL verdict をローカル品質ゲート (C01 の周回内の受入判定・差し戻し) へ渡したいときに使う。
確認点で利用者が見る深さを選んだあと打ち合わせ資料を作り手とは別の目で確かめたいとき、正確さ・言葉・見た目・シンプルさの指摘を資料の編集なしで受け取りたいときに使う。
生成した handout 資料が初心者に伝わるか読みやすさレビューを依頼したいとき、独立 context のレビュアーから指摘と根拠つきの verdict を回収したいときに使う。
Notion ページを描画する直前に粒度を検証したいとき、info-collector-agent ページと同等の section 充足度を section_canonical_map 基準で機械検証したいときに使う。