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,171 @@
|
|
|
1
|
+
# CNI Gotchas & Troubleshooting
|
|
2
|
+
|
|
3
|
+
See [README.md](./README.md) for overview.
|
|
4
|
+
|
|
5
|
+
## Limitations
|
|
6
|
+
|
|
7
|
+
**General:**
|
|
8
|
+
- No formal SLA (free service)
|
|
9
|
+
- No dashboard config visibility
|
|
10
|
+
- Recovery may take days
|
|
11
|
+
- 10km max optical distance
|
|
12
|
+
- Backup Internet required
|
|
13
|
+
|
|
14
|
+
**v1:**
|
|
15
|
+
- Asymmetric MTU (1500↓/1476↑)
|
|
16
|
+
- GRE overhead for Magic Transit/WAN
|
|
17
|
+
- 1 Gbps/GRE tunnel limit
|
|
18
|
+
|
|
19
|
+
**v2:**
|
|
20
|
+
- No VLAN (yet)
|
|
21
|
+
- No BFD (yet)
|
|
22
|
+
- No LACP (use ECMP)
|
|
23
|
+
- No peering support
|
|
24
|
+
- Beta status
|
|
25
|
+
|
|
26
|
+
**Cloud:**
|
|
27
|
+
- AWS Hosted Direct Connect unsupported
|
|
28
|
+
- Magic WAN only
|
|
29
|
+
- GCP BGP routes ignored
|
|
30
|
+
- AWS requires manual coordination
|
|
31
|
+
|
|
32
|
+
## Troubleshooting
|
|
33
|
+
|
|
34
|
+
### Status: Pending
|
|
35
|
+
|
|
36
|
+
**Symptoms:** Stuck in pending.
|
|
37
|
+
|
|
38
|
+
**Causes:**
|
|
39
|
+
- Cross-connect not installed
|
|
40
|
+
- RX/TX fibers reversed
|
|
41
|
+
- Wrong fiber type
|
|
42
|
+
- Low light levels
|
|
43
|
+
|
|
44
|
+
**Fix:**
|
|
45
|
+
1. Verify cross-connect installed
|
|
46
|
+
2. Check fiber at patch panel
|
|
47
|
+
3. Swap RX/TX
|
|
48
|
+
4. Check light with optical power meter
|
|
49
|
+
5. Contact account team
|
|
50
|
+
|
|
51
|
+
### Status: Unhealthy
|
|
52
|
+
|
|
53
|
+
**Symptoms:** Shows unhealthy.
|
|
54
|
+
|
|
55
|
+
**Causes:**
|
|
56
|
+
- Physical issue
|
|
57
|
+
- Light <-20 dBm
|
|
58
|
+
- Optic mismatch
|
|
59
|
+
- Dirty connectors
|
|
60
|
+
|
|
61
|
+
**Fix:**
|
|
62
|
+
1. Check physical connections
|
|
63
|
+
2. Clean fiber connectors
|
|
64
|
+
3. Verify optic types (10GBASE-LR/100GBASE-LR4)
|
|
65
|
+
4. Test with known-good optics
|
|
66
|
+
5. Check patch panel
|
|
67
|
+
6. Contact account team
|
|
68
|
+
|
|
69
|
+
### BGP Session Down
|
|
70
|
+
|
|
71
|
+
**Symptoms:** Link up, BGP down.
|
|
72
|
+
|
|
73
|
+
**Causes:**
|
|
74
|
+
- Wrong IP addressing
|
|
75
|
+
- Wrong ASN
|
|
76
|
+
- Password mismatch
|
|
77
|
+
- Firewall blocking TCP/179
|
|
78
|
+
|
|
79
|
+
**Fix:**
|
|
80
|
+
1. Verify IPs match CNI object
|
|
81
|
+
2. Confirm ASN correct
|
|
82
|
+
3. Check BGP password
|
|
83
|
+
4. Verify no firewall on TCP/179
|
|
84
|
+
5. Check BGP logs
|
|
85
|
+
6. Review BGP timers
|
|
86
|
+
|
|
87
|
+
### Low Throughput
|
|
88
|
+
|
|
89
|
+
**Symptoms:** Traffic flows, below expected.
|
|
90
|
+
|
|
91
|
+
**Causes:**
|
|
92
|
+
- MTU mismatch
|
|
93
|
+
- Fragmentation
|
|
94
|
+
- Single GRE tunnel (v1)
|
|
95
|
+
- Routing inefficiency
|
|
96
|
+
|
|
97
|
+
**Fix:**
|
|
98
|
+
1. Check MTU (1500↓/1476↑ for v1, 1500 both for v2)
|
|
99
|
+
2. Test various packet sizes
|
|
100
|
+
3. Add more GRE tunnels (v1)
|
|
101
|
+
4. Consider upgrading to v2
|
|
102
|
+
5. Review routing tables
|
|
103
|
+
6. Use LACP for bundling (v1)
|
|
104
|
+
|
|
105
|
+
## Common Mistakes
|
|
106
|
+
|
|
107
|
+
**Ordering:**
|
|
108
|
+
- ❌ Wrong facility code on LOA
|
|
109
|
+
- ❌ Multi-mode fiber (need single-mode)
|
|
110
|
+
- ❌ Wrong optic type
|
|
111
|
+
- ❌ Forgetting to track cross-connect order
|
|
112
|
+
|
|
113
|
+
**Configuration:**
|
|
114
|
+
- ❌ Not using /31 subnets
|
|
115
|
+
- ❌ Skipping BGP passwords
|
|
116
|
+
- ❌ Wrong ASN
|
|
117
|
+
- ❌ Firewall blocking BGP (TCP/179)
|
|
118
|
+
|
|
119
|
+
**Production:**
|
|
120
|
+
- ❌ No maintenance notifications
|
|
121
|
+
- ❌ Not testing backup connectivity
|
|
122
|
+
- ❌ Missing runbooks
|
|
123
|
+
- ❌ No failover testing
|
|
124
|
+
- ❌ Ignoring capacity planning
|
|
125
|
+
|
|
126
|
+
## Quick Reference
|
|
127
|
+
|
|
128
|
+
**Status Guide:**
|
|
129
|
+
- **Active**: Working normally → Monitor
|
|
130
|
+
- **Unhealthy**: Down → Check physical
|
|
131
|
+
- **Pending**: In progress → Complete cross-connect
|
|
132
|
+
|
|
133
|
+
**Contact Account Team For:**
|
|
134
|
+
- CNI eligibility
|
|
135
|
+
- Config assistance
|
|
136
|
+
- LOA generation
|
|
137
|
+
- Unhealthy interconnects
|
|
138
|
+
- Location availability
|
|
139
|
+
- Device diversity options
|
|
140
|
+
|
|
141
|
+
**Key Commands:**
|
|
142
|
+
```bash
|
|
143
|
+
# List interconnects
|
|
144
|
+
curl "https://api.cloudflare.com/client/v4/accounts/${ID}/cni/interconnects" \
|
|
145
|
+
-H "Authorization: Bearer ${TOKEN}"
|
|
146
|
+
|
|
147
|
+
# Get status
|
|
148
|
+
curl "https://api.cloudflare.com/client/v4/accounts/${ID}/cni/interconnects/${ICON}/status" \
|
|
149
|
+
-H "Authorization: Bearer ${TOKEN}"
|
|
150
|
+
|
|
151
|
+
# Download LOA
|
|
152
|
+
curl "https://api.cloudflare.com/client/v4/accounts/${ID}/cni/interconnects/${ICON}/loa" \
|
|
153
|
+
-H "Authorization: Bearer ${TOKEN}" \
|
|
154
|
+
--output loa.pdf
|
|
155
|
+
|
|
156
|
+
# List CNI objects
|
|
157
|
+
curl "https://api.cloudflare.com/client/v4/accounts/${ID}/cni/cnis" \
|
|
158
|
+
-H "Authorization: Bearer ${TOKEN}"
|
|
159
|
+
|
|
160
|
+
# List available slots
|
|
161
|
+
curl "https://api.cloudflare.com/client/v4/accounts/${ID}/cni/slots?occupied=false" \
|
|
162
|
+
-H "Authorization: Bearer ${TOKEN}"
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Resources
|
|
166
|
+
|
|
167
|
+
- [CNI Overview](https://developers.cloudflare.com/network-interconnect/)
|
|
168
|
+
- [Get Started](https://developers.cloudflare.com/network-interconnect/get-started/)
|
|
169
|
+
- [Monitoring](https://developers.cloudflare.com/network-interconnect/monitoring-and-alerts/)
|
|
170
|
+
- [Locations PDF](https://developers.cloudflare.com/network-interconnect/static/cni-locations-30-10-2025.pdf)
|
|
171
|
+
- [API Docs](https://developers.cloudflare.com/api/resources/network_interconnects/)
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# CNI Patterns
|
|
2
|
+
|
|
3
|
+
See [README.md](./README.md) for overview.
|
|
4
|
+
|
|
5
|
+
## High Availability
|
|
6
|
+
|
|
7
|
+
**Critical:** Design for resilience from day one.
|
|
8
|
+
|
|
9
|
+
**Requirements:**
|
|
10
|
+
- Device-level diversity (separate hardware)
|
|
11
|
+
- Backup Internet connectivity (no SLA on CNI)
|
|
12
|
+
- Network-resilient locations preferred
|
|
13
|
+
- Regular failover testing
|
|
14
|
+
|
|
15
|
+
**Architecture:**
|
|
16
|
+
```
|
|
17
|
+
Your Network A ──10G CNI v2──> CF CCR Device 1
|
|
18
|
+
│
|
|
19
|
+
Your Network B ──10G CNI v2──> CF CCR Device 2
|
|
20
|
+
│
|
|
21
|
+
CF Global Network (AS13335)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Capacity Planning:**
|
|
25
|
+
- Plan across all links
|
|
26
|
+
- Account for failover scenarios
|
|
27
|
+
- Your responsibility
|
|
28
|
+
|
|
29
|
+
## Pattern: Magic Transit + CNI v2
|
|
30
|
+
|
|
31
|
+
**Use Case:** DDoS protection, private connectivity, no GRE overhead.
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
// 1. Create interconnect
|
|
35
|
+
const ic = await client.networkInterconnects.interconnects.create({
|
|
36
|
+
account_id: id,
|
|
37
|
+
type: 'direct',
|
|
38
|
+
facility: 'EWR1',
|
|
39
|
+
speed: '10G',
|
|
40
|
+
name: 'magic-transit-primary',
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
// 2. Poll until active
|
|
44
|
+
const status = await pollUntilActive(id, ic.id);
|
|
45
|
+
|
|
46
|
+
// 3. Configure Magic Transit tunnel via Dashboard/API
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Benefits:** 1500 MTU both ways, simplified routing.
|
|
50
|
+
|
|
51
|
+
## Pattern: Multi-Cloud Hybrid
|
|
52
|
+
|
|
53
|
+
**Use Case:** AWS/GCP workloads with Cloudflare.
|
|
54
|
+
|
|
55
|
+
**AWS Direct Connect:**
|
|
56
|
+
```typescript
|
|
57
|
+
// 1. Order Direct Connect in AWS Console
|
|
58
|
+
// 2. Get LOA + VLAN from AWS
|
|
59
|
+
// 3. Send to CF account team (no API)
|
|
60
|
+
// 4. Configure static routes in Magic WAN
|
|
61
|
+
|
|
62
|
+
await configureStaticRoutes(id, {
|
|
63
|
+
prefix: '10.0.0.0/8',
|
|
64
|
+
nexthop: 'aws-direct-connect',
|
|
65
|
+
});
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**GCP Cloud Interconnect:**
|
|
69
|
+
```typescript
|
|
70
|
+
// 1. Get VLAN pairing key from GCP
|
|
71
|
+
// 2. Create via Dashboard (no SDK yet)
|
|
72
|
+
// 3. Configure static routes in Magic WAN
|
|
73
|
+
// 4. Configure BGP in GCP Cloud Router
|
|
74
|
+
|
|
75
|
+
const ic = await client.networkInterconnects.interconnects.create({
|
|
76
|
+
account_id: id,
|
|
77
|
+
type: 'cloud',
|
|
78
|
+
cloud_provider: 'gcp',
|
|
79
|
+
pairing_key: 'gcp_key',
|
|
80
|
+
name: 'gcp-interconnect',
|
|
81
|
+
});
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Pattern: Multi-Location HA
|
|
85
|
+
|
|
86
|
+
**Use Case:** 99.99%+ uptime.
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
// Primary (NY)
|
|
90
|
+
const primary = await client.networkInterconnects.interconnects.create({
|
|
91
|
+
account_id: id,
|
|
92
|
+
type: 'direct',
|
|
93
|
+
facility: 'EWR1',
|
|
94
|
+
speed: '10G',
|
|
95
|
+
name: 'primary-ewr1',
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// Secondary (NY, different hardware)
|
|
99
|
+
const secondary = await client.networkInterconnects.interconnects.create({
|
|
100
|
+
account_id: id,
|
|
101
|
+
type: 'direct',
|
|
102
|
+
facility: 'EWR2',
|
|
103
|
+
speed: '10G',
|
|
104
|
+
name: 'secondary-ewr2',
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
// Tertiary (LA, different geography)
|
|
108
|
+
const tertiary = await client.networkInterconnects.interconnects.create({
|
|
109
|
+
account_id: id,
|
|
110
|
+
type: 'partner',
|
|
111
|
+
facility: 'LAX1',
|
|
112
|
+
speed: '10G',
|
|
113
|
+
name: 'tertiary-lax1',
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// BGP local preferences:
|
|
117
|
+
// Primary: 200
|
|
118
|
+
// Secondary: 150
|
|
119
|
+
// Tertiary: 100
|
|
120
|
+
// Internet: Last resort
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Pattern: Partner Interconnect (Equinix)
|
|
124
|
+
|
|
125
|
+
**Use Case:** Quick deployment, no colocation.
|
|
126
|
+
|
|
127
|
+
**Setup:**
|
|
128
|
+
1. Order virtual circuit in Equinix Fabric Portal
|
|
129
|
+
2. Select Cloudflare as destination
|
|
130
|
+
3. Choose facility
|
|
131
|
+
4. Send details to CF account team
|
|
132
|
+
5. CF accepts in portal
|
|
133
|
+
6. Configure BGP
|
|
134
|
+
|
|
135
|
+
**No API automation** – partner portals managed separately.
|
|
136
|
+
|
|
137
|
+
## Failover & Security
|
|
138
|
+
|
|
139
|
+
**Failover Best Practices:**
|
|
140
|
+
- Use BGP local preferences for priority
|
|
141
|
+
- Configure BFD for fast detection (v1)
|
|
142
|
+
- Test regularly with traffic shift
|
|
143
|
+
- Document runbooks
|
|
144
|
+
|
|
145
|
+
**Security:**
|
|
146
|
+
- BGP password authentication
|
|
147
|
+
- BGP route filtering
|
|
148
|
+
- Monitor unexpected routes
|
|
149
|
+
- Magic Firewall for DDoS/threats
|
|
150
|
+
- Minimum API token permissions
|
|
151
|
+
- Rotate credentials periodically
|
|
152
|
+
|
|
153
|
+
## Decision Matrix
|
|
154
|
+
|
|
155
|
+
| Requirement | Recommended |
|
|
156
|
+
|-------------|-------------|
|
|
157
|
+
| Collocated with CF | Direct |
|
|
158
|
+
| Not collocated | Partner |
|
|
159
|
+
| AWS/GCP workloads | Cloud |
|
|
160
|
+
| 1500 MTU both ways | v2 |
|
|
161
|
+
| VLAN tagging | v1 |
|
|
162
|
+
| Public peering | v1 |
|
|
163
|
+
| Simplest config | v2 |
|
|
164
|
+
| BFD fast failover | v1 |
|
|
165
|
+
| LACP bundling | v1 |
|
|
166
|
+
|
|
167
|
+
## Resources
|
|
168
|
+
|
|
169
|
+
- [Magic Transit Docs](https://developers.cloudflare.com/magic-transit/)
|
|
170
|
+
- [Magic WAN Docs](https://developers.cloudflare.com/magic-wan/)
|
|
171
|
+
- [Argo Smart Routing](https://developers.cloudflare.com/argo/)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Cloudflare Observability Skill Reference
|
|
2
|
+
|
|
3
|
+
**Purpose**: Comprehensive guidance for implementing observability in Cloudflare Workers, covering traces, logs, metrics, and analytics.
|
|
4
|
+
|
|
5
|
+
**Scope**: Cloudflare Observability features ONLY - Workers Logs, Traces, Analytics Engine, Logpush, Metrics & Analytics, and OpenTelemetry exports.
|
|
6
|
+
|
|
7
|
+
---...
|
|
8
|
+
|
|
9
|
+
## In This Reference
|
|
10
|
+
|
|
11
|
+
- **[configuration.md](./configuration.md)** - Setup, deployment, configuration
|
|
12
|
+
- **[api.md](./api.md)** - API endpoints, methods, interfaces
|
|
13
|
+
- **[patterns.md](./patterns.md)** - Common patterns, use cases, examples
|
|
14
|
+
- **[gotchas.md](./gotchas.md)** - Troubleshooting, best practices, limitations
|
|
15
|
+
|
|
16
|
+
## See Also
|
|
17
|
+
|
|
18
|
+
- [Cloudflare Docs](https://developers.cloudflare.com/)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
## API Reference
|
|
2
|
+
|
|
3
|
+
### GraphQL Analytics API
|
|
4
|
+
|
|
5
|
+
**Endpoint**: `https://api.cloudflare.com/client/v4/graphql`
|
|
6
|
+
|
|
7
|
+
**Query Workers Metrics**:
|
|
8
|
+
```graphql
|
|
9
|
+
query {
|
|
10
|
+
viewer {
|
|
11
|
+
accounts(filter: { accountTag: $accountId }) {
|
|
12
|
+
workersInvocationsAdaptive(
|
|
13
|
+
limit: 100
|
|
14
|
+
filter: {
|
|
15
|
+
datetime_geq: "2025-01-01T00:00:00Z"
|
|
16
|
+
datetime_leq: "2025-01-31T23:59:59Z"
|
|
17
|
+
scriptName: "my-worker"
|
|
18
|
+
}
|
|
19
|
+
) {
|
|
20
|
+
sum {
|
|
21
|
+
requests
|
|
22
|
+
errors
|
|
23
|
+
subrequests
|
|
24
|
+
}
|
|
25
|
+
quantiles {
|
|
26
|
+
cpuTimeP50
|
|
27
|
+
cpuTimeP99
|
|
28
|
+
wallTimeP50
|
|
29
|
+
wallTimeP99
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Analytics Engine SQL API
|
|
38
|
+
|
|
39
|
+
**Endpoint**: `https://api.cloudflare.com/client/v4/accounts/{account_id}/analytics_engine/sql`
|
|
40
|
+
|
|
41
|
+
**Authentication**: `Authorization: Bearer <API_TOKEN>` (Account Analytics Read permission)
|
|
42
|
+
|
|
43
|
+
**Common Queries**:
|
|
44
|
+
|
|
45
|
+
```sql
|
|
46
|
+
-- List all datasets
|
|
47
|
+
SHOW TABLES;
|
|
48
|
+
|
|
49
|
+
-- Time-series aggregation (5-minute buckets)
|
|
50
|
+
SELECT
|
|
51
|
+
intDi
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
## Configuration Patterns
|
|
2
|
+
|
|
3
|
+
### Enable Workers Logs
|
|
4
|
+
|
|
5
|
+
```jsonc
|
|
6
|
+
// wrangler.jsonc
|
|
7
|
+
{
|
|
8
|
+
"observability": {
|
|
9
|
+
"enabled": true,
|
|
10
|
+
"head_sampling_rate": 1 // 100% sampling (default)
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```toml
|
|
16
|
+
# wrangler.toml
|
|
17
|
+
[observability]
|
|
18
|
+
enabled = true
|
|
19
|
+
head_sampling_rate = 1 # 100% sampling
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Best Practice**: Use structured JSON logging for better indexing
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
// Good - structured logging
|
|
26
|
+
console.log({
|
|
27
|
+
user_id: 123,
|
|
28
|
+
action: "login",
|
|
29
|
+
status: "success",
|
|
30
|
+
duration_ms: 45
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// Avoid - unstructured string
|
|
34
|
+
console.log("user_id: 123 logged in successfully in 45ms");
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Enable Workers Traces
|
|
38
|
+
|
|
39
|
+
```jsonc
|
|
40
|
+
// wrangler.jsonc
|
|
41
|
+
{
|
|
42
|
+
"observability": {
|
|
43
|
+
"traces": {
|
|
44
|
+
"enabled": true,
|
|
45
|
+
"head_sampling_rate": 0.05 // 5% sampling
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```toml
|
|
52
|
+
# wrangler.toml
|
|
53
|
+
[observability.traces]
|
|
54
|
+
enabled = true
|
|
55
|
+
head_sampling_rate = 0.05 # 5% sampling
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Note**: Default sampling is 100%. For high-traffic Workers, use lower sampling (0.01-0.1).
|
|
59
|
+
|
|
60
|
+
### Configure Analytics
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
## Troubleshooting
|
|
2
|
+
|
|
3
|
+
### Logs not appearing
|
|
4
|
+
|
|
5
|
+
**Check**:
|
|
6
|
+
1. `observability.enabled = true` in wrangler config
|
|
7
|
+
2. Worker has been redeployed after config change
|
|
8
|
+
3. Worker is receiving traffic
|
|
9
|
+
4. Sampling rate is not too low (check `head_sampling_rate`)
|
|
10
|
+
5. Log size under 256 KB limit
|
|
11
|
+
|
|
12
|
+
**Solution**:
|
|
13
|
+
```bash
|
|
14
|
+
# Verify config
|
|
15
|
+
cat wrangler.toml | grep -A 5 observability
|
|
16
|
+
|
|
17
|
+
# Check deployment
|
|
18
|
+
wrangler deployments list <WORKER_NAME>
|
|
19
|
+
|
|
20
|
+
# Test with curl
|
|
21
|
+
curl https://your-worker.workers.dev
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Traces not being captured
|
|
25
|
+
|
|
26
|
+
**Check**:
|
|
27
|
+
1. `observability.traces.enabled = true`
|
|
28
|
+
2. `head_sampling_rate` is appropriate (1.0 for testing)
|
|
29
|
+
3. Worker deployed after traces enabled
|
|
30
|
+
4. Check destination status in dashboard
|
|
31
|
+
|
|
32
|
+
**Solution**:
|
|
33
|
+
```jsonc
|
|
34
|
+
// Temporarily set to 100% sampling for debugging
|
|
35
|
+
{
|
|
36
|
+
"observability":
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
## Common Use Cases
|
|
2
|
+
|
|
3
|
+
### 1. Usage-Based Billing
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
export default {
|
|
7
|
+
async fetch(request: Request, env: Env): Promise<Response> {
|
|
8
|
+
const customerId = request.headers.get('X-Customer-ID');
|
|
9
|
+
const apiKey = request.headers.get('X-API-Key');
|
|
10
|
+
|
|
11
|
+
if (!customerId || !apiKey) {
|
|
12
|
+
return new Response('Unauthorized', { status: 401 });
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Track API usage per customer
|
|
16
|
+
env.ANALYTICS.writeDataPoint({
|
|
17
|
+
'blobs': [customerId, request.url, request.method],
|
|
18
|
+
'doubles': [1], // request_count
|
|
19
|
+
'indexes': [customerId]
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
return processRequest(request);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Query for billing**:
|
|
28
|
+
```sql
|
|
29
|
+
SELECT
|
|
30
|
+
blob1 AS customer_id,
|
|
31
|
+
SUM(_sample_interval * double1) AS total_api_calls
|
|
32
|
+
FROM api_usage
|
|
33
|
+
WHERE timestamp >= DATE_TRUNC('month', NOW())
|
|
34
|
+
GROUP BY customer_id
|
|
35
|
+
ORDER BY total_api_calls DESC
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 2. Performance Monitoring
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
async function monitoredFetch(url: string, env: Env): Promise<Response> {
|
|
42
|
+
const start = Date.now(
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Cloudflare Pages
|
|
2
|
+
|
|
3
|
+
JAMstack platform for full-stack apps on Cloudflare's global network.
|
|
4
|
+
|
|
5
|
+
## Key Features
|
|
6
|
+
|
|
7
|
+
- **Git-based deploys**: Auto-deploy from GitHub/GitLab
|
|
8
|
+
- **Preview deployments**: Unique URL per branch/PR
|
|
9
|
+
- **Pages Functions**: File-based serverless routing (Workers runtime)
|
|
10
|
+
- **Static + dynamic**: Smart asset caching + edge compute
|
|
11
|
+
- **Framework optimized**: Next.js, SvelteKit, Remix, Astro, Nuxt, Qwik
|
|
12
|
+
|
|
13
|
+
## Deployment Methods
|
|
14
|
+
|
|
15
|
+
### 1. Git Integration (Production)
|
|
16
|
+
Dashboard → Workers & Pages → Create → Connect to Git → Configure build
|
|
17
|
+
|
|
18
|
+
### 2. Direct Upload
|
|
19
|
+
```bash
|
|
20
|
+
npx wrangler pages deploy ./dist --project-name=my-project
|
|
21
|
+
npx wrangler pages deploy ./dist --project-name=my-project --branch=staging
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### 3. C3 CLI
|
|
25
|
+
```bash
|
|
26
|
+
npm create cloudflare@latest my-app
|
|
27
|
+
# Select framework → auto-setup + deploy
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## vs Workers
|
|
31
|
+
|
|
32
|
+
- **Pages**: Static sites, JAMstack, frameworks, git workflow, file-based routing
|
|
33
|
+
- **Workers**: Pure APIs, complex routing, WebSockets, scheduled tasks, email handlers
|
|
34
|
+
- **Combine**: Pages Functions use Workers runtime, can bind to Workers
|
|
35
|
+
|
|
36
|
+
## Quick Start
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Create
|
|
40
|
+
npm create cloudflare@latest
|
|
41
|
+
|
|
42
|
+
# Local dev
|
|
43
|
+
npx wrangler pages dev ./dist
|
|
44
|
+
|
|
45
|
+
# Deploy
|
|
46
|
+
npx wrangler pages deploy ./dist --project-name=my-project
|
|
47
|
+
|
|
48
|
+
# Types
|
|
49
|
+
npx wrangler types --path='./functions/types.d.ts'
|
|
50
|
+
|
|
51
|
+
# Secrets
|
|
52
|
+
echo "value" | npx wrangler pages secret put KEY --project-name=my-project
|
|
53
|
+
|
|
54
|
+
# Logs
|
|
55
|
+
npx wrangler pages deployment tail --project-name=my-project
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Resources
|
|
59
|
+
|
|
60
|
+
- [Pages Docs](https://developers.cloudflare.com/pages/)
|
|
61
|
+
- [Functions API](https://developers.cloudflare.com/pages/functions/api-reference/)
|
|
62
|
+
- [Framework Guides](https://developers.cloudflare.com/pages/framework-guides/)
|
|
63
|
+
- [Discord #functions](https://discord.com/channels/595317990191398933/910978223968518144)
|
|
64
|
+
|
|
65
|
+
## In This Reference
|
|
66
|
+
|
|
67
|
+
- [configuration.md](./configuration.md) - wrangler.jsonc, build, env vars
|
|
68
|
+
- [api.md](./api.md) - Functions API, bindings, context
|
|
69
|
+
- [patterns.md](./patterns.md) - Full-stack patterns, frameworks
|
|
70
|
+
- [gotchas.md](./gotchas.md) - Build issues, limits, debugging
|
|
71
|
+
|
|
72
|
+
## See Also
|
|
73
|
+
|
|
74
|
+
- [pages-functions](../pages-functions/) - File-based routing, middleware
|
|
75
|
+
- [d1](../d1/) - SQL database for Pages Functions
|
|
76
|
+
- [kv](../kv/) - Key-value storage for caching/state
|