memory-journal-mcp 7.7.1 → 8.0.1
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/README.md +126 -56
- package/dist/chunk-6OHRCNYW.js +3231 -0
- package/dist/chunk-JFMITANR.js +5168 -0
- package/dist/{chunk-ARLYSFSI.js → chunk-UHSO65A4.js} +4242 -6092
- package/dist/{chunk-6LPTBIB6.js → chunk-V3UTFQQK.js} +318 -4330
- package/dist/cli.js +21 -3
- package/dist/index.d.ts +16 -13
- package/dist/index.js +4 -2
- package/dist/resources-IJVKDFGS.js +2 -0
- package/dist/tools-44DGXE3V.js +2 -0
- package/dist/worker-script.js +201 -20
- package/package.json +6 -4
- package/skills/README.md +62 -25
- package/skills/adversarial-performance/SKILL.md +139 -0
- package/skills/adversarial-performance/references/audit-categories.md +462 -0
- package/skills/adversarial-performance/references/copilot-performance-prompts.md +44 -0
- package/skills/adversarial-performance/references/copilot-usage.md +16 -0
- package/skills/adversarial-performance/references/feedback-loop.md +177 -0
- package/skills/adversarial-performance/references/multi-pass-performance-protocol.md +398 -0
- package/skills/adversarial-planner/SKILL.md +23 -54
- package/skills/adversarial-planner/references/copilot-integration.md +25 -40
- package/skills/adversarial-planner/references/copilot-usage.md +16 -0
- package/skills/adversarial-planner/references/multi-pass-protocol.md +4 -0
- package/skills/adversarial-security/SKILL.md +149 -0
- package/skills/adversarial-security/references/adversarial-base-protocol.md +44 -0
- package/skills/adversarial-security/references/audit-categories.md +723 -0
- package/skills/adversarial-security/references/copilot-security-prompts.md +142 -0
- package/skills/adversarial-security/references/copilot-usage.md +16 -0
- package/skills/adversarial-security/references/feedback-loop.md +206 -0
- package/skills/adversarial-security/references/journal-opt-out.md +7 -0
- package/skills/adversarial-security/references/multi-pass-security-protocol.md +403 -0
- package/skills/adversarial-skill-audit/SKILL.md +118 -0
- package/skills/adversarial-skill-audit/references/audit-categories.md +308 -0
- package/skills/adversarial-skill-audit/references/copilot-skill-prompts.md +68 -0
- package/skills/adversarial-skill-audit/references/copilot-usage.md +16 -0
- package/skills/adversarial-skill-audit/references/feedback-loop.md +155 -0
- package/skills/adversarial-skill-audit/references/multi-pass-skill-protocol.md +367 -0
- package/skills/adversarial-skill-audit/scripts/check-skills.ps1 +48 -0
- package/skills/adversarial-skill-audit/scripts/run-copilot.ps1 +52 -0
- package/skills/adversarial-workflow-audit/SKILL.md +82 -0
- package/skills/adversarial-workflow-audit/references/audit-categories.md +28 -0
- package/skills/adversarial-workflow-audit/references/copilot-usage.md +16 -0
- package/skills/adversarial-workflow-audit/scripts/check-workflows.ps1 +24 -0
- package/skills/agents-sdk/SKILL.md +220 -0
- package/skills/agents-sdk/references/callable.md +92 -0
- package/skills/agents-sdk/references/codemode.md +209 -0
- package/skills/agents-sdk/references/email.md +144 -0
- package/skills/agents-sdk/references/mcp/SKILL.md +65 -0
- package/skills/agents-sdk/references/mcp/code-mode-reference.md +245 -0
- package/skills/agents-sdk/references/mcp/oauth-reference.md +359 -0
- package/skills/agents-sdk/references/mcp/references/architecture-reference.md +208 -0
- package/skills/agents-sdk/references/mcp/references/cloudflare-quickstart.md +156 -0
- package/skills/agents-sdk/references/mcp/references/error-handling.md +343 -0
- package/skills/agents-sdk/references/mcp/references/http-security.md +164 -0
- package/skills/agents-sdk/references/mcp/references/implementation-guide.md +507 -0
- package/skills/agents-sdk/references/mcp/references/testing-reference.md +171 -0
- package/skills/agents-sdk/references/mcp.md +157 -0
- package/skills/agents-sdk/references/state-scheduling.md +164 -0
- package/skills/agents-sdk/references/streaming-chat.md +168 -0
- package/skills/agents-sdk/references/workflows.md +136 -0
- package/skills/auth-identity/SKILL.md +48 -0
- package/skills/autonomous-dev/SKILL.md +46 -23
- package/skills/autonomous-dev/references/workflow_orchestration.md +22 -0
- package/skills/aws/SKILL.md +39 -0
- package/skills/azure/SKILL.md +38 -0
- package/skills/bin/sync.js +7 -1
- package/skills/biome/SKILL.md +59 -0
- package/skills/bun/SKILL.md +8 -2
- package/skills/cloudflare/SKILL.md +37 -0
- package/skills/cloudflare/references/agents-sdk/README.md +95 -0
- package/skills/cloudflare/references/agents-sdk/api.md +195 -0
- package/skills/cloudflare/references/agents-sdk/configuration.md +178 -0
- package/skills/cloudflare/references/agents-sdk/gotchas.md +173 -0
- package/skills/cloudflare/references/agents-sdk/patterns.md +215 -0
- package/skills/cloudflare/references/ai-gateway/README.md +176 -0
- package/skills/cloudflare/references/ai-gateway/configuration.md +117 -0
- package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +88 -0
- package/skills/cloudflare/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare/references/ai-gateway/sdk-integration.md +110 -0
- package/skills/cloudflare/references/ai-gateway/troubleshooting.md +90 -0
- package/skills/cloudflare/references/ai-search/README.md +145 -0
- package/skills/cloudflare/references/ai-search/api.md +87 -0
- package/skills/cloudflare/references/ai-search/configuration.md +91 -0
- package/skills/cloudflare/references/ai-search/gotchas.md +92 -0
- package/skills/cloudflare/references/ai-search/patterns.md +87 -0
- package/skills/cloudflare/references/analytics-engine/README.md +96 -0
- package/skills/cloudflare/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare/references/analytics-engine/configuration.md +107 -0
- package/skills/cloudflare/references/analytics-engine/gotchas.md +87 -0
- package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
- package/skills/cloudflare/references/api/README.md +66 -0
- package/skills/cloudflare/references/api/api.md +205 -0
- package/skills/cloudflare/references/api/configuration.md +158 -0
- package/skills/cloudflare/references/api/gotchas.md +231 -0
- package/skills/cloudflare/references/api/patterns.md +208 -0
- package/skills/cloudflare/references/api-shield/README.md +44 -0
- package/skills/cloudflare/references/api-shield/api.md +153 -0
- package/skills/cloudflare/references/api-shield/configuration.md +210 -0
- package/skills/cloudflare/references/api-shield/gotchas.md +132 -0
- package/skills/cloudflare/references/api-shield/patterns.md +185 -0
- package/skills/cloudflare/references/argo-smart-routing/README.md +96 -0
- package/skills/cloudflare/references/argo-smart-routing/api.md +253 -0
- package/skills/cloudflare/references/argo-smart-routing/configuration.md +205 -0
- package/skills/cloudflare/references/argo-smart-routing/gotchas.md +115 -0
- package/skills/cloudflare/references/argo-smart-routing/patterns.md +107 -0
- package/skills/cloudflare/references/bindings/README.md +127 -0
- package/skills/cloudflare/references/bindings/api.md +214 -0
- package/skills/cloudflare/references/bindings/configuration.md +200 -0
- package/skills/cloudflare/references/bindings/gotchas.md +210 -0
- package/skills/cloudflare/references/bindings/patterns.md +205 -0
- package/skills/cloudflare/references/bot-management/README.md +95 -0
- package/skills/cloudflare/references/bot-management/api.md +175 -0
- package/skills/cloudflare/references/bot-management/configuration.md +175 -0
- package/skills/cloudflare/references/bot-management/gotchas.md +116 -0
- package/skills/cloudflare/references/bot-management/patterns.md +181 -0
- package/skills/cloudflare/references/browser-rendering/README.md +84 -0
- package/skills/cloudflare/references/browser-rendering/api.md +108 -0
- package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
- package/skills/cloudflare/references/browser-rendering/gotchas.md +91 -0
- package/skills/cloudflare/references/browser-rendering/patterns.md +93 -0
- package/skills/cloudflare/references/c3/README.md +111 -0
- package/skills/cloudflare/references/c3/api.md +71 -0
- package/skills/cloudflare/references/c3/configuration.md +85 -0
- package/skills/cloudflare/references/c3/gotchas.md +97 -0
- package/skills/cloudflare/references/c3/patterns.md +84 -0
- package/skills/cloudflare/references/cache-reserve/README.md +150 -0
- package/skills/cloudflare/references/cache-reserve/api.md +184 -0
- package/skills/cloudflare/references/cache-reserve/configuration.md +170 -0
- package/skills/cloudflare/references/cache-reserve/gotchas.md +136 -0
- package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare/references/containers/README.md +87 -0
- package/skills/cloudflare/references/containers/api.md +197 -0
- package/skills/cloudflare/references/containers/configuration.md +191 -0
- package/skills/cloudflare/references/containers/gotchas.md +182 -0
- package/skills/cloudflare/references/containers/patterns.md +204 -0
- package/skills/cloudflare/references/cron-triggers/README.md +101 -0
- package/skills/cloudflare/references/cron-triggers/api.md +224 -0
- package/skills/cloudflare/references/cron-triggers/configuration.md +190 -0
- package/skills/cloudflare/references/cron-triggers/gotchas.md +207 -0
- package/skills/cloudflare/references/cron-triggers/patterns.md +274 -0
- package/skills/cloudflare/references/d1/README.md +137 -0
- package/skills/cloudflare/references/d1/api.md +213 -0
- package/skills/cloudflare/references/d1/configuration.md +198 -0
- package/skills/cloudflare/references/d1/gotchas.md +98 -0
- package/skills/cloudflare/references/d1/patterns.md +240 -0
- package/skills/cloudflare/references/ddos/README.md +42 -0
- package/skills/cloudflare/references/ddos/api.md +158 -0
- package/skills/cloudflare/references/ddos/configuration.md +94 -0
- package/skills/cloudflare/references/ddos/gotchas.md +114 -0
- package/skills/cloudflare/references/ddos/patterns.md +220 -0
- package/skills/cloudflare/references/decision-trees.md +95 -0
- package/skills/cloudflare/references/do-storage/README.md +79 -0
- package/skills/cloudflare/references/do-storage/api.md +107 -0
- package/skills/cloudflare/references/do-storage/configuration.md +114 -0
- package/skills/cloudflare/references/do-storage/gotchas.md +153 -0
- package/skills/cloudflare/references/do-storage/patterns.md +210 -0
- package/skills/cloudflare/references/do-storage/testing.md +186 -0
- package/skills/cloudflare/references/durable-objects/README.md +194 -0
- package/skills/cloudflare/references/durable-objects/api.md +205 -0
- package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare/references/durable-objects/gotchas.md +200 -0
- package/skills/cloudflare/references/durable-objects/patterns.md +205 -0
- package/skills/cloudflare/references/email-routing/README.md +89 -0
- package/skills/cloudflare/references/email-routing/api.md +192 -0
- package/skills/cloudflare/references/email-routing/configuration.md +187 -0
- package/skills/cloudflare/references/email-routing/gotchas.md +203 -0
- package/skills/cloudflare/references/email-routing/patterns.md +241 -0
- package/skills/cloudflare/references/email-workers/README.md +153 -0
- package/skills/cloudflare/references/email-workers/api.md +227 -0
- package/skills/cloudflare/references/email-workers/configuration.md +115 -0
- package/skills/cloudflare/references/email-workers/gotchas.md +133 -0
- package/skills/cloudflare/references/email-workers/patterns.md +108 -0
- package/skills/cloudflare/references/graphql-api/README.md +147 -0
- package/skills/cloudflare/references/graphql-api/api.md +175 -0
- package/skills/cloudflare/references/graphql-api/configuration.md +151 -0
- package/skills/cloudflare/references/graphql-api/gotchas.md +111 -0
- package/skills/cloudflare/references/graphql-api/patterns.md +276 -0
- package/skills/cloudflare/references/hyperdrive/README.md +84 -0
- package/skills/cloudflare/references/hyperdrive/api.md +149 -0
- package/skills/cloudflare/references/hyperdrive/configuration.md +166 -0
- package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare/references/hyperdrive/patterns.md +203 -0
- package/skills/cloudflare/references/images/README.md +65 -0
- package/skills/cloudflare/references/images/api.md +101 -0
- package/skills/cloudflare/references/images/configuration.md +206 -0
- package/skills/cloudflare/references/images/gotchas.md +106 -0
- package/skills/cloudflare/references/images/patterns.md +126 -0
- package/skills/cloudflare/references/kv/README.md +90 -0
- package/skills/cloudflare/references/kv/api.md +163 -0
- package/skills/cloudflare/references/kv/configuration.md +148 -0
- package/skills/cloudflare/references/kv/gotchas.md +133 -0
- package/skills/cloudflare/references/kv/patterns.md +195 -0
- package/skills/cloudflare/references/miniflare/README.md +113 -0
- package/skills/cloudflare/references/miniflare/api.md +204 -0
- package/skills/cloudflare/references/miniflare/configuration.md +174 -0
- package/skills/cloudflare/references/miniflare/gotchas.md +179 -0
- package/skills/cloudflare/references/miniflare/patterns.md +187 -0
- package/skills/cloudflare/references/network-interconnect/README.md +104 -0
- package/skills/cloudflare/references/network-interconnect/api.md +220 -0
- package/skills/cloudflare/references/network-interconnect/configuration.md +123 -0
- package/skills/cloudflare/references/network-interconnect/gotchas.md +175 -0
- package/skills/cloudflare/references/network-interconnect/patterns.md +174 -0
- package/skills/cloudflare/references/observability/README.md +93 -0
- package/skills/cloudflare/references/observability/api.md +168 -0
- package/skills/cloudflare/references/observability/configuration.md +178 -0
- package/skills/cloudflare/references/observability/gotchas.md +125 -0
- package/skills/cloudflare/references/observability/patterns.md +105 -0
- package/skills/cloudflare/references/pages/README.md +92 -0
- package/skills/cloudflare/references/pages/api.md +205 -0
- package/skills/cloudflare/references/pages/configuration.md +216 -0
- package/skills/cloudflare/references/pages/gotchas.md +218 -0
- package/skills/cloudflare/references/pages/patterns.md +215 -0
- package/skills/cloudflare/references/pages-functions/README.md +104 -0
- package/skills/cloudflare/references/pages-functions/api.md +159 -0
- package/skills/cloudflare/references/pages-functions/configuration.md +130 -0
- package/skills/cloudflare/references/pages-functions/gotchas.md +102 -0
- package/skills/cloudflare/references/pages-functions/patterns.md +148 -0
- package/skills/cloudflare/references/pipelines/README.md +109 -0
- package/skills/cloudflare/references/pipelines/api.md +214 -0
- package/skills/cloudflare/references/pipelines/configuration.md +98 -0
- package/skills/cloudflare/references/pipelines/gotchas.md +84 -0
- package/skills/cloudflare/references/pipelines/patterns.md +87 -0
- package/skills/cloudflare/references/product-index.md +112 -0
- package/skills/cloudflare/references/pulumi/README.md +113 -0
- package/skills/cloudflare/references/pulumi/api.md +230 -0
- package/skills/cloudflare/references/pulumi/configuration.md +213 -0
- package/skills/cloudflare/references/pulumi/gotchas.md +205 -0
- package/skills/cloudflare/references/pulumi/patterns.md +260 -0
- package/skills/cloudflare/references/queues/README.md +99 -0
- package/skills/cloudflare/references/queues/api.md +211 -0
- package/skills/cloudflare/references/queues/configuration.md +151 -0
- package/skills/cloudflare/references/queues/gotchas.md +210 -0
- package/skills/cloudflare/references/queues/patterns.md +220 -0
- package/skills/cloudflare/references/r2/README.md +97 -0
- package/skills/cloudflare/references/r2/api.md +235 -0
- package/skills/cloudflare/references/r2/configuration.md +176 -0
- package/skills/cloudflare/references/r2/gotchas.md +190 -0
- package/skills/cloudflare/references/r2/patterns.md +203 -0
- package/skills/cloudflare/references/r2-data-catalog/README.md +157 -0
- package/skills/cloudflare/references/r2-data-catalog/api.md +199 -0
- package/skills/cloudflare/references/r2-data-catalog/configuration.md +205 -0
- package/skills/cloudflare/references/r2-data-catalog/gotchas.md +170 -0
- package/skills/cloudflare/references/r2-data-catalog/patterns.md +191 -0
- package/skills/cloudflare/references/r2-sql/README.md +138 -0
- package/skills/cloudflare/references/r2-sql/SKILL.md.backup +512 -0
- package/skills/cloudflare/references/r2-sql/api.md +159 -0
- package/skills/cloudflare/references/r2-sql/configuration.md +152 -0
- package/skills/cloudflare/references/r2-sql/gotchas.md +228 -0
- package/skills/cloudflare/references/r2-sql/patterns.md +230 -0
- package/skills/cloudflare/references/realtime-sfu/README.md +66 -0
- package/skills/cloudflare/references/realtime-sfu/api.md +164 -0
- package/skills/cloudflare/references/realtime-sfu/configuration.md +141 -0
- package/skills/cloudflare/references/realtime-sfu/gotchas.md +138 -0
- package/skills/cloudflare/references/realtime-sfu/patterns.md +187 -0
- package/skills/cloudflare/references/realtimekit/README.md +118 -0
- package/skills/cloudflare/references/realtimekit/api.md +234 -0
- package/skills/cloudflare/references/realtimekit/configuration.md +226 -0
- package/skills/cloudflare/references/realtimekit/gotchas.md +206 -0
- package/skills/cloudflare/references/realtimekit/patterns.md +240 -0
- package/skills/cloudflare/references/sandbox/README.md +104 -0
- package/skills/cloudflare/references/sandbox/api.md +200 -0
- package/skills/cloudflare/references/sandbox/configuration.md +154 -0
- package/skills/cloudflare/references/sandbox/gotchas.md +201 -0
- package/skills/cloudflare/references/sandbox/patterns.md +195 -0
- package/skills/cloudflare/references/secrets-store/README.md +77 -0
- package/skills/cloudflare/references/secrets-store/api.md +199 -0
- package/skills/cloudflare/references/secrets-store/configuration.md +187 -0
- package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare/references/secrets-store/patterns.md +218 -0
- package/skills/cloudflare/references/smart-placement/README.md +143 -0
- package/skills/cloudflare/references/smart-placement/api.md +192 -0
- package/skills/cloudflare/references/smart-placement/configuration.md +202 -0
- package/skills/cloudflare/references/smart-placement/gotchas.md +180 -0
- package/skills/cloudflare/references/smart-placement/patterns.md +190 -0
- package/skills/cloudflare/references/snippets/README.md +74 -0
- package/skills/cloudflare/references/snippets/api.md +214 -0
- package/skills/cloudflare/references/snippets/configuration.md +239 -0
- package/skills/cloudflare/references/snippets/gotchas.md +104 -0
- package/skills/cloudflare/references/snippets/patterns.md +135 -0
- package/skills/cloudflare/references/spectrum/README.md +52 -0
- package/skills/cloudflare/references/spectrum/api.md +184 -0
- package/skills/cloudflare/references/spectrum/configuration.md +203 -0
- package/skills/cloudflare/references/spectrum/gotchas.md +155 -0
- package/skills/cloudflare/references/spectrum/patterns.md +206 -0
- package/skills/cloudflare/references/static-assets/README.md +65 -0
- package/skills/cloudflare/references/static-assets/api.md +201 -0
- package/skills/cloudflare/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare/references/static-assets/gotchas.md +164 -0
- package/skills/cloudflare/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare/references/stream/README.md +123 -0
- package/skills/cloudflare/references/stream/api-live.md +202 -0
- package/skills/cloudflare/references/stream/api.md +206 -0
- package/skills/cloudflare/references/stream/configuration.md +151 -0
- package/skills/cloudflare/references/stream/gotchas.md +139 -0
- package/skills/cloudflare/references/stream/patterns.md +217 -0
- package/skills/cloudflare/references/tail-workers/README.md +92 -0
- package/skills/cloudflare/references/tail-workers/api.md +203 -0
- package/skills/cloudflare/references/tail-workers/configuration.md +178 -0
- package/skills/cloudflare/references/tail-workers/gotchas.md +206 -0
- package/skills/cloudflare/references/tail-workers/patterns.md +190 -0
- package/skills/cloudflare/references/terraform/README.md +100 -0
- package/skills/cloudflare/references/terraform/api.md +178 -0
- package/skills/cloudflare/references/terraform/configuration.md +197 -0
- package/skills/cloudflare/references/terraform/gotchas.md +150 -0
- package/skills/cloudflare/references/terraform/patterns.md +174 -0
- package/skills/cloudflare/references/tunnel/README.md +137 -0
- package/skills/cloudflare/references/tunnel/api.md +205 -0
- package/skills/cloudflare/references/tunnel/configuration.md +163 -0
- package/skills/cloudflare/references/tunnel/gotchas.md +159 -0
- package/skills/cloudflare/references/tunnel/networking.md +174 -0
- package/skills/cloudflare/references/tunnel/patterns.md +199 -0
- package/skills/cloudflare/references/turn/README.md +86 -0
- package/skills/cloudflare/references/turn/api.md +236 -0
- package/skills/cloudflare/references/turn/configuration.md +181 -0
- package/skills/cloudflare/references/turn/gotchas.md +236 -0
- package/skills/cloudflare/references/turn/patterns.md +228 -0
- package/skills/cloudflare/references/turnstile/README.md +102 -0
- package/skills/cloudflare/references/turnstile/api.md +253 -0
- package/skills/cloudflare/references/turnstile/configuration.md +242 -0
- package/skills/cloudflare/references/turnstile/gotchas.md +253 -0
- package/skills/cloudflare/references/turnstile/patterns.md +195 -0
- package/skills/cloudflare/references/vectorize/README.md +133 -0
- package/skills/cloudflare/references/vectorize/api.md +89 -0
- package/skills/cloudflare/references/vectorize/configuration.md +91 -0
- package/skills/cloudflare/references/vectorize/gotchas.md +83 -0
- package/skills/cloudflare/references/vectorize/patterns.md +92 -0
- package/skills/cloudflare/references/waf/README.md +125 -0
- package/skills/cloudflare/references/waf/api.md +203 -0
- package/skills/cloudflare/references/waf/configuration.md +215 -0
- package/skills/cloudflare/references/waf/gotchas.md +208 -0
- package/skills/cloudflare/references/waf/patterns.md +236 -0
- package/skills/cloudflare/references/web-analytics/README.md +149 -0
- package/skills/cloudflare/references/web-analytics/configuration.md +81 -0
- package/skills/cloudflare/references/web-analytics/gotchas.md +86 -0
- package/skills/cloudflare/references/web-analytics/integration.md +63 -0
- package/skills/cloudflare/references/web-analytics/patterns.md +98 -0
- package/skills/cloudflare/references/workerd/README.md +85 -0
- package/skills/cloudflare/references/workerd/api.md +219 -0
- package/skills/cloudflare/references/workerd/configuration.md +200 -0
- package/skills/cloudflare/references/workerd/gotchas.md +151 -0
- package/skills/cloudflare/references/workerd/patterns.md +205 -0
- package/skills/cloudflare/references/workers/README.md +110 -0
- package/skills/cloudflare/references/workers/api.md +197 -0
- package/skills/cloudflare/references/workers/configuration.md +184 -0
- package/skills/cloudflare/references/workers/frameworks.md +200 -0
- package/skills/cloudflare/references/workers/gotchas.md +145 -0
- package/skills/cloudflare/references/workers/patterns.md +220 -0
- package/skills/cloudflare/references/workers-ai/README.md +206 -0
- package/skills/cloudflare/references/workers-ai/api.md +115 -0
- package/skills/cloudflare/references/workers-ai/configuration.md +98 -0
- package/skills/cloudflare/references/workers-ai/gotchas.md +130 -0
- package/skills/cloudflare/references/workers-ai/patterns.md +122 -0
- package/skills/cloudflare/references/workers-for-platforms/README.md +95 -0
- package/skills/cloudflare/references/workers-for-platforms/api.md +212 -0
- package/skills/cloudflare/references/workers-for-platforms/configuration.md +178 -0
- package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare/references/workers-for-platforms/patterns.md +210 -0
- package/skills/cloudflare/references/workers-playground/README.md +131 -0
- package/skills/cloudflare/references/workers-playground/api.md +101 -0
- package/skills/cloudflare/references/workers-playground/configuration.md +169 -0
- package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare/references/workers-playground/patterns.md +134 -0
- package/skills/cloudflare/references/workers-vpc/README.md +130 -0
- package/skills/cloudflare/references/workers-vpc/api.md +196 -0
- package/skills/cloudflare/references/workers-vpc/configuration.md +151 -0
- package/skills/cloudflare/references/workers-vpc/gotchas.md +171 -0
- package/skills/cloudflare/references/workers-vpc/patterns.md +235 -0
- package/skills/cloudflare/references/workflows/README.md +72 -0
- package/skills/cloudflare/references/workflows/api.md +237 -0
- package/skills/cloudflare/references/workflows/configuration.md +158 -0
- package/skills/cloudflare/references/workflows/gotchas.md +97 -0
- package/skills/cloudflare/references/workflows/patterns.md +245 -0
- package/skills/cloudflare/references/wrangler/README.md +143 -0
- package/skills/cloudflare/references/wrangler/api.md +188 -0
- package/skills/cloudflare/references/wrangler/configuration.md +198 -0
- package/skills/cloudflare/references/wrangler/gotchas.md +212 -0
- package/skills/cloudflare/references/wrangler/patterns.md +211 -0
- package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +131 -0
- package/skills/cloudflare/references/zaraz/README.md +114 -0
- package/skills/cloudflare/references/zaraz/api.md +118 -0
- package/skills/cloudflare/references/zaraz/configuration.md +94 -0
- package/skills/cloudflare/references/zaraz/gotchas.md +88 -0
- package/skills/cloudflare/references/zaraz/patterns.md +77 -0
- package/skills/docker/SKILL.md +7 -101
- package/skills/docker/references/advanced-examples.md +71 -0
- package/skills/docker/references/templates.md +34 -0
- package/skills/docs-marketer/SKILL.md +178 -0
- package/skills/docs-marketer/references/audit-categories.md +328 -0
- package/skills/docs-marketer/references/copilot-docs-prompts.md +88 -0
- package/skills/docs-marketer/references/copilot-usage.md +16 -0
- package/skills/docs-marketer/references/feedback-loop.md +155 -0
- package/skills/docs-marketer/references/multi-pass-docs-protocol.md +410 -0
- package/skills/drizzle-orm/SKILL.md +82 -0
- package/skills/durable-objects/SKILL.md +167 -0
- package/skills/durable-objects/references/advanced_features.md +29 -0
- package/skills/durable-objects/references/rules.md +300 -0
- package/skills/durable-objects/references/testing.md +261 -0
- package/skills/durable-objects/references/workers.md +336 -0
- package/skills/gcp/SKILL.md +37 -0
- package/skills/github-actions/SKILL.md +5 -58
- package/skills/github-actions/references/templates.md +65 -0
- package/skills/github-commander/SKILL.md +13 -21
- package/skills/github-commander/workflows/copilot-audit.md +12 -12
- package/skills/github-copilot-cli/SKILL.md +21 -26
- package/skills/github-repo-setup/SKILL.md +136 -0
- package/skills/github-repo-setup/references/community-standards.md +136 -0
- package/skills/github-repo-setup/references/github-automation.md +490 -0
- package/skills/github-repo-setup/references/inline-templates.md +205 -0
- package/skills/github-repo-setup/references/project-config.md +320 -0
- package/skills/gitlab/SKILL.md +7 -2
- package/skills/gitlab/package-lock.json +389 -389
- package/skills/golang/SKILL.md +8 -1
- package/skills/graphql/SKILL.md +30 -0
- package/skills/hono/SKILL.md +82 -0
- package/skills/journal-optimizer/SKILL.md +206 -0
- package/skills/journal-optimizer/references/optimizer-scripts.md +169 -0
- package/skills/llm-app-engineering/SKILL.md +18 -0
- package/skills/monorepo/SKILL.md +56 -0
- package/skills/multi-agent-orchestration/SKILL.md +14 -0
- package/skills/mysql/SKILL.md +6 -2
- package/skills/next-best-practices/SKILL.md +86 -0
- package/skills/next-best-practices/references/cache-components-examples.md +234 -0
- package/skills/next-best-practices/references/cache-components.md +210 -0
- package/skills/next-best-practices/references/upgrade-decision-tree.md +33 -0
- package/skills/next-best-practices/references/upgrade.md +43 -0
- package/skills/next-cache-components/SKILL.md +441 -0
- package/skills/next-upgrade/SKILL.md +43 -0
- package/skills/next-upgrade/references/decision-tree.md +33 -0
- package/skills/nodejs/SKILL.md +46 -0
- package/skills/opentelemetry/SKILL.md +62 -0
- package/skills/package.json +39 -4
- package/skills/playwright-standard/SKILL.md +6 -11
- package/skills/playwright-standard/references/locators.md +7 -0
- package/skills/postgres/SKILL.md +6 -1
- package/skills/python/SKILL.md +8 -70
- package/skills/python/references/advanced-patterns.md +37 -0
- package/skills/python/references/config-templates.md +48 -0
- package/skills/rag-pipelines/SKILL.md +14 -0
- package/skills/redis/SKILL.md +31 -0
- package/skills/render/SKILL.md +35 -0
- package/skills/rust/SKILL.md +15 -25
- package/skills/rust/references/borrow-checker.md +13 -0
- package/skills/rust/references/ecosystem.md +11 -0
- package/skills/sandbox-sdk/SKILL.md +186 -0
- package/skills/sandbox-sdk/references/api-quick-ref.md +113 -0
- package/skills/sandbox-sdk/references/examples.md +52 -0
- package/skills/shadcn-ui/SKILL.md +22 -57
- package/skills/skill-builder/SKILL.md +23 -424
- package/skills/skill-builder/references/tutorial.md +457 -0
- package/skills/sqlite/SKILL.md +16 -5
- package/skills/table.md +59 -0
- package/skills/tailwind-css/SKILL.md +11 -60
- package/skills/tailwind-css/references/component-patterns.md +52 -0
- package/skills/trpc/SKILL.md +56 -0
- package/skills/typescript/SKILL.md +30 -433
- package/skills/typescript/references/tutorial.md +453 -0
- package/skills/vercel-ai-sdk/SKILL.md +48 -0
- package/skills/vitest-standard/SKILL.md +5 -11
- package/skills/vitest-standard/references/assertions.md +11 -0
- package/skills/web-perf/SKILL.md +207 -0
- package/skills/workers-best-practices/SKILL.md +120 -0
- package/skills/workers-best-practices/references/anti-patterns.md +18 -0
- package/skills/workers-best-practices/references/review.md +174 -0
- package/skills/workers-best-practices/references/rules.md +485 -0
- package/skills/wrangler/SKILL.md +43 -0
- package/skills/wrangler/references/cli-commands.md +861 -0
- package/skills/zod/SKILL.md +48 -0
- package/dist/tools-P4VGG4FH.js +0 -1
- package/skills/react-best-practices/AGENTS.md +0 -2883
- package/skills/react-best-practices/SKILL.md +0 -138
- /package/skills/{react-best-practices → next-best-practices}/README.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/metadata.json +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/_sections.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/_template.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-event-handler-refs.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-init-once.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-use-latest.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-api-routes.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-defer-await.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-dependencies.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-parallel.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-suspense-boundaries.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-barrel-imports.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-conditional.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-defer-third-party.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-dynamic-imports.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-preload.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-event-listeners.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-localstorage-schema.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-passive-event-listeners.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-swr-dedup.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-batch-dom-css.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-function-results.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-property-access.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-storage.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-combine-iterations.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-early-exit.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-hoist-regexp.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-index-maps.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-length-check-first.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-min-max-loop.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-set-map-lookups.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-tosorted-immutable.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-activity.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-animate-svg-wrapper.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-conditional-render.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-content-visibility.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hoist-jsx.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-no-flicker.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-suppress-warning.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-svg-precision.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-usetransition-loading.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-defer-reads.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-dependencies.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state-no-effect.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-functional-setstate.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-lazy-state-init.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo-with-default-value.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-move-effect-to-event.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-simple-expression-in-memo.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-transitions.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-use-ref-transient-values.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-after-nonblocking.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-auth-actions.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-lru.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-react.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-dedup-props.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-parallel-fetching.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-serialization.md +0 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
## Common Use Cases
|
|
2
|
+
|
|
3
|
+
### 1. SSH Server Protection
|
|
4
|
+
|
|
5
|
+
**Terraform:**
|
|
6
|
+
|
|
7
|
+
```hcl
|
|
8
|
+
resource "cloudflare_spectrum_application" "ssh" {
|
|
9
|
+
zone_id = var.zone_id
|
|
10
|
+
protocol = "tcp/22"
|
|
11
|
+
|
|
12
|
+
dns {
|
|
13
|
+
type = "CNAME"
|
|
14
|
+
name = "ssh.example.com"
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
origin_direct = ["tcp://10.0.1.5:22"]
|
|
18
|
+
ip_firewall = true
|
|
19
|
+
argo_smart_routing = true
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Benefits:** Hide origin IP, DDoS protection, IP firewall, Argo reduces latency
|
|
24
|
+
|
|
25
|
+
### 2. Game Server
|
|
26
|
+
|
|
27
|
+
**TypeScript (Minecraft):**
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
const app = await client.spectrum.apps.create({
|
|
31
|
+
zone_id: 'your-zone-id',
|
|
32
|
+
protocol: 'tcp/25565',
|
|
33
|
+
dns: { type: 'CNAME', name: 'mc.example.com' },
|
|
34
|
+
origin_direct: ['tcp://192.168.1.10:25565'],
|
|
35
|
+
proxy_protocol: 'v1', // Preserves player IPs
|
|
36
|
+
argo_smart_routing: true,
|
|
37
|
+
})
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Benefits:** DDoS protection, hide origin IP, Proxy Protocol for player IPs/bans, Argo reduces latency
|
|
41
|
+
|
|
42
|
+
### 3. MQTT Broker
|
|
43
|
+
|
|
44
|
+
IoT device communication.
|
|
45
|
+
|
|
46
|
+
**TypeScript:**
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
const mqttApp = await client.spectrum.apps.create({
|
|
50
|
+
zone_id: 'your-zone-id',
|
|
51
|
+
protocol: 'tcp/8883', // Use 1883 for plain MQTT
|
|
52
|
+
dns: { type: 'CNAME', name: 'mqtt.example.com' },
|
|
53
|
+
origin_direct: ['tcp://mqtt-broker.internal:8883'],
|
|
54
|
+
tls: 'full', // Use 'off' for plain MQTT
|
|
55
|
+
})
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Benefits:** DDoS protection, hide broker IP, TLS termination at edge
|
|
59
|
+
|
|
60
|
+
### 4. SMTP Relay
|
|
61
|
+
|
|
62
|
+
Email submission (port 587). **WARNING**: See [gotchas.md](gotchas.md#smtp-reverse-dns)
|
|
63
|
+
|
|
64
|
+
**Terraform:**
|
|
65
|
+
|
|
66
|
+
```hcl
|
|
67
|
+
resource "cloudflare_spectrum_application" "smtp" {
|
|
68
|
+
zone_id = var.zone_id
|
|
69
|
+
protocol = "tcp/587"
|
|
70
|
+
|
|
71
|
+
dns {
|
|
72
|
+
type = "CNAME"
|
|
73
|
+
name = "smtp.example.com"
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
origin_direct = ["tcp://mail-server.internal:587"]
|
|
77
|
+
tls = "full" # STARTTLS support
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Limitations:**
|
|
82
|
+
|
|
83
|
+
- Spectrum IPs lack reverse DNS (PTR records)
|
|
84
|
+
- Many mail servers reject without valid rDNS
|
|
85
|
+
- Best for internal/trusted relay only
|
|
86
|
+
|
|
87
|
+
### 5. Database Proxy
|
|
88
|
+
|
|
89
|
+
MySQL/PostgreSQL. **Use with caution** - security critical.
|
|
90
|
+
|
|
91
|
+
**PostgreSQL:**
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
const postgresApp = await client.spectrum.apps.create({
|
|
95
|
+
zone_id: 'your-zone-id',
|
|
96
|
+
protocol: 'tcp/5432',
|
|
97
|
+
dns: { type: 'CNAME', name: 'postgres.example.com' },
|
|
98
|
+
origin_dns: { name: 'db-primary.internal.example.com' },
|
|
99
|
+
origin_port: 5432,
|
|
100
|
+
tls: 'strict', // REQUIRED
|
|
101
|
+
ip_firewall: true, // REQUIRED
|
|
102
|
+
})
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**MySQL:**
|
|
106
|
+
|
|
107
|
+
```hcl
|
|
108
|
+
resource "cloudflare_spectrum_application" "mysql" {
|
|
109
|
+
zone_id = var.zone_id
|
|
110
|
+
protocol = "tcp/3306"
|
|
111
|
+
|
|
112
|
+
dns {
|
|
113
|
+
type = "CNAME"
|
|
114
|
+
name = "mysql.example.com"
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
origin_dns {
|
|
118
|
+
name = "mysql-primary.internal.example.com"
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
origin_port = 3306
|
|
122
|
+
tls = "strict"
|
|
123
|
+
ip_firewall = true
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Security:**
|
|
128
|
+
|
|
129
|
+
- ALWAYS use `tls: "strict"`
|
|
130
|
+
- ALWAYS use `ip_firewall: true`
|
|
131
|
+
- Restrict to known IPs via zone firewall
|
|
132
|
+
- Use strong DB authentication
|
|
133
|
+
- Consider VPN or Cloudflare Access instead
|
|
134
|
+
|
|
135
|
+
### 6. RDP (Remote Desktop)
|
|
136
|
+
|
|
137
|
+
**Requires IP firewall.**
|
|
138
|
+
|
|
139
|
+
**Terraform:**
|
|
140
|
+
|
|
141
|
+
```hcl
|
|
142
|
+
resource "cloudflare_spectrum_application" "rdp" {
|
|
143
|
+
zone_id = var.zone_id
|
|
144
|
+
protocol = "tcp/3389"
|
|
145
|
+
|
|
146
|
+
dns {
|
|
147
|
+
type = "CNAME"
|
|
148
|
+
name = "rdp.example.com"
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
origin_direct = ["tcp://windows-server.internal:3389"]
|
|
152
|
+
tls = "off" # RDP has own encryption
|
|
153
|
+
ip_firewall = true # REQUIRED
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Security:** ALWAYS `ip_firewall: true`, whitelist admin IPs, RDP is DDoS/brute-force target
|
|
158
|
+
|
|
159
|
+
### 7. Multi-Origin Failover
|
|
160
|
+
|
|
161
|
+
High availability with load balancer.
|
|
162
|
+
|
|
163
|
+
**Terraform:**
|
|
164
|
+
|
|
165
|
+
```hcl
|
|
166
|
+
resource "cloudflare_load_balancer" "database_lb" {
|
|
167
|
+
zone_id = var.zone_id
|
|
168
|
+
name = "db-lb.example.com"
|
|
169
|
+
default_pool_ids = [cloudflare_load_balancer_pool.db_primary.id]
|
|
170
|
+
fallback_pool_id = cloudflare_load_balancer_pool.db_secondary.id
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
resource "cloudflare_load_balancer_pool" "db_primary" {
|
|
174
|
+
name = "db-primary-pool"
|
|
175
|
+
origins { name = "db-1"; address = "192.0.2.1" }
|
|
176
|
+
monitor = cloudflare_load_balancer_monitor.postgres_monitor.id
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
resource "cloudflare_load_balancer_pool" "db_secondary" {
|
|
180
|
+
name = "db-secondary-pool"
|
|
181
|
+
origins { name = "db-2"; address = "192.0.2.2" }
|
|
182
|
+
monitor = cloudflare_load_balancer_monitor.postgres_monitor.id
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
resource "cloudflare_load_balancer_monitor" "postgres_monitor" {
|
|
186
|
+
type = "tcp"; port = 5432; interval = 30; timeout = 5
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
resource "cloudflare_spectrum_application" "postgres_ha" {
|
|
190
|
+
zone_id = var.zone_id
|
|
191
|
+
protocol = "tcp/5432"
|
|
192
|
+
dns { type = "CNAME"; name = "postgres.example.com" }
|
|
193
|
+
origin_dns { name = cloudflare_load_balancer.database_lb.name }
|
|
194
|
+
origin_port = 5432
|
|
195
|
+
tls = "strict"
|
|
196
|
+
ip_firewall = true
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Benefits:** Automatic failover, health monitoring, traffic distribution, zero-downtime deployments
|
|
201
|
+
|
|
202
|
+
## See Also
|
|
203
|
+
|
|
204
|
+
- [configuration.md](configuration.md) - Origin type setup
|
|
205
|
+
- [gotchas.md](gotchas.md) - Protocol limitations
|
|
206
|
+
- [api.md](api.md) - SDK reference
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Cloudflare Static Assets Skill Reference
|
|
2
|
+
|
|
3
|
+
Expert guidance for deploying and configuring static assets with Cloudflare Workers. This skill covers configuration patterns, routing architectures, asset binding usage, and best practices for SPAs, SSG sites, and full-stack applications.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```jsonc
|
|
8
|
+
// wrangler.jsonc
|
|
9
|
+
{
|
|
10
|
+
"name": "my-app",
|
|
11
|
+
"main": "src/index.ts",
|
|
12
|
+
"compatibility_date": "2025-01-01",
|
|
13
|
+
"assets": {
|
|
14
|
+
"directory": "./dist",
|
|
15
|
+
},
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// src/index.ts
|
|
21
|
+
export default {
|
|
22
|
+
async fetch(request: Request, env: Env): Promise<Response> {
|
|
23
|
+
return env.ASSETS.fetch(request)
|
|
24
|
+
},
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Deploy: `wrangler deploy`
|
|
29
|
+
|
|
30
|
+
## When to Use Workers Static Assets vs Pages
|
|
31
|
+
|
|
32
|
+
| Factor | Workers Static Assets | Cloudflare Pages |
|
|
33
|
+
| ------------------- | ---------------------------------- | ------------------------ |
|
|
34
|
+
| **Use case** | Hybrid apps (static + dynamic API) | Static sites, SSG |
|
|
35
|
+
| **Worker control** | Full control over routing | Limited (Functions) |
|
|
36
|
+
| **Configuration** | Code-first, flexible | Git-based, opinionated |
|
|
37
|
+
| **Dynamic routing** | Worker-first patterns | Functions (\_functions/) |
|
|
38
|
+
| **Best for** | Full-stack apps, SPAs with APIs | Jamstack, static docs |
|
|
39
|
+
|
|
40
|
+
**Decision tree:**
|
|
41
|
+
|
|
42
|
+
- Need custom routing logic? → Workers Static Assets
|
|
43
|
+
- Pure static site or SSG? → Pages
|
|
44
|
+
- API routes + SPA? → Workers Static Assets
|
|
45
|
+
- Framework (Next, Nuxt, Remix)? → Pages
|
|
46
|
+
|
|
47
|
+
## Reading Order
|
|
48
|
+
|
|
49
|
+
1. **configuration.md** - Setup, wrangler.jsonc options, routing patterns
|
|
50
|
+
2. **api.md** - ASSETS binding API, request/response handling
|
|
51
|
+
3. **patterns.md** - Common patterns (SPA, API routes, auth, A/B testing)
|
|
52
|
+
4. **gotchas.md** - Limits, errors, performance tips
|
|
53
|
+
|
|
54
|
+
## In This Reference
|
|
55
|
+
|
|
56
|
+
- **[configuration.md](configuration.md)** - Setup, deployment, configuration
|
|
57
|
+
- **[api.md](api.md)** - API endpoints, methods, interfaces
|
|
58
|
+
- **[patterns.md](patterns.md)** - Common patterns, use cases, examples
|
|
59
|
+
- **[gotchas.md](gotchas.md)** - Troubleshooting, best practices, limitations
|
|
60
|
+
|
|
61
|
+
## See Also
|
|
62
|
+
|
|
63
|
+
- [Cloudflare Workers Docs](https://developers.cloudflare.com/workers/)
|
|
64
|
+
- [Static Assets Docs](https://developers.cloudflare.com/workers/static-assets/)
|
|
65
|
+
- [Cloudflare Pages](https://developers.cloudflare.com/pages/)
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# API Reference
|
|
2
|
+
|
|
3
|
+
## ASSETS Binding
|
|
4
|
+
|
|
5
|
+
The `ASSETS` binding provides access to static assets via the `Fetcher` interface.
|
|
6
|
+
|
|
7
|
+
### Type Definition
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
interface Env {
|
|
11
|
+
ASSETS: Fetcher
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface Fetcher {
|
|
15
|
+
fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Method Signatures
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// 1. Forward entire request
|
|
23
|
+
await env.ASSETS.fetch(request)
|
|
24
|
+
|
|
25
|
+
// 2. String path (hostname ignored, only path matters)
|
|
26
|
+
await env.ASSETS.fetch('https://any-host/path/to/asset.png')
|
|
27
|
+
|
|
28
|
+
// 3. URL object
|
|
29
|
+
await env.ASSETS.fetch(new URL('/index.html', request.url))
|
|
30
|
+
|
|
31
|
+
// 4. Constructed Request object
|
|
32
|
+
await env.ASSETS.fetch(
|
|
33
|
+
new Request(new URL('/logo.png', request.url), {
|
|
34
|
+
method: 'GET',
|
|
35
|
+
headers: request.headers,
|
|
36
|
+
})
|
|
37
|
+
)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Key behaviors:**
|
|
41
|
+
|
|
42
|
+
- Host/origin is ignored for string/URL inputs (only path is used)
|
|
43
|
+
- Method must be GET (others return 405)
|
|
44
|
+
- Request headers pass through (affects response)
|
|
45
|
+
- Returns standard `Response` object
|
|
46
|
+
|
|
47
|
+
## Request Handling
|
|
48
|
+
|
|
49
|
+
### Path Resolution
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
// All resolve to same asset:
|
|
53
|
+
env.ASSETS.fetch('https://example.com/logo.png')
|
|
54
|
+
env.ASSETS.fetch('https://ignored.host/logo.png')
|
|
55
|
+
env.ASSETS.fetch('/logo.png')
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Assets are resolved relative to configured `assets.directory`.
|
|
59
|
+
|
|
60
|
+
### Headers
|
|
61
|
+
|
|
62
|
+
Request headers that affect response:
|
|
63
|
+
|
|
64
|
+
| Header | Effect |
|
|
65
|
+
| ------------------- | ----------------------------------------- |
|
|
66
|
+
| `Accept-Encoding` | Controls compression (gzip, brotli) |
|
|
67
|
+
| `Range` | Enables partial content (206 responses) |
|
|
68
|
+
| `If-None-Match` | Conditional request via ETag |
|
|
69
|
+
| `If-Modified-Since` | Conditional request via modification date |
|
|
70
|
+
|
|
71
|
+
Custom headers pass through but don't affect asset serving.
|
|
72
|
+
|
|
73
|
+
### Method Support
|
|
74
|
+
|
|
75
|
+
| Method | Supported | Response |
|
|
76
|
+
| ------------------- | --------- | ---------------------- |
|
|
77
|
+
| `GET` | ✅ Yes | Asset content |
|
|
78
|
+
| `HEAD` | ✅ Yes | Headers only, no body |
|
|
79
|
+
| `POST`, `PUT`, etc. | ❌ No | 405 Method Not Allowed |
|
|
80
|
+
|
|
81
|
+
## Response Behavior
|
|
82
|
+
|
|
83
|
+
### Content-Type Inference
|
|
84
|
+
|
|
85
|
+
Automatically set based on file extension:
|
|
86
|
+
|
|
87
|
+
| Extension | Content-Type |
|
|
88
|
+
| --------------- | -------------------------- |
|
|
89
|
+
| `.html` | `text/html; charset=utf-8` |
|
|
90
|
+
| `.css` | `text/css` |
|
|
91
|
+
| `.js` | `application/javascript` |
|
|
92
|
+
| `.json` | `application/json` |
|
|
93
|
+
| `.png` | `image/png` |
|
|
94
|
+
| `.jpg`, `.jpeg` | `image/jpeg` |
|
|
95
|
+
| `.svg` | `image/svg+xml` |
|
|
96
|
+
| `.woff2` | `font/woff2` |
|
|
97
|
+
|
|
98
|
+
### Default Headers
|
|
99
|
+
|
|
100
|
+
Responses include:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Content-Type: <inferred>
|
|
104
|
+
ETag: "<hash>"
|
|
105
|
+
Cache-Control: public, max-age=3600
|
|
106
|
+
Content-Encoding: br (if supported and beneficial)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Cache-Control defaults:**
|
|
110
|
+
|
|
111
|
+
- 1 hour (`max-age=3600`) for most assets
|
|
112
|
+
- Override via Worker response transformation (see patterns.md:27-35)
|
|
113
|
+
|
|
114
|
+
### Compression
|
|
115
|
+
|
|
116
|
+
Automatic compression based on `Accept-Encoding`:
|
|
117
|
+
|
|
118
|
+
- **Brotli** (`br`): Preferred, best compression
|
|
119
|
+
- **Gzip** (`gzip`): Fallback
|
|
120
|
+
- **None**: If client doesn't support or asset too small
|
|
121
|
+
|
|
122
|
+
### ETag Generation
|
|
123
|
+
|
|
124
|
+
ETags are content-based hashes:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
ETag: "a3b2c1d4e5f6..."
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Used for conditional requests (`If-None-Match`). Returns `304 Not Modified` if match.
|
|
131
|
+
|
|
132
|
+
## Error Responses
|
|
133
|
+
|
|
134
|
+
| Status | Condition | Behavior |
|
|
135
|
+
| ------ | -------------------- | ------------------------------------------- |
|
|
136
|
+
| `404` | Asset not found | Body depends on `not_found_handling` config |
|
|
137
|
+
| `405` | Non-GET/HEAD method | `{ "error": "Method not allowed" }` |
|
|
138
|
+
| `416` | Invalid Range header | Range not satisfiable |
|
|
139
|
+
|
|
140
|
+
### 404 Handling
|
|
141
|
+
|
|
142
|
+
Depends on configuration (see configuration.md:45-52):
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
// not_found_handling: "single-page-application"
|
|
146
|
+
// Returns /index.html with 200 status
|
|
147
|
+
|
|
148
|
+
// not_found_handling: "404-page"
|
|
149
|
+
// Returns /404.html if exists, else 404 response
|
|
150
|
+
|
|
151
|
+
// not_found_handling: "none"
|
|
152
|
+
// Returns 404 response
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Advanced Usage
|
|
156
|
+
|
|
157
|
+
### Modifying Responses
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
const response = await env.ASSETS.fetch(request)
|
|
161
|
+
|
|
162
|
+
// Clone and modify
|
|
163
|
+
return new Response(response.body, {
|
|
164
|
+
status: response.status,
|
|
165
|
+
headers: {
|
|
166
|
+
...Object.fromEntries(response.headers),
|
|
167
|
+
'Cache-Control': 'public, max-age=31536000',
|
|
168
|
+
'X-Custom': 'value',
|
|
169
|
+
},
|
|
170
|
+
})
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
See patterns.md:27-35 for full example.
|
|
174
|
+
|
|
175
|
+
### Error Handling
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
const response = await env.ASSETS.fetch(request)
|
|
179
|
+
|
|
180
|
+
if (!response.ok) {
|
|
181
|
+
// Asset not found or error
|
|
182
|
+
return new Response('Custom error page', { status: 404 })
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return response
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Conditional Serving
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
const url = new URL(request.url)
|
|
192
|
+
|
|
193
|
+
// Serve different assets based on conditions
|
|
194
|
+
if (url.pathname === '/') {
|
|
195
|
+
return env.ASSETS.fetch('/index.html')
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
return env.ASSETS.fetch(request)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
See patterns.md for complete patterns.
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
## Configuration
|
|
2
|
+
|
|
3
|
+
### Basic Setup
|
|
4
|
+
|
|
5
|
+
Minimal configuration requires only `assets.directory`:
|
|
6
|
+
|
|
7
|
+
```jsonc
|
|
8
|
+
{
|
|
9
|
+
"name": "my-worker",
|
|
10
|
+
"compatibility_date": "2025-01-01", // Use current date for new projects
|
|
11
|
+
"assets": {
|
|
12
|
+
"directory": "./dist",
|
|
13
|
+
},
|
|
14
|
+
}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Full Configuration Options
|
|
18
|
+
|
|
19
|
+
```jsonc
|
|
20
|
+
{
|
|
21
|
+
"name": "my-worker",
|
|
22
|
+
"main": "src/index.ts",
|
|
23
|
+
"compatibility_date": "2025-01-01",
|
|
24
|
+
"assets": {
|
|
25
|
+
"directory": "./dist",
|
|
26
|
+
"binding": "ASSETS",
|
|
27
|
+
"not_found_handling": "single-page-application",
|
|
28
|
+
"html_handling": "auto-trailing-slash",
|
|
29
|
+
"run_worker_first": ["/api/*", "!/api/docs/*"],
|
|
30
|
+
},
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Configuration keys:**
|
|
35
|
+
|
|
36
|
+
- `directory` (string, required): Path to assets folder (e.g. `./dist`, `./public`, `./build`)
|
|
37
|
+
- `binding` (string, optional): Name to access assets in Worker code (e.g. `env.ASSETS`). Default: `"ASSETS"`
|
|
38
|
+
- `not_found_handling` (string, optional): Behavior when asset not found
|
|
39
|
+
- `"single-page-application"`: Serve `/index.html` for non-asset paths (default for SPAs)
|
|
40
|
+
- `"404-page"`: Serve `/404.html` if present, otherwise 404
|
|
41
|
+
- `"none"`: Return 404 for missing assets
|
|
42
|
+
- `html_handling` (string, optional): URL trailing slash behavior
|
|
43
|
+
- `run_worker_first` (boolean | string[], optional): Routes that invoke Worker before checking assets
|
|
44
|
+
|
|
45
|
+
### not_found_handling Modes
|
|
46
|
+
|
|
47
|
+
| Mode | Behavior | Use Case |
|
|
48
|
+
| --------------------------- | ------------------------------------------ | ----------------------------------- |
|
|
49
|
+
| `"single-page-application"` | Serve `/index.html` for non-asset requests | React, Vue, Angular SPAs |
|
|
50
|
+
| `"404-page"` | Serve `/404.html` if exists, else 404 | Static sites with custom error page |
|
|
51
|
+
| `"none"` | Return 404 for missing assets | API-first or custom routing |
|
|
52
|
+
|
|
53
|
+
### html_handling Modes
|
|
54
|
+
|
|
55
|
+
Controls trailing slash behavior for HTML files:
|
|
56
|
+
|
|
57
|
+
| Mode | `/page` | `/page/` | Use Case |
|
|
58
|
+
| ------------------------ | ------------------------------------------------- | ------------------------ | --------------------------- |
|
|
59
|
+
| `"auto-trailing-slash"` | Redirect to `/page/` if `/page/index.html` exists | Serve `/page/index.html` | Default, SEO-friendly |
|
|
60
|
+
| `"force-trailing-slash"` | Always redirect to `/page/` | Serve if exists | Consistent trailing slashes |
|
|
61
|
+
| `"drop-trailing-slash"` | Serve if exists | Redirect to `/page` | Cleaner URLs |
|
|
62
|
+
| `"none"` | No modification | No modification | Custom routing logic |
|
|
63
|
+
|
|
64
|
+
**Default:** `"auto-trailing-slash"`
|
|
65
|
+
|
|
66
|
+
### run_worker_first Configuration
|
|
67
|
+
|
|
68
|
+
Controls which requests invoke Worker before checking assets.
|
|
69
|
+
|
|
70
|
+
**Boolean syntax:**
|
|
71
|
+
|
|
72
|
+
```jsonc
|
|
73
|
+
{
|
|
74
|
+
"assets": {
|
|
75
|
+
"run_worker_first": true, // ALL requests invoke Worker
|
|
76
|
+
},
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Array syntax (recommended):**
|
|
81
|
+
|
|
82
|
+
```jsonc
|
|
83
|
+
{
|
|
84
|
+
"assets": {
|
|
85
|
+
"run_worker_first": [
|
|
86
|
+
"/api/*", // Positive pattern: match API routes
|
|
87
|
+
"/admin/*", // Match admin routes
|
|
88
|
+
"!/admin/assets/*", // Negative pattern: exclude admin assets
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**Pattern rules:**
|
|
95
|
+
|
|
96
|
+
- Glob patterns: `*` (any chars), `**` (any path segments)
|
|
97
|
+
- Negative patterns: Prefix with `!` to exclude
|
|
98
|
+
- Precedence: Negative patterns override positive patterns
|
|
99
|
+
- Default: `false` (assets served directly)
|
|
100
|
+
|
|
101
|
+
**Decision guidance:**
|
|
102
|
+
|
|
103
|
+
- Use `true` for API-first apps (few static assets)
|
|
104
|
+
- Use array patterns for hybrid apps (APIs + static assets)
|
|
105
|
+
- Use `false` for static-first sites (minimal dynamic routes)
|
|
106
|
+
|
|
107
|
+
### .assetsignore File
|
|
108
|
+
|
|
109
|
+
Exclude files from upload using `.assetsignore` (same syntax as `.gitignore`):
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
# .assetsignore
|
|
113
|
+
_worker.js
|
|
114
|
+
*.map
|
|
115
|
+
*.md
|
|
116
|
+
node_modules/
|
|
117
|
+
.git/
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Common patterns:**
|
|
121
|
+
|
|
122
|
+
- `_worker.js` - Exclude Worker code from assets
|
|
123
|
+
- `*.map` - Exclude source maps
|
|
124
|
+
- `*.md` - Exclude markdown files
|
|
125
|
+
- Development artifacts
|
|
126
|
+
|
|
127
|
+
### Vite Plugin Integration
|
|
128
|
+
|
|
129
|
+
For Vite-based projects, use `@cloudflare/vite-plugin`:
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
// vite.config.ts
|
|
133
|
+
import { defineConfig } from 'vite'
|
|
134
|
+
import { cloudflare } from '@cloudflare/vite-plugin'
|
|
135
|
+
|
|
136
|
+
export default defineConfig({
|
|
137
|
+
plugins: [
|
|
138
|
+
cloudflare({
|
|
139
|
+
assets: {
|
|
140
|
+
directory: './dist',
|
|
141
|
+
binding: 'ASSETS',
|
|
142
|
+
},
|
|
143
|
+
}),
|
|
144
|
+
],
|
|
145
|
+
})
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Features:**
|
|
149
|
+
|
|
150
|
+
- Automatic asset detection during dev
|
|
151
|
+
- Hot module replacement for assets
|
|
152
|
+
- Production build integration
|
|
153
|
+
- Requires: Wrangler 4.0.0+, `@cloudflare/vite-plugin` 1.0.0+
|
|
154
|
+
|
|
155
|
+
### Key Compatibility Dates
|
|
156
|
+
|
|
157
|
+
| Date | Feature | Impact |
|
|
158
|
+
| ------------ | ------------------------------- | ----------------------------------------------- |
|
|
159
|
+
| `2025-04-01` | Navigation request optimization | SPAs skip Worker for navigation, reducing costs |
|
|
160
|
+
|
|
161
|
+
Use current date for new projects. See [Compatibility Dates](https://developers.cloudflare.com/workers/configuration/compatibility-dates/) for full list.
|
|
162
|
+
|
|
163
|
+
### Environment-Specific Configuration
|
|
164
|
+
|
|
165
|
+
Use `wrangler.jsonc` environments for different configs:
|
|
166
|
+
|
|
167
|
+
```jsonc
|
|
168
|
+
{
|
|
169
|
+
"name": "my-worker",
|
|
170
|
+
"assets": { "directory": "./dist" },
|
|
171
|
+
"env": {
|
|
172
|
+
"staging": {
|
|
173
|
+
"assets": {
|
|
174
|
+
"not_found_handling": "404-page",
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
"production": {
|
|
178
|
+
"assets": {
|
|
179
|
+
"not_found_handling": "single-page-application",
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Deploy with: `wrangler deploy --env staging`
|