pi-cloudflare 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +67 -0
- package/bin/setup.mjs +103 -0
- package/dist/auth-flow.d.ts +15 -0
- package/dist/auth-flow.d.ts.map +1 -0
- package/dist/auth-flow.js +90 -0
- package/dist/auth-flow.js.map +1 -0
- package/dist/client.d.ts +18 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +47 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/oauth.d.ts +44 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +135 -0
- package/dist/oauth.js.map +1 -0
- package/dist/proxy.d.ts +29 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +39 -0
- package/dist/proxy.js.map +1 -0
- package/dist/servers.d.ts +19 -0
- package/dist/servers.d.ts.map +1 -0
- package/dist/servers.js +40 -0
- package/dist/servers.js.map +1 -0
- package/dist/token-store.d.ts +23 -0
- package/dist/token-store.d.ts.map +1 -0
- package/dist/token-store.js +47 -0
- package/dist/token-store.js.map +1 -0
- package/package.json +67 -0
- package/skills/agents-sdk/SKILL.md +221 -0
- package/skills/agents-sdk/references/browse-the-web.md +63 -0
- package/skills/agents-sdk/references/callable.md +92 -0
- package/skills/agents-sdk/references/client-sdk.md +110 -0
- package/skills/agents-sdk/references/codemode.md +110 -0
- package/skills/agents-sdk/references/configuration.md +72 -0
- package/skills/agents-sdk/references/durable-execution.md +51 -0
- package/skills/agents-sdk/references/email.md +146 -0
- package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
- package/skills/agents-sdk/references/mcp.md +188 -0
- package/skills/agents-sdk/references/observability.md +44 -0
- package/skills/agents-sdk/references/queue-retries.md +79 -0
- package/skills/agents-sdk/references/routing.md +75 -0
- package/skills/agents-sdk/references/server-driven-messages.md +63 -0
- package/skills/agents-sdk/references/state-scheduling.md +171 -0
- package/skills/agents-sdk/references/streaming-chat.md +198 -0
- package/skills/agents-sdk/references/think.md +112 -0
- package/skills/agents-sdk/references/voice.md +68 -0
- package/skills/agents-sdk/references/webhooks-push.md +86 -0
- package/skills/agents-sdk/references/workflows.md +132 -0
- package/skills/cloudflare/SKILL.md +248 -0
- package/skills/cloudflare/references/agents-sdk/README.md +89 -0
- package/skills/cloudflare/references/agents-sdk/api.md +190 -0
- package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
- package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
- package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
- package/skills/cloudflare/references/ai-gateway/README.md +175 -0
- package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
- package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
- package/skills/cloudflare/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
- package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
- package/skills/cloudflare/references/ai-search/README.md +138 -0
- package/skills/cloudflare/references/ai-search/api.md +87 -0
- package/skills/cloudflare/references/ai-search/configuration.md +88 -0
- package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
- package/skills/cloudflare/references/ai-search/patterns.md +85 -0
- package/skills/cloudflare/references/analytics-engine/README.md +94 -0
- package/skills/cloudflare/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
- package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
- package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
- package/skills/cloudflare/references/api/README.md +66 -0
- package/skills/cloudflare/references/api/api.md +204 -0
- package/skills/cloudflare/references/api/configuration.md +160 -0
- package/skills/cloudflare/references/api/gotchas.md +225 -0
- package/skills/cloudflare/references/api/patterns.md +204 -0
- package/skills/cloudflare/references/api-shield/README.md +44 -0
- package/skills/cloudflare/references/api-shield/api.md +141 -0
- package/skills/cloudflare/references/api-shield/configuration.md +192 -0
- package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
- package/skills/cloudflare/references/api-shield/patterns.md +180 -0
- package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
- package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
- package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
- package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
- package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
- package/skills/cloudflare/references/artifacts/README.md +79 -0
- package/skills/cloudflare/references/artifacts/api.md +128 -0
- package/skills/cloudflare/references/artifacts/configuration.md +92 -0
- package/skills/cloudflare/references/bindings/README.md +122 -0
- package/skills/cloudflare/references/bindings/api.md +203 -0
- package/skills/cloudflare/references/bindings/configuration.md +188 -0
- package/skills/cloudflare/references/bindings/gotchas.md +208 -0
- package/skills/cloudflare/references/bindings/patterns.md +200 -0
- package/skills/cloudflare/references/bot-management/README.md +94 -0
- package/skills/cloudflare/references/bot-management/api.md +169 -0
- package/skills/cloudflare/references/bot-management/configuration.md +163 -0
- package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
- package/skills/cloudflare/references/bot-management/patterns.md +182 -0
- package/skills/cloudflare/references/browser-rendering/README.md +78 -0
- package/skills/cloudflare/references/browser-rendering/api.md +108 -0
- package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
- package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
- package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
- package/skills/cloudflare/references/c3/README.md +111 -0
- package/skills/cloudflare/references/c3/api.md +71 -0
- package/skills/cloudflare/references/c3/configuration.md +81 -0
- package/skills/cloudflare/references/c3/gotchas.md +92 -0
- package/skills/cloudflare/references/c3/patterns.md +82 -0
- package/skills/cloudflare/references/cache-reserve/README.md +147 -0
- package/skills/cloudflare/references/cache-reserve/api.md +194 -0
- package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
- package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
- package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare/references/containers/README.md +85 -0
- package/skills/cloudflare/references/containers/api.md +187 -0
- package/skills/cloudflare/references/containers/configuration.md +188 -0
- package/skills/cloudflare/references/containers/gotchas.md +178 -0
- package/skills/cloudflare/references/containers/patterns.md +202 -0
- package/skills/cloudflare/references/cron-triggers/README.md +99 -0
- package/skills/cloudflare/references/cron-triggers/api.md +196 -0
- package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
- package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
- package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
- package/skills/cloudflare/references/d1/README.md +133 -0
- package/skills/cloudflare/references/d1/api.md +196 -0
- package/skills/cloudflare/references/d1/configuration.md +191 -0
- package/skills/cloudflare/references/d1/gotchas.md +98 -0
- package/skills/cloudflare/references/d1/patterns.md +189 -0
- package/skills/cloudflare/references/ddos/README.md +41 -0
- package/skills/cloudflare/references/ddos/api.md +164 -0
- package/skills/cloudflare/references/ddos/configuration.md +93 -0
- package/skills/cloudflare/references/ddos/gotchas.md +107 -0
- package/skills/cloudflare/references/ddos/patterns.md +174 -0
- package/skills/cloudflare/references/do-storage/README.md +75 -0
- package/skills/cloudflare/references/do-storage/api.md +102 -0
- package/skills/cloudflare/references/do-storage/configuration.md +112 -0
- package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
- package/skills/cloudflare/references/do-storage/patterns.md +194 -0
- package/skills/cloudflare/references/do-storage/testing.md +183 -0
- package/skills/cloudflare/references/durable-objects/README.md +185 -0
- package/skills/cloudflare/references/durable-objects/api.md +187 -0
- package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
- package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
- package/skills/cloudflare/references/email-routing/README.md +89 -0
- package/skills/cloudflare/references/email-routing/api.md +195 -0
- package/skills/cloudflare/references/email-routing/configuration.md +186 -0
- package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
- package/skills/cloudflare/references/email-routing/patterns.md +229 -0
- package/skills/cloudflare/references/email-workers/README.md +151 -0
- package/skills/cloudflare/references/email-workers/api.md +237 -0
- package/skills/cloudflare/references/email-workers/configuration.md +112 -0
- package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
- package/skills/cloudflare/references/email-workers/patterns.md +102 -0
- package/skills/cloudflare/references/flagship/README.md +59 -0
- package/skills/cloudflare/references/flagship/api.md +390 -0
- package/skills/cloudflare/references/flagship/configuration.md +202 -0
- package/skills/cloudflare/references/flagship/gotchas.md +178 -0
- package/skills/cloudflare/references/flagship/patterns.md +469 -0
- package/skills/cloudflare/references/graphql-api/README.md +147 -0
- package/skills/cloudflare/references/graphql-api/api.md +175 -0
- package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
- package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
- package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
- package/skills/cloudflare/references/hyperdrive/README.md +82 -0
- package/skills/cloudflare/references/hyperdrive/api.md +143 -0
- package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
- package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
- package/skills/cloudflare/references/images/README.md +61 -0
- package/skills/cloudflare/references/images/api.md +96 -0
- package/skills/cloudflare/references/images/configuration.md +211 -0
- package/skills/cloudflare/references/images/gotchas.md +99 -0
- package/skills/cloudflare/references/images/patterns.md +115 -0
- package/skills/cloudflare/references/kv/README.md +89 -0
- package/skills/cloudflare/references/kv/api.md +160 -0
- package/skills/cloudflare/references/kv/configuration.md +144 -0
- package/skills/cloudflare/references/kv/gotchas.md +131 -0
- package/skills/cloudflare/references/kv/patterns.md +196 -0
- package/skills/cloudflare/references/miniflare/README.md +105 -0
- package/skills/cloudflare/references/miniflare/api.md +187 -0
- package/skills/cloudflare/references/miniflare/configuration.md +173 -0
- package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
- package/skills/cloudflare/references/miniflare/patterns.md +181 -0
- package/skills/cloudflare/references/network-interconnect/README.md +99 -0
- package/skills/cloudflare/references/network-interconnect/api.md +199 -0
- package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
- package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
- package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
- package/skills/cloudflare/references/observability/README.md +88 -0
- package/skills/cloudflare/references/observability/api.md +164 -0
- package/skills/cloudflare/references/observability/configuration.md +169 -0
- package/skills/cloudflare/references/observability/gotchas.md +115 -0
- package/skills/cloudflare/references/observability/patterns.md +105 -0
- package/skills/cloudflare/references/pages/README.md +88 -0
- package/skills/cloudflare/references/pages/api.md +204 -0
- package/skills/cloudflare/references/pages/configuration.md +201 -0
- package/skills/cloudflare/references/pages/gotchas.md +203 -0
- package/skills/cloudflare/references/pages/patterns.md +204 -0
- package/skills/cloudflare/references/pages-functions/README.md +98 -0
- package/skills/cloudflare/references/pages-functions/api.md +143 -0
- package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
- package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
- package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
- package/skills/cloudflare/references/pipelines/README.md +90 -0
- package/skills/cloudflare/references/pipelines/api.md +124 -0
- package/skills/cloudflare/references/pipelines/configuration.md +155 -0
- package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
- package/skills/cloudflare/references/pipelines/patterns.md +130 -0
- package/skills/cloudflare/references/pulumi/README.md +100 -0
- package/skills/cloudflare/references/pulumi/api.md +200 -0
- package/skills/cloudflare/references/pulumi/configuration.md +198 -0
- package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
- package/skills/cloudflare/references/pulumi/patterns.md +191 -0
- package/skills/cloudflare/references/queues/README.md +96 -0
- package/skills/cloudflare/references/queues/api.md +206 -0
- package/skills/cloudflare/references/queues/configuration.md +144 -0
- package/skills/cloudflare/references/queues/gotchas.md +206 -0
- package/skills/cloudflare/references/queues/patterns.md +220 -0
- package/skills/cloudflare/references/r2/README.md +95 -0
- package/skills/cloudflare/references/r2/api.md +200 -0
- package/skills/cloudflare/references/r2/configuration.md +165 -0
- package/skills/cloudflare/references/r2/gotchas.md +190 -0
- package/skills/cloudflare/references/r2/patterns.md +193 -0
- package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
- package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
- package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
- package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
- package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
- package/skills/cloudflare/references/r2-sql/README.md +64 -0
- package/skills/cloudflare/references/r2-sql/api.md +121 -0
- package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
- package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
- package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
- package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
- package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
- package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
- package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
- package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
- package/skills/cloudflare/references/realtimekit/README.md +113 -0
- package/skills/cloudflare/references/realtimekit/api.md +212 -0
- package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
- package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
- package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
- package/skills/cloudflare/references/sandbox/README.md +96 -0
- package/skills/cloudflare/references/sandbox/api.md +198 -0
- package/skills/cloudflare/references/sandbox/configuration.md +143 -0
- package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
- package/skills/cloudflare/references/sandbox/patterns.md +201 -0
- package/skills/cloudflare/references/secrets-store/README.md +74 -0
- package/skills/cloudflare/references/secrets-store/api.md +200 -0
- package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
- package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
- package/skills/cloudflare/references/smart-placement/README.md +138 -0
- package/skills/cloudflare/references/smart-placement/api.md +183 -0
- package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
- package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
- package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
- package/skills/cloudflare/references/snippets/README.md +68 -0
- package/skills/cloudflare/references/snippets/api.md +198 -0
- package/skills/cloudflare/references/snippets/configuration.md +227 -0
- package/skills/cloudflare/references/snippets/gotchas.md +86 -0
- package/skills/cloudflare/references/snippets/patterns.md +135 -0
- package/skills/cloudflare/references/spectrum/README.md +52 -0
- package/skills/cloudflare/references/spectrum/api.md +181 -0
- package/skills/cloudflare/references/spectrum/configuration.md +194 -0
- package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
- package/skills/cloudflare/references/spectrum/patterns.md +196 -0
- package/skills/cloudflare/references/static-assets/README.md +65 -0
- package/skills/cloudflare/references/static-assets/api.md +199 -0
- package/skills/cloudflare/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
- package/skills/cloudflare/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare/references/stream/README.md +114 -0
- package/skills/cloudflare/references/stream/api-live.md +195 -0
- package/skills/cloudflare/references/stream/api.md +199 -0
- package/skills/cloudflare/references/stream/configuration.md +141 -0
- package/skills/cloudflare/references/stream/gotchas.md +130 -0
- package/skills/cloudflare/references/stream/patterns.md +184 -0
- package/skills/cloudflare/references/tail-workers/README.md +89 -0
- package/skills/cloudflare/references/tail-workers/api.md +200 -0
- package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
- package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
- package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
- package/skills/cloudflare/references/terraform/README.md +102 -0
- package/skills/cloudflare/references/terraform/api.md +178 -0
- package/skills/cloudflare/references/terraform/configuration.md +197 -0
- package/skills/cloudflare/references/terraform/gotchas.md +150 -0
- package/skills/cloudflare/references/terraform/patterns.md +174 -0
- package/skills/cloudflare/references/tunnel/README.md +129 -0
- package/skills/cloudflare/references/tunnel/api.md +193 -0
- package/skills/cloudflare/references/tunnel/configuration.md +157 -0
- package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
- package/skills/cloudflare/references/tunnel/networking.md +168 -0
- package/skills/cloudflare/references/tunnel/patterns.md +192 -0
- package/skills/cloudflare/references/turn/README.md +82 -0
- package/skills/cloudflare/references/turn/api.md +239 -0
- package/skills/cloudflare/references/turn/configuration.md +179 -0
- package/skills/cloudflare/references/turn/gotchas.md +231 -0
- package/skills/cloudflare/references/turn/patterns.md +213 -0
- package/skills/cloudflare/references/turnstile/README.md +99 -0
- package/skills/cloudflare/references/turnstile/api.md +240 -0
- package/skills/cloudflare/references/turnstile/configuration.md +222 -0
- package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
- package/skills/cloudflare/references/turnstile/patterns.md +193 -0
- package/skills/cloudflare/references/vectorize/README.md +133 -0
- package/skills/cloudflare/references/vectorize/api.md +88 -0
- package/skills/cloudflare/references/vectorize/configuration.md +88 -0
- package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
- package/skills/cloudflare/references/vectorize/patterns.md +90 -0
- package/skills/cloudflare/references/waf/README.md +113 -0
- package/skills/cloudflare/references/waf/api.md +202 -0
- package/skills/cloudflare/references/waf/configuration.md +203 -0
- package/skills/cloudflare/references/waf/gotchas.md +204 -0
- package/skills/cloudflare/references/waf/patterns.md +197 -0
- package/skills/cloudflare/references/web-analytics/README.md +141 -0
- package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
- package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
- package/skills/cloudflare/references/web-analytics/integration.md +60 -0
- package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
- package/skills/cloudflare/references/workerd/README.md +78 -0
- package/skills/cloudflare/references/workerd/api.md +185 -0
- package/skills/cloudflare/references/workerd/configuration.md +183 -0
- package/skills/cloudflare/references/workerd/gotchas.md +139 -0
- package/skills/cloudflare/references/workerd/patterns.md +192 -0
- package/skills/cloudflare/references/workers/README.md +108 -0
- package/skills/cloudflare/references/workers/api.md +195 -0
- package/skills/cloudflare/references/workers/configuration.md +185 -0
- package/skills/cloudflare/references/workers/frameworks.md +197 -0
- package/skills/cloudflare/references/workers/gotchas.md +137 -0
- package/skills/cloudflare/references/workers/patterns.md +198 -0
- package/skills/cloudflare/references/workers-ai/README.md +197 -0
- package/skills/cloudflare/references/workers-ai/api.md +112 -0
- package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
- package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
- package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
- package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
- package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
- package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
- package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
- package/skills/cloudflare/references/workers-playground/README.md +127 -0
- package/skills/cloudflare/references/workers-playground/api.md +101 -0
- package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
- package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
- package/skills/cloudflare/references/workers-vpc/README.md +127 -0
- package/skills/cloudflare/references/workers-vpc/api.md +202 -0
- package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
- package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
- package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
- package/skills/cloudflare/references/workflows/README.md +77 -0
- package/skills/cloudflare/references/workflows/api.md +218 -0
- package/skills/cloudflare/references/workflows/configuration.md +152 -0
- package/skills/cloudflare/references/workflows/gotchas.md +90 -0
- package/skills/cloudflare/references/workflows/patterns.md +175 -0
- package/skills/cloudflare/references/wrangler/README.md +135 -0
- package/skills/cloudflare/references/wrangler/api.md +188 -0
- package/skills/cloudflare/references/wrangler/configuration.md +197 -0
- package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
- package/skills/cloudflare/references/wrangler/patterns.md +209 -0
- package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
- package/skills/cloudflare/references/zaraz/README.md +111 -0
- package/skills/cloudflare/references/zaraz/api.md +112 -0
- package/skills/cloudflare/references/zaraz/configuration.md +90 -0
- package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
- package/skills/cloudflare/references/zaraz/patterns.md +74 -0
- package/skills/cloudflare-email-service/SKILL.md +103 -0
- package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
- package/skills/cloudflare-email-service/references/deliverability.md +285 -0
- package/skills/cloudflare-email-service/references/rest-api.md +184 -0
- package/skills/cloudflare-email-service/references/routing.md +199 -0
- package/skills/cloudflare-email-service/references/sending.md +252 -0
- package/skills/cloudflare-one/SKILL.md +176 -0
- package/skills/cloudflare-one-migrations/SKILL.md +110 -0
- package/skills/durable-objects/SKILL.md +186 -0
- package/skills/durable-objects/references/rules.md +295 -0
- package/skills/durable-objects/references/testing.md +264 -0
- package/skills/durable-objects/references/workers.md +346 -0
- package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
- package/skills/sandbox-next/SKILL.md +91 -0
- package/skills/sandbox-next/references/api-quick-ref.md +94 -0
- package/skills/sandbox-next/references/examples.md +15 -0
- package/skills/sandbox-stable/SKILL.md +110 -0
- package/skills/turnstile-spin/README.md +51 -0
- package/skills/turnstile-spin/SKILL.md +330 -0
- package/skills/turnstile-spin/references/astro.md +199 -0
- package/skills/turnstile-spin/references/hugo.md +114 -0
- package/skills/turnstile-spin/references/nextjs-app.md +261 -0
- package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
- package/skills/turnstile-spin/references/sveltekit.md +191 -0
- package/skills/turnstile-spin/references/vanilla-html.md +157 -0
- package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
- package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
- package/skills/turnstile-spin/scripts/validate.sh +137 -0
- package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
- package/skills/turnstile-spin/tests/validation.md +62 -0
- package/skills/workers-best-practices/SKILL.md +127 -0
- package/skills/workers-best-practices/references/review.md +174 -0
- package/skills/workers-best-practices/references/rules.md +467 -0
- package/skills/wrangler/SKILL.md +922 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Email Workers Configuration
|
|
2
|
+
|
|
3
|
+
## wrangler.jsonc
|
|
4
|
+
|
|
5
|
+
```jsonc
|
|
6
|
+
{
|
|
7
|
+
"name": "email-worker",
|
|
8
|
+
"main": "src/index.ts",
|
|
9
|
+
"compatibility_date": "2025-01-27",
|
|
10
|
+
"send_email": [
|
|
11
|
+
{ "name": "EMAIL" }, // Unrestricted
|
|
12
|
+
{ "name": "EMAIL_LOGS", "destination_address": "logs@example.com" }, // Single dest
|
|
13
|
+
{ "name": "EMAIL_TEAM", "allowed_destination_addresses": ["a@ex.com", "b@ex.com"] },
|
|
14
|
+
{ "name": "EMAIL_NOREPLY", "allowed_sender_addresses": ["noreply@ex.com"] }
|
|
15
|
+
],
|
|
16
|
+
"kv_namespaces": [{ "binding": "ARCHIVE", "id": "xxx" }],
|
|
17
|
+
"r2_buckets": [{ "binding": "ATTACHMENTS", "bucket_name": "email-attachments" }],
|
|
18
|
+
"vars": { "WEBHOOK_URL": "https://hooks.example.com" }
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## TypeScript Types
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
interface Env {
|
|
26
|
+
EMAIL: SendEmail;
|
|
27
|
+
ARCHIVE: KVNamespace;
|
|
28
|
+
ATTACHMENTS: R2Bucket;
|
|
29
|
+
WEBHOOK_URL: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export default {
|
|
33
|
+
async email(message: ForwardableEmailMessage, env: Env, ctx: ExecutionContext) {}
|
|
34
|
+
};
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Dependencies
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install postal-mime mimetext
|
|
41
|
+
npm install -D @cloudflare/workers-types wrangler typescript
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Use postal-mime v2.x, mimetext v3.x.
|
|
45
|
+
|
|
46
|
+
## tsconfig.json
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"compilerOptions": {
|
|
51
|
+
"target": "ES2022", "module": "ES2022", "lib": ["ES2022"],
|
|
52
|
+
"types": ["@cloudflare/workers-types"],
|
|
53
|
+
"moduleResolution": "bundler", "strict": true
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Local Development
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npx wrangler dev
|
|
62
|
+
|
|
63
|
+
# Test receiving
|
|
64
|
+
curl --request POST 'http://localhost:8787/cdn-cgi/handler/email' \
|
|
65
|
+
--url-query 'from=sender@example.com' --url-query 'to=recipient@example.com' \
|
|
66
|
+
--header 'Content-Type: text/plain' --data-raw 'Subject: Test\n\nHello'
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Sent emails write to local `.eml` files.
|
|
70
|
+
|
|
71
|
+
## Deployment Checklist
|
|
72
|
+
|
|
73
|
+
- [ ] Enable Email Routing in dashboard
|
|
74
|
+
- [ ] Verify destination addresses
|
|
75
|
+
- [ ] Configure DMARC/SPF/DKIM for sending
|
|
76
|
+
- [ ] Create KV/R2 resources if needed
|
|
77
|
+
- [ ] Update wrangler.jsonc with production IDs
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npx wrangler deploy
|
|
81
|
+
npx wrangler deployments list
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Dashboard Setup
|
|
85
|
+
|
|
86
|
+
1. **Email Routing:** Domain → Email → Enable Email Routing
|
|
87
|
+
2. **Verify addresses:** Email → Destination addresses → Add & verify
|
|
88
|
+
3. **Bind Worker:** Email → Email Workers → Create route → Select pattern & Worker
|
|
89
|
+
4. **DMARC:** Add TXT `_dmarc.domain.com`: `v=DMARC1; p=quarantine;`
|
|
90
|
+
|
|
91
|
+
## Secrets
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
npx wrangler secret put API_KEY
|
|
95
|
+
# Access: env.API_KEY
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Monitoring
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npx wrangler tail
|
|
102
|
+
npx wrangler tail --status error
|
|
103
|
+
npx wrangler tail --format json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Troubleshooting
|
|
107
|
+
|
|
108
|
+
| Error | Fix |
|
|
109
|
+
|-------|-----|
|
|
110
|
+
| "Binding not found" | Check `send_email` name matches code |
|
|
111
|
+
| "Invalid destination" | Verify in Email Routing dashboard |
|
|
112
|
+
| Type errors | Install `@cloudflare/workers-types` |
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Email Workers Gotchas
|
|
2
|
+
|
|
3
|
+
## Critical Issues
|
|
4
|
+
|
|
5
|
+
### ReadableStream Single-Use
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// ❌ WRONG: Stream consumed twice
|
|
9
|
+
const email = await PostalMime.parse(await new Response(message.raw).arrayBuffer());
|
|
10
|
+
const rawText = await new Response(message.raw).text(); // EMPTY!
|
|
11
|
+
|
|
12
|
+
// ✅ CORRECT: Buffer first
|
|
13
|
+
const buffer = await new Response(message.raw).arrayBuffer();
|
|
14
|
+
const email = await PostalMime.parse(buffer);
|
|
15
|
+
const rawText = new TextDecoder().decode(buffer);
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### ctx.waitUntil() Errors Silent
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
// ❌ Errors dropped silently
|
|
22
|
+
ctx.waitUntil(fetch(webhookUrl, { method: 'POST', body: data }));
|
|
23
|
+
|
|
24
|
+
// ✅ Catch and log
|
|
25
|
+
ctx.waitUntil(
|
|
26
|
+
fetch(webhookUrl, { method: 'POST', body: data })
|
|
27
|
+
.catch(err => env.ERROR_LOG.put(`error:${Date.now()}`, err.message))
|
|
28
|
+
);
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Security
|
|
32
|
+
|
|
33
|
+
### Envelope vs Header From (Spoofing)
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
const envelopeFrom = message.from; // SMTP MAIL FROM (trusted)
|
|
37
|
+
const headerFrom = (await PostalMime.parse(buffer)).from?.address; // (untrusted)
|
|
38
|
+
// Use envelope for security decisions
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Input Validation
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
if (message.rawSize > 5_000_000) { message.setReject('Too large'); return; }
|
|
45
|
+
if ((message.headers.get('Subject') || '').length > 1000) {
|
|
46
|
+
message.setReject('Invalid subject'); return;
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### DMARC for Replies
|
|
51
|
+
|
|
52
|
+
Replies fail silently without DMARC. Verify: `dig TXT _dmarc.example.com`
|
|
53
|
+
|
|
54
|
+
## Parsing
|
|
55
|
+
|
|
56
|
+
### Address Parsing
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
const email = await PostalMime.parse(buffer);
|
|
60
|
+
const fromAddress = email.from?.address || 'unknown';
|
|
61
|
+
const toAddresses = Array.isArray(email.to) ? email.to.map(t => t.address) : [email.to?.address];
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Character Encoding
|
|
65
|
+
|
|
66
|
+
Let postal-mime handle decoding - `email.subject`, `email.text`, `email.html` are UTF-8.
|
|
67
|
+
|
|
68
|
+
## API Behavior
|
|
69
|
+
|
|
70
|
+
### setReject() vs throw
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// setReject() for SMTP rejection
|
|
74
|
+
if (blockList.includes(message.from)) { message.setReject('Blocked'); return; }
|
|
75
|
+
|
|
76
|
+
// throw for worker errors
|
|
77
|
+
if (!env.KV) throw new Error('KV not configured');
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### forward() Only X-* Headers
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
headers.set('X-Processed-By', 'worker'); // ✅ Works
|
|
84
|
+
headers.set('Subject', 'Modified'); // ❌ Dropped
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Reply Requires Verified Domain
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// Use same domain as receiving address
|
|
91
|
+
const receivingDomain = message.to.split('@')[1];
|
|
92
|
+
await message.reply(new EmailMessage(`noreply@${receivingDomain}`, message.from, rawMime));
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Performance
|
|
96
|
+
|
|
97
|
+
### CPU Limit
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// Skip parsing large emails
|
|
101
|
+
if (message.rawSize > 5_000_000) {
|
|
102
|
+
await message.forward('inbox@example.com');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Monitor: `npx wrangler tail`
|
|
108
|
+
|
|
109
|
+
## Limits
|
|
110
|
+
|
|
111
|
+
| Limit | Value |
|
|
112
|
+
|-------|-------|
|
|
113
|
+
| Max message size | 25 MiB |
|
|
114
|
+
| Max rules/zone | 200 |
|
|
115
|
+
| CPU time (free/paid) | 10ms / 30s default, 5min max |
|
|
116
|
+
| Reply References | 100 |
|
|
117
|
+
|
|
118
|
+
## Common Errors
|
|
119
|
+
|
|
120
|
+
| Error | Fix |
|
|
121
|
+
|-------|-----|
|
|
122
|
+
| "Address not verified" | Add in Email Routing dashboard |
|
|
123
|
+
| "Exceeded CPU time" | Use `ctx.waitUntil()` or upgrade |
|
|
124
|
+
| "Stream is locked" | Buffer `message.raw` first |
|
|
125
|
+
| Silent reply failure | Check DMARC records |
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Email Workers Patterns
|
|
2
|
+
|
|
3
|
+
## Parse Email
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
import PostalMime from 'postal-mime';
|
|
7
|
+
|
|
8
|
+
export default {
|
|
9
|
+
async email(message, env, ctx) {
|
|
10
|
+
const buffer = await new Response(message.raw).arrayBuffer();
|
|
11
|
+
const email = await PostalMime.parse(buffer);
|
|
12
|
+
console.log(email.from, email.subject, email.text, email.attachments.length);
|
|
13
|
+
await message.forward('inbox@example.com');
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Filtering
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
// Allowlist from KV
|
|
22
|
+
const allowList = await env.ALLOWED_SENDERS.get('list', 'json') || [];
|
|
23
|
+
if (!allowList.includes(message.from)) {
|
|
24
|
+
message.setReject('Not allowed');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Size check (avoid parsing large emails)
|
|
29
|
+
if (message.rawSize > 5_000_000) {
|
|
30
|
+
await message.forward('inbox@example.com'); // Forward without parsing
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Auto-Reply with Threading
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { EmailMessage } from 'cloudflare:email';
|
|
39
|
+
import { createMimeMessage } from 'mimetext';
|
|
40
|
+
|
|
41
|
+
const msg = createMimeMessage();
|
|
42
|
+
msg.setSender({ addr: 'support@example.com' });
|
|
43
|
+
msg.setRecipient(message.from);
|
|
44
|
+
msg.setSubject(`Re: ${message.headers.get('Subject')}`);
|
|
45
|
+
msg.setHeader('In-Reply-To', message.headers.get('Message-ID') || '');
|
|
46
|
+
msg.addMessage({ contentType: 'text/plain', data: 'Thank you. We will respond.' });
|
|
47
|
+
|
|
48
|
+
await message.reply(new EmailMessage('support@example.com', message.from, msg.asRaw()));
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Rate-Limited Auto-Reply
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
const rateKey = `rate:${message.from}`;
|
|
55
|
+
if (!await env.RATE_LIMIT.get(rateKey)) {
|
|
56
|
+
// Send reply...
|
|
57
|
+
ctx.waitUntil(env.RATE_LIMIT.put(rateKey, '1', { expirationTtl: 3600 }));
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Subject-Based Routing
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
const subject = (message.headers.get('Subject') || '').toLowerCase();
|
|
65
|
+
if (subject.includes('billing')) await message.forward('billing@example.com');
|
|
66
|
+
else if (subject.includes('support')) await message.forward('support@example.com');
|
|
67
|
+
else await message.forward('general@example.com');
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Multi-Tenant Routing
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// support+tenant123@example.com → tenant123
|
|
74
|
+
const tenantId = message.to.split('@')[0].match(/\+(.+)$/)?.[1] || 'default';
|
|
75
|
+
const config = await env.TENANT_CONFIG.get(tenantId, 'json');
|
|
76
|
+
config?.forwardTo ? await message.forward(config.forwardTo) : message.setReject('Unknown');
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Archive & Extract Attachments
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
// Archive to KV
|
|
83
|
+
ctx.waitUntil(env.ARCHIVE.put(`email:${Date.now()}`, JSON.stringify({
|
|
84
|
+
from: message.from, subject: email.subject
|
|
85
|
+
})));
|
|
86
|
+
|
|
87
|
+
// Attachments to R2
|
|
88
|
+
for (const att of email.attachments) {
|
|
89
|
+
ctx.waitUntil(env.R2.put(`${Date.now()}-${att.filename}`, att.content));
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Webhook Integration
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
ctx.waitUntil(
|
|
97
|
+
fetch(env.WEBHOOK_URL, {
|
|
98
|
+
method: 'POST',
|
|
99
|
+
body: JSON.stringify({ from: message.from, subject: message.headers.get('Subject') })
|
|
100
|
+
}).catch(err => console.error(err))
|
|
101
|
+
);
|
|
102
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Cloudflare Flagship
|
|
2
|
+
|
|
3
|
+
Feature flag service for controlling feature visibility without redeploying code. Define flags with targeting rules and percentage-based rollouts, then evaluate them in Workers via a native binding or from any JavaScript runtime via the OpenFeature SDK.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
| Need | Use Flagship? | Alternative |
|
|
8
|
+
|------|--------------|-------------|
|
|
9
|
+
| Feature toggles (on/off) | Yes | — |
|
|
10
|
+
| Gradual rollouts (percentage-based) | Yes | — |
|
|
11
|
+
| A/B testing with attribute targeting | Yes | — |
|
|
12
|
+
| Multi-variant configuration delivery | Yes | — |
|
|
13
|
+
| Environment-specific config (dev/staging/prod) | Consider | Wrangler environments, secrets |
|
|
14
|
+
| Static config that never changes | No | `wrangler.jsonc` vars |
|
|
15
|
+
| Per-request rate limiting | No | Rate Limiting rules |
|
|
16
|
+
|
|
17
|
+
## Key Concepts
|
|
18
|
+
|
|
19
|
+
- **Apps** — Top-level organizational unit. Maps to a project or service. Each account can have multiple apps.
|
|
20
|
+
- **Flags** — Named feature toggles with a key, variations, targeting rules, and enabled/disabled state.
|
|
21
|
+
- **Variations** — Possible values a flag returns. Types: boolean, string, number, JSON object. All variations on a flag must share the same type.
|
|
22
|
+
- **Targeting rules** — Sequential, priority-ordered conditions that determine which variation to serve. First match wins; no match returns the default.
|
|
23
|
+
- **Evaluation context** — Key-value attributes (`userId`, `country`, `plan`, etc.) passed at evaluation time for rule matching and rollout bucketing.
|
|
24
|
+
- **Percentage rollouts** — Gradually release to a fraction of users. Consistent hashing on a configurable attribute ensures sticky bucketing.
|
|
25
|
+
|
|
26
|
+
## Two Evaluation Paths
|
|
27
|
+
|
|
28
|
+
| Path | Runtime | Package | Latency | Auth |
|
|
29
|
+
|------|---------|---------|---------|------|
|
|
30
|
+
| **Binding** (`env.FLAGS`) | Workers only | `@cloudflare/workers-types` | Lowest (no HTTP) | Automatic via binding |
|
|
31
|
+
| **OpenFeature SDK** | Workers, Node.js, browser | `@cloudflare/flagship` + `@openfeature/server-sdk` or `@openfeature/web-sdk` | HTTP per eval (server) or prefetch (client) | API token or binding passthrough |
|
|
32
|
+
|
|
33
|
+
**Recommendation:** Use the binding inside Workers. Use the SDK when running outside Workers or when you need OpenFeature vendor-neutrality.
|
|
34
|
+
|
|
35
|
+
## Reading Order
|
|
36
|
+
|
|
37
|
+
| Task | Read |
|
|
38
|
+
|------|------|
|
|
39
|
+
| Set up Flagship in a Worker | `configuration.md` → `api.md` |
|
|
40
|
+
| Evaluate flags in code | `configuration.md` → `patterns.md` |
|
|
41
|
+
| Manage flags via REST API | `api.md` → `patterns.md` |
|
|
42
|
+
| Design targeting rules & rollouts | `patterns.md` → `gotchas.md` |
|
|
43
|
+
| Debug flag evaluation issues | `gotchas.md` → `api.md` |
|
|
44
|
+
|
|
45
|
+
REST API note: management endpoints use Cloudflare v4 envelopes (`result`, `result_info`, `errors`) and snake_case fields. The `/evaluate` endpoint is the exception: it is not enveloped and returns OpenFeature-style camelCase.
|
|
46
|
+
|
|
47
|
+
## In This Reference
|
|
48
|
+
|
|
49
|
+
- **[api.md](./api.md)** — REST API endpoints, binding methods, OpenFeature SDK, schemas
|
|
50
|
+
- **[configuration.md](./configuration.md)** — Wrangler binding setup, SDK installation, TypeScript types
|
|
51
|
+
- **[patterns.md](./patterns.md)** — Flag CRUD via API, targeting rules, rollouts, OpenFeature usage
|
|
52
|
+
- **[gotchas.md](./gotchas.md)** — Common errors, limits, anti-patterns, troubleshooting
|
|
53
|
+
|
|
54
|
+
## See Also
|
|
55
|
+
|
|
56
|
+
- **[Flagship API reference](https://developers.cloudflare.com/api/resources/flagship/)** — Source of truth for REST API paths, envelopes, and response fields
|
|
57
|
+
- **[../workers/](../workers/)** — Workers runtime (Flagship runs inside Workers)
|
|
58
|
+
- **[../kv/](../kv/)** — KV storage (Flagship uses KV infrastructure for flag delivery)
|
|
59
|
+
- **[../wrangler/](../wrangler/)** — Wrangler CLI for deployment and config
|