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,336 @@
|
|
|
1
|
+
# Cloudflare Workers Best Practices
|
|
2
|
+
|
|
3
|
+
High-level guidance for Workers that invoke Durable Objects.
|
|
4
|
+
|
|
5
|
+
## Wrangler Configuration
|
|
6
|
+
|
|
7
|
+
### wrangler.jsonc (Recommended)
|
|
8
|
+
|
|
9
|
+
```jsonc
|
|
10
|
+
{
|
|
11
|
+
"$schema": "node_modules/wrangler/config-schema.json",
|
|
12
|
+
"name": "my-worker",
|
|
13
|
+
"main": "src/index.ts",
|
|
14
|
+
"compatibility_date": "2024-12-01",
|
|
15
|
+
"compatibility_flags": ["nodejs_compat"],
|
|
16
|
+
|
|
17
|
+
"durable_objects": {
|
|
18
|
+
"bindings": [
|
|
19
|
+
{ "name": "CHAT_ROOM", "class_name": "ChatRoom" },
|
|
20
|
+
{ "name": "USER_SESSION", "class_name": "UserSession" },
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
"migrations": [{ "tag": "v1", "new_sqlite_classes": ["ChatRoom", "UserSession"] }],
|
|
25
|
+
|
|
26
|
+
// Environment variables
|
|
27
|
+
"vars": {
|
|
28
|
+
"ENVIRONMENT": "production",
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
// KV namespaces
|
|
32
|
+
"kv_namespaces": [{ "binding": "CONFIG", "id": "abc123" }],
|
|
33
|
+
|
|
34
|
+
// R2 buckets
|
|
35
|
+
"r2_buckets": [{ "binding": "UPLOADS", "bucket_name": "my-uploads" }],
|
|
36
|
+
|
|
37
|
+
// D1 databases
|
|
38
|
+
"d1_databases": [{ "binding": "DB", "database_id": "xyz789" }],
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### wrangler.toml (Alternative)
|
|
43
|
+
|
|
44
|
+
```toml
|
|
45
|
+
name = "my-worker"
|
|
46
|
+
main = "src/index.ts"
|
|
47
|
+
compatibility_date = "2024-12-01"
|
|
48
|
+
compatibility_flags = ["nodejs_compat"]
|
|
49
|
+
|
|
50
|
+
[[durable_objects.bindings]]
|
|
51
|
+
name = "CHAT_ROOM"
|
|
52
|
+
class_name = "ChatRoom"
|
|
53
|
+
|
|
54
|
+
[[migrations]]
|
|
55
|
+
tag = "v1"
|
|
56
|
+
new_sqlite_classes = ["ChatRoom"]
|
|
57
|
+
|
|
58
|
+
[vars]
|
|
59
|
+
ENVIRONMENT = "production"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## TypeScript Types
|
|
63
|
+
|
|
64
|
+
### Environment Interface
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
// src/types.ts
|
|
68
|
+
import { ChatRoom } from './durable-objects/chat-room'
|
|
69
|
+
import { UserSession } from './durable-objects/user-session'
|
|
70
|
+
|
|
71
|
+
export interface Env {
|
|
72
|
+
// Durable Objects
|
|
73
|
+
CHAT_ROOM: DurableObjectNamespace<ChatRoom>
|
|
74
|
+
USER_SESSION: DurableObjectNamespace<UserSession>
|
|
75
|
+
|
|
76
|
+
// KV
|
|
77
|
+
CONFIG: KVNamespace
|
|
78
|
+
|
|
79
|
+
// R2
|
|
80
|
+
UPLOADS: R2Bucket
|
|
81
|
+
|
|
82
|
+
// D1
|
|
83
|
+
DB: D1Database
|
|
84
|
+
|
|
85
|
+
// Environment variables
|
|
86
|
+
ENVIRONMENT: string
|
|
87
|
+
API_KEY: string // From secrets
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Export Durable Object Classes
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
// src/index.ts
|
|
95
|
+
export { ChatRoom } from './durable-objects/chat-room'
|
|
96
|
+
export { UserSession } from './durable-objects/user-session'
|
|
97
|
+
|
|
98
|
+
export default {
|
|
99
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
|
100
|
+
// Worker handler
|
|
101
|
+
},
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Worker Handler Pattern
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
export default {
|
|
109
|
+
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
|
|
110
|
+
const url = new URL(request.url)
|
|
111
|
+
|
|
112
|
+
try {
|
|
113
|
+
// Route to appropriate handler
|
|
114
|
+
if (url.pathname.startsWith('/api/rooms')) {
|
|
115
|
+
return handleRooms(request, env)
|
|
116
|
+
}
|
|
117
|
+
if (url.pathname.startsWith('/api/users')) {
|
|
118
|
+
return handleUsers(request, env)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return new Response('Not Found', { status: 404 })
|
|
122
|
+
} catch (error) {
|
|
123
|
+
console.error('Request failed:', error)
|
|
124
|
+
return new Response('Internal Server Error', { status: 500 })
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
async function handleRooms(request: Request, env: Env): Promise<Response> {
|
|
130
|
+
const url = new URL(request.url)
|
|
131
|
+
const roomId = url.searchParams.get('room')
|
|
132
|
+
|
|
133
|
+
if (!roomId) {
|
|
134
|
+
return Response.json({ error: 'Missing room parameter' }, { status: 400 })
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const stub = env.CHAT_ROOM.getByName(roomId)
|
|
138
|
+
|
|
139
|
+
if (request.method === 'POST') {
|
|
140
|
+
const body = await request.json<{ userId: string; message: string }>()
|
|
141
|
+
const result = await stub.sendMessage(body.userId, body.message)
|
|
142
|
+
return Response.json(result)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const messages = await stub.getMessages()
|
|
146
|
+
return Response.json(messages)
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Request Validation
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
import { z } from 'zod'
|
|
154
|
+
|
|
155
|
+
const SendMessageSchema = z.object({
|
|
156
|
+
userId: z.string().min(1),
|
|
157
|
+
message: z.string().min(1).max(1000),
|
|
158
|
+
})
|
|
159
|
+
|
|
160
|
+
async function handleSendMessage(request: Request, env: Env): Promise<Response> {
|
|
161
|
+
const body = await request.json()
|
|
162
|
+
const result = SendMessageSchema.safeParse(body)
|
|
163
|
+
|
|
164
|
+
if (!result.success) {
|
|
165
|
+
return Response.json(
|
|
166
|
+
{ error: 'Validation failed', details: result.error.issues },
|
|
167
|
+
{ status: 400 }
|
|
168
|
+
)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const stub = env.CHAT_ROOM.getByName(result.data.userId)
|
|
172
|
+
const message = await stub.sendMessage(result.data.userId, result.data.message)
|
|
173
|
+
return Response.json(message)
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Observability & Logging
|
|
178
|
+
|
|
179
|
+
### Structured Logging
|
|
180
|
+
|
|
181
|
+
```typescript
|
|
182
|
+
function log(level: 'info' | 'warn' | 'error', message: string, data?: Record<string, unknown>) {
|
|
183
|
+
console.log(
|
|
184
|
+
JSON.stringify({
|
|
185
|
+
level,
|
|
186
|
+
message,
|
|
187
|
+
timestamp: new Date().toISOString(),
|
|
188
|
+
...data,
|
|
189
|
+
})
|
|
190
|
+
)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Usage
|
|
194
|
+
log('info', 'Request received', { path: url.pathname, method: request.method })
|
|
195
|
+
log('error', 'DO call failed', { roomId, error: String(error) })
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Request Tracing
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
async function handleRequest(request: Request, env: Env): Promise<Response> {
|
|
202
|
+
const requestId = crypto.randomUUID()
|
|
203
|
+
const startTime = Date.now()
|
|
204
|
+
|
|
205
|
+
try {
|
|
206
|
+
const response = await processRequest(request, env)
|
|
207
|
+
|
|
208
|
+
log('info', 'Request completed', {
|
|
209
|
+
requestId,
|
|
210
|
+
duration: Date.now() - startTime,
|
|
211
|
+
status: response.status,
|
|
212
|
+
})
|
|
213
|
+
|
|
214
|
+
return response
|
|
215
|
+
} catch (error) {
|
|
216
|
+
log('error', 'Request failed', {
|
|
217
|
+
requestId,
|
|
218
|
+
duration: Date.now() - startTime,
|
|
219
|
+
error: String(error),
|
|
220
|
+
})
|
|
221
|
+
throw error
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Tail Workers (Production)
|
|
227
|
+
|
|
228
|
+
For production logging, use Tail Workers to forward logs:
|
|
229
|
+
|
|
230
|
+
```jsonc
|
|
231
|
+
// wrangler.jsonc
|
|
232
|
+
{
|
|
233
|
+
"tail_consumers": [{ "service": "log-collector" }],
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Error Handling
|
|
238
|
+
|
|
239
|
+
### Graceful DO Errors
|
|
240
|
+
|
|
241
|
+
```typescript
|
|
242
|
+
async function callDO(stub: DurableObjectStub<ChatRoom>, method: string): Promise<Response> {
|
|
243
|
+
try {
|
|
244
|
+
const result = await stub.getMessages()
|
|
245
|
+
return Response.json(result)
|
|
246
|
+
} catch (error) {
|
|
247
|
+
if (error instanceof Error) {
|
|
248
|
+
// DO threw an error
|
|
249
|
+
log('error', 'DO operation failed', { error: error.message })
|
|
250
|
+
return Response.json({ error: 'Service temporarily unavailable' }, { status: 503 })
|
|
251
|
+
}
|
|
252
|
+
throw error
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Timeout Handling
|
|
258
|
+
|
|
259
|
+
```typescript
|
|
260
|
+
async function withTimeout<T>(promise: Promise<T>, ms: number): Promise<T> {
|
|
261
|
+
const timeout = new Promise<never>((_, reject) =>
|
|
262
|
+
setTimeout(() => reject(new Error('Timeout')), ms)
|
|
263
|
+
)
|
|
264
|
+
return Promise.race([promise, timeout])
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// Usage
|
|
268
|
+
const result = await withTimeout(stub.processData(data), 5000)
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## CORS Handling
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
function corsHeaders(): HeadersInit {
|
|
275
|
+
return {
|
|
276
|
+
'Access-Control-Allow-Origin': '*',
|
|
277
|
+
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
|
|
278
|
+
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
export default {
|
|
283
|
+
async fetch(request: Request, env: Env): Promise<Response> {
|
|
284
|
+
if (request.method === 'OPTIONS') {
|
|
285
|
+
return new Response(null, { headers: corsHeaders() })
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
const response = await handleRequest(request, env)
|
|
289
|
+
|
|
290
|
+
// Add CORS headers to response
|
|
291
|
+
const newHeaders = new Headers(response.headers)
|
|
292
|
+
Object.entries(corsHeaders()).forEach(([k, v]) => newHeaders.set(k, v))
|
|
293
|
+
|
|
294
|
+
return new Response(response.body, {
|
|
295
|
+
status: response.status,
|
|
296
|
+
headers: newHeaders,
|
|
297
|
+
})
|
|
298
|
+
},
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## Secrets Management
|
|
303
|
+
|
|
304
|
+
Set secrets via wrangler CLI (not in config files):
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
wrangler secret put API_KEY
|
|
308
|
+
wrangler secret put DATABASE_URL
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
Access in code:
|
|
312
|
+
|
|
313
|
+
```typescript
|
|
314
|
+
export default {
|
|
315
|
+
async fetch(request: Request, env: Env): Promise<Response> {
|
|
316
|
+
const apiKey = env.API_KEY // From secret
|
|
317
|
+
// ...
|
|
318
|
+
},
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
## Development Commands
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
# Local development
|
|
326
|
+
wrangler dev
|
|
327
|
+
|
|
328
|
+
# Deploy
|
|
329
|
+
wrangler deploy
|
|
330
|
+
|
|
331
|
+
# Tail logs
|
|
332
|
+
wrangler tail
|
|
333
|
+
|
|
334
|
+
# List DOs
|
|
335
|
+
wrangler d1 execute DB --command "SELECT * FROM _cf_DO"
|
|
336
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gcp
|
|
3
|
+
description: |
|
|
4
|
+
Google Cloud Platform (GCP) best practices. Use when provisioning GCP infrastructure, configuring IAM, deploying to Cloud Run, GKE (Kubernetes Engine), Cloud Functions, Cloud SQL, or managing BigQuery. Do NOT trigger for generic "deploy my app" requests without clarifying the target platform.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Google Cloud Platform (GCP) Best Practices
|
|
8
|
+
|
|
9
|
+
**STOP.** Your knowledge of GCP may be outdated. Prefer retrieval over pre-training for any version-sensitive GCP configuration. Fetch current documentation when in doubt.
|
|
10
|
+
|
|
11
|
+
Guidelines for architecting and deploying secure, scalable applications on GCP.
|
|
12
|
+
|
|
13
|
+
## 1. Identity and Access Management (IAM)
|
|
14
|
+
|
|
15
|
+
- **Service Accounts**: Do not use the default Compute Engine service account. Create dedicated, narrowly-scoped service accounts for each application (Cloud Run, GKE node pool, Cloud Function).
|
|
16
|
+
- **Workload Identity**: Always use Workload Identity (for GKE) or Workload Identity Federation (for GitHub Actions/CI) instead of generating and storing long-lived JSON service account keys.
|
|
17
|
+
- **Least Privilege**: Grant roles at the lowest level possible (Resource level > Project level > Folder level).
|
|
18
|
+
|
|
19
|
+
## 2. Serverless (Cloud Run & Cloud Functions)
|
|
20
|
+
|
|
21
|
+
- **Cloud Run**: Prefer Cloud Run over Cloud Functions for containerized applications. It supports multi-concurrency (handling multiple requests per instance), which significantly lowers costs and cold starts.
|
|
22
|
+
- **Scaling**: Configure minimum instances (`min-instances`) to 1 or more for latency-sensitive applications to mitigate cold starts. Ensure `max-instances` is set to prevent runaway billing.
|
|
23
|
+
|
|
24
|
+
## 3. Data and Storage (Cloud SQL, Cloud Storage, BigQuery)
|
|
25
|
+
|
|
26
|
+
- **Cloud SQL**: Use private IPs for Cloud SQL instances. Connect to them using the Cloud SQL Auth Proxy or Serverless VPC Access connectors rather than exposing them to the public internet.
|
|
27
|
+
- **Cloud Storage**: Enforce Uniform Bucket-Level Access to manage permissions solely via IAM, disabling legacy ACLs. Enable object versioning for critical buckets to protect against accidental overwrites/deletes.
|
|
28
|
+
- **BigQuery**: Always partition and cluster large BigQuery tables to minimize query costs (BigQuery charges per byte processed).
|
|
29
|
+
|
|
30
|
+
## 4. Networking and Security
|
|
31
|
+
|
|
32
|
+
- **VPC Service Controls**: Use VPC SC to create secure perimeters around sensitive data (e.g., preventing data exfiltration from Cloud Storage or BigQuery).
|
|
33
|
+
- **Cloud Armor**: Attach Google Cloud Armor to Global HTTP(S) Load Balancers to defend against DDoS attacks and implement WAF (Web Application Firewall) rules.
|
|
34
|
+
|
|
35
|
+
## 5. Infrastructure as Code
|
|
36
|
+
|
|
37
|
+
- **Terraform**: Use Terraform as the primary IaC tool for GCP. Store the Terraform state in a centralized, version-enabled Cloud Storage bucket with state locking enabled.
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
name: github-actions
|
|
3
3
|
description: |
|
|
4
4
|
Master GitHub Actions CI/CD workflows with production-grade security and
|
|
5
|
-
performance patterns. Use when
|
|
6
|
-
|
|
7
|
-
artifacts, or implementing reusable workflows.
|
|
8
|
-
"CI/CD", "workflow", "actions/checkout", "matrix strategy", "reusable
|
|
9
|
-
workflow", "SHA pinning", ".github/workflows".
|
|
5
|
+
performance patterns. Use ONLY when explicitly setting up CI/CD pipelines specifically via GitHub Actions,
|
|
6
|
+
setting up matrix strategies, caching dependencies, managing
|
|
7
|
+
artifacts, or implementing reusable workflows. For deployment requests, use ONLY when the deploy step is inside a .github/workflows file. NOT for GitLab or autonomous-dev. NOT for Render, AWS, Azure, or GCP deployments unless explicitly triggered from within a CI/CD workflow context. Do NOT trigger for generic "deploy my app" requests without clarifying the target platform.
|
|
10
8
|
---
|
|
11
9
|
|
|
12
10
|
# GitHub Actions CI/CD Engineering Standards
|
|
@@ -30,6 +28,7 @@ This skill codifies 2026 GitHub Actions best practices — secure supply chains,
|
|
|
30
28
|
- **ALWAYS** pin to full-length commit SHAs — tags are mutable and can be hijacked
|
|
31
29
|
- **ALWAYS** add a trailing comment with the version for human readability
|
|
32
30
|
- **Use tools** like `step-security/harden-runner` or `pin-github-action` CLI to automate SHA resolution
|
|
31
|
+
- **Resolve SHA Manually**: See [templates.md](references/templates.md) for the `gh api` command to resolve SHAs.
|
|
33
32
|
- **Audit quarterly** — review all pinned SHAs when updating workflow dependencies
|
|
34
33
|
|
|
35
34
|
### Permission Hardening
|
|
@@ -56,59 +55,7 @@ jobs:
|
|
|
56
55
|
|
|
57
56
|
### Standard CI Template
|
|
58
57
|
|
|
59
|
-
|
|
60
|
-
name: CI
|
|
61
|
-
|
|
62
|
-
on:
|
|
63
|
-
push:
|
|
64
|
-
branches: [main]
|
|
65
|
-
pull_request:
|
|
66
|
-
branches: [main]
|
|
67
|
-
|
|
68
|
-
permissions:
|
|
69
|
-
contents: read
|
|
70
|
-
|
|
71
|
-
concurrency:
|
|
72
|
-
group: ${{ github.workflow }}-${{ github.ref }}
|
|
73
|
-
cancel-in-progress: true
|
|
74
|
-
|
|
75
|
-
jobs:
|
|
76
|
-
lint:
|
|
77
|
-
runs-on: ubuntu-latest
|
|
78
|
-
steps:
|
|
79
|
-
- uses: actions/checkout@<sha> # v4
|
|
80
|
-
- uses: actions/setup-node@<sha> # v4
|
|
81
|
-
with:
|
|
82
|
-
node-version-file: .node-version
|
|
83
|
-
cache: pnpm
|
|
84
|
-
- run: pnpm install --frozen-lockfile
|
|
85
|
-
- run: pnpm run lint
|
|
86
|
-
- run: pnpm run typecheck
|
|
87
|
-
|
|
88
|
-
test:
|
|
89
|
-
runs-on: ubuntu-latest
|
|
90
|
-
needs: lint
|
|
91
|
-
steps:
|
|
92
|
-
- uses: actions/checkout@<sha> # v4
|
|
93
|
-
- uses: actions/setup-node@<sha> # v4
|
|
94
|
-
with:
|
|
95
|
-
node-version-file: .node-version
|
|
96
|
-
cache: pnpm
|
|
97
|
-
- run: pnpm install --frozen-lockfile
|
|
98
|
-
- run: pnpm test
|
|
99
|
-
|
|
100
|
-
build:
|
|
101
|
-
runs-on: ubuntu-latest
|
|
102
|
-
needs: test
|
|
103
|
-
steps:
|
|
104
|
-
- uses: actions/checkout@<sha> # v4
|
|
105
|
-
- uses: actions/setup-node@<sha> # v4
|
|
106
|
-
with:
|
|
107
|
-
node-version-file: .node-version
|
|
108
|
-
cache: pnpm
|
|
109
|
-
- run: pnpm install --frozen-lockfile
|
|
110
|
-
- run: pnpm run build
|
|
111
|
-
```
|
|
58
|
+
See **[templates.md](references/templates.md)** for a complete, production-ready CI workflow template.
|
|
112
59
|
|
|
113
60
|
### Key Structural Rules
|
|
114
61
|
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# GitHub Actions Templates
|
|
2
|
+
|
|
3
|
+
## Resolve SHA Manually
|
|
4
|
+
|
|
5
|
+
To manually resolve a commit SHA for a GitHub Action using the GitHub CLI (`gh`):
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Resolve SHA: gh api /repos/actions/checkout/git/refs/heads/main --jq '.object.sha'
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Standard CI Template
|
|
12
|
+
|
|
13
|
+
```yaml
|
|
14
|
+
name: CI
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
push:
|
|
18
|
+
branches: [main]
|
|
19
|
+
pull_request:
|
|
20
|
+
branches: [main]
|
|
21
|
+
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
|
|
25
|
+
concurrency:
|
|
26
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
27
|
+
cancel-in-progress: true
|
|
28
|
+
|
|
29
|
+
jobs:
|
|
30
|
+
lint:
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@<sha> # v4
|
|
34
|
+
- uses: actions/setup-node@<sha> # v4
|
|
35
|
+
with:
|
|
36
|
+
node-version-file: .node-version
|
|
37
|
+
cache: pnpm
|
|
38
|
+
- run: pnpm install --frozen-lockfile
|
|
39
|
+
- run: pnpm run lint
|
|
40
|
+
- run: pnpm run typecheck
|
|
41
|
+
|
|
42
|
+
test:
|
|
43
|
+
runs-on: ubuntu-latest
|
|
44
|
+
needs: lint
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/checkout@<sha> # v4
|
|
47
|
+
- uses: actions/setup-node@<sha> # v4
|
|
48
|
+
with:
|
|
49
|
+
node-version-file: .node-version
|
|
50
|
+
cache: pnpm
|
|
51
|
+
- run: pnpm install --frozen-lockfile
|
|
52
|
+
- run: pnpm test
|
|
53
|
+
|
|
54
|
+
build:
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
needs: test
|
|
57
|
+
steps:
|
|
58
|
+
- uses: actions/checkout@<sha> # v4
|
|
59
|
+
- uses: actions/setup-node@<sha> # v4
|
|
60
|
+
with:
|
|
61
|
+
node-version-file: .node-version
|
|
62
|
+
cache: pnpm
|
|
63
|
+
- run: pnpm install --frozen-lockfile
|
|
64
|
+
- run: pnpm run build
|
|
65
|
+
```
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: github-commander
|
|
3
3
|
description: |
|
|
4
|
-
Structured workflows for
|
|
5
|
-
through
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
code
|
|
10
|
-
when the user mentions issue numbers, PR numbers, milestone names, or
|
|
11
|
-
asks you to "fix", "triage", "audit", "review", or "update deps".
|
|
4
|
+
Structured workflows for GitHub issues, PRs, milestones, and code audits with validation gates and HITL checkpoints.
|
|
5
|
+
Use when assigned a GitHub issue, reviewing a PR, sprinting through a milestone, updating dependencies, or running code audits.
|
|
6
|
+
Also use when asked to "triage an issue", "review a PR", or "update deps".
|
|
7
|
+
Do NOT trigger on bare verbs (e.g. "fix this"); require GitHub context.
|
|
8
|
+
NOT for pipeline authoring (use github-actions instead).
|
|
9
|
+
Delegate all code quality, performance, and security audits to the dedicated `adversarial-*` skills instead.
|
|
12
10
|
---
|
|
13
11
|
|
|
14
12
|
# GitHub Commander
|
|
@@ -35,17 +33,13 @@ Load this skill when any of these apply:
|
|
|
35
33
|
|
|
36
34
|
## Quick Reference
|
|
37
35
|
|
|
38
|
-
| Workflow | File
|
|
39
|
-
| ----------------------- |
|
|
40
|
-
| **Issue Triage** | `workflows/issue-triage.md`
|
|
41
|
-
| **PR Review** | `workflows/pr-review.md`
|
|
42
|
-
| **
|
|
43
|
-
| **
|
|
44
|
-
| **
|
|
45
|
-
| **Update Dependencies** | `workflows/update-deps.md` | Dependency update with audit trail |
|
|
46
|
-
| **Security Audit** | `workflows/security-audit.md` | Auto-detected security scanning |
|
|
47
|
-
| **Code Quality Audit** | `workflows/code-quality-audit.md` | Static code quality analysis |
|
|
48
|
-
| **Performance Audit** | `workflows/perf-audit.md` | Build, bundle, runtime, test speed analysis |
|
|
36
|
+
| Workflow | File | Purpose |
|
|
37
|
+
| ----------------------- | ------------------------------- | ------------------------------------------- |
|
|
38
|
+
| **Issue Triage** | `workflows/issue-triage.md` | Fix a single GitHub issue end-to-end |
|
|
39
|
+
| **PR Review** | `workflows/pr-review.md` | Review a PR with validation pipeline |
|
|
40
|
+
| **Milestone Sprint** | `workflows/milestone-sprint.md` | Work through milestone issues sequentially |
|
|
41
|
+
| **Roadmap Kickoff** | `workflows/roadmap-kickoff.md` | Translate planning epics into Kanban issues |
|
|
42
|
+
| **Update Dependencies** | `workflows/update-deps.md` | Dependency update with audit trail |
|
|
49
43
|
|
|
50
44
|
## Prerequisites
|
|
51
45
|
|
|
@@ -143,10 +137,8 @@ These entry types are used by Commander workflows for structured audit trails:
|
|
|
143
137
|
| `implementation` | issue-triage | Fix implemented |
|
|
144
138
|
| `gate_pass` | all | Validation gate passed |
|
|
145
139
|
| `gate_fail` | all | Validation gate failed (with error details) |
|
|
146
|
-
| `security_finding` | security-audit | Security scan finding |
|
|
147
140
|
| `pr_submitted` | issue-triage | PR created and pushed |
|
|
148
141
|
| `review_start` | pr-review | PR review initiated |
|
|
149
142
|
| `review_complete` | pr-review | PR review completed |
|
|
150
143
|
| `milestone_sprint_start` | milestone-sprint | Sprint started |
|
|
151
144
|
| `deps_update` | update-deps | Dependency update completed |
|
|
152
|
-
| `audit_finding` | all audits | Code quality or perf finding |
|
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
# GitHub Copilot CLI Pre-Push Audit Workflow
|
|
2
2
|
|
|
3
|
-
This workflow orchestrates an AI-driven adversarial review using the GitHub Copilot CLI (
|
|
3
|
+
This workflow orchestrates an AI-driven adversarial review using the GitHub Copilot CLI (`gh copilot`). It acts as a strict secondary validation layer (a "second opinion") across both localized logic changes (PR reviews) and full repository inspections.
|
|
4
4
|
|
|
5
5
|
## Phase 1: Environment Readiness & Authentication
|
|
6
6
|
|
|
7
7
|
1. **Verify Copilot CLI Presence**:
|
|
8
|
-
Run `
|
|
9
|
-
If missing, install it
|
|
8
|
+
Run `gh extension list | grep copilot`.
|
|
9
|
+
If missing, install it via: `gh extension install github/gh-copilot`.
|
|
10
10
|
|
|
11
11
|
2. **Verify Authentication**:
|
|
12
|
-
Ensure the CLI is authenticated via `copilot
|
|
12
|
+
Ensure the CLI is authenticated via `gh auth status` and test with `gh copilot --version`. If the user has not authenticated, pause the agentic execution and prompt them to authorize (`gh auth login`).
|
|
13
13
|
|
|
14
14
|
## Phase 2: Execution Targeting (The Audit Context)
|
|
15
15
|
|
|
16
16
|
Determine whether this is a localized Feature Branch (Pre-Push PR) review or a whole Codebase Audit.
|
|
17
17
|
|
|
18
|
+
> **Note**: The `gh copilot` extension does not natively support non-interactive file stream piping. The agent must use `gh copilot explain` or instruct the user to use the Copilot Chat window with the generated prompts.
|
|
19
|
+
|
|
18
20
|
### Path A: Pre-Push PR Review
|
|
19
21
|
|
|
20
22
|
1. Diff the current working branch against the primary target (e.g., `main` or `master`).
|
|
21
|
-
2. **Execute
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
```
|
|
23
|
+
2. **Execute Evaluation**:
|
|
24
|
+
Prompt the user to review the diff in their IDE's Copilot Chat using this prompt:
|
|
25
|
+
"Act as an extremely strict, senior PR reviewer. Review this submitted git diff. Analyze edge cases, logic gaps, unhandled bounds, typescript compliance, and security flaws. Produce a Markdown-formatted table of defects."
|
|
25
26
|
|
|
26
27
|
### Path B: Comprehensive Codebase Review
|
|
27
28
|
|
|
28
|
-
1. **Execute
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
```
|
|
29
|
+
1. **Execute Codebase Evaluation**:
|
|
30
|
+
Prompt the user to perform the review in their IDE using the Workspace chat context (`@workspace`):
|
|
31
|
+
"Act as an adversarial security and performance auditor. Perform a comprehensive analysis of all files in this repository. Point out bad architectural couplings, injection vectors, unhandled error flows, and data boundaries that are not explicit. Output as a detailed Markdown report."
|
|
32
32
|
|
|
33
33
|
## Phase 3: Journal Archival (Verification Sync)
|
|
34
34
|
|