opencodekit 0.15.3 → 0.15.5
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/dist/index.js +1 -1
- package/dist/template/.opencode/AGENTS.md +209 -77
- package/dist/template/.opencode/agent/plan.md +4 -0
- package/dist/template/.opencode/command/cloudflare.md +70 -0
- package/dist/template/.opencode/package.json +1 -1
- package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
- package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
- package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
- package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
- package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
- package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
- package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
- package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
- package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
- package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
- package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
- package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
- package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
- package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
- package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Gotchas & Troubleshooting
|
|
2
|
+
|
|
3
|
+
## Schema Blocking Valid Reqs
|
|
4
|
+
|
|
5
|
+
Firewall Events show violations? 1) Check details 2) Review schema (Settings) 3) Test Swagger Editor 4) Log mode 5) Update schema
|
|
6
|
+
|
|
7
|
+
Validated: date-time,time,date,email,hostname,ipv4/6,uri(-reference),iri(-reference),int32/64,float,double,password,uuid,byte,uint64
|
|
8
|
+
|
|
9
|
+
oneOf: Zero matches (missing discriminator), Multiple (ambiguous)
|
|
10
|
+
|
|
11
|
+
## JWT Failing
|
|
12
|
+
|
|
13
|
+
1) JWKS match IdP? 2) `exp` valid? 3) Header/cookie name? 4) Test jwt.io 5) Clock skew?
|
|
14
|
+
|
|
15
|
+
## Discovery Missing
|
|
16
|
+
|
|
17
|
+
Needs 500+ reqs/10d, 2xx from edge, not Workers direct. Check threshold, codes, session ID config. ML updates daily. Path norm: `/profile/238` → `/profile/{var1}`
|
|
18
|
+
|
|
19
|
+
## Sequence False Positives
|
|
20
|
+
|
|
21
|
+
Lookback: 10 reqs to managed endpoints, 10min (contact for adjust). Check session ID uniqueness, neg vs pos model
|
|
22
|
+
|
|
23
|
+
## Perf
|
|
24
|
+
|
|
25
|
+
Schema: ~1-2ms, JWT: ~0.5-1ms, mTLS: ~2-5ms, Sequence: ~0.5ms
|
|
26
|
+
|
|
27
|
+
## Best Practices
|
|
28
|
+
|
|
29
|
+
1. Discovery first (map before enforce)
|
|
30
|
+
2. Progressive: Log → Block critical → Full
|
|
31
|
+
3. Session IDs unique per user
|
|
32
|
+
4. Validate schema (Swagger Editor)
|
|
33
|
+
5. Automate JWKS rotation (Worker cron)
|
|
34
|
+
6. Fallthrough rules (zombie APIs)
|
|
35
|
+
7. Logpush + alerts
|
|
36
|
+
8. Rate limit w/JWT claims
|
|
37
|
+
9. Layer Bot Management
|
|
38
|
+
10. Test staging
|
|
39
|
+
|
|
40
|
+
## Limits
|
|
41
|
+
|
|
42
|
+
Schema: OpenAPI v3.0.x only, no ext refs/non-basic paths, 10K ops, need `type`+`schema`, default `style`/`explode`, no `content` in params, no obj param validation, no `anyOf` in params
|
|
43
|
+
JWT: Headers/cookies only, validates managed endpoints only
|
|
44
|
+
Sequence (Beta): Needs endpoints+session ID, contact team
|
|
45
|
+
|
|
46
|
+
## Errors
|
|
47
|
+
|
|
48
|
+
"Token invalid": Config wrong, JWKS mismatch, expired
|
|
49
|
+
"Schema violation": Missing fields, wrong types, spec mismatch
|
|
50
|
+
"Fallthrough": Unknown endpoint, pattern mismatch
|
|
51
|
+
"mTLS failed": Cert untrusted/expired, wrong CA
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Patterns & Use Cases
|
|
2
|
+
|
|
3
|
+
## Protect API with Schema + JWT
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# 1. Upload OpenAPI schema
|
|
7
|
+
POST /zones/{zone_id}/api_gateway/user_schemas
|
|
8
|
+
|
|
9
|
+
# 2. Configure JWT validation
|
|
10
|
+
POST /zones/{zone_id}/api_gateway/token_validation
|
|
11
|
+
{
|
|
12
|
+
"name": "Auth0",
|
|
13
|
+
"location": {"header": "Authorization"},
|
|
14
|
+
"jwks": "{...}"
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
# 3. Create JWT rule
|
|
18
|
+
POST /zones/{zone_id}/api_gateway/jwt_validation_rules
|
|
19
|
+
|
|
20
|
+
# 4. Set schema validation action
|
|
21
|
+
PUT /zones/{zone_id}/api_gateway/settings/schema_validation
|
|
22
|
+
{"validation_default_mitigation_action": "block"}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Progressive Rollout
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
1. Log mode: Observe false positives
|
|
29
|
+
- Schema: Action = Log
|
|
30
|
+
- JWT: Action = Log
|
|
31
|
+
|
|
32
|
+
2. Block subset: Protect critical endpoints
|
|
33
|
+
- Change specific endpoint actions to Block
|
|
34
|
+
- Monitor firewall events
|
|
35
|
+
|
|
36
|
+
3. Full enforcement: Block all violations
|
|
37
|
+
- Change default action to Block
|
|
38
|
+
- Handle fallthrough with custom rule
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Fallthrough Detection (Zombie APIs)
|
|
42
|
+
|
|
43
|
+
```javascript
|
|
44
|
+
// WAF Custom Rule
|
|
45
|
+
(cf.api_gateway.fallthrough_triggered and http.host eq "api.example.com")
|
|
46
|
+
// Action: Log (discover unknown) or Block (strict)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Rate Limiting by User
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
// Rate Limiting Rule
|
|
53
|
+
(http.host eq "api.example.com" and
|
|
54
|
+
lookup_json_string(http.request.jwt.claims["{config_id}"][0], "sub") ne "")
|
|
55
|
+
|
|
56
|
+
// Rate: 100 req/60s
|
|
57
|
+
// Counting: lookup_json_string(http.request.jwt.claims["{config_id}"][0], "sub")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Architecture Patterns
|
|
61
|
+
|
|
62
|
+
### Public API (High Security)
|
|
63
|
+
```
|
|
64
|
+
Cloudflare Edge
|
|
65
|
+
├── API Discovery (identify endpoints)
|
|
66
|
+
├── Schema Validation (enforce OpenAPI)
|
|
67
|
+
├── JWT Validation (verify tokens)
|
|
68
|
+
├── Rate Limiting (per-user)
|
|
69
|
+
├── Bot Management (filter abuse)
|
|
70
|
+
└── Origin → API server
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Partner API (mTLS + Schema)
|
|
74
|
+
```
|
|
75
|
+
Cloudflare Edge
|
|
76
|
+
├── mTLS (verify client certs)
|
|
77
|
+
├── Schema Validation (validate payloads)
|
|
78
|
+
├── Sequence Mitigation (enforce order)
|
|
79
|
+
└── Origin → API server
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Internal API (Discovery + Monitoring)
|
|
83
|
+
```
|
|
84
|
+
Cloudflare Edge
|
|
85
|
+
├── API Discovery (map shadow APIs)
|
|
86
|
+
├── Schema Learning (auto-generate specs)
|
|
87
|
+
├── Authentication Posture (audit coverage)
|
|
88
|
+
└── Origin → API server
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## OWASP API Security Top 10 Mapping
|
|
92
|
+
|
|
93
|
+
| OWASP Issue | API Shield Solutions |
|
|
94
|
+
|-------------|---------------------|
|
|
95
|
+
| Broken Object Level Authorization | BOLA detection, Sequence mitigation, Schema, JWT, Rate Limiting |
|
|
96
|
+
| Broken Authentication | Auth Posture, mTLS, JWT, Credential Checks, Bot Management |
|
|
97
|
+
| Broken Object Property Auth | Schema validation, JWT validation |
|
|
98
|
+
| Unrestricted Resource | Rate Limiting, Sequence, Bot Management, GraphQL protection |
|
|
99
|
+
| Broken Function Level Auth | Schema validation, JWT validation |
|
|
100
|
+
| Unrestricted Business Flows | Sequence mitigation, Bot Management, GraphQL |
|
|
101
|
+
| SSRF | Schema, WAF managed rules, WAF custom |
|
|
102
|
+
| Security Misconfiguration | Sequence, Schema, WAF managed, GraphQL |
|
|
103
|
+
| Improper Inventory | Discovery, Schema learning |
|
|
104
|
+
| Unsafe API Consumption | JWT validation, WAF managed |
|
|
105
|
+
|
|
106
|
+
## Monitoring
|
|
107
|
+
|
|
108
|
+
**Security Events:**
|
|
109
|
+
```
|
|
110
|
+
Security > Events
|
|
111
|
+
Filter: Action = block, Service = API Shield
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Firewall Analytics:**
|
|
115
|
+
```
|
|
116
|
+
Analytics > Security
|
|
117
|
+
Filter by cf.api_gateway.* fields
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Logpush fields:**
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"APIGatewayAuthIDPresent": true,
|
|
124
|
+
"APIGatewayRequestViolatesSchema": false,
|
|
125
|
+
"APIGatewayFallthroughDetected": false,
|
|
126
|
+
"JWTValidationResult": "valid",
|
|
127
|
+
"ClientCertFingerprint": "abc123..."
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Availability
|
|
132
|
+
|
|
133
|
+
| Feature | Availability |
|
|
134
|
+
|---------|-------------|
|
|
135
|
+
| mTLS (CF-managed CA) | All plans |
|
|
136
|
+
| Endpoint Management | All plans (limited ops) |
|
|
137
|
+
| Schema Validation | All plans (limited ops) |
|
|
138
|
+
| API Discovery | Enterprise only |
|
|
139
|
+
| JWT Validation | Enterprise (add-on) |
|
|
140
|
+
| Sequence Mitigation | Enterprise (closed beta) |
|
|
141
|
+
| BOLA Detection | Enterprise (add-on) |
|
|
142
|
+
| Volumetric Abuse | Enterprise (add-on) |
|
|
143
|
+
| Full Suite | Enterprise add-on |
|
|
144
|
+
|
|
145
|
+
Enterprise: 10K ops (contact for higher), non-contract preview available.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Cloudflare Argo Smart Routing Skill Reference
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Cloudflare Argo Smart Routing is a performance optimization service that detects real-time network issues and routes web traffic across the most efficient network path. This skill provides comprehensive guidance for implementing, configuring, and managing Argo Smart Routing via API, CLI...
|
|
6
|
+
|
|
7
|
+
## In This Reference
|
|
8
|
+
|
|
9
|
+
- **[configuration.md](./configuration.md)** - Setup, deployment, configuration
|
|
10
|
+
- **[api.md](./api.md)** - API endpoints, methods, interfaces
|
|
11
|
+
- **[patterns.md](./patterns.md)** - Common patterns, use cases, examples
|
|
12
|
+
- **[gotchas.md](./gotchas.md)** - Troubleshooting, best practices, limitations
|
|
13
|
+
|
|
14
|
+
## See Also
|
|
15
|
+
|
|
16
|
+
- [Cloudflare Docs](https://developers.cloudflare.com/)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
## API Reference
|
|
2
|
+
|
|
3
|
+
### Base Endpoint
|
|
4
|
+
```
|
|
5
|
+
https://api.cloudflare.com/client/v4
|
|
6
|
+
```
|
|
7
|
+
|
|
8
|
+
### Authentication
|
|
9
|
+
Use API tokens with Zone:Argo Smart Routing:Edit permissions:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Headers required
|
|
13
|
+
X-Auth-Email: user@example.com
|
|
14
|
+
Authorization: Bearer YOUR_API_TOKEN
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Get Argo Smart Routing Status
|
|
18
|
+
|
|
19
|
+
**Endpoint:** `GET /zones/{zone_id}/argo/smart_routing`
|
|
20
|
+
|
|
21
|
+
**Description:** Retrieves current Argo Smart Routing enablement status.
|
|
22
|
+
|
|
23
|
+
**cURL Example:**
|
|
24
|
+
```bash
|
|
25
|
+
curl -X GET "https://api.cloudflare.com/client/v4/zones/{zone_id}/argo/smart_routing" \
|
|
26
|
+
-H "Authorization: Bearer YOUR_API_TOKEN" \
|
|
27
|
+
-H "Content-Type: application/json"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Response:**
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"result": {
|
|
34
|
+
"id": "smart_routing",
|
|
35
|
+
"value": "on",
|
|
36
|
+
"editable": true,
|
|
37
|
+
"modified_on": "2024-01-11T12:00:00Z"
|
|
38
|
+
},
|
|
39
|
+
"success": true,
|
|
40
|
+
"errors": [],
|
|
41
|
+
"messages": []
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**TypeScript SDK Example:**
|
|
46
|
+
```typescript
|
|
47
|
+
import Cloudflare from 'cloudflare';
|
|
48
|
+
|
|
49
|
+
const client = new Cloudflare({
|
|
50
|
+
apiToken: process.env.CLOUDFLARE_API_TOKE
|
package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
## Configuration Management
|
|
2
|
+
|
|
3
|
+
### Infrastructure as Code (Terraform)
|
|
4
|
+
|
|
5
|
+
```hcl
|
|
6
|
+
# terraform/argo.tf
|
|
7
|
+
# Note: Use Cloudflare Terraform provider
|
|
8
|
+
|
|
9
|
+
resource "cloudflare_argo" "example" {
|
|
10
|
+
zone_id = var.zone_id
|
|
11
|
+
smart_routing = "on"
|
|
12
|
+
tiered_caching = "on"
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
variable "zone_id" {
|
|
16
|
+
description = "Cloudflare Zone ID"
|
|
17
|
+
type = string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
output "argo_enabled" {
|
|
21
|
+
value = cloudflare_argo.example.smart_routing
|
|
22
|
+
description = "Argo Smart Routing status"
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Environment-Based Configuration
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
// config/argo.ts
|
|
30
|
+
interface ArgoEnvironmentConfig {
|
|
31
|
+
enabled: boolean;
|
|
32
|
+
tieredCache: boolean;
|
|
33
|
+
monitoring: {
|
|
34
|
+
usageAlerts: boolean;
|
|
35
|
+
threshold: number;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const configs: Record<string, ArgoEnvironmentConfig> = {
|
|
40
|
+
production: {
|
|
41
|
+
enabled: true,
|
|
42
|
+
tieredCache: true,
|
|
43
|
+
monitoring: {
|
|
44
|
+
usageAlerts: true,
|
|
45
|
+
threshold: 1000, // GB
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
staging: {
|
|
49
|
+
enabled: true,
|
|
50
|
+
tieredCache: false,
|
|
51
|
+
monitoring: {
|
|
52
|
+
usageAlerts: false,
|
|
53
|
+
th
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## Best Practices Summary
|
|
2
|
+
|
|
3
|
+
1. **Always check editability** before attempting to enable/disable Argo
|
|
4
|
+
2. **Set up billing notifications** to avoid unexpected costs
|
|
5
|
+
3. **Combine with Tiered Cache** for maximum performance benefit
|
|
6
|
+
4. **Use in production only** - disable for dev/staging to control costs
|
|
7
|
+
5. **Monitor analytics** - require 500+ requests in 48h for detailed metrics
|
|
8
|
+
6. **Handle errors gracefully** - check for billing, permissions, zone compatibility
|
|
9
|
+
7. **Test configuration changes** in staging before production
|
|
10
|
+
8. **Use TypeScript SDK** for type safety and better developer experience
|
|
11
|
+
9. **Implement retry logic** for API calls in production systems
|
|
12
|
+
10. **Document zone-specific settings** for team visibility
|
|
13
|
+
|
|
14
|
+
## Additional Resources
|
|
15
|
+
|
|
16
|
+
- [Official Argo Smart Routing Docs](https://devel
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
## Integration with Tiered Cache
|
|
2
|
+
|
|
3
|
+
Combine Argo Smart Routing with Tiered Cache for maximum performance:
|
|
4
|
+
|
|
5
|
+
**Endpoint:** `PATCH /zones/{zone_id}/argo/tiered_caching`
|
|
6
|
+
|
|
7
|
+
**Benefits:**
|
|
8
|
+
- Argo optimizes routing between edge and origin
|
|
9
|
+
- Tiered Cache reduces origin requests via cache hierarchy
|
|
10
|
+
- Combined: optimal network path + reduced origin load
|
|
11
|
+
|
|
12
|
+
**Enable Both Services:**
|
|
13
|
+
```typescript
|
|
14
|
+
async function enableArgoWithTieredCache(
|
|
15
|
+
client: Cloudflare,
|
|
16
|
+
zoneId: string
|
|
17
|
+
) {
|
|
18
|
+
// Enable Argo Smart Routing
|
|
19
|
+
await client.argo.smartRouting.edit({
|
|
20
|
+
zone_id: zoneId,
|
|
21
|
+
value: 'on',
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// Enable Tiered Caching
|
|
25
|
+
await client.argo.tieredCaching.edit({
|
|
26
|
+
zone_id: zoneId,
|
|
27
|
+
value: 'on',
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
console.log('Argo Smart Routing and Tiered Cache enabled');
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Architecture Flow:**
|
|
35
|
+
```
|
|
36
|
+
Visitor → Edge Data Center (Lower-Tier)
|
|
37
|
+
↓ [Cache Miss]
|
|
38
|
+
Upper-Tier Data Center
|
|
39
|
+
↓ [Cache Miss + Argo Smart Route]
|
|
40
|
+
Origin Server
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Usage-Based Billing Management
|
|
44
|
+
|
|
45
|
+
### S
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Cloudflare Bindings Skill Reference
|
|
2
|
+
|
|
3
|
+
Expert guidance on Cloudflare Workers Bindings - the runtime APIs that connect Workers to Cloudflare platform resources....
|
|
4
|
+
|
|
5
|
+
## In This Reference
|
|
6
|
+
|
|
7
|
+
- **[configuration.md](./configuration.md)** - Setup, deployment, configuration
|
|
8
|
+
- **[api.md](./api.md)** - API endpoints, methods, interfaces
|
|
9
|
+
- **[patterns.md](./patterns.md)** - Common patterns, use cases, examples
|
|
10
|
+
- **[gotchas.md](./gotchas.md)** - Troubleshooting, best practices, limitations
|
|
11
|
+
|
|
12
|
+
## See Also
|
|
13
|
+
|
|
14
|
+
- [Cloudflare Docs](https://developers.cloudflare.com/)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
## Wrangler Configuration Patterns
|
|
2
|
+
|
|
3
|
+
### JSON vs TOML
|
|
4
|
+
|
|
5
|
+
**JSON (Recommended for new projects):**
|
|
6
|
+
```jsonc
|
|
7
|
+
// wrangler.jsonc
|
|
8
|
+
{
|
|
9
|
+
"$schema": "./node_modules/wrangler/config-schema.json",
|
|
10
|
+
"name": "my-worker",
|
|
11
|
+
"main": "src/index.ts",
|
|
12
|
+
"compatibility_date": "2024-01-01",
|
|
13
|
+
"vars": {
|
|
14
|
+
"API_URL": "https://api.example.com"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**TOML (Legacy):**
|
|
20
|
+
```toml
|
|
21
|
+
# wrangler.toml
|
|
22
|
+
name = "my-worker"
|
|
23
|
+
main = "src/index.ts"
|
|
24
|
+
compatibility_date = "2024-01-01"
|
|
25
|
+
|
|
26
|
+
[vars]
|
|
27
|
+
API_URL = "https://api.example.com"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Environment-Specific Configuration
|
|
31
|
+
|
|
32
|
+
```jsonc
|
|
33
|
+
{
|
|
34
|
+
"name": "my-worker",
|
|
35
|
+
"main": "src/index.ts",
|
|
36
|
+
"compatibility_date": "2024-01-01",
|
|
37
|
+
|
|
38
|
+
// Production bindings
|
|
39
|
+
"vars": {
|
|
40
|
+
"ENV": "production"
|
|
41
|
+
},
|
|
42
|
+
"kv_namespaces": [
|
|
43
|
+
{
|
|
44
|
+
"binding": "CACHE",
|
|
45
|
+
"id": "prod-kv-id"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
|
|
49
|
+
// Environment overrides
|
|
50
|
+
"env": {
|
|
51
|
+
"staging": {
|
|
52
|
+
"vars": {
|
|
53
|
+
"ENV": "staging"
|
|
54
|
+
},
|
|
55
|
+
"kv_namespaces": [
|
|
56
|
+
{
|
|
57
|
+
"binding": "CACHE",
|
|
58
|
+
"id": "staging-kv-id
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
## Troubleshooting
|
|
2
|
+
|
|
3
|
+
### Binding Not Found
|
|
4
|
+
```
|
|
5
|
+
Error: env.MY_KV is undefined
|
|
6
|
+
```
|
|
7
|
+
**Solutions:**
|
|
8
|
+
1. Check binding name matches config
|
|
9
|
+
2. Run `npx wrangler types` to regenerate types
|
|
10
|
+
3. Verify binding exists in current environment
|
|
11
|
+
4. Check for typos in `wrangler.jsonc`
|
|
12
|
+
|
|
13
|
+
### Type Errors
|
|
14
|
+
```
|
|
15
|
+
Property 'MY_KV' does not exist on type 'Env'
|
|
16
|
+
```
|
|
17
|
+
**Solution:** Run `npx wrangler types`
|
|
18
|
+
|
|
19
|
+
### Preview Binding Required
|
|
20
|
+
```
|
|
21
|
+
Error: preview_id is required for --remote
|
|
22
|
+
```
|
|
23
|
+
**Solution:** Add preview_id to config or use local mode
|
|
24
|
+
|
|
25
|
+
### Stale Binding Values
|
|
26
|
+
```
|
|
27
|
+
Secret updated but Worker still uses old value
|
|
28
|
+
```
|
|
29
|
+
**Solution:** Avoid caching `env` values in global scope
|
|
30
|
+
|
|
31
|
+
## Security Best Practices
|
|
32
|
+
|
|
33
|
+
1. **Never commit secrets to config files**
|
|
34
|
+
- Use `npx wrangler secret put` for sensitive values
|
|
35
|
+
- Secrets are e
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
## Common Anti-Patterns
|
|
2
|
+
|
|
3
|
+
### ❌ Hardcoding Credentials
|
|
4
|
+
```typescript
|
|
5
|
+
// DON'T
|
|
6
|
+
const apiKey = 'sk_live_abc123';
|
|
7
|
+
```
|
|
8
|
+
**✅ Use secrets:**
|
|
9
|
+
```bash
|
|
10
|
+
npx wrangler secret put API_KEY
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### ❌ Using REST API from Worker
|
|
14
|
+
```typescript
|
|
15
|
+
// DON'T
|
|
16
|
+
await fetch('https://api.cloudflare.com/client/v4/accounts/.../kv/...');
|
|
17
|
+
```
|
|
18
|
+
**✅ Use bindings:**
|
|
19
|
+
```typescript
|
|
20
|
+
await env.MY_KV.get('key');
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### ❌ Polling KV/D1 for Changes
|
|
24
|
+
```typescript
|
|
25
|
+
// DON'T
|
|
26
|
+
setInterval(() => {
|
|
27
|
+
const config = await env.KV.get('config');
|
|
28
|
+
}, 1000);
|
|
29
|
+
```
|
|
30
|
+
**✅ Use Durable Objects for real-time state**
|
|
31
|
+
|
|
32
|
+
### ❌ Storing Large Data in env.vars
|
|
33
|
+
```typescript
|
|
34
|
+
// DON'T
|
|
35
|
+
{ "vars": { "HUGE_CONFIG": "..." } } // Max 5KB per var
|
|
36
|
+
```
|
|
37
|
+
**✅ Use KV/R2 for large data**
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Cloudflare Bot Management
|
|
2
|
+
|
|
3
|
+
Enterprise-grade bot detection, protection, and mitigation using ML/heuristics, bot scores, JavaScript detections, and verified bot handling.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Bot Management provides multi-tier protection:
|
|
8
|
+
- **Free (Bot Fight Mode)**: Auto-blocks definite bots, no config
|
|
9
|
+
- **Pro/Business (Super Bot Fight Mode)**: Configurable actions, static resource protection, analytics groupings
|
|
10
|
+
- **Enterprise (Bot Management)**: Granular 1-99 scores, WAF integration, JA3/JA4 fingerprinting, Workers API, Advanced Analytics
|
|
11
|
+
|
|
12
|
+
## Quick Start
|
|
13
|
+
|
|
14
|
+
```txt
|
|
15
|
+
# Dashboard: Security > Bots
|
|
16
|
+
# Enterprise: Deploy rule template
|
|
17
|
+
(cf.bot_management.score eq 1 and not cf.bot_management.verified_bot) → Block
|
|
18
|
+
(cf.bot_management.score le 29 and not cf.bot_management.verified_bot) → Managed Challenge
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Core Concepts
|
|
22
|
+
|
|
23
|
+
**Bot Scores**: 1-99 (1 = definitely automated, 99 = definitely human). Threshold: <30 indicates bot traffic. Enterprise gets granular 1-99; Pro/Business get groupings only.
|
|
24
|
+
|
|
25
|
+
**Detection Engines**: Heuristics (known fingerprints, assigns score=1), ML (majority of detections, supervised learning on billions of requests), Anomaly Detection (optional, baseline traffic analysis), JavaScript Detections (headless browser detection).
|
|
26
|
+
|
|
27
|
+
**Verified Bots**: Allowlisted good bots (search engines, AI crawlers) verified via reverse DNS or Web Bot Auth. Access via `cf.bot_management.verified_bot` or `cf.verified_bot_category`.
|
|
28
|
+
|
|
29
|
+
## Platform Limits
|
|
30
|
+
|
|
31
|
+
| Plan | Bot Scores | JA3/JA4 | Custom Rules | Analytics Retention |
|
|
32
|
+
|------|------------|---------|--------------|---------------------|
|
|
33
|
+
| Free | No (auto-block only) | No | 5 | N/A (no analytics) |
|
|
34
|
+
| Pro/Business | Groupings only | No | 20/100 | 30 days (72h at a time) |
|
|
35
|
+
| Enterprise | 1-99 granular | Yes | 1,000+ | 30 days (1 week at a time) |
|
|
36
|
+
|
|
37
|
+
## Basic Patterns
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
// Workers: Check bot score
|
|
41
|
+
export default {
|
|
42
|
+
async fetch(request: Request): Promise<Response> {
|
|
43
|
+
const botScore = request.cf?.botManagement?.score;
|
|
44
|
+
if (botScore && botScore < 30 && !request.cf?.botManagement?.verifiedBot) {
|
|
45
|
+
return new Response('Bot detected', { status: 403 });
|
|
46
|
+
}
|
|
47
|
+
return fetch(request);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```txt
|
|
53
|
+
# WAF: Block definite bots
|
|
54
|
+
(cf.bot_management.score eq 1 and not cf.bot_management.verified_bot)
|
|
55
|
+
|
|
56
|
+
# WAF: Protect sensitive endpoints
|
|
57
|
+
(cf.bot_management.score lt 50 and http.request.uri.path in {"/login" "/checkout"} and not cf.bot_management.verified_bot)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## In This Reference
|
|
61
|
+
|
|
62
|
+
- [configuration.md](./configuration.md) - Product tiers, WAF rule setup, JavaScript Detections, ML auto-updates
|
|
63
|
+
- [api.md](./api.md) - Workers BotManagement interface, WAF fields, JA4 Signals
|
|
64
|
+
- [patterns.md](./patterns.md) - E-commerce, API protection, mobile app allowlisting, SEO-friendly handling
|
|
65
|
+
- [gotchas.md](./gotchas.md) - False positives/negatives, score=0 issues, JSD limitations, CSP requirements
|
|
66
|
+
|
|
67
|
+
## See Also
|
|
68
|
+
|
|
69
|
+
- [waf](../waf/) - WAF custom rules for bot enforcement
|
|
70
|
+
- [workers](../workers/) - Workers request.cf.botManagement API
|
|
71
|
+
- [api-shield](../api-shield/) - API-specific bot protection
|