memory-journal-mcp 7.7.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -56
- package/dist/chunk-6OHRCNYW.js +3231 -0
- package/dist/chunk-JFMITANR.js +5168 -0
- package/dist/{chunk-QCQPAF4I.js → chunk-MWNLAEHR.js} +301 -4321
- package/dist/{chunk-ARLYSFSI.js → chunk-UHSO65A4.js} +4242 -6092
- 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 +7 -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,208 @@
|
|
|
1
|
+
# Common Patterns
|
|
2
|
+
|
|
3
|
+
## List All with Auto-Pagination
|
|
4
|
+
|
|
5
|
+
**Problem:** API returns paginated results. Default page size is 20.
|
|
6
|
+
|
|
7
|
+
**Solution:** Use SDK auto-pagination to iterate all results.
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
// TypeScript
|
|
11
|
+
for await (const zone of client.zones.list()) {
|
|
12
|
+
console.log(zone.name)
|
|
13
|
+
}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
# Python
|
|
18
|
+
for zone in client.zones.list():
|
|
19
|
+
print(zone.name)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
```go
|
|
23
|
+
// Go
|
|
24
|
+
iter := client.Zones.ListAutoPaging(ctx, cloudflare.ZoneListParams{})
|
|
25
|
+
for iter.Next() {
|
|
26
|
+
fmt.Println(iter.Current().Name)
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Error Handling with Retry
|
|
31
|
+
|
|
32
|
+
**Problem:** Rate limits (429) and transient errors need retry.
|
|
33
|
+
|
|
34
|
+
**Solution:** SDKs auto-retry with exponential backoff. Customize as needed.
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// Increase retries for rate-limit-heavy operations
|
|
38
|
+
const client = new Cloudflare({ maxRetries: 5 })
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
const zone = await client.zones.create({
|
|
42
|
+
/* ... */
|
|
43
|
+
})
|
|
44
|
+
} catch (err) {
|
|
45
|
+
if (err instanceof Cloudflare.RateLimitError) {
|
|
46
|
+
// Already retried 5 times with backoff
|
|
47
|
+
const retryAfter = err.headers['retry-after']
|
|
48
|
+
console.log(`Rate limited. Retry after ${retryAfter}s`)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Batch Parallel Operations
|
|
54
|
+
|
|
55
|
+
**Problem:** Need to create multiple resources quickly.
|
|
56
|
+
|
|
57
|
+
**Solution:** Use `Promise.all()` for parallel requests (respect rate limits).
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
// Create multiple DNS records in parallel
|
|
61
|
+
const records = ['www', 'api', 'cdn'].map((subdomain) =>
|
|
62
|
+
client.dns.records.create({
|
|
63
|
+
zone_id: 'zone-id',
|
|
64
|
+
type: 'A',
|
|
65
|
+
name: `${subdomain}.example.com`,
|
|
66
|
+
content: '192.0.2.1',
|
|
67
|
+
})
|
|
68
|
+
)
|
|
69
|
+
await Promise.all(records)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Controlled concurrency** (avoid rate limits):
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
import pLimit from 'p-limit'
|
|
76
|
+
const limit = pLimit(10) // Max 10 concurrent
|
|
77
|
+
|
|
78
|
+
const subdomains = ['www', 'api', 'cdn' /* many more */]
|
|
79
|
+
const records = subdomains.map((subdomain) =>
|
|
80
|
+
limit(() =>
|
|
81
|
+
client.dns.records.create({
|
|
82
|
+
zone_id: 'zone-id',
|
|
83
|
+
type: 'A',
|
|
84
|
+
name: `${subdomain}.example.com`,
|
|
85
|
+
content: '192.0.2.1',
|
|
86
|
+
})
|
|
87
|
+
)
|
|
88
|
+
)
|
|
89
|
+
await Promise.all(records)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Zone CRUD Workflow
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
// Create
|
|
96
|
+
const zone = await client.zones.create({
|
|
97
|
+
account: { id: 'account-id' },
|
|
98
|
+
name: 'example.com',
|
|
99
|
+
type: 'full',
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
// Read
|
|
103
|
+
const fetched = await client.zones.get({ zone_id: zone.id })
|
|
104
|
+
|
|
105
|
+
// Update
|
|
106
|
+
await client.zones.edit(zone.id, { paused: false })
|
|
107
|
+
|
|
108
|
+
// Delete
|
|
109
|
+
await client.zones.delete(zone.id)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## DNS Bulk Update
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
// Fetch all A records
|
|
116
|
+
const records = []
|
|
117
|
+
for await (const record of client.dns.records.list({
|
|
118
|
+
zone_id: 'zone-id',
|
|
119
|
+
type: 'A',
|
|
120
|
+
})) {
|
|
121
|
+
records.push(record)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Update all to new IP
|
|
125
|
+
await Promise.all(
|
|
126
|
+
records.map((record) =>
|
|
127
|
+
client.dns.records.update({
|
|
128
|
+
zone_id: 'zone-id',
|
|
129
|
+
dns_record_id: record.id,
|
|
130
|
+
type: 'A',
|
|
131
|
+
name: record.name,
|
|
132
|
+
content: '203.0.113.1', // New IP
|
|
133
|
+
proxied: record.proxied,
|
|
134
|
+
ttl: record.ttl,
|
|
135
|
+
})
|
|
136
|
+
)
|
|
137
|
+
)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Filter and Collect Results
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
// Find all proxied A records
|
|
144
|
+
const proxiedRecords = []
|
|
145
|
+
for await (const record of client.dns.records.list({
|
|
146
|
+
zone_id: 'zone-id',
|
|
147
|
+
type: 'A',
|
|
148
|
+
})) {
|
|
149
|
+
if (record.proxied) {
|
|
150
|
+
proxiedRecords.push(record)
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Error Recovery Pattern
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
async function createZoneWithRetry(name: string, maxAttempts = 3) {
|
|
159
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
160
|
+
try {
|
|
161
|
+
return await client.zones.create({
|
|
162
|
+
account: { id: 'account-id' },
|
|
163
|
+
name,
|
|
164
|
+
type: 'full',
|
|
165
|
+
})
|
|
166
|
+
} catch (err) {
|
|
167
|
+
if (err instanceof Cloudflare.RateLimitError && attempt < maxAttempts) {
|
|
168
|
+
const retryAfter = parseInt(err.headers['retry-after'] || '5')
|
|
169
|
+
console.log(`Rate limited, waiting ${retryAfter}s (retry ${attempt}/${maxAttempts})`)
|
|
170
|
+
await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000))
|
|
171
|
+
} else {
|
|
172
|
+
throw err
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Conditional Update Pattern
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
// Only update if zone is active
|
|
183
|
+
const zone = await client.zones.get({ zone_id: 'zone-id' })
|
|
184
|
+
if (zone.status === 'active') {
|
|
185
|
+
await client.zones.edit(zone.id, { paused: false })
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Batch with Error Handling
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
// Process multiple zones, continue on errors
|
|
193
|
+
const results = await Promise.allSettled(zoneIds.map((id) => client.zones.get({ zone_id: id })))
|
|
194
|
+
|
|
195
|
+
results.forEach((result, i) => {
|
|
196
|
+
if (result.status === 'fulfilled') {
|
|
197
|
+
console.log(`Zone ${i}: ${result.value.name}`)
|
|
198
|
+
} else {
|
|
199
|
+
console.error(`Zone ${i} failed:`, result.reason.message)
|
|
200
|
+
}
|
|
201
|
+
})
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## See Also
|
|
205
|
+
|
|
206
|
+
- [api.md](./api.md) - SDK client initialization, basic operations
|
|
207
|
+
- [gotchas.md](./gotchas.md) - Rate limits, common errors
|
|
208
|
+
- [configuration.md](./configuration.md) - SDK configuration options
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Cloudflare API Shield Reference
|
|
2
|
+
|
|
3
|
+
Expert guidance for API Shield - comprehensive API security suite for discovery, protection, and monitoring.
|
|
4
|
+
|
|
5
|
+
## Reading Order
|
|
6
|
+
|
|
7
|
+
| Task | Files to Read |
|
|
8
|
+
| ------------------------ | ------------------------------ |
|
|
9
|
+
| Initial setup | README → configuration.md |
|
|
10
|
+
| Implement JWT validation | configuration.md → api.md |
|
|
11
|
+
| Add schema validation | configuration.md → patterns.md |
|
|
12
|
+
| Detect API attacks | patterns.md → api.md |
|
|
13
|
+
| Debug issues | gotchas.md |
|
|
14
|
+
|
|
15
|
+
## Feature Selection
|
|
16
|
+
|
|
17
|
+
What protection do you need?
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
├─ Validate request/response structure → Schema Validation 2.0 (configuration.md)
|
|
21
|
+
├─ Verify auth tokens → JWT Validation (configuration.md)
|
|
22
|
+
├─ Client certificates → mTLS (configuration.md)
|
|
23
|
+
├─ Detect BOLA attacks → BOLA Detection (patterns.md)
|
|
24
|
+
├─ Track auth coverage → Auth Posture (patterns.md)
|
|
25
|
+
├─ Stop volumetric abuse → Abuse Detection (patterns.md)
|
|
26
|
+
└─ Discover shadow APIs → API Discovery (api.md)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## In This Reference
|
|
30
|
+
|
|
31
|
+
- **[configuration.md](configuration.md)** - Setup, session identifiers, rules, token/mTLS configs
|
|
32
|
+
- **[api.md](api.md)** - Endpoint management, discovery, validation APIs, GraphQL operations
|
|
33
|
+
- **[patterns.md](patterns.md)** - Common patterns, progressive rollout, OWASP mappings, workflows
|
|
34
|
+
- **[gotchas.md](gotchas.md)** - Troubleshooting, false positives, performance, best practices
|
|
35
|
+
|
|
36
|
+
## Quick Start
|
|
37
|
+
|
|
38
|
+
API Shield: Enterprise-grade API security (Discovery, Schema Validation 2.0, JWT, mTLS, BOLA Detection, Auth Posture). Available as Enterprise add-on with preview access.
|
|
39
|
+
|
|
40
|
+
## See Also
|
|
41
|
+
|
|
42
|
+
- [API Shield Docs](https://developers.cloudflare.com/api-shield/)
|
|
43
|
+
- [API Reference](https://developers.cloudflare.com/api/resources/api_gateway/)
|
|
44
|
+
- [OWASP API Security Top 10](https://owasp.org/www-project-api-security/)
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# API Reference
|
|
2
|
+
|
|
3
|
+
Base: `/zones/{zone_id}/api_gateway`
|
|
4
|
+
|
|
5
|
+
## Endpoints
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
GET /operations # List
|
|
9
|
+
GET /operations/{op_id} # Get single
|
|
10
|
+
POST /operations/item # Create: {endpoint,host,method}
|
|
11
|
+
POST /operations # Bulk: {operations:[{endpoint,host,method}]}
|
|
12
|
+
DELETE /operations/{op_id} # Delete
|
|
13
|
+
DELETE /operations # Bulk delete: {operation_ids:[...]}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Discovery
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
GET /discovery/operations # List discovered
|
|
20
|
+
PATCH /discovery/operations/{op_id} # Update: {state:"saved"|"ignored"}
|
|
21
|
+
PATCH /discovery/operations # Bulk: {operation_ids:{id:{state}}}
|
|
22
|
+
GET /discovery # OpenAPI export
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Config
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
GET /configuration # Get session ID config
|
|
29
|
+
PUT /configuration # Update: {auth_id_characteristics:[{name,type:"header"|"cookie"}]}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Token Validation
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
GET /token_validation # List
|
|
36
|
+
POST /token_validation # Create: {name,location:{header:"..."},jwks:"..."}
|
|
37
|
+
POST /jwt_validation_rules # Rule: {name,hostname,token_validation_id,action:"block"}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Workers Integration
|
|
41
|
+
|
|
42
|
+
### Access JWT Claims
|
|
43
|
+
|
|
44
|
+
```js
|
|
45
|
+
export default {
|
|
46
|
+
async fetch(req, env) {
|
|
47
|
+
// Access validated JWT payload
|
|
48
|
+
const jwt = req.cf?.jwt?.payload?.[env.JWT_CONFIG_ID]?.[0]
|
|
49
|
+
if (jwt) {
|
|
50
|
+
const userId = jwt.sub
|
|
51
|
+
const role = jwt.role
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Access mTLS Info
|
|
58
|
+
|
|
59
|
+
```js
|
|
60
|
+
export default {
|
|
61
|
+
async fetch(req, env) {
|
|
62
|
+
const tls = req.cf?.tlsClientAuth
|
|
63
|
+
if (tls?.certVerified === 'SUCCESS') {
|
|
64
|
+
const fingerprint = tls.certFingerprintSHA256
|
|
65
|
+
// Authenticated client
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Dynamic JWKS Update
|
|
72
|
+
|
|
73
|
+
```js
|
|
74
|
+
export default {
|
|
75
|
+
async scheduled(event, env) {
|
|
76
|
+
const jwks = await (await fetch('https://auth.example.com/.well-known/jwks.json')).json()
|
|
77
|
+
await fetch(
|
|
78
|
+
`https://api.cloudflare.com/client/v4/zones/${env.ZONE_ID}/api_gateway/token_validation/${env.CONFIG_ID}`,
|
|
79
|
+
{
|
|
80
|
+
method: 'PATCH',
|
|
81
|
+
headers: {
|
|
82
|
+
Authorization: `Bearer ${env.CF_API_TOKEN}`,
|
|
83
|
+
'Content-Type': 'application/json',
|
|
84
|
+
},
|
|
85
|
+
body: JSON.stringify({ jwks: JSON.stringify(jwks) }),
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
},
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Firewall Fields
|
|
93
|
+
|
|
94
|
+
### Core Fields
|
|
95
|
+
|
|
96
|
+
```js
|
|
97
|
+
cf.api_gateway.auth_id_present // Session ID present
|
|
98
|
+
cf.api_gateway.request_violates_schema // Schema violation
|
|
99
|
+
cf.api_gateway.fallthrough_triggered // No endpoint match
|
|
100
|
+
cf.tls_client_auth.cert_verified // mTLS cert valid
|
|
101
|
+
cf.tls_client_auth.cert_fingerprint_sha256
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### JWT Validation (2026)
|
|
105
|
+
|
|
106
|
+
```js
|
|
107
|
+
// Modern validation syntax
|
|
108
|
+
is_jwt_valid(http.request.jwt.payload['{config_id}'][0])
|
|
109
|
+
|
|
110
|
+
// Legacy (still supported)
|
|
111
|
+
cf.api_gateway.jwt_claims_valid
|
|
112
|
+
|
|
113
|
+
// Extract claims
|
|
114
|
+
lookup_json_string(http.request.jwt.payload['{config_id}'][0], 'claim_name')
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Risk Labels (2026)
|
|
118
|
+
|
|
119
|
+
```js
|
|
120
|
+
// BOLA detection
|
|
121
|
+
cf.api_gateway.cf - risk - bola - enumeration // Sequential resource access detected
|
|
122
|
+
cf.api_gateway.cf - risk - bola - pollution // Parameter pollution detected
|
|
123
|
+
|
|
124
|
+
// Authentication posture
|
|
125
|
+
cf.api_gateway.cf - risk - missing - auth // Endpoint lacks authentication
|
|
126
|
+
cf.api_gateway.cf - risk - mixed - auth // Inconsistent auth patterns
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## BOLA Detection
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
GET /user_schemas/{schema_id}/bola # Get BOLA config
|
|
133
|
+
PATCH /user_schemas/{schema_id}/bola # Update: {enabled:true}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Auth Posture
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
GET /discovery/authentication_posture # List unprotected endpoints
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## GraphQL Protection
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
GET /settings/graphql_protection # Get limits
|
|
146
|
+
PUT /settings/graphql_protection # Set: {max_depth,max_size}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## See Also
|
|
150
|
+
|
|
151
|
+
- [configuration.md](configuration.md) - Setup guides for all features
|
|
152
|
+
- [patterns.md](patterns.md) - Firewall rules and common patterns
|
|
153
|
+
- [API Gateway API Docs](https://developers.cloudflare.com/api/resources/api_gateway/)
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
## Schema Validation 2.0 Setup
|
|
4
|
+
|
|
5
|
+
> ⚠️ **Classic Schema Validation deprecated.** Use Schema Validation 2.0.
|
|
6
|
+
|
|
7
|
+
**Upload schema (Dashboard):**
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Security > API Shield > Schema Validation > Add validation
|
|
11
|
+
- Upload .yml/.yaml/.json (OpenAPI v3.0)
|
|
12
|
+
- Endpoints auto-added to Endpoint Management
|
|
13
|
+
- Action: Log | Block | None
|
|
14
|
+
- Body inspection: JSON payloads
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**Change validation action:**
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Security > API Shield > Settings > Schema Validation
|
|
21
|
+
Per-endpoint: Filter → ellipses → Change action
|
|
22
|
+
Default action: Set global mitigation action
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Migration from Classic:**
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
1. Export existing schema (if available)
|
|
29
|
+
2. Delete all Classic schema validation rules
|
|
30
|
+
3. Wait 5 min for cache clear
|
|
31
|
+
4. Re-upload via Schema Validation 2.0 interface
|
|
32
|
+
5. Verify in Security > Events
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Fallthrough rule** (catch-all unknown endpoints):
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Security > API Shield > Settings > Fallthrough > Use Template
|
|
39
|
+
- Select hostnames
|
|
40
|
+
- Create rule with cf.api_gateway.fallthrough_triggered
|
|
41
|
+
- Action: Log (discover) or Block (strict)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Body inspection:** Supports `application/json`, `*/*`, `application/*`. Disable origin MIME sniffing to prevent bypasses.
|
|
45
|
+
|
|
46
|
+
## JWT Validation
|
|
47
|
+
|
|
48
|
+
**Setup token config:**
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Security > API Shield > Settings > JWT Settings > Add configuration
|
|
52
|
+
- Name: "Auth0 JWT Config"
|
|
53
|
+
- Location: Header/Cookie + name (e.g., "Authorization")
|
|
54
|
+
- JWKS: Paste public keys from IdP
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Create validation rule:**
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Security > API Shield > API Rules > Add rule
|
|
61
|
+
- Hostname: api.example.com
|
|
62
|
+
- Deselect endpoints to ignore
|
|
63
|
+
- Token config: Select config
|
|
64
|
+
- Enforce presence: Ignore or Mark as non-compliant
|
|
65
|
+
- Action: Log/Block/Challenge
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Rate limit by JWT claim:**
|
|
69
|
+
|
|
70
|
+
```wirefilter
|
|
71
|
+
lookup_json_string(http.request.jwt.claims["{config_id}"][0], "sub")
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**Special cases:**
|
|
75
|
+
|
|
76
|
+
- Two JWTs, different IdPs: Create 2 configs, select both, "Validate all"
|
|
77
|
+
- IdP migration: 2 configs + 2 rules, adjust actions per state
|
|
78
|
+
- Bearer prefix: API Shield handles with/without
|
|
79
|
+
- Nested claims: Dot notation `user.email`
|
|
80
|
+
|
|
81
|
+
## Mutual TLS (mTLS)
|
|
82
|
+
|
|
83
|
+
**Setup:**
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
SSL/TLS > Client Certificates > Create Certificate
|
|
87
|
+
- Generate CF-managed CA (all plans)
|
|
88
|
+
- Upload custom CA (Enterprise, max 5)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Configure mTLS rule:**
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Security > API Shield > mTLS
|
|
95
|
+
- Select hostname(s)
|
|
96
|
+
- Choose certificate(s)
|
|
97
|
+
- Action: Block/Log/Challenge
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Test:**
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
openssl req -x509 -newkey rsa:4096 -keyout client-key.pem -out client-cert.pem -days 365
|
|
104
|
+
curl https://api.example.com/endpoint --cert client-cert.pem --key client-key.pem
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Session Identifiers
|
|
108
|
+
|
|
109
|
+
Critical for BOLA Detection, Sequence Mitigation, and analytics. Configure header/cookie that uniquely IDs API users.
|
|
110
|
+
|
|
111
|
+
**Examples:** JWT sub claim, session token, API key, custom user ID header
|
|
112
|
+
|
|
113
|
+
**Configure:**
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Security > API Shield > Settings > Session Identifiers
|
|
117
|
+
- Type: Header/Cookie
|
|
118
|
+
- Name: "X-User-ID" or "Authorization"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## BOLA Detection
|
|
122
|
+
|
|
123
|
+
Detects Broken Object Level Authorization attacks (enumeration + parameter pollution).
|
|
124
|
+
|
|
125
|
+
**Enable:**
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
Security > API Shield > Schema Validation > [Select Schema] > BOLA Detection
|
|
129
|
+
- Enable detection
|
|
130
|
+
- Threshold: Sensitivity level (Low/Medium/High)
|
|
131
|
+
- Action: Log or Block
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Requirements:**
|
|
135
|
+
|
|
136
|
+
- Schema Validation 2.0 enabled
|
|
137
|
+
- Session identifiers configured
|
|
138
|
+
- Minimum traffic: 1000+ requests/day per endpoint
|
|
139
|
+
|
|
140
|
+
## Authentication Posture
|
|
141
|
+
|
|
142
|
+
Identifies unprotected or inconsistently protected endpoints.
|
|
143
|
+
|
|
144
|
+
**View report:**
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
Security > API Shield > Authentication Posture
|
|
148
|
+
- Shows endpoints lacking JWT/mTLS
|
|
149
|
+
- Highlights mixed authentication patterns
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Remediate:**
|
|
153
|
+
|
|
154
|
+
1. Review flagged endpoints
|
|
155
|
+
2. Add JWT validation rules
|
|
156
|
+
3. Configure mTLS for sensitive endpoints
|
|
157
|
+
4. Monitor posture score
|
|
158
|
+
|
|
159
|
+
## Volumetric Abuse + GraphQL
|
|
160
|
+
|
|
161
|
+
**Volumetric Abuse Detection:**
|
|
162
|
+
`Security > API Shield > Settings > Volumetric Abuse Detection`
|
|
163
|
+
|
|
164
|
+
- Enable per-endpoint monitoring, set thresholds, action: Log | Challenge | Block
|
|
165
|
+
|
|
166
|
+
**GraphQL Protection:**
|
|
167
|
+
`Security > API Shield > Settings > GraphQL Protection`
|
|
168
|
+
|
|
169
|
+
- Max query depth: 10, max size: 100KB, block introspection (production)
|
|
170
|
+
|
|
171
|
+
## Terraform
|
|
172
|
+
|
|
173
|
+
```hcl
|
|
174
|
+
# Session identifier
|
|
175
|
+
resource "cloudflare_api_shield" "main" {
|
|
176
|
+
zone_id = var.zone_id
|
|
177
|
+
auth_id_characteristics {
|
|
178
|
+
type = "header"
|
|
179
|
+
name = "Authorization"
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
# Add endpoint
|
|
184
|
+
resource "cloudflare_api_shield_operation" "users_get" {
|
|
185
|
+
zone_id = var.zone_id
|
|
186
|
+
method = "GET"
|
|
187
|
+
host = "api.example.com"
|
|
188
|
+
endpoint = "/api/users/{id}"
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
# JWT validation rule
|
|
192
|
+
resource "cloudflare_ruleset" "jwt_validation" {
|
|
193
|
+
zone_id = var.zone_id
|
|
194
|
+
name = "API JWT Validation"
|
|
195
|
+
kind = "zone"
|
|
196
|
+
phase = "http_request_firewall_custom"
|
|
197
|
+
|
|
198
|
+
rules {
|
|
199
|
+
action = "block"
|
|
200
|
+
expression = "(http.host eq \"api.example.com\" and not is_jwt_valid(http.request.jwt.payload[\"{config_id}\"][0]))"
|
|
201
|
+
description = "Block invalid JWTs"
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## See Also
|
|
207
|
+
|
|
208
|
+
- [api.md](api.md) - API endpoints and Workers integration
|
|
209
|
+
- [patterns.md](patterns.md) - Firewall rules and deployment patterns
|
|
210
|
+
- [gotchas.md](gotchas.md) - Troubleshooting and limits
|