@mohanscodex/spectra-code 0.4.8 → 0.5.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 +42 -2
- package/dist/package.json +8 -5
- package/dist/src/agents/definitions/build.d.ts +3 -0
- package/dist/src/agents/definitions/build.d.ts.map +1 -0
- package/dist/src/agents/definitions/build.js +51 -0
- package/dist/src/agents/definitions/build.js.map +1 -0
- package/dist/src/agents/definitions/debug.d.ts +3 -0
- package/dist/src/agents/definitions/debug.d.ts.map +1 -0
- package/dist/src/agents/definitions/debug.js +45 -0
- package/dist/src/agents/definitions/debug.js.map +1 -0
- package/dist/src/agents/definitions/explore.d.ts +3 -0
- package/dist/src/agents/definitions/explore.d.ts.map +1 -0
- package/dist/src/agents/definitions/explore.js +34 -0
- package/dist/src/agents/definitions/explore.js.map +1 -0
- package/dist/src/agents/definitions/index.d.ts +5 -0
- package/dist/src/agents/definitions/index.d.ts.map +1 -0
- package/dist/src/agents/definitions/index.js +19 -0
- package/dist/src/agents/definitions/index.js.map +1 -0
- package/dist/src/agents/definitions/plan.d.ts +3 -0
- package/dist/src/agents/definitions/plan.d.ts.map +1 -0
- package/dist/src/agents/definitions/plan.js +44 -0
- package/dist/src/agents/definitions/plan.js.map +1 -0
- package/dist/src/agents/definitions/title.d.ts +3 -0
- package/dist/src/agents/definitions/title.d.ts.map +1 -0
- package/dist/src/agents/definitions/title.js +34 -0
- package/dist/src/agents/definitions/title.js.map +1 -0
- package/dist/src/agents/index.d.ts +6 -0
- package/dist/src/agents/index.d.ts.map +1 -0
- package/dist/src/agents/index.js +10 -0
- package/dist/src/agents/index.js.map +1 -0
- package/dist/src/agents/types.d.ts +15 -0
- package/dist/src/agents/types.d.ts.map +1 -0
- package/dist/src/agents/types.js +2 -0
- package/dist/src/agents/types.js.map +1 -0
- package/dist/src/cli.js +2 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/session.js +1 -1
- package/dist/src/commands/session.js.map +1 -1
- package/dist/src/integrations/acp/server.js +1 -1
- package/dist/src/integrations/acp/server.js.map +1 -1
- package/dist/src/services/prompt-history.d.ts +32 -0
- package/dist/src/services/prompt-history.d.ts.map +1 -0
- package/dist/src/services/prompt-history.js +144 -0
- package/dist/src/services/prompt-history.js.map +1 -0
- package/dist/src/services/snapshot-manager.d.ts +32 -32
- package/dist/src/services/snapshot-manager.d.ts.map +1 -1
- package/dist/src/services/snapshot-manager.js +308 -155
- package/dist/src/services/snapshot-manager.js.map +1 -1
- package/dist/src/tools/edit.d.ts.map +1 -1
- package/dist/src/tools/edit.js +5 -22
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/glob.d.ts.map +1 -1
- package/dist/src/tools/glob.js +2 -1
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/grep.js +2 -2
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/index.d.ts +5 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +30 -1
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/task.js +1 -1
- package/dist/src/tools/task.js.map +1 -1
- package/dist/src/tools/write.d.ts.map +1 -1
- package/dist/src/tools/write.js +7 -4
- package/dist/src/tools/write.js.map +1 -1
- package/dist/src/tui/app-constants.js +1 -1
- package/dist/src/tui/app-constants.js.map +1 -1
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +35 -15
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/commands.d.ts +15 -0
- package/dist/src/tui/commands.d.ts.map +1 -1
- package/dist/src/tui/commands.js +252 -1
- package/dist/src/tui/commands.js.map +1 -1
- package/dist/src/tui/components/chat-area.d.ts.map +1 -1
- package/dist/src/tui/components/chat-area.js +1 -1
- package/dist/src/tui/components/chat-area.js.map +1 -1
- package/dist/src/tui/components/message.d.ts.map +1 -1
- package/dist/src/tui/components/message.js +79 -4
- package/dist/src/tui/components/message.js.map +1 -1
- package/dist/src/tui/hooks/use-agent.d.ts.map +1 -1
- package/dist/src/tui/hooks/use-agent.js +17 -4
- package/dist/src/tui/hooks/use-agent.js.map +1 -1
- package/dist/src/tui/hooks/use-app-keyboard.d.ts +4 -5
- package/dist/src/tui/hooks/use-app-keyboard.d.ts.map +1 -1
- package/dist/src/tui/hooks/use-app-keyboard.js +23 -24
- package/dist/src/tui/hooks/use-app-keyboard.js.map +1 -1
- package/dist/src/tui/hooks/use-chat-submit.d.ts +2 -2
- package/dist/src/tui/hooks/use-chat-submit.d.ts.map +1 -1
- package/dist/src/tui/hooks/use-chat-submit.js +143 -20
- package/dist/src/tui/hooks/use-chat-submit.js.map +1 -1
- package/dist/src/tui/hooks/use-revert.d.ts +3 -5
- package/dist/src/tui/hooks/use-revert.d.ts.map +1 -1
- package/dist/src/tui/hooks/use-revert.js +83 -34
- package/dist/src/tui/hooks/use-revert.js.map +1 -1
- package/dist/src/tui/hooks/use-title-agent.d.ts +13 -0
- package/dist/src/tui/hooks/use-title-agent.d.ts.map +1 -0
- package/dist/src/tui/hooks/use-title-agent.js +50 -0
- package/dist/src/tui/hooks/use-title-agent.js.map +1 -0
- package/dist/src/tui/prompt-bar.d.ts.map +1 -1
- package/dist/src/tui/prompt-bar.js +27 -33
- package/dist/src/tui/prompt-bar.js.map +1 -1
- package/dist/src/tui/theme.d.ts +2 -0
- package/dist/src/tui/theme.d.ts.map +1 -1
- package/dist/src/tui/theme.js +2 -0
- package/dist/src/tui/theme.js.map +1 -1
- package/dist/src/tui/types.d.ts +5 -0
- package/dist/src/tui/types.d.ts.map +1 -1
- package/dist/src/tui/ui/agent-switcher.js +1 -1
- package/dist/src/tui/ui/agent-switcher.js.map +1 -1
- package/dist/src/tui/ui/cost-dialog.d.ts +14 -0
- package/dist/src/tui/ui/cost-dialog.d.ts.map +1 -0
- package/dist/src/tui/ui/cost-dialog.js +28 -0
- package/dist/src/tui/ui/cost-dialog.js.map +1 -0
- package/dist/src/tui/ui/debug-dialog.js +1 -1
- package/dist/src/tui/ui/debug-dialog.js.map +1 -1
- package/dist/src/tui/ui/session-list.js +1 -1
- package/dist/src/tui/ui/session-list.js.map +1 -1
- package/dist/src/tui/utils/terminal-title.d.ts +3 -0
- package/dist/src/tui/utils/terminal-title.d.ts.map +1 -0
- package/dist/src/tui/utils/terminal-title.js +14 -0
- package/dist/src/tui/utils/terminal-title.js.map +1 -0
- package/dist/src/tui/utils/version.d.ts +1 -1
- package/dist/src/tui/utils/version.d.ts.map +1 -1
- package/dist/src/tui/utils/version.js +4 -22
- package/dist/src/tui/utils/version.js.map +1 -1
- package/dist/src/utils/paths.d.ts +1 -0
- package/dist/src/utils/paths.d.ts.map +1 -1
- package/dist/src/utils/paths.js +13 -0
- package/dist/src/utils/paths.js.map +1 -1
- package/package.json +9 -6
- package/skills/REQUESTS.md +36 -0
- package/skills/architecture/ABOUT.md +20 -0
- package/skills/architecture/preserving-productive-tensions/SKILL.md +152 -0
- package/skills/aspnet-core/LICENSE.txt +202 -0
- package/skills/aspnet-core/SKILL.md +61 -0
- package/skills/aspnet-core/agents/openai.yaml +5 -0
- package/skills/aspnet-core/assets/dotnet-logo.png +0 -0
- package/skills/aspnet-core/references/_sections.md +40 -0
- package/skills/aspnet-core/references/apis-minimal-and-controllers.md +81 -0
- package/skills/aspnet-core/references/data-state-and-services.md +69 -0
- package/skills/aspnet-core/references/program-and-pipeline.md +103 -0
- package/skills/aspnet-core/references/realtime-grpc-and-background-work.md +58 -0
- package/skills/aspnet-core/references/security-and-identity.md +75 -0
- package/skills/aspnet-core/references/source-map.md +43 -0
- package/skills/aspnet-core/references/stack-selection.md +63 -0
- package/skills/aspnet-core/references/testing-performance-and-operations.md +92 -0
- package/skills/aspnet-core/references/ui-blazor.md +53 -0
- package/skills/aspnet-core/references/ui-mvc.md +56 -0
- package/skills/aspnet-core/references/ui-razor-pages.md +55 -0
- package/skills/aspnet-core/references/versioning-and-upgrades.md +51 -0
- package/skills/chatgpt-apps/LICENSE.txt +201 -0
- package/skills/chatgpt-apps/SKILL.md +320 -0
- package/skills/chatgpt-apps/agents/openai.yaml +13 -0
- package/skills/chatgpt-apps/references/app-archetypes.md +132 -0
- package/skills/chatgpt-apps/references/apps-sdk-docs-workflow.md +135 -0
- package/skills/chatgpt-apps/references/interactive-state-sync-patterns.md +113 -0
- package/skills/chatgpt-apps/references/repo-contract-and-validation.md +93 -0
- package/skills/chatgpt-apps/references/search-fetch-standard.md +67 -0
- package/skills/chatgpt-apps/references/upstream-example-workflow.md +79 -0
- package/skills/chatgpt-apps/references/window-openai-patterns.md +70 -0
- package/skills/chatgpt-apps/scripts/scaffold_node_ext_apps.mjs +606 -0
- package/skills/cloudflare-deploy/LICENSE.txt +201 -0
- package/skills/cloudflare-deploy/SKILL.md +224 -0
- package/skills/cloudflare-deploy/agents/openai.yaml +6 -0
- package/skills/cloudflare-deploy/assets/cloudflare-small.svg +3 -0
- package/skills/cloudflare-deploy/assets/cloudflare.png +0 -0
- package/skills/cloudflare-deploy/references/agents-sdk/README.md +89 -0
- package/skills/cloudflare-deploy/references/agents-sdk/api.md +190 -0
- package/skills/cloudflare-deploy/references/agents-sdk/configuration.md +182 -0
- package/skills/cloudflare-deploy/references/agents-sdk/gotchas.md +158 -0
- package/skills/cloudflare-deploy/references/agents-sdk/patterns.md +192 -0
- package/skills/cloudflare-deploy/references/ai-gateway/README.md +175 -0
- package/skills/cloudflare-deploy/references/ai-gateway/configuration.md +111 -0
- package/skills/cloudflare-deploy/references/ai-gateway/dynamic-routing.md +82 -0
- package/skills/cloudflare-deploy/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare-deploy/references/ai-gateway/sdk-integration.md +114 -0
- package/skills/cloudflare-deploy/references/ai-gateway/troubleshooting.md +88 -0
- package/skills/cloudflare-deploy/references/ai-search/README.md +138 -0
- package/skills/cloudflare-deploy/references/ai-search/api.md +87 -0
- package/skills/cloudflare-deploy/references/ai-search/configuration.md +88 -0
- package/skills/cloudflare-deploy/references/ai-search/gotchas.md +81 -0
- package/skills/cloudflare-deploy/references/ai-search/patterns.md +85 -0
- package/skills/cloudflare-deploy/references/analytics-engine/README.md +92 -0
- package/skills/cloudflare-deploy/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare-deploy/references/analytics-engine/configuration.md +112 -0
- package/skills/cloudflare-deploy/references/analytics-engine/gotchas.md +85 -0
- package/skills/cloudflare-deploy/references/analytics-engine/patterns.md +83 -0
- package/skills/cloudflare-deploy/references/api/README.md +65 -0
- package/skills/cloudflare-deploy/references/api/api.md +204 -0
- package/skills/cloudflare-deploy/references/api/configuration.md +160 -0
- package/skills/cloudflare-deploy/references/api/gotchas.md +225 -0
- package/skills/cloudflare-deploy/references/api/patterns.md +204 -0
- package/skills/cloudflare-deploy/references/api-shield/README.md +44 -0
- package/skills/cloudflare-deploy/references/api-shield/api.md +141 -0
- package/skills/cloudflare-deploy/references/api-shield/configuration.md +192 -0
- package/skills/cloudflare-deploy/references/api-shield/gotchas.md +125 -0
- package/skills/cloudflare-deploy/references/api-shield/patterns.md +180 -0
- package/skills/cloudflare-deploy/references/argo-smart-routing/README.md +90 -0
- package/skills/cloudflare-deploy/references/argo-smart-routing/api.md +240 -0
- package/skills/cloudflare-deploy/references/argo-smart-routing/configuration.md +197 -0
- package/skills/cloudflare-deploy/references/argo-smart-routing/gotchas.md +111 -0
- package/skills/cloudflare-deploy/references/argo-smart-routing/patterns.md +104 -0
- package/skills/cloudflare-deploy/references/bindings/README.md +122 -0
- package/skills/cloudflare-deploy/references/bindings/api.md +203 -0
- package/skills/cloudflare-deploy/references/bindings/configuration.md +188 -0
- package/skills/cloudflare-deploy/references/bindings/gotchas.md +208 -0
- package/skills/cloudflare-deploy/references/bindings/patterns.md +200 -0
- package/skills/cloudflare-deploy/references/bot-management/README.md +94 -0
- package/skills/cloudflare-deploy/references/bot-management/api.md +169 -0
- package/skills/cloudflare-deploy/references/bot-management/configuration.md +163 -0
- package/skills/cloudflare-deploy/references/bot-management/gotchas.md +114 -0
- package/skills/cloudflare-deploy/references/bot-management/patterns.md +182 -0
- package/skills/cloudflare-deploy/references/browser-rendering/README.md +78 -0
- package/skills/cloudflare-deploy/references/browser-rendering/api.md +108 -0
- package/skills/cloudflare-deploy/references/browser-rendering/configuration.md +78 -0
- package/skills/cloudflare-deploy/references/browser-rendering/gotchas.md +88 -0
- package/skills/cloudflare-deploy/references/browser-rendering/patterns.md +91 -0
- package/skills/cloudflare-deploy/references/c3/README.md +111 -0
- package/skills/cloudflare-deploy/references/c3/api.md +71 -0
- package/skills/cloudflare-deploy/references/c3/configuration.md +81 -0
- package/skills/cloudflare-deploy/references/c3/gotchas.md +92 -0
- package/skills/cloudflare-deploy/references/c3/patterns.md +82 -0
- package/skills/cloudflare-deploy/references/cache-reserve/README.md +147 -0
- package/skills/cloudflare-deploy/references/cache-reserve/api.md +194 -0
- package/skills/cloudflare-deploy/references/cache-reserve/configuration.md +169 -0
- package/skills/cloudflare-deploy/references/cache-reserve/gotchas.md +132 -0
- package/skills/cloudflare-deploy/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare-deploy/references/containers/README.md +85 -0
- package/skills/cloudflare-deploy/references/containers/api.md +187 -0
- package/skills/cloudflare-deploy/references/containers/configuration.md +188 -0
- package/skills/cloudflare-deploy/references/containers/gotchas.md +178 -0
- package/skills/cloudflare-deploy/references/containers/patterns.md +202 -0
- package/skills/cloudflare-deploy/references/cron-triggers/README.md +99 -0
- package/skills/cloudflare-deploy/references/cron-triggers/api.md +196 -0
- package/skills/cloudflare-deploy/references/cron-triggers/configuration.md +180 -0
- package/skills/cloudflare-deploy/references/cron-triggers/gotchas.md +199 -0
- package/skills/cloudflare-deploy/references/cron-triggers/patterns.md +190 -0
- package/skills/cloudflare-deploy/references/d1/README.md +133 -0
- package/skills/cloudflare-deploy/references/d1/api.md +196 -0
- package/skills/cloudflare-deploy/references/d1/configuration.md +188 -0
- package/skills/cloudflare-deploy/references/d1/gotchas.md +98 -0
- package/skills/cloudflare-deploy/references/d1/patterns.md +189 -0
- package/skills/cloudflare-deploy/references/ddos/README.md +41 -0
- package/skills/cloudflare-deploy/references/ddos/api.md +164 -0
- package/skills/cloudflare-deploy/references/ddos/configuration.md +93 -0
- package/skills/cloudflare-deploy/references/ddos/gotchas.md +107 -0
- package/skills/cloudflare-deploy/references/ddos/patterns.md +174 -0
- package/skills/cloudflare-deploy/references/do-storage/README.md +75 -0
- package/skills/cloudflare-deploy/references/do-storage/api.md +102 -0
- package/skills/cloudflare-deploy/references/do-storage/configuration.md +112 -0
- package/skills/cloudflare-deploy/references/do-storage/gotchas.md +150 -0
- package/skills/cloudflare-deploy/references/do-storage/patterns.md +182 -0
- package/skills/cloudflare-deploy/references/do-storage/testing.md +183 -0
- package/skills/cloudflare-deploy/references/durable-objects/README.md +185 -0
- package/skills/cloudflare-deploy/references/durable-objects/api.md +187 -0
- package/skills/cloudflare-deploy/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare-deploy/references/durable-objects/gotchas.md +197 -0
- package/skills/cloudflare-deploy/references/durable-objects/patterns.md +201 -0
- package/skills/cloudflare-deploy/references/email-routing/README.md +89 -0
- package/skills/cloudflare-deploy/references/email-routing/api.md +195 -0
- package/skills/cloudflare-deploy/references/email-routing/configuration.md +186 -0
- package/skills/cloudflare-deploy/references/email-routing/gotchas.md +196 -0
- package/skills/cloudflare-deploy/references/email-routing/patterns.md +229 -0
- package/skills/cloudflare-deploy/references/email-workers/README.md +151 -0
- package/skills/cloudflare-deploy/references/email-workers/api.md +237 -0
- package/skills/cloudflare-deploy/references/email-workers/configuration.md +112 -0
- package/skills/cloudflare-deploy/references/email-workers/gotchas.md +125 -0
- package/skills/cloudflare-deploy/references/email-workers/patterns.md +102 -0
- package/skills/cloudflare-deploy/references/hyperdrive/README.md +82 -0
- package/skills/cloudflare-deploy/references/hyperdrive/api.md +143 -0
- package/skills/cloudflare-deploy/references/hyperdrive/configuration.md +159 -0
- package/skills/cloudflare-deploy/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare-deploy/references/hyperdrive/patterns.md +190 -0
- package/skills/cloudflare-deploy/references/images/README.md +61 -0
- package/skills/cloudflare-deploy/references/images/api.md +96 -0
- package/skills/cloudflare-deploy/references/images/configuration.md +211 -0
- package/skills/cloudflare-deploy/references/images/gotchas.md +99 -0
- package/skills/cloudflare-deploy/references/images/patterns.md +115 -0
- package/skills/cloudflare-deploy/references/kv/README.md +89 -0
- package/skills/cloudflare-deploy/references/kv/api.md +160 -0
- package/skills/cloudflare-deploy/references/kv/configuration.md +144 -0
- package/skills/cloudflare-deploy/references/kv/gotchas.md +131 -0
- package/skills/cloudflare-deploy/references/kv/patterns.md +196 -0
- package/skills/cloudflare-deploy/references/miniflare/README.md +105 -0
- package/skills/cloudflare-deploy/references/miniflare/api.md +187 -0
- package/skills/cloudflare-deploy/references/miniflare/configuration.md +173 -0
- package/skills/cloudflare-deploy/references/miniflare/gotchas.md +160 -0
- package/skills/cloudflare-deploy/references/miniflare/patterns.md +181 -0
- package/skills/cloudflare-deploy/references/network-interconnect/README.md +99 -0
- package/skills/cloudflare-deploy/references/network-interconnect/api.md +199 -0
- package/skills/cloudflare-deploy/references/network-interconnect/configuration.md +114 -0
- package/skills/cloudflare-deploy/references/network-interconnect/gotchas.md +165 -0
- package/skills/cloudflare-deploy/references/network-interconnect/patterns.md +166 -0
- package/skills/cloudflare-deploy/references/observability/README.md +87 -0
- package/skills/cloudflare-deploy/references/observability/api.md +164 -0
- package/skills/cloudflare-deploy/references/observability/configuration.md +169 -0
- package/skills/cloudflare-deploy/references/observability/gotchas.md +115 -0
- package/skills/cloudflare-deploy/references/observability/patterns.md +105 -0
- package/skills/cloudflare-deploy/references/pages/README.md +88 -0
- package/skills/cloudflare-deploy/references/pages/api.md +204 -0
- package/skills/cloudflare-deploy/references/pages/configuration.md +201 -0
- package/skills/cloudflare-deploy/references/pages/gotchas.md +203 -0
- package/skills/cloudflare-deploy/references/pages/patterns.md +204 -0
- package/skills/cloudflare-deploy/references/pages-functions/README.md +98 -0
- package/skills/cloudflare-deploy/references/pages-functions/api.md +143 -0
- package/skills/cloudflare-deploy/references/pages-functions/configuration.md +122 -0
- package/skills/cloudflare-deploy/references/pages-functions/gotchas.md +94 -0
- package/skills/cloudflare-deploy/references/pages-functions/patterns.md +137 -0
- package/skills/cloudflare-deploy/references/pipelines/README.md +105 -0
- package/skills/cloudflare-deploy/references/pipelines/api.md +208 -0
- package/skills/cloudflare-deploy/references/pipelines/configuration.md +98 -0
- package/skills/cloudflare-deploy/references/pipelines/gotchas.md +80 -0
- package/skills/cloudflare-deploy/references/pipelines/patterns.md +87 -0
- package/skills/cloudflare-deploy/references/pulumi/README.md +100 -0
- package/skills/cloudflare-deploy/references/pulumi/api.md +200 -0
- package/skills/cloudflare-deploy/references/pulumi/configuration.md +198 -0
- package/skills/cloudflare-deploy/references/pulumi/gotchas.md +181 -0
- package/skills/cloudflare-deploy/references/pulumi/patterns.md +191 -0
- package/skills/cloudflare-deploy/references/queues/README.md +96 -0
- package/skills/cloudflare-deploy/references/queues/api.md +206 -0
- package/skills/cloudflare-deploy/references/queues/configuration.md +144 -0
- package/skills/cloudflare-deploy/references/queues/gotchas.md +206 -0
- package/skills/cloudflare-deploy/references/queues/patterns.md +220 -0
- package/skills/cloudflare-deploy/references/r2/README.md +95 -0
- package/skills/cloudflare-deploy/references/r2/api.md +200 -0
- package/skills/cloudflare-deploy/references/r2/configuration.md +165 -0
- package/skills/cloudflare-deploy/references/r2/gotchas.md +190 -0
- package/skills/cloudflare-deploy/references/r2/patterns.md +193 -0
- package/skills/cloudflare-deploy/references/r2-data-catalog/README.md +149 -0
- package/skills/cloudflare-deploy/references/r2-data-catalog/api.md +199 -0
- package/skills/cloudflare-deploy/references/r2-data-catalog/configuration.md +198 -0
- package/skills/cloudflare-deploy/references/r2-data-catalog/gotchas.md +170 -0
- package/skills/cloudflare-deploy/references/r2-data-catalog/patterns.md +191 -0
- package/skills/cloudflare-deploy/references/r2-sql/README.md +128 -0
- package/skills/cloudflare-deploy/references/r2-sql/api.md +158 -0
- package/skills/cloudflare-deploy/references/r2-sql/configuration.md +147 -0
- package/skills/cloudflare-deploy/references/r2-sql/gotchas.md +212 -0
- package/skills/cloudflare-deploy/references/r2-sql/patterns.md +222 -0
- package/skills/cloudflare-deploy/references/realtime-sfu/README.md +65 -0
- package/skills/cloudflare-deploy/references/realtime-sfu/api.md +158 -0
- package/skills/cloudflare-deploy/references/realtime-sfu/configuration.md +137 -0
- package/skills/cloudflare-deploy/references/realtime-sfu/gotchas.md +133 -0
- package/skills/cloudflare-deploy/references/realtime-sfu/patterns.md +174 -0
- package/skills/cloudflare-deploy/references/realtimekit/README.md +113 -0
- package/skills/cloudflare-deploy/references/realtimekit/api.md +212 -0
- package/skills/cloudflare-deploy/references/realtimekit/configuration.md +203 -0
- package/skills/cloudflare-deploy/references/realtimekit/gotchas.md +169 -0
- package/skills/cloudflare-deploy/references/realtimekit/patterns.md +223 -0
- package/skills/cloudflare-deploy/references/sandbox/README.md +96 -0
- package/skills/cloudflare-deploy/references/sandbox/api.md +198 -0
- package/skills/cloudflare-deploy/references/sandbox/configuration.md +143 -0
- package/skills/cloudflare-deploy/references/sandbox/gotchas.md +194 -0
- package/skills/cloudflare-deploy/references/sandbox/patterns.md +201 -0
- package/skills/cloudflare-deploy/references/secrets-store/README.md +74 -0
- package/skills/cloudflare-deploy/references/secrets-store/api.md +200 -0
- package/skills/cloudflare-deploy/references/secrets-store/configuration.md +185 -0
- package/skills/cloudflare-deploy/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare-deploy/references/secrets-store/patterns.md +207 -0
- package/skills/cloudflare-deploy/references/smart-placement/README.md +138 -0
- package/skills/cloudflare-deploy/references/smart-placement/api.md +183 -0
- package/skills/cloudflare-deploy/references/smart-placement/configuration.md +196 -0
- package/skills/cloudflare-deploy/references/smart-placement/gotchas.md +174 -0
- package/skills/cloudflare-deploy/references/smart-placement/patterns.md +183 -0
- package/skills/cloudflare-deploy/references/snippets/README.md +68 -0
- package/skills/cloudflare-deploy/references/snippets/api.md +198 -0
- package/skills/cloudflare-deploy/references/snippets/configuration.md +227 -0
- package/skills/cloudflare-deploy/references/snippets/gotchas.md +86 -0
- package/skills/cloudflare-deploy/references/snippets/patterns.md +135 -0
- package/skills/cloudflare-deploy/references/spectrum/README.md +52 -0
- package/skills/cloudflare-deploy/references/spectrum/api.md +181 -0
- package/skills/cloudflare-deploy/references/spectrum/configuration.md +194 -0
- package/skills/cloudflare-deploy/references/spectrum/gotchas.md +145 -0
- package/skills/cloudflare-deploy/references/spectrum/patterns.md +196 -0
- package/skills/cloudflare-deploy/references/static-assets/README.md +65 -0
- package/skills/cloudflare-deploy/references/static-assets/api.md +199 -0
- package/skills/cloudflare-deploy/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare-deploy/references/static-assets/gotchas.md +162 -0
- package/skills/cloudflare-deploy/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare-deploy/references/stream/README.md +114 -0
- package/skills/cloudflare-deploy/references/stream/api-live.md +195 -0
- package/skills/cloudflare-deploy/references/stream/api.md +199 -0
- package/skills/cloudflare-deploy/references/stream/configuration.md +141 -0
- package/skills/cloudflare-deploy/references/stream/gotchas.md +130 -0
- package/skills/cloudflare-deploy/references/stream/patterns.md +184 -0
- package/skills/cloudflare-deploy/references/tail-workers/README.md +89 -0
- package/skills/cloudflare-deploy/references/tail-workers/api.md +200 -0
- package/skills/cloudflare-deploy/references/tail-workers/configuration.md +176 -0
- package/skills/cloudflare-deploy/references/tail-workers/gotchas.md +192 -0
- package/skills/cloudflare-deploy/references/tail-workers/patterns.md +180 -0
- package/skills/cloudflare-deploy/references/terraform/README.md +102 -0
- package/skills/cloudflare-deploy/references/terraform/api.md +178 -0
- package/skills/cloudflare-deploy/references/terraform/configuration.md +197 -0
- package/skills/cloudflare-deploy/references/terraform/gotchas.md +150 -0
- package/skills/cloudflare-deploy/references/terraform/patterns.md +174 -0
- package/skills/cloudflare-deploy/references/tunnel/README.md +129 -0
- package/skills/cloudflare-deploy/references/tunnel/api.md +193 -0
- package/skills/cloudflare-deploy/references/tunnel/configuration.md +157 -0
- package/skills/cloudflare-deploy/references/tunnel/gotchas.md +147 -0
- package/skills/cloudflare-deploy/references/tunnel/networking.md +168 -0
- package/skills/cloudflare-deploy/references/tunnel/patterns.md +192 -0
- package/skills/cloudflare-deploy/references/turn/README.md +82 -0
- package/skills/cloudflare-deploy/references/turn/api.md +239 -0
- package/skills/cloudflare-deploy/references/turn/configuration.md +179 -0
- package/skills/cloudflare-deploy/references/turn/gotchas.md +231 -0
- package/skills/cloudflare-deploy/references/turn/patterns.md +213 -0
- package/skills/cloudflare-deploy/references/turnstile/README.md +99 -0
- package/skills/cloudflare-deploy/references/turnstile/api.md +240 -0
- package/skills/cloudflare-deploy/references/turnstile/configuration.md +222 -0
- package/skills/cloudflare-deploy/references/turnstile/gotchas.md +218 -0
- package/skills/cloudflare-deploy/references/turnstile/patterns.md +193 -0
- package/skills/cloudflare-deploy/references/vectorize/README.md +133 -0
- package/skills/cloudflare-deploy/references/vectorize/api.md +88 -0
- package/skills/cloudflare-deploy/references/vectorize/configuration.md +88 -0
- package/skills/cloudflare-deploy/references/vectorize/gotchas.md +76 -0
- package/skills/cloudflare-deploy/references/vectorize/patterns.md +90 -0
- package/skills/cloudflare-deploy/references/waf/README.md +113 -0
- package/skills/cloudflare-deploy/references/waf/api.md +202 -0
- package/skills/cloudflare-deploy/references/waf/configuration.md +203 -0
- package/skills/cloudflare-deploy/references/waf/gotchas.md +204 -0
- package/skills/cloudflare-deploy/references/waf/patterns.md +197 -0
- package/skills/cloudflare-deploy/references/web-analytics/README.md +140 -0
- package/skills/cloudflare-deploy/references/web-analytics/configuration.md +76 -0
- package/skills/cloudflare-deploy/references/web-analytics/gotchas.md +82 -0
- package/skills/cloudflare-deploy/references/web-analytics/integration.md +60 -0
- package/skills/cloudflare-deploy/references/web-analytics/patterns.md +91 -0
- package/skills/cloudflare-deploy/references/workerd/README.md +78 -0
- package/skills/cloudflare-deploy/references/workerd/api.md +185 -0
- package/skills/cloudflare-deploy/references/workerd/configuration.md +183 -0
- package/skills/cloudflare-deploy/references/workerd/gotchas.md +139 -0
- package/skills/cloudflare-deploy/references/workerd/patterns.md +192 -0
- package/skills/cloudflare-deploy/references/workers/README.md +108 -0
- package/skills/cloudflare-deploy/references/workers/api.md +195 -0
- package/skills/cloudflare-deploy/references/workers/configuration.md +185 -0
- package/skills/cloudflare-deploy/references/workers/frameworks.md +197 -0
- package/skills/cloudflare-deploy/references/workers/gotchas.md +136 -0
- package/skills/cloudflare-deploy/references/workers/patterns.md +198 -0
- package/skills/cloudflare-deploy/references/workers-ai/README.md +197 -0
- package/skills/cloudflare-deploy/references/workers-ai/api.md +112 -0
- package/skills/cloudflare-deploy/references/workers-ai/configuration.md +97 -0
- package/skills/cloudflare-deploy/references/workers-ai/gotchas.md +114 -0
- package/skills/cloudflare-deploy/references/workers-ai/patterns.md +120 -0
- package/skills/cloudflare-deploy/references/workers-for-platforms/README.md +89 -0
- package/skills/cloudflare-deploy/references/workers-for-platforms/api.md +196 -0
- package/skills/cloudflare-deploy/references/workers-for-platforms/configuration.md +167 -0
- package/skills/cloudflare-deploy/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare-deploy/references/workers-for-platforms/patterns.md +188 -0
- package/skills/cloudflare-deploy/references/workers-playground/README.md +127 -0
- package/skills/cloudflare-deploy/references/workers-playground/api.md +101 -0
- package/skills/cloudflare-deploy/references/workers-playground/configuration.md +163 -0
- package/skills/cloudflare-deploy/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare-deploy/references/workers-playground/patterns.md +132 -0
- package/skills/cloudflare-deploy/references/workers-vpc/README.md +127 -0
- package/skills/cloudflare-deploy/references/workers-vpc/api.md +202 -0
- package/skills/cloudflare-deploy/references/workers-vpc/configuration.md +147 -0
- package/skills/cloudflare-deploy/references/workers-vpc/gotchas.md +167 -0
- package/skills/cloudflare-deploy/references/workers-vpc/patterns.md +209 -0
- package/skills/cloudflare-deploy/references/workflows/README.md +69 -0
- package/skills/cloudflare-deploy/references/workflows/api.md +185 -0
- package/skills/cloudflare-deploy/references/workflows/configuration.md +151 -0
- package/skills/cloudflare-deploy/references/workflows/gotchas.md +97 -0
- package/skills/cloudflare-deploy/references/workflows/patterns.md +175 -0
- package/skills/cloudflare-deploy/references/wrangler/README.md +141 -0
- package/skills/cloudflare-deploy/references/wrangler/api.md +188 -0
- package/skills/cloudflare-deploy/references/wrangler/auth.md +73 -0
- package/skills/cloudflare-deploy/references/wrangler/configuration.md +197 -0
- package/skills/cloudflare-deploy/references/wrangler/gotchas.md +197 -0
- package/skills/cloudflare-deploy/references/wrangler/patterns.md +209 -0
- package/skills/cloudflare-deploy/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
- package/skills/cloudflare-deploy/references/zaraz/README.md +111 -0
- package/skills/cloudflare-deploy/references/zaraz/api.md +112 -0
- package/skills/cloudflare-deploy/references/zaraz/configuration.md +90 -0
- package/skills/cloudflare-deploy/references/zaraz/gotchas.md +81 -0
- package/skills/cloudflare-deploy/references/zaraz/patterns.md +74 -0
- package/skills/collaboration/brainstorming/SKILL.md +75 -0
- package/skills/collaboration/dispatching-parallel-agents/SKILL.md +184 -0
- package/skills/collaboration/executing-plans/SKILL.md +78 -0
- package/skills/collaboration/finishing-a-development-branch/SKILL.md +202 -0
- package/skills/collaboration/phase-prompting/SKILL.md +292 -0
- package/skills/collaboration/receiving-code-review/SKILL.md +211 -0
- package/skills/collaboration/requesting-code-review/SKILL.md +107 -0
- package/skills/collaboration/requesting-code-review/code-reviewer.md +146 -0
- package/skills/collaboration/subagent-driven-development/SKILL.md +188 -0
- package/skills/collaboration/using-git-worktrees/SKILL.md +215 -0
- package/skills/collaboration/writing-plans/SKILL.md +118 -0
- package/skills/debugging/defense-in-depth/SKILL.md +130 -0
- package/skills/debugging/root-cause-tracing/SKILL.md +177 -0
- package/skills/debugging/root-cause-tracing/find-polluter.sh +63 -0
- package/skills/debugging/systematic-debugging/SKILL.md +295 -0
- package/skills/debugging/systematic-debugging/test-academic.md +14 -0
- package/skills/debugging/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/debugging/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/debugging/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/debugging/verification-before-completion/SKILL.md +142 -0
- package/skills/develop-web-game/LICENSE.txt +201 -0
- package/skills/develop-web-game/SKILL.md +149 -0
- package/skills/develop-web-game/agents/openai.yaml +6 -0
- package/skills/develop-web-game/assets/game-small.svg +4 -0
- package/skills/develop-web-game/assets/game.png +0 -0
- package/skills/develop-web-game/references/action_payloads.json +7 -0
- package/skills/develop-web-game/scripts/web_game_playwright_client.js +356 -0
- package/skills/doc/LICENSE.txt +201 -0
- package/skills/doc/SKILL.md +80 -0
- package/skills/doc/agents/openai.yaml +6 -0
- package/skills/doc/assets/doc-small.svg +3 -0
- package/skills/doc/assets/doc.png +0 -0
- package/skills/doc/scripts/render_docx.py +296 -0
- package/skills/figma/LICENSE.txt +202 -0
- package/skills/figma/SKILL.md +42 -0
- package/skills/figma/agents/openai.yaml +14 -0
- package/skills/figma/assets/figma-small.svg +3 -0
- package/skills/figma/assets/figma.png +0 -0
- package/skills/figma/assets/icon.svg +28 -0
- package/skills/figma/references/figma-mcp-config.md +35 -0
- package/skills/figma/references/figma-tools-and-prompts.md +34 -0
- package/skills/figma-implement-design/LICENSE.txt +202 -0
- package/skills/figma-implement-design/SKILL.md +264 -0
- package/skills/figma-implement-design/agents/openai.yaml +14 -0
- package/skills/figma-implement-design/assets/figma-small.svg +3 -0
- package/skills/figma-implement-design/assets/figma.png +0 -0
- package/skills/figma-implement-design/assets/icon.svg +28 -0
- package/skills/gh-address-comments/LICENSE.txt +202 -0
- package/skills/gh-address-comments/SKILL.md +25 -0
- package/skills/gh-address-comments/agents/openai.yaml +6 -0
- package/skills/gh-address-comments/assets/github-small.svg +3 -0
- package/skills/gh-address-comments/assets/github.png +0 -0
- package/skills/gh-address-comments/scripts/fetch_comments.py +237 -0
- package/skills/gh-fix-ci/LICENSE.txt +201 -0
- package/skills/gh-fix-ci/SKILL.md +69 -0
- package/skills/gh-fix-ci/agents/openai.yaml +6 -0
- package/skills/gh-fix-ci/assets/github-small.svg +3 -0
- package/skills/gh-fix-ci/assets/github.png +0 -0
- package/skills/gh-fix-ci/scripts/inspect_pr_checks.py +509 -0
- package/skills/goal-driven-project-loop/SKILL.md +217 -0
- package/skills/goal-driven-project-loop/references/goal-contract-template.md +42 -0
- package/skills/imagegen/LICENSE.txt +201 -0
- package/skills/imagegen/SKILL.md +174 -0
- package/skills/imagegen/agents/openai.yaml +6 -0
- package/skills/imagegen/assets/imagegen-small.svg +5 -0
- package/skills/imagegen/assets/imagegen.png +0 -0
- package/skills/imagegen/references/cli.md +132 -0
- package/skills/imagegen/references/codex-network.md +28 -0
- package/skills/imagegen/references/image-api.md +36 -0
- package/skills/imagegen/references/prompting.md +81 -0
- package/skills/imagegen/references/sample-prompts.md +384 -0
- package/skills/imagegen/scripts/image_gen.py +876 -0
- package/skills/jupyter-notebook/LICENSE.txt +201 -0
- package/skills/jupyter-notebook/SKILL.md +107 -0
- package/skills/jupyter-notebook/agents/openai.yaml +6 -0
- package/skills/jupyter-notebook/assets/experiment-template.ipynb +110 -0
- package/skills/jupyter-notebook/assets/jupyter-small.svg +3 -0
- package/skills/jupyter-notebook/assets/jupyter.png +0 -0
- package/skills/jupyter-notebook/assets/tutorial-template.ipynb +107 -0
- package/skills/jupyter-notebook/references/experiment-patterns.md +10 -0
- package/skills/jupyter-notebook/references/notebook-structure.md +17 -0
- package/skills/jupyter-notebook/references/quality-checklist.md +11 -0
- package/skills/jupyter-notebook/references/tutorial-patterns.md +9 -0
- package/skills/jupyter-notebook/scripts/new_notebook.py +130 -0
- package/skills/linear/LICENSE.txt +202 -0
- package/skills/linear/SKILL.md +87 -0
- package/skills/linear/agents/openai.yaml +14 -0
- package/skills/linear/assets/linear-small.svg +5 -0
- package/skills/linear/assets/linear.png +0 -0
- package/skills/netlify-deploy/LICENSE.txt +201 -0
- package/skills/netlify-deploy/SKILL.md +247 -0
- package/skills/netlify-deploy/agents/openai.yaml +6 -0
- package/skills/netlify-deploy/assets/netlify-small.svg +11 -0
- package/skills/netlify-deploy/assets/netlify.png +0 -0
- package/skills/netlify-deploy/references/cli-commands.md +162 -0
- package/skills/netlify-deploy/references/deployment-patterns.md +303 -0
- package/skills/netlify-deploy/references/netlify-toml.md +259 -0
- package/skills/notion-knowledge-capture/LICENSE.txt +7 -0
- package/skills/notion-knowledge-capture/SKILL.md +56 -0
- package/skills/notion-knowledge-capture/agents/openai.yaml +14 -0
- package/skills/notion-knowledge-capture/assets/notion-small.svg +11 -0
- package/skills/notion-knowledge-capture/assets/notion.png +0 -0
- package/skills/notion-knowledge-capture/evaluations/README.md +95 -0
- package/skills/notion-knowledge-capture/evaluations/conversation-to-wiki.json +31 -0
- package/skills/notion-knowledge-capture/evaluations/decision-record.json +31 -0
- package/skills/notion-knowledge-capture/examples/conversation-to-faq.md +226 -0
- package/skills/notion-knowledge-capture/examples/decision-capture.md +126 -0
- package/skills/notion-knowledge-capture/examples/how-to-guide.md +118 -0
- package/skills/notion-knowledge-capture/reference/database-best-practices.md +112 -0
- package/skills/notion-knowledge-capture/reference/decision-log-database.md +58 -0
- package/skills/notion-knowledge-capture/reference/documentation-database.md +93 -0
- package/skills/notion-knowledge-capture/reference/faq-database.md +57 -0
- package/skills/notion-knowledge-capture/reference/how-to-guide-database.md +38 -0
- package/skills/notion-knowledge-capture/reference/learning-database.md +35 -0
- package/skills/notion-knowledge-capture/reference/team-wiki-database.md +27 -0
- package/skills/notion-meeting-intelligence/LICENSE.txt +7 -0
- package/skills/notion-meeting-intelligence/SKILL.md +60 -0
- package/skills/notion-meeting-intelligence/agents/openai.yaml +14 -0
- package/skills/notion-meeting-intelligence/assets/notion-small.svg +11 -0
- package/skills/notion-meeting-intelligence/assets/notion.png +0 -0
- package/skills/notion-meeting-intelligence/evaluations/README.md +101 -0
- package/skills/notion-meeting-intelligence/evaluations/decision-meeting-prep.json +35 -0
- package/skills/notion-meeting-intelligence/evaluations/status-meeting-prep.json +35 -0
- package/skills/notion-meeting-intelligence/examples/customer-meeting.md +125 -0
- package/skills/notion-meeting-intelligence/examples/executive-review.md +78 -0
- package/skills/notion-meeting-intelligence/examples/project-decision.md +431 -0
- package/skills/notion-meeting-intelligence/examples/sprint-planning.md +80 -0
- package/skills/notion-meeting-intelligence/reference/brainstorming-template.md +81 -0
- package/skills/notion-meeting-intelligence/reference/decision-meeting-template.md +94 -0
- package/skills/notion-meeting-intelligence/reference/one-on-one-template.md +58 -0
- package/skills/notion-meeting-intelligence/reference/retrospective-template.md +58 -0
- package/skills/notion-meeting-intelligence/reference/sprint-planning-template.md +68 -0
- package/skills/notion-meeting-intelligence/reference/status-update-template.md +74 -0
- package/skills/notion-meeting-intelligence/reference/template-selection-guide.md +56 -0
- package/skills/notion-research-documentation/LICENSE.txt +7 -0
- package/skills/notion-research-documentation/SKILL.md +59 -0
- package/skills/notion-research-documentation/agents/openai.yaml +14 -0
- package/skills/notion-research-documentation/assets/notion-small.svg +11 -0
- package/skills/notion-research-documentation/assets/notion.png +0 -0
- package/skills/notion-research-documentation/evaluations/README.md +109 -0
- package/skills/notion-research-documentation/evaluations/basic-research.json +28 -0
- package/skills/notion-research-documentation/evaluations/research-to-database.json +29 -0
- package/skills/notion-research-documentation/examples/competitor-analysis.md +283 -0
- package/skills/notion-research-documentation/examples/market-research.md +62 -0
- package/skills/notion-research-documentation/examples/technical-investigation.md +233 -0
- package/skills/notion-research-documentation/examples/trip-planning.md +128 -0
- package/skills/notion-research-documentation/reference/advanced-search.md +212 -0
- package/skills/notion-research-documentation/reference/citations.md +190 -0
- package/skills/notion-research-documentation/reference/comparison-format.md +37 -0
- package/skills/notion-research-documentation/reference/comparison-template.md +44 -0
- package/skills/notion-research-documentation/reference/comprehensive-report-format.md +41 -0
- package/skills/notion-research-documentation/reference/comprehensive-report-template.md +64 -0
- package/skills/notion-research-documentation/reference/format-selection-guide.md +95 -0
- package/skills/notion-research-documentation/reference/quick-brief-format.md +37 -0
- package/skills/notion-research-documentation/reference/quick-brief-template.md +25 -0
- package/skills/notion-research-documentation/reference/research-summary-format.md +33 -0
- package/skills/notion-research-documentation/reference/research-summary-template.md +49 -0
- package/skills/notion-spec-to-implementation/LICENSE.txt +7 -0
- package/skills/notion-spec-to-implementation/SKILL.md +58 -0
- package/skills/notion-spec-to-implementation/agents/openai.yaml +14 -0
- package/skills/notion-spec-to-implementation/assets/notion-small.svg +11 -0
- package/skills/notion-spec-to-implementation/assets/notion.png +0 -0
- package/skills/notion-spec-to-implementation/evaluations/README.md +120 -0
- package/skills/notion-spec-to-implementation/evaluations/basic-spec-implementation.json +32 -0
- package/skills/notion-spec-to-implementation/evaluations/spec-to-tasks.json +35 -0
- package/skills/notion-spec-to-implementation/examples/api-feature.md +461 -0
- package/skills/notion-spec-to-implementation/examples/database-migration.md +81 -0
- package/skills/notion-spec-to-implementation/examples/ui-component.md +68 -0
- package/skills/notion-spec-to-implementation/reference/milestone-summary-template.md +27 -0
- package/skills/notion-spec-to-implementation/reference/progress-tracking.md +458 -0
- package/skills/notion-spec-to-implementation/reference/progress-update-template.md +25 -0
- package/skills/notion-spec-to-implementation/reference/quick-implementation-plan.md +26 -0
- package/skills/notion-spec-to-implementation/reference/spec-parsing.md +383 -0
- package/skills/notion-spec-to-implementation/reference/standard-implementation-plan.md +146 -0
- package/skills/notion-spec-to-implementation/reference/task-creation-template.md +34 -0
- package/skills/notion-spec-to-implementation/reference/task-creation.md +441 -0
- package/skills/openai-docs/LICENSE.txt +201 -0
- package/skills/openai-docs/SKILL.md +68 -0
- package/skills/openai-docs/agents/openai.yaml +14 -0
- package/skills/openai-docs/assets/openai-small.svg +3 -0
- package/skills/openai-docs/assets/openai.png +0 -0
- package/skills/openai-docs/references/gpt-5p4-prompting-guide.md +433 -0
- package/skills/openai-docs/references/latest-model.md +35 -0
- package/skills/openai-docs/references/upgrading-to-gpt-5p4.md +164 -0
- package/skills/pdf/LICENSE.txt +201 -0
- package/skills/pdf/SKILL.md +67 -0
- package/skills/pdf/agents/openai.yaml +5 -0
- package/skills/pdf/assets/pdf.png +0 -0
- package/skills/phase-prompting/SKILL.md +162 -0
- package/skills/playwright/LICENSE.txt +201 -0
- package/skills/playwright/NOTICE.txt +14 -0
- package/skills/playwright/SKILL.md +147 -0
- package/skills/playwright/agents/openai.yaml +6 -0
- package/skills/playwright/assets/playwright-small.svg +3 -0
- package/skills/playwright/assets/playwright.png +0 -0
- package/skills/playwright/references/cli.md +116 -0
- package/skills/playwright/references/workflows.md +95 -0
- package/skills/playwright/scripts/playwright_cli.sh +25 -0
- package/skills/playwright-interactive/LICENSE.txt +201 -0
- package/skills/playwright-interactive/NOTICE.txt +13 -0
- package/skills/playwright-interactive/SKILL.md +693 -0
- package/skills/playwright-interactive/agents/openai.yaml +6 -0
- package/skills/playwright-interactive/assets/playwright-small.svg +3 -0
- package/skills/playwright-interactive/assets/playwright.png +0 -0
- package/skills/problem-solving/ABOUT.md +40 -0
- package/skills/problem-solving/collision-zone-thinking/SKILL.md +62 -0
- package/skills/problem-solving/inversion-exercise/SKILL.md +58 -0
- package/skills/problem-solving/meta-pattern-recognition/SKILL.md +54 -0
- package/skills/problem-solving/scale-game/SKILL.md +63 -0
- package/skills/problem-solving/simplification-cascades/SKILL.md +76 -0
- package/skills/problem-solving/when-stuck/SKILL.md +88 -0
- package/skills/render-deploy/LICENSE.txt +201 -0
- package/skills/render-deploy/SKILL.md +479 -0
- package/skills/render-deploy/agents/openai.yaml +14 -0
- package/skills/render-deploy/assets/docker.yaml +62 -0
- package/skills/render-deploy/assets/go-api.yaml +35 -0
- package/skills/render-deploy/assets/nextjs-postgres.yaml +35 -0
- package/skills/render-deploy/assets/node-express.yaml +25 -0
- package/skills/render-deploy/assets/python-django.yaml +89 -0
- package/skills/render-deploy/assets/render-small.svg +3 -0
- package/skills/render-deploy/assets/render.png +0 -0
- package/skills/render-deploy/assets/static-site.yaml +54 -0
- package/skills/render-deploy/references/blueprint-spec.md +718 -0
- package/skills/render-deploy/references/codebase-analysis.md +49 -0
- package/skills/render-deploy/references/configuration-guide.md +603 -0
- package/skills/render-deploy/references/deployment-details.md +224 -0
- package/skills/render-deploy/references/direct-creation.md +113 -0
- package/skills/render-deploy/references/error-patterns.md +13 -0
- package/skills/render-deploy/references/post-deploy-checks.md +36 -0
- package/skills/render-deploy/references/runtimes.md +473 -0
- package/skills/render-deploy/references/service-types.md +450 -0
- package/skills/render-deploy/references/troubleshooting-basics.md +36 -0
- package/skills/research/ABOUT.md +20 -0
- package/skills/research/tracing-knowledge-lineages/SKILL.md +203 -0
- package/skills/round-prompting/SKILL.md +148 -0
- package/skills/screenshot/LICENSE.txt +201 -0
- package/skills/screenshot/SKILL.md +267 -0
- package/skills/screenshot/agents/openai.yaml +6 -0
- package/skills/screenshot/assets/screenshot-small.svg +5 -0
- package/skills/screenshot/assets/screenshot.png +0 -0
- package/skills/screenshot/scripts/ensure_macos_permissions.sh +54 -0
- package/skills/screenshot/scripts/macos_display_info.swift +22 -0
- package/skills/screenshot/scripts/macos_permissions.swift +40 -0
- package/skills/screenshot/scripts/macos_window_info.swift +126 -0
- package/skills/screenshot/scripts/take_screenshot.ps1 +163 -0
- package/skills/screenshot/scripts/take_screenshot.py +585 -0
- package/skills/security-best-practices/LICENSE.txt +201 -0
- package/skills/security-best-practices/SKILL.md +86 -0
- package/skills/security-best-practices/agents/openai.yaml +4 -0
- package/skills/security-best-practices/references/golang-general-backend-security.md +826 -0
- package/skills/security-best-practices/references/javascript-express-web-server-security.md +1158 -0
- package/skills/security-best-practices/references/javascript-general-web-frontend-security.md +747 -0
- package/skills/security-best-practices/references/javascript-jquery-web-frontend-security.md +678 -0
- package/skills/security-best-practices/references/javascript-typescript-nextjs-web-server-security.md +1144 -0
- package/skills/security-best-practices/references/javascript-typescript-react-web-frontend-security.md +990 -0
- package/skills/security-best-practices/references/javascript-typescript-vue-web-frontend-security.md +791 -0
- package/skills/security-best-practices/references/python-django-web-server-security.md +882 -0
- package/skills/security-best-practices/references/python-fastapi-web-server-security.md +1036 -0
- package/skills/security-best-practices/references/python-flask-web-server-security.md +705 -0
- package/skills/security-ownership-map/LICENSE.txt +201 -0
- package/skills/security-ownership-map/SKILL.md +206 -0
- package/skills/security-ownership-map/agents/openai.yaml +4 -0
- package/skills/security-ownership-map/references/neo4j-import.md +60 -0
- package/skills/security-ownership-map/scripts/build_ownership_map.py +956 -0
- package/skills/security-ownership-map/scripts/community_maintainers.py +544 -0
- package/skills/security-ownership-map/scripts/query_ownership.py +483 -0
- package/skills/security-ownership-map/scripts/run_ownership_map.py +200 -0
- package/skills/security-threat-model/LICENSE.txt +201 -0
- package/skills/security-threat-model/SKILL.md +81 -0
- package/skills/security-threat-model/agents/openai.yaml +4 -0
- package/skills/security-threat-model/references/prompt-template.md +255 -0
- package/skills/security-threat-model/references/security-controls-and-assets.md +32 -0
- package/skills/sentry/LICENSE.txt +201 -0
- package/skills/sentry/SKILL.md +123 -0
- package/skills/sentry/agents/openai.yaml +6 -0
- package/skills/sentry/assets/sentry-small.svg +3 -0
- package/skills/sentry/assets/sentry.png +0 -0
- package/skills/sentry/scripts/sentry_api.py +238 -0
- package/skills/slides/LICENSE.txt +201 -0
- package/skills/slides/SKILL.md +71 -0
- package/skills/slides/agents/openai.yaml +6 -0
- package/skills/slides/assets/pptxgenjs_helpers/code.js +104 -0
- package/skills/slides/assets/pptxgenjs_helpers/image.js +333 -0
- package/skills/slides/assets/pptxgenjs_helpers/index.js +33 -0
- package/skills/slides/assets/pptxgenjs_helpers/latex.js +51 -0
- package/skills/slides/assets/pptxgenjs_helpers/layout.js +643 -0
- package/skills/slides/assets/pptxgenjs_helpers/layout_builders.js +358 -0
- package/skills/slides/assets/pptxgenjs_helpers/svg.js +36 -0
- package/skills/slides/assets/pptxgenjs_helpers/text.js +789 -0
- package/skills/slides/assets/pptxgenjs_helpers/util.js +24 -0
- package/skills/slides/assets/slides-small.svg +3 -0
- package/skills/slides/assets/slides.png +0 -0
- package/skills/slides/references/pptxgenjs-helpers.md +61 -0
- package/skills/slides/scripts/create_montage.py +300 -0
- package/skills/slides/scripts/detect_font.py +873 -0
- package/skills/slides/scripts/ensure_raster_image.py +202 -0
- package/skills/slides/scripts/render_slides.py +273 -0
- package/skills/slides/scripts/slides_test.py +201 -0
- package/skills/sora/LICENSE.txt +201 -0
- package/skills/sora/SKILL.md +153 -0
- package/skills/sora/agents/openai.yaml +6 -0
- package/skills/sora/assets/sora-small.svg +4 -0
- package/skills/sora/assets/sora.png +0 -0
- package/skills/sora/references/cinematic-shots.md +53 -0
- package/skills/sora/references/cli.md +248 -0
- package/skills/sora/references/codex-network.md +28 -0
- package/skills/sora/references/prompting.md +137 -0
- package/skills/sora/references/sample-prompts.md +95 -0
- package/skills/sora/references/social-ads.md +42 -0
- package/skills/sora/references/troubleshooting.md +58 -0
- package/skills/sora/references/video-api.md +45 -0
- package/skills/sora/scripts/sora.py +970 -0
- package/skills/speech/LICENSE.txt +201 -0
- package/skills/speech/SKILL.md +144 -0
- package/skills/speech/agents/openai.yaml +6 -0
- package/skills/speech/assets/speech-small.svg +3 -0
- package/skills/speech/assets/speech.png +0 -0
- package/skills/speech/references/accessibility.md +32 -0
- package/skills/speech/references/audio-api.md +31 -0
- package/skills/speech/references/cli.md +99 -0
- package/skills/speech/references/codex-network.md +28 -0
- package/skills/speech/references/ivr.md +32 -0
- package/skills/speech/references/narration.md +31 -0
- package/skills/speech/references/prompting.md +38 -0
- package/skills/speech/references/sample-prompts.md +44 -0
- package/skills/speech/references/voice-directions.md +80 -0
- package/skills/speech/references/voiceover.md +31 -0
- package/skills/speech/scripts/text_to_speech.py +528 -0
- package/skills/spreadsheet/LICENSE.txt +201 -0
- package/skills/spreadsheet/SKILL.md +145 -0
- package/skills/spreadsheet/agents/openai.yaml +6 -0
- package/skills/spreadsheet/assets/spreadsheet-small.svg +3 -0
- package/skills/spreadsheet/assets/spreadsheet.png +0 -0
- package/skills/spreadsheet/references/examples/openpyxl/create_basic_spreadsheet.py +51 -0
- package/skills/spreadsheet/references/examples/openpyxl/create_spreadsheet_with_styling.py +96 -0
- package/skills/spreadsheet/references/examples/openpyxl/read_existing_spreadsheet.py +59 -0
- package/skills/spreadsheet/references/examples/openpyxl/styling_spreadsheet.py +79 -0
- package/skills/testing/condition-based-waiting/SKILL.md +123 -0
- package/skills/testing/condition-based-waiting/example.ts +158 -0
- package/skills/testing/test-driven-development/SKILL.md +367 -0
- package/skills/testing/testing-anti-patterns/SKILL.md +304 -0
- package/skills/transcribe/LICENSE.txt +201 -0
- package/skills/transcribe/SKILL.md +81 -0
- package/skills/transcribe/agents/openai.yaml +6 -0
- package/skills/transcribe/assets/transcribe-small.svg +3 -0
- package/skills/transcribe/assets/transcribe.png +0 -0
- package/skills/transcribe/references/api.md +8 -0
- package/skills/transcribe/scripts/transcribe_diarize.py +276 -0
- package/skills/using-skills/SKILL.md +102 -0
- package/skills/using-skills/find-skills +107 -0
- package/skills/using-skills/skill-run +44 -0
- package/skills/vercel-deploy/LICENSE.txt +21 -0
- package/skills/vercel-deploy/SKILL.md +77 -0
- package/skills/vercel-deploy/agents/openai.yaml +6 -0
- package/skills/vercel-deploy/assets/vercel-small.svg +5 -0
- package/skills/vercel-deploy/assets/vercel.png +0 -0
- package/skills/vercel-deploy/scripts/deploy.sh +301 -0
- package/skills/winui-app/LICENSE.txt +202 -0
- package/skills/winui-app/SKILL.md +94 -0
- package/skills/winui-app/agents/openai.yaml +5 -0
- package/skills/winui-app/assets/winui.png +0 -0
- package/skills/winui-app/config.yaml +50 -0
- package/skills/winui-app/references/_sections.md +96 -0
- package/skills/winui-app/references/accessibility-input-and-localization.md +51 -0
- package/skills/winui-app/references/build-run-and-launch-verification.md +72 -0
- package/skills/winui-app/references/community-toolkit-controls-and-helpers.md +57 -0
- package/skills/winui-app/references/controls-layout-and-adaptive-ui.md +84 -0
- package/skills/winui-app/references/foundation-environment-audit-and-remediation.md +82 -0
- package/skills/winui-app/references/foundation-setup-and-project-selection.md +67 -0
- package/skills/winui-app/references/foundation-template-first-recovery.md +62 -0
- package/skills/winui-app/references/foundation-winui-app-structure.md +62 -0
- package/skills/winui-app/references/motion-animations-and-polish.md +45 -0
- package/skills/winui-app/references/performance-diagnostics-and-responsiveness.md +46 -0
- package/skills/winui-app/references/sample-source-map.md +37 -0
- package/skills/winui-app/references/shell-navigation-and-windowing.md +67 -0
- package/skills/winui-app/references/styling-theming-materials-and-icons.md +71 -0
- package/skills/winui-app/references/testing-debugging-and-review-checklists.md +77 -0
- package/skills/winui-app/references/windows-app-sdk-lifecycle-notifications-and-deployment.md +52 -0
- package/skills/yeet/LICENSE.txt +201 -0
- package/skills/yeet/SKILL.md +28 -0
- package/skills/yeet/agents/openai.yaml +6 -0
- package/skills/yeet/assets/yeet-small.svg +3 -0
- package/skills/yeet/assets/yeet.png +0 -0
- package/dist/src/agents/definitions.d.ts +0 -16
- package/dist/src/agents/definitions.d.ts.map +0 -1
- package/dist/src/agents/definitions.js +0 -148
- package/dist/src/agents/definitions.js.map +0 -1
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Gotchas
|
|
2
|
+
|
|
3
|
+
## Functions Not Running
|
|
4
|
+
|
|
5
|
+
**Problem**: Function endpoints return 404 or don't execute
|
|
6
|
+
**Causes**: `_routes.json` excludes path; wrong file extension (`.jsx`/`.tsx`); Functions dir not at output root
|
|
7
|
+
**Solution**: Check `_routes.json`, rename to `.ts`/`.js`, verify build output structure
|
|
8
|
+
|
|
9
|
+
## 404 on Static Assets
|
|
10
|
+
|
|
11
|
+
**Problem**: Static files not serving
|
|
12
|
+
**Causes**: Build output dir misconfigured; Functions catching requests; Advanced mode missing `env.ASSETS.fetch()`
|
|
13
|
+
**Solution**: Verify output dir, add exclusions to `_routes.json`, call `env.ASSETS.fetch()` in `_worker.js`
|
|
14
|
+
|
|
15
|
+
## Bindings Not Working
|
|
16
|
+
|
|
17
|
+
**Problem**: `env.BINDING` undefined or errors
|
|
18
|
+
**Causes**: wrangler.jsonc syntax error; wrong binding IDs; missing `.dev.vars`; out-of-sync types
|
|
19
|
+
**Solution**: Validate config, verify IDs, create `.dev.vars`, run `npx wrangler types`
|
|
20
|
+
|
|
21
|
+
## Build Failures
|
|
22
|
+
|
|
23
|
+
**Problem**: Deployment fails during build
|
|
24
|
+
**Causes**: Wrong build command/output dir; Node version incompatibility; missing env vars; 20min timeout; OOM
|
|
25
|
+
**Solution**: Check Dashboard → Deployments → Build log; verify settings; add `.nvmrc`; optimize build
|
|
26
|
+
|
|
27
|
+
## Middleware Not Running
|
|
28
|
+
|
|
29
|
+
**Problem**: Middleware doesn't execute
|
|
30
|
+
**Causes**: Wrong filename (not `_middleware.ts`); missing `onRequest` export; didn't call `next()`
|
|
31
|
+
**Solution**: Rename file with underscore prefix; export handler; call `next()` or return Response
|
|
32
|
+
|
|
33
|
+
## Headers/Redirects Not Working
|
|
34
|
+
|
|
35
|
+
**Problem**: `_headers` or `_redirects` not applying
|
|
36
|
+
**Causes**: Only work for static assets; Functions override; syntax errors; exceeded limits
|
|
37
|
+
**Solution**: Set headers in Response object for Functions; verify syntax; check limits (100 headers, 2,100 redirects)
|
|
38
|
+
|
|
39
|
+
## TypeScript Errors
|
|
40
|
+
|
|
41
|
+
**Problem**: Type errors in Functions code
|
|
42
|
+
**Causes**: Types not generated; Env interface doesn't match wrangler.jsonc
|
|
43
|
+
**Solution**: Run `npx wrangler types --path='./functions/types.d.ts'`; update Env interface
|
|
44
|
+
|
|
45
|
+
## Local Dev Issues
|
|
46
|
+
|
|
47
|
+
**Problem**: Dev server errors or bindings don't work
|
|
48
|
+
**Causes**: Port conflict; bindings not passed; local vs HTTPS differences
|
|
49
|
+
**Solution**: Use `--port=3000`; pass bindings via CLI or wrangler.jsonc; account for HTTP/HTTPS differences
|
|
50
|
+
|
|
51
|
+
## Performance Issues
|
|
52
|
+
|
|
53
|
+
**Problem**: Slow responses or CPU limit errors
|
|
54
|
+
**Causes**: Functions invoked for static assets; cold starts; 10ms CPU limit; large bundle
|
|
55
|
+
**Solution**: Exclude static via `_routes.json`; optimize hot paths; keep bundle < 1MB
|
|
56
|
+
|
|
57
|
+
## Framework-Specific
|
|
58
|
+
|
|
59
|
+
### ⚠️ Deprecated Frameworks
|
|
60
|
+
|
|
61
|
+
**Next.js**: Official adapter (`@cloudflare/next-on-pages`) **deprecated** and unmaintained.
|
|
62
|
+
- **Problem**: No updates since 2024; incompatible with Next.js 15+; missing App Router features
|
|
63
|
+
- **Cause**: Cloudflare discontinued official support; community fork exists but limited
|
|
64
|
+
- **Solutions**:
|
|
65
|
+
1. **Recommended**: Use Vercel (official Next.js host)
|
|
66
|
+
2. **Advanced**: Self-host on Workers using custom adapter (complex, unsupported)
|
|
67
|
+
3. **Migration**: Switch to SvelteKit/Nuxt (similar DX, full Pages support)
|
|
68
|
+
|
|
69
|
+
**Remix**: Official adapter (`@remix-run/cloudflare-pages`) **deprecated**.
|
|
70
|
+
- **Problem**: No maintenance from Remix team; compatibility issues with Remix v2+
|
|
71
|
+
- **Cause**: Remix team deprecated all framework adapters
|
|
72
|
+
- **Solutions**:
|
|
73
|
+
1. **Recommended**: Migrate to SvelteKit (similar file-based routing, better DX)
|
|
74
|
+
2. **Alternative**: Use Astro (static-first with optional SSR)
|
|
75
|
+
3. **Workaround**: Continue using deprecated adapter (no future support)
|
|
76
|
+
|
|
77
|
+
### ✅ Supported Frameworks
|
|
78
|
+
|
|
79
|
+
**SvelteKit**:
|
|
80
|
+
- Use `@sveltejs/adapter-cloudflare`
|
|
81
|
+
- Access bindings via `platform.env` in server load functions
|
|
82
|
+
- Set `platform: 'cloudflare'` in `svelte.config.js`
|
|
83
|
+
|
|
84
|
+
**Astro**:
|
|
85
|
+
- Built-in Cloudflare adapter
|
|
86
|
+
- Access bindings via `Astro.locals.runtime.env`
|
|
87
|
+
|
|
88
|
+
**Nuxt**:
|
|
89
|
+
- Set `nitro.preset: 'cloudflare-pages'` in `nuxt.config.ts`
|
|
90
|
+
- Access bindings via `event.context.cloudflare.env`
|
|
91
|
+
|
|
92
|
+
**Qwik, Solid Start**:
|
|
93
|
+
- Built-in or official Cloudflare adapters available
|
|
94
|
+
- Check respective framework docs for binding access
|
|
95
|
+
|
|
96
|
+
## Debugging
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
// Log request details
|
|
100
|
+
console.log('Request:', { method: request.method, url: request.url });
|
|
101
|
+
console.log('Env:', Object.keys(env));
|
|
102
|
+
console.log('Params:', params);
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**View logs**: `npx wrangler pages deployment tail --project-name=my-project`
|
|
106
|
+
|
|
107
|
+
## Smart Placement Issues
|
|
108
|
+
|
|
109
|
+
### Increased Cold Start Latency
|
|
110
|
+
|
|
111
|
+
**Problem**: First requests slower after enabling Smart Placement
|
|
112
|
+
**Cause**: Initial optimization period while system learns traffic patterns
|
|
113
|
+
**Solution**: Expected behavior during first 24-48 hours; monitor latency trends over time
|
|
114
|
+
|
|
115
|
+
### Inconsistent Response Times
|
|
116
|
+
|
|
117
|
+
**Problem**: Latency varies significantly across requests during initial deployment
|
|
118
|
+
**Cause**: Smart Placement testing different execution locations to find optimal placement
|
|
119
|
+
**Solution**: Normal during learning phase; stabilizes after traffic patterns emerge (1-2 days)
|
|
120
|
+
|
|
121
|
+
### No Performance Improvement
|
|
122
|
+
|
|
123
|
+
**Problem**: Smart Placement enabled but no latency reduction observed
|
|
124
|
+
**Cause**: Traffic evenly distributed globally, or no data locality constraints
|
|
125
|
+
**Solution**: Smart Placement most effective with centralized data (D1/DO) or regional traffic; disable if no benefit
|
|
126
|
+
|
|
127
|
+
## Remote Bindings Issues
|
|
128
|
+
|
|
129
|
+
### Accidentally Modified Production Data
|
|
130
|
+
|
|
131
|
+
**Problem**: Local dev with `--remote` altered production database/KV
|
|
132
|
+
**Cause**: Remote bindings connect directly to production resources; writes are real
|
|
133
|
+
**Solution**:
|
|
134
|
+
- Use `--remote` only for read-heavy debugging
|
|
135
|
+
- Create separate preview environments for testing
|
|
136
|
+
- Never use `--remote` for write operations during development
|
|
137
|
+
|
|
138
|
+
### Remote Binding Auth Errors
|
|
139
|
+
|
|
140
|
+
**Problem**: `npx wrangler pages dev --remote` fails with "Unauthorized" or auth error
|
|
141
|
+
**Cause**: Not logged in, session expired, or insufficient account permissions
|
|
142
|
+
**Solution**:
|
|
143
|
+
1. Run `npx wrangler login` to re-authenticate
|
|
144
|
+
2. Verify account has access to project and bindings
|
|
145
|
+
3. Check binding IDs match production configuration
|
|
146
|
+
|
|
147
|
+
### Slow Local Dev with Remote Bindings
|
|
148
|
+
|
|
149
|
+
**Problem**: Local dev server slow when using `--remote`
|
|
150
|
+
**Cause**: Every request makes network calls to production bindings
|
|
151
|
+
**Solution**: Use local bindings for development; reserve `--remote` for final validation
|
|
152
|
+
|
|
153
|
+
## Common Errors
|
|
154
|
+
|
|
155
|
+
### "Module not found"
|
|
156
|
+
**Cause**: Dependencies not bundled or build output incorrect
|
|
157
|
+
**Solution**: Check build output directory, ensure dependencies bundled
|
|
158
|
+
|
|
159
|
+
### "Binding not found"
|
|
160
|
+
**Cause**: Binding not configured or types out of sync
|
|
161
|
+
**Solution**: Verify wrangler.jsonc, run `npx wrangler types`
|
|
162
|
+
|
|
163
|
+
### "Request exceeded CPU limit"
|
|
164
|
+
**Cause**: Code execution too slow or heavy compute
|
|
165
|
+
**Solution**: Optimize hot paths, upgrade to Workers Paid
|
|
166
|
+
|
|
167
|
+
### "Script too large"
|
|
168
|
+
**Cause**: Bundle size exceeds limit
|
|
169
|
+
**Solution**: Tree-shake, use dynamic imports, code-split
|
|
170
|
+
|
|
171
|
+
### "Too many subrequests"
|
|
172
|
+
**Cause**: Exceeded 50 subrequest limit
|
|
173
|
+
**Solution**: Batch or reduce fetch calls
|
|
174
|
+
|
|
175
|
+
### "KV key not found"
|
|
176
|
+
**Cause**: Key doesn't exist or wrong namespace
|
|
177
|
+
**Solution**: Check namespace matches environment
|
|
178
|
+
|
|
179
|
+
### "D1 error"
|
|
180
|
+
**Cause**: Wrong database_id or missing migrations
|
|
181
|
+
**Solution**: Verify config, run `wrangler d1 migrations list`
|
|
182
|
+
|
|
183
|
+
## Limits Reference (Jan 2026)
|
|
184
|
+
|
|
185
|
+
| Resource | Free | Paid |
|
|
186
|
+
|----------|------|------|
|
|
187
|
+
| Functions Requests | 100k/day | Unlimited |
|
|
188
|
+
| CPU Time | 10ms/req | 30ms/req |
|
|
189
|
+
| Memory | 128MB | 128MB |
|
|
190
|
+
| Script Size | 1MB | 10MB |
|
|
191
|
+
| Subrequests | 50/req | 1,000/req |
|
|
192
|
+
| Deployments | 500/month | 5,000/month |
|
|
193
|
+
|
|
194
|
+
**Tip**: Hitting CPU limit? Optimize hot paths or upgrade to Workers Paid plan.
|
|
195
|
+
|
|
196
|
+
[Full limits](https://developers.cloudflare.com/pages/platform/limits/)
|
|
197
|
+
|
|
198
|
+
## Getting Help
|
|
199
|
+
|
|
200
|
+
1. Check [Pages Docs](https://developers.cloudflare.com/pages/)
|
|
201
|
+
2. Search [Discord #functions](https://discord.com/channels/595317990191398933/910978223968518144)
|
|
202
|
+
3. Review [Workers Examples](https://developers.cloudflare.com/workers/examples/)
|
|
203
|
+
4. Check framework-specific docs/adapters
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Patterns
|
|
2
|
+
|
|
3
|
+
## API Routes
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
// functions/api/todos/[id].ts
|
|
7
|
+
export const onRequestGet: PagesFunction<Env> = async ({ env, params }) => {
|
|
8
|
+
const todo = await env.DB.prepare('SELECT * FROM todos WHERE id = ?').bind(params.id).first();
|
|
9
|
+
if (!todo) return new Response('Not found', { status: 404 });
|
|
10
|
+
return Response.json(todo);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const onRequestPut: PagesFunction<Env> = async ({ env, params, request }) => {
|
|
14
|
+
const body = await request.json();
|
|
15
|
+
await env.DB.prepare('UPDATE todos SET title = ?, completed = ? WHERE id = ?')
|
|
16
|
+
.bind(body.title, body.completed, params.id).run();
|
|
17
|
+
return Response.json({ success: true });
|
|
18
|
+
};
|
|
19
|
+
// Also: onRequestDelete, onRequestPost
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Auth Middleware
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
// functions/_middleware.ts
|
|
26
|
+
const auth: PagesFunction<Env> = async (context) => {
|
|
27
|
+
if (context.request.url.includes('/public/')) return context.next();
|
|
28
|
+
const authHeader = context.request.headers.get('Authorization');
|
|
29
|
+
if (!authHeader?.startsWith('Bearer ')) {
|
|
30
|
+
return new Response('Unauthorized', { status: 401 });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
const payload = await verifyJWT(authHeader.substring(7), context.env.JWT_SECRET);
|
|
35
|
+
context.data.user = payload;
|
|
36
|
+
return context.next();
|
|
37
|
+
} catch (err) {
|
|
38
|
+
return new Response('Invalid token', { status: 401 });
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
export const onRequest = [auth];
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## CORS
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
// functions/api/_middleware.ts
|
|
48
|
+
const corsHeaders = {
|
|
49
|
+
'Access-Control-Allow-Origin': '*',
|
|
50
|
+
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
|
|
51
|
+
'Access-Control-Allow-Headers': 'Content-Type, Authorization'
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export const onRequest: PagesFunction = async (context) => {
|
|
55
|
+
if (context.request.method === 'OPTIONS') {
|
|
56
|
+
return new Response(null, {headers: corsHeaders});
|
|
57
|
+
}
|
|
58
|
+
const response = await context.next();
|
|
59
|
+
Object.entries(corsHeaders).forEach(([k, v]) => response.headers.set(k, v));
|
|
60
|
+
return response;
|
|
61
|
+
};
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Form Handling
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
// functions/api/contact.ts
|
|
68
|
+
export const onRequestPost: PagesFunction<Env> = async ({ request, env }) => {
|
|
69
|
+
const formData = await request.formData();
|
|
70
|
+
await env.QUEUE.send({name: formData.get('name'), email: formData.get('email')});
|
|
71
|
+
return new Response('<h1>Thanks!</h1>', { headers: { 'Content-Type': 'text/html' } });
|
|
72
|
+
};
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Background Tasks
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
export const onRequestPost: PagesFunction = async ({ request, waitUntil }) => {
|
|
79
|
+
const data = await request.json();
|
|
80
|
+
waitUntil(fetch('https://api.example.com/webhook', {
|
|
81
|
+
method: 'POST', body: JSON.stringify(data)
|
|
82
|
+
}));
|
|
83
|
+
return Response.json({ queued: true });
|
|
84
|
+
};
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Error Handling
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// functions/_middleware.ts
|
|
91
|
+
const errorHandler: PagesFunction = async (context) => {
|
|
92
|
+
try {
|
|
93
|
+
return await context.next();
|
|
94
|
+
} catch (error) {
|
|
95
|
+
console.error('Error:', error);
|
|
96
|
+
if (context.request.url.includes('/api/')) {
|
|
97
|
+
return Response.json({ error: error.message }, { status: 500 });
|
|
98
|
+
}
|
|
99
|
+
return new Response(`<h1>Error</h1><p>${error.message}</p>`, {
|
|
100
|
+
status: 500, headers: { 'Content-Type': 'text/html' }
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
export const onRequest = [errorHandler];
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Caching
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
// functions/api/data.ts
|
|
111
|
+
export const onRequestGet: PagesFunction<Env> = async ({ env, request }) => {
|
|
112
|
+
const cacheKey = `data:${new URL(request.url).pathname}`;
|
|
113
|
+
const cached = await env.KV.get(cacheKey, 'json');
|
|
114
|
+
if (cached) return Response.json(cached, { headers: { 'X-Cache': 'HIT' } });
|
|
115
|
+
|
|
116
|
+
const data = await env.DB.prepare('SELECT * FROM data').first();
|
|
117
|
+
await env.KV.put(cacheKey, JSON.stringify(data), {expirationTtl: 3600});
|
|
118
|
+
return Response.json(data, {headers: {'X-Cache': 'MISS'}});
|
|
119
|
+
};
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Smart Placement for Database Apps
|
|
123
|
+
|
|
124
|
+
Enable Smart Placement for apps with D1 or centralized data sources:
|
|
125
|
+
|
|
126
|
+
```jsonc
|
|
127
|
+
// wrangler.jsonc
|
|
128
|
+
{
|
|
129
|
+
"name": "global-app",
|
|
130
|
+
"placement": {
|
|
131
|
+
"mode": "smart"
|
|
132
|
+
},
|
|
133
|
+
"d1_databases": [{
|
|
134
|
+
"binding": "DB",
|
|
135
|
+
"database_id": "your-db-id"
|
|
136
|
+
}]
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
// functions/api/data.ts
|
|
142
|
+
export const onRequestGet: PagesFunction<Env> = async ({ env }) => {
|
|
143
|
+
// Smart Placement optimizes execution location over time
|
|
144
|
+
// Balances user location vs database location
|
|
145
|
+
const data = await env.DB.prepare('SELECT * FROM products LIMIT 10').all();
|
|
146
|
+
return Response.json(data);
|
|
147
|
+
};
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Best for**: Read-heavy apps with D1/Durable Objects in specific regions.
|
|
151
|
+
**Not needed**: Apps without data locality constraints or with evenly distributed traffic.
|
|
152
|
+
|
|
153
|
+
## Framework Integration
|
|
154
|
+
|
|
155
|
+
**Supported** (2026): SvelteKit, Astro, Nuxt, Qwik, Solid Start
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
npm create cloudflare@latest my-app -- --framework=svelte
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### SvelteKit
|
|
162
|
+
```typescript
|
|
163
|
+
// src/routes/+page.server.ts
|
|
164
|
+
export const load = async ({ platform }) => {
|
|
165
|
+
const todos = await platform.env.DB.prepare('SELECT * FROM todos').all();
|
|
166
|
+
return { todos: todos.results };
|
|
167
|
+
};
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Astro
|
|
171
|
+
```astro
|
|
172
|
+
---
|
|
173
|
+
const { DB } = Astro.locals.runtime.env;
|
|
174
|
+
const todos = await DB.prepare('SELECT * FROM todos').all();
|
|
175
|
+
---
|
|
176
|
+
<ul>{todos.results.map(t => <li>{t.title}</li>)}</ul>
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Nuxt
|
|
180
|
+
```typescript
|
|
181
|
+
// server/api/todos.get.ts
|
|
182
|
+
export default defineEventHandler(async (event) => {
|
|
183
|
+
const { DB } = event.context.cloudflare.env;
|
|
184
|
+
return await DB.prepare('SELECT * FROM todos').all();
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**⚠️ Framework Status** (2026):
|
|
189
|
+
- ✅ **Supported**: SvelteKit, Astro, Nuxt, Qwik, Solid Start
|
|
190
|
+
- ❌ **Deprecated**: Next.js (`@cloudflare/next-on-pages`), Remix (`@remix-run/cloudflare-pages`)
|
|
191
|
+
|
|
192
|
+
For deprecated frameworks, see [gotchas.md](./gotchas.md#framework-specific) for migration options.
|
|
193
|
+
|
|
194
|
+
[Framework Guides](https://developers.cloudflare.com/pages/framework-guides/)
|
|
195
|
+
|
|
196
|
+
## Monorepo
|
|
197
|
+
|
|
198
|
+
Dashboard → Settings → Build → Root directory. Set to subproject (e.g., `apps/web`).
|
|
199
|
+
|
|
200
|
+
## Best Practices
|
|
201
|
+
|
|
202
|
+
**Performance**: Exclude static via `_routes.json`; cache with KV; keep bundle < 1MB
|
|
203
|
+
**Security**: Use secrets (not vars); validate inputs; rate limit with KV/DO
|
|
204
|
+
**Workflow**: Preview per branch; local dev with `wrangler pages dev`; instant rollbacks in Dashboard
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Cloudflare Pages Functions
|
|
2
|
+
|
|
3
|
+
Serverless functions on Cloudflare Pages using Workers runtime. Full-stack dev with file-based routing.
|
|
4
|
+
|
|
5
|
+
## Quick Navigation
|
|
6
|
+
|
|
7
|
+
**Need to...**
|
|
8
|
+
| Task | Go to |
|
|
9
|
+
|------|-------|
|
|
10
|
+
| Set up TypeScript types | [configuration.md](./configuration.md) - TypeScript Setup |
|
|
11
|
+
| Configure bindings (KV, D1, R2) | [configuration.md](./configuration.md) - wrangler.jsonc |
|
|
12
|
+
| Access request/env/params | [api.md](./api.md) - EventContext |
|
|
13
|
+
| Add middleware or auth | [patterns.md](./patterns.md) - Middleware, Auth |
|
|
14
|
+
| Background tasks (waitUntil) | [patterns.md](./patterns.md) - Background Tasks |
|
|
15
|
+
| Debug errors or check limits | [gotchas.md](./gotchas.md) - Common Errors, Limits |
|
|
16
|
+
|
|
17
|
+
## Decision Tree: Is This Pages Functions?
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Need serverless backend?
|
|
21
|
+
├─ Yes, for a static site → Pages Functions
|
|
22
|
+
├─ Yes, standalone API → Workers
|
|
23
|
+
└─ Just static hosting → Pages (no functions)
|
|
24
|
+
|
|
25
|
+
Have existing Worker?
|
|
26
|
+
├─ Complex routing logic → Use _worker.js (Advanced Mode)
|
|
27
|
+
└─ Simple routes → Migrate to /functions (File-Based)
|
|
28
|
+
|
|
29
|
+
Framework-based?
|
|
30
|
+
├─ Next.js/SvelteKit/Remix → Uses _worker.js automatically
|
|
31
|
+
└─ Vanilla/HTML/React SPA → Use /functions
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## File-Based Routing
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
/functions
|
|
38
|
+
├── index.js → /
|
|
39
|
+
├── api.js → /api
|
|
40
|
+
├── users/
|
|
41
|
+
│ ├── index.js → /users/
|
|
42
|
+
│ ├── [user].js → /users/:user
|
|
43
|
+
│ └── [[catchall]].js → /users/*
|
|
44
|
+
└── _middleware.js → runs on all routes
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Rules:**
|
|
48
|
+
- `index.js` → directory root
|
|
49
|
+
- Trailing slash optional
|
|
50
|
+
- Specific routes precede catch-alls
|
|
51
|
+
- Falls back to static if no match
|
|
52
|
+
|
|
53
|
+
## Dynamic Routes
|
|
54
|
+
|
|
55
|
+
**Single segment** `[param]` → string:
|
|
56
|
+
```js
|
|
57
|
+
// /functions/users/[user].js
|
|
58
|
+
export function onRequest(context) {
|
|
59
|
+
return new Response(`Hello ${context.params.user}`);
|
|
60
|
+
}
|
|
61
|
+
// Matches: /users/nevi
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Multi-segment** `[[param]]` → array:
|
|
65
|
+
```js
|
|
66
|
+
// /functions/users/[[catchall]].js
|
|
67
|
+
export function onRequest(context) {
|
|
68
|
+
return new Response(JSON.stringify(context.params.catchall));
|
|
69
|
+
}
|
|
70
|
+
// Matches: /users/nevi/foobar → ["nevi", "foobar"]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Key Features
|
|
74
|
+
|
|
75
|
+
- **Method handlers:** `onRequestGet`, `onRequestPost`, etc.
|
|
76
|
+
- **Middleware:** `_middleware.js` for cross-cutting concerns
|
|
77
|
+
- **Bindings:** KV, D1, R2, Durable Objects, Workers AI, Service bindings
|
|
78
|
+
- **TypeScript:** Full type support via `wrangler types` command
|
|
79
|
+
- **Advanced mode:** Use `_worker.js` for custom routing logic
|
|
80
|
+
|
|
81
|
+
## Reading Order
|
|
82
|
+
|
|
83
|
+
**New to Pages Functions?** Start here:
|
|
84
|
+
1. [README.md](./README.md) - Overview, routing, decision tree (you are here)
|
|
85
|
+
2. [configuration.md](./configuration.md) - TypeScript setup, wrangler.jsonc, bindings
|
|
86
|
+
3. [api.md](./api.md) - EventContext, handlers, bindings reference
|
|
87
|
+
4. [patterns.md](./patterns.md) - Middleware, auth, CORS, rate limiting, caching
|
|
88
|
+
5. [gotchas.md](./gotchas.md) - Common errors, debugging, limits
|
|
89
|
+
|
|
90
|
+
**Quick reference lookup:**
|
|
91
|
+
- Bindings table → [api.md](./api.md)
|
|
92
|
+
- Error diagnosis → [gotchas.md](./gotchas.md)
|
|
93
|
+
- TypeScript setup → [configuration.md](./configuration.md)
|
|
94
|
+
|
|
95
|
+
## See Also
|
|
96
|
+
- [pages](../pages/) - Pages platform overview and static site deployment
|
|
97
|
+
- [workers](../workers/) - Workers runtime API reference
|
|
98
|
+
- [d1](../d1/) - D1 database integration with Pages Functions
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Function API
|
|
2
|
+
|
|
3
|
+
## EventContext
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
interface EventContext<Env = any> {
|
|
7
|
+
request: Request; // Incoming request
|
|
8
|
+
functionPath: string; // Request path
|
|
9
|
+
waitUntil(promise: Promise<any>): void; // Background tasks (non-blocking)
|
|
10
|
+
passThroughOnException(): void; // Fallback to static on error
|
|
11
|
+
next(input?: Request | string, init?: RequestInit): Promise<Response>;
|
|
12
|
+
env: Env; // Bindings, vars, secrets
|
|
13
|
+
params: Record<string, string | string[]>; // Route params ([user] or [[catchall]])
|
|
14
|
+
data: any; // Middleware shared state
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**TypeScript:** See [configuration.md](./configuration.md) for `wrangler types` setup
|
|
19
|
+
|
|
20
|
+
## Handlers
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
// Generic (fallback for any method)
|
|
24
|
+
export async function onRequest(ctx: EventContext): Promise<Response> {
|
|
25
|
+
return new Response('Any method');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Method-specific (takes precedence over generic)
|
|
29
|
+
export async function onRequestGet(ctx: EventContext): Promise<Response> {
|
|
30
|
+
return Response.json({ message: 'GET' });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export async function onRequestPost(ctx: EventContext): Promise<Response> {
|
|
34
|
+
const body = await ctx.request.json();
|
|
35
|
+
return Response.json({ received: body });
|
|
36
|
+
}
|
|
37
|
+
// Also: onRequestPut, onRequestPatch, onRequestDelete, onRequestHead, onRequestOptions
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Bindings Reference
|
|
41
|
+
|
|
42
|
+
| Binding Type | Interface | Config Key | Use Case |
|
|
43
|
+
|--------------|-----------|------------|----------|
|
|
44
|
+
| KV | `KVNamespace` | `kv_namespaces` | Key-value cache, sessions, config |
|
|
45
|
+
| D1 | `D1Database` | `d1_databases` | Relational data, SQL queries |
|
|
46
|
+
| R2 | `R2Bucket` | `r2_buckets` | Large files, user uploads, assets |
|
|
47
|
+
| Durable Objects | `DurableObjectNamespace` | `durable_objects.bindings` | Stateful coordination, websockets |
|
|
48
|
+
| Workers AI | `Ai` | `ai.binding` | LLM inference, embeddings |
|
|
49
|
+
| Vectorize | `VectorizeIndex` | `vectorize` | Vector search, embeddings |
|
|
50
|
+
| Service Binding | `Fetcher` | `services` | Worker-to-worker RPC |
|
|
51
|
+
| Analytics Engine | `AnalyticsEngineDataset` | `analytics_engine_datasets` | Event logging, metrics |
|
|
52
|
+
| Environment Vars | `string` | `vars` | Non-sensitive config |
|
|
53
|
+
|
|
54
|
+
See [configuration.md](./configuration.md) for wrangler.jsonc examples.
|
|
55
|
+
|
|
56
|
+
## Bindings
|
|
57
|
+
|
|
58
|
+
### KV
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
interface Env { KV: KVNamespace; }
|
|
62
|
+
export const onRequest: PagesFunction<Env> = async (ctx) => {
|
|
63
|
+
await ctx.env.KV.put('key', 'value', { expirationTtl: 3600 });
|
|
64
|
+
const val = await ctx.env.KV.get('key', { type: 'json' });
|
|
65
|
+
const keys = await ctx.env.KV.list({ prefix: 'user:' });
|
|
66
|
+
return Response.json({ val });
|
|
67
|
+
};
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### D1
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
interface Env { DB: D1Database; }
|
|
74
|
+
export const onRequest: PagesFunction<Env> = async (ctx) => {
|
|
75
|
+
const user = await ctx.env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(123).first();
|
|
76
|
+
return Response.json(user);
|
|
77
|
+
};
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### R2
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
interface Env { BUCKET: R2Bucket; }
|
|
84
|
+
export const onRequest: PagesFunction<Env> = async (ctx) => {
|
|
85
|
+
const obj = await ctx.env.BUCKET.get('file.txt');
|
|
86
|
+
if (!obj) return new Response('Not found', { status: 404 });
|
|
87
|
+
await ctx.env.BUCKET.put('file.txt', ctx.request.body);
|
|
88
|
+
return new Response(obj.body);
|
|
89
|
+
};
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Durable Objects
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
interface Env { COUNTER: DurableObjectNamespace; }
|
|
96
|
+
export const onRequest: PagesFunction<Env> = async (ctx) => {
|
|
97
|
+
const stub = ctx.env.COUNTER.get(ctx.env.COUNTER.idFromName('global'));
|
|
98
|
+
return stub.fetch(ctx.request);
|
|
99
|
+
};
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Workers AI
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
interface Env { AI: Ai; }
|
|
106
|
+
export const onRequest: PagesFunction<Env> = async (ctx) => {
|
|
107
|
+
const resp = await ctx.env.AI.run('@cf/meta/llama-3.1-8b-instruct', { prompt: 'Hello' });
|
|
108
|
+
return Response.json(resp);
|
|
109
|
+
};
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Service Bindings & Env Vars
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
interface Env { AUTH: Fetcher; API_KEY: string; }
|
|
116
|
+
export const onRequest: PagesFunction<Env> = async (ctx) => {
|
|
117
|
+
// Service binding: forward to another Worker
|
|
118
|
+
return ctx.env.AUTH.fetch(ctx.request);
|
|
119
|
+
|
|
120
|
+
// Environment variable
|
|
121
|
+
return Response.json({ key: ctx.env.API_KEY });
|
|
122
|
+
};
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Advanced Mode (env.ASSETS)
|
|
126
|
+
|
|
127
|
+
When using `_worker.js`, access static assets via `env.ASSETS.fetch()`:
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
interface Env { ASSETS: Fetcher; KV: KVNamespace; }
|
|
131
|
+
|
|
132
|
+
export default {
|
|
133
|
+
async fetch(request: Request, env: Env): Promise<Response> {
|
|
134
|
+
const url = new URL(request.url);
|
|
135
|
+
if (url.pathname.startsWith('/api/')) {
|
|
136
|
+
return Response.json({ data: await env.KV.get('key') });
|
|
137
|
+
}
|
|
138
|
+
return env.ASSETS.fetch(request); // Fallback to static
|
|
139
|
+
}
|
|
140
|
+
} satisfies ExportedHandler<Env>;
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**See also:** [configuration.md](./configuration.md) for TypeScript setup and wrangler.jsonc | [patterns.md](./patterns.md) for middleware and auth patterns
|