@mohanscodex/spectra-code 0.4.9 → 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,132 @@
|
|
|
1
|
+
# Workers Playground Patterns
|
|
2
|
+
|
|
3
|
+
## JSON API
|
|
4
|
+
|
|
5
|
+
```javascript
|
|
6
|
+
export default {
|
|
7
|
+
async fetch(request) {
|
|
8
|
+
const url = new URL(request.url);
|
|
9
|
+
if (url.pathname === '/api/hello') return Response.json({ message: 'Hello' });
|
|
10
|
+
if (url.pathname === '/api/echo' && request.method === 'POST') {
|
|
11
|
+
return Response.json({ received: await request.json() });
|
|
12
|
+
}
|
|
13
|
+
return Response.json({ error: 'Not found' }, { status: 404 });
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Router Pattern
|
|
19
|
+
|
|
20
|
+
```javascript
|
|
21
|
+
const routes = {
|
|
22
|
+
'/': () => new Response('Home'),
|
|
23
|
+
'/api/users': () => Response.json([{ id: 1, name: 'Alice' }])
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export default {
|
|
27
|
+
async fetch(request) {
|
|
28
|
+
const handler = routes[new URL(request.url).pathname];
|
|
29
|
+
return handler ? handler() : new Response('Not Found', { status: 404 });
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Proxy Pattern
|
|
35
|
+
|
|
36
|
+
```javascript
|
|
37
|
+
export default {
|
|
38
|
+
async fetch(request) {
|
|
39
|
+
const url = new URL(request.url);
|
|
40
|
+
url.hostname = 'api.example.com';
|
|
41
|
+
return fetch(url.toString(), {
|
|
42
|
+
method: request.method, headers: request.headers, body: request.body
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## CORS Handling
|
|
49
|
+
|
|
50
|
+
```javascript
|
|
51
|
+
export default {
|
|
52
|
+
async fetch(request) {
|
|
53
|
+
if (request.method === 'OPTIONS') {
|
|
54
|
+
return new Response(null, {
|
|
55
|
+
headers: {
|
|
56
|
+
'Access-Control-Allow-Origin': '*',
|
|
57
|
+
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE',
|
|
58
|
+
'Access-Control-Allow-Headers': 'Content-Type, Authorization'
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const response = await fetch('https://api.example.com', request);
|
|
63
|
+
const modified = new Response(response.body, response);
|
|
64
|
+
modified.headers.set('Access-Control-Allow-Origin', '*');
|
|
65
|
+
return modified;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Caching
|
|
71
|
+
|
|
72
|
+
```javascript
|
|
73
|
+
export default {
|
|
74
|
+
async fetch(request) {
|
|
75
|
+
if (request.method !== 'GET') return fetch(request);
|
|
76
|
+
const cache = caches.default;
|
|
77
|
+
let response = await cache.match(request);
|
|
78
|
+
if (!response) {
|
|
79
|
+
response = await fetch('https://api.example.com');
|
|
80
|
+
if (response.status === 200) await cache.put(request, response.clone());
|
|
81
|
+
}
|
|
82
|
+
return response;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Hono Framework
|
|
88
|
+
|
|
89
|
+
```javascript
|
|
90
|
+
import { Hono } from 'https://esm.sh/hono@3';
|
|
91
|
+
const app = new Hono();
|
|
92
|
+
app.get('/', (c) => c.text('Hello'));
|
|
93
|
+
app.get('/api/users/:id', (c) => c.json({ id: c.req.param('id') }));
|
|
94
|
+
app.notFound((c) => c.json({ error: 'Not found' }, 404));
|
|
95
|
+
export default app;
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Authentication
|
|
99
|
+
|
|
100
|
+
```javascript
|
|
101
|
+
export default {
|
|
102
|
+
async fetch(request) {
|
|
103
|
+
const auth = request.headers.get('Authorization');
|
|
104
|
+
if (!auth?.startsWith('Bearer ')) {
|
|
105
|
+
return Response.json({ error: 'Unauthorized' }, { status: 401 });
|
|
106
|
+
}
|
|
107
|
+
const token = auth.substring(7);
|
|
108
|
+
if (token !== 'secret-token') {
|
|
109
|
+
return Response.json({ error: 'Invalid token' }, { status: 403 });
|
|
110
|
+
}
|
|
111
|
+
return Response.json({ message: 'Authenticated' });
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Error Handling
|
|
117
|
+
|
|
118
|
+
```javascript
|
|
119
|
+
export default {
|
|
120
|
+
async fetch(request) {
|
|
121
|
+
try {
|
|
122
|
+
const response = await fetch('https://api.example.com');
|
|
123
|
+
if (!response.ok) throw new Error(`API returned ${response.status}`);
|
|
124
|
+
return response;
|
|
125
|
+
} catch (error) {
|
|
126
|
+
return Response.json({ error: error.message }, { status: 500 });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Note:** In-memory state (Maps, variables) resets on Worker cold start. Use Durable Objects or KV for persistence.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Workers VPC Connectivity
|
|
2
|
+
|
|
3
|
+
Connect Cloudflare Workers to private networks and internal infrastructure using TCP Sockets.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Workers VPC connectivity enables outbound TCP connections from Workers to private resources in AWS, Azure, GCP, on-premises datacenters, or any private network. This is achieved through the **TCP Sockets API** (`cloudflare:sockets`), which provides low-level network access for custom protocols and services.
|
|
8
|
+
|
|
9
|
+
**Key capabilities:**
|
|
10
|
+
- Direct TCP connections to private IPs and hostnames
|
|
11
|
+
- TLS/StartTLS support for encrypted connections
|
|
12
|
+
- Integration with Cloudflare Tunnel for secure private network access
|
|
13
|
+
- Full control over wire protocols (database protocols, SSH, MQTT, custom TCP)
|
|
14
|
+
|
|
15
|
+
**Note:** This reference documents the TCP Sockets API. For the newer Workers VPC Services product (HTTP-only service bindings with built-in SSRF protection), refer to separate documentation when available. VPC Services is currently in beta (2025+).
|
|
16
|
+
|
|
17
|
+
## Quick Decision: Which Technology?
|
|
18
|
+
|
|
19
|
+
Need private network connectivity from Workers?
|
|
20
|
+
|
|
21
|
+
| Requirement | Use | Why |
|
|
22
|
+
|------------|-----|-----|
|
|
23
|
+
| HTTP/HTTPS APIs in private network | VPC Services (beta, separate docs) | SSRF-safe, declarative bindings |
|
|
24
|
+
| PostgreSQL/MySQL databases | [Hyperdrive](../hyperdrive/) | Connection pooling, caching, optimized |
|
|
25
|
+
| Custom TCP protocols (SSH, MQTT, proprietary) | **TCP Sockets (this doc)** | Full protocol control |
|
|
26
|
+
| Simple HTTP with lowest latency | TCP Sockets + [Smart Placement](../smart-placement/) | Manual optimization |
|
|
27
|
+
| Expose on-prem to internet (inbound) | [Cloudflare Tunnel](../tunnel/) | Not Worker-specific |
|
|
28
|
+
|
|
29
|
+
## When to Use TCP Sockets
|
|
30
|
+
|
|
31
|
+
**Use TCP Sockets when you need:**
|
|
32
|
+
- ✅ Direct control over wire protocols (e.g., Postgres wire protocol, SSH, Redis RESP)
|
|
33
|
+
- ✅ Non-HTTP protocols (MQTT, SMTP, custom binary protocols)
|
|
34
|
+
- ✅ StartTLS or custom TLS negotiation
|
|
35
|
+
- ✅ Streaming binary data over TCP
|
|
36
|
+
|
|
37
|
+
**Don't use TCP Sockets when:**
|
|
38
|
+
- ❌ You just need HTTP/HTTPS (use `fetch()` or VPC Services)
|
|
39
|
+
- ❌ You need PostgreSQL/MySQL (use Hyperdrive for pooling)
|
|
40
|
+
- ❌ You need WebSocket (use native Workers WebSocket)
|
|
41
|
+
|
|
42
|
+
## Quick Start
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
import { connect } from 'cloudflare:sockets';
|
|
46
|
+
|
|
47
|
+
export default {
|
|
48
|
+
async fetch(req: Request): Promise<Response> {
|
|
49
|
+
// Connect to private service
|
|
50
|
+
const socket = connect(
|
|
51
|
+
{ hostname: "db.internal.company.net", port: 5432 },
|
|
52
|
+
{ secureTransport: "on" }
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
await socket.opened; // Wait for connection
|
|
57
|
+
|
|
58
|
+
const writer = socket.writable.getWriter();
|
|
59
|
+
await writer.write(new TextEncoder().encode("QUERY\r\n"));
|
|
60
|
+
await writer.close();
|
|
61
|
+
|
|
62
|
+
const reader = socket.readable.getReader();
|
|
63
|
+
const { value } = await reader.read();
|
|
64
|
+
|
|
65
|
+
return new Response(value);
|
|
66
|
+
} finally {
|
|
67
|
+
await socket.close();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Architecture Pattern: Workers + Tunnel
|
|
74
|
+
|
|
75
|
+
Most private network connectivity combines TCP Sockets with Cloudflare Tunnel:
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
┌─────────┐ ┌─────────────┐ ┌──────────────┐ ┌─────────────┐
|
|
79
|
+
│ Worker │────▶│ TCP Socket │────▶│ Tunnel │────▶│ Private │
|
|
80
|
+
│ │ │ (this API) │ │ (cloudflared)│ │ Network │
|
|
81
|
+
└─────────┘ └─────────────┘ └──────────────┘ └─────────────┘
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
1. Worker opens TCP socket to Tunnel hostname
|
|
85
|
+
2. Tunnel endpoint routes to private IP
|
|
86
|
+
3. Response flows back through Tunnel to Worker
|
|
87
|
+
|
|
88
|
+
See [configuration.md](./configuration.md) for Tunnel setup details.
|
|
89
|
+
|
|
90
|
+
## Reading Order
|
|
91
|
+
|
|
92
|
+
1. **Start here (README.md)** - Overview and decision guide
|
|
93
|
+
2. **[api.md](./api.md)** - Socket interface, types, methods
|
|
94
|
+
3. **[configuration.md](./configuration.md)** - Wrangler setup, Tunnel integration
|
|
95
|
+
4. **[patterns.md](./patterns.md)** - Real-world examples (databases, protocols, error handling)
|
|
96
|
+
5. **[gotchas.md](./gotchas.md)** - Limits, blocked ports, common errors
|
|
97
|
+
|
|
98
|
+
## Key Limits
|
|
99
|
+
|
|
100
|
+
| Limit | Value |
|
|
101
|
+
|-------|-------|
|
|
102
|
+
| Max concurrent sockets per request | 6 |
|
|
103
|
+
| Blocked destinations | Cloudflare IPs, localhost, port 25 |
|
|
104
|
+
| Scope requirement | Must create in handler (not global) |
|
|
105
|
+
|
|
106
|
+
See [gotchas.md](./gotchas.md) for complete limits and troubleshooting.
|
|
107
|
+
|
|
108
|
+
## Best Practices
|
|
109
|
+
|
|
110
|
+
1. **Always close sockets** - Use try/finally blocks
|
|
111
|
+
2. **Validate destinations** - Prevent SSRF by allowlisting hosts
|
|
112
|
+
3. **Use Hyperdrive for databases** - Better performance than raw TCP
|
|
113
|
+
4. **Prefer fetch() for HTTP** - Only use TCP when necessary
|
|
114
|
+
5. **Combine with Smart Placement** - Reduce latency to private networks
|
|
115
|
+
|
|
116
|
+
## Related Technologies
|
|
117
|
+
|
|
118
|
+
- **[Hyperdrive](../hyperdrive/)** - PostgreSQL/MySQL with connection pooling
|
|
119
|
+
- **[Cloudflare Tunnel](../tunnel/)** - Secure private network access
|
|
120
|
+
- **[Smart Placement](../smart-placement/)** - Auto-locate Workers near backends
|
|
121
|
+
- **VPC Services (beta)** - HTTP-only service bindings with SSRF protection (separate docs)
|
|
122
|
+
|
|
123
|
+
## Reference
|
|
124
|
+
|
|
125
|
+
- [TCP Sockets API Documentation](https://developers.cloudflare.com/workers/runtime-apis/tcp-sockets/)
|
|
126
|
+
- [Connect to databases guide](https://developers.cloudflare.com/workers/tutorials/connect-to-postgres/)
|
|
127
|
+
- [Cloudflare Tunnel setup](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/)
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# TCP Sockets API Reference
|
|
2
|
+
|
|
3
|
+
Complete API reference for the Cloudflare Workers TCP Sockets API (`cloudflare:sockets`).
|
|
4
|
+
|
|
5
|
+
## Core Function: `connect()`
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
function connect(
|
|
9
|
+
address: SocketAddress,
|
|
10
|
+
options?: SocketOptions
|
|
11
|
+
): Socket
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Creates an outbound TCP connection to the specified address.
|
|
15
|
+
|
|
16
|
+
### Parameters
|
|
17
|
+
|
|
18
|
+
#### `SocketAddress`
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
interface SocketAddress {
|
|
22
|
+
hostname: string; // DNS hostname or IP address
|
|
23
|
+
port: number; // TCP port (1-65535, excluding blocked ports)
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
| Field | Type | Description | Example |
|
|
28
|
+
|-------|------|-------------|---------|
|
|
29
|
+
| `hostname` | `string` | Target hostname or IP | `"db.internal.net"`, `"10.0.1.50"` |
|
|
30
|
+
| `port` | `number` | TCP port number | `5432`, `443`, `22` |
|
|
31
|
+
|
|
32
|
+
DNS names are resolved at connection time. IPv4, IPv6, and private IPs (10.x, 172.16.x, 192.168.x) supported.
|
|
33
|
+
|
|
34
|
+
#### `SocketOptions`
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
interface SocketOptions {
|
|
38
|
+
secureTransport?: "off" | "on" | "starttls";
|
|
39
|
+
allowHalfOpen?: boolean;
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
| Field | Type | Default | Description |
|
|
44
|
+
|-------|------|---------|-------------|
|
|
45
|
+
| `secureTransport` | `"off" \| "on" \| "starttls"` | `"off"` | TLS mode |
|
|
46
|
+
| `allowHalfOpen` | `boolean` | `false` | Allow half-closed connections |
|
|
47
|
+
|
|
48
|
+
**`secureTransport` modes:**
|
|
49
|
+
|
|
50
|
+
| Mode | Behavior | Use Case |
|
|
51
|
+
|------|----------|----------|
|
|
52
|
+
| `"off"` | Plain TCP, no encryption | Testing, internal trusted networks |
|
|
53
|
+
| `"on"` | Immediate TLS handshake | HTTPS, secure databases, SSH |
|
|
54
|
+
| `"starttls"` | Start plain, upgrade later with `startTls()` | Postgres, SMTP, IMAP |
|
|
55
|
+
|
|
56
|
+
**`allowHalfOpen`:** When `false` (default), closing read stream auto-closes write stream. When `true`, streams are independent.
|
|
57
|
+
|
|
58
|
+
### Returns
|
|
59
|
+
|
|
60
|
+
A `Socket` object with readable/writable streams.
|
|
61
|
+
|
|
62
|
+
## Socket Interface
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
interface Socket {
|
|
66
|
+
// Streams
|
|
67
|
+
readable: ReadableStream<Uint8Array>;
|
|
68
|
+
writable: WritableStream<Uint8Array>;
|
|
69
|
+
|
|
70
|
+
// Connection state
|
|
71
|
+
opened: Promise<SocketInfo>;
|
|
72
|
+
closed: Promise<void>;
|
|
73
|
+
|
|
74
|
+
// Methods
|
|
75
|
+
close(): Promise<void>;
|
|
76
|
+
startTls(): Socket;
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Properties
|
|
81
|
+
|
|
82
|
+
#### `readable: ReadableStream<Uint8Array>`
|
|
83
|
+
|
|
84
|
+
Stream for reading data from the socket. Use `getReader()` to consume data.
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
const reader = socket.readable.getReader();
|
|
88
|
+
const { done, value } = await reader.read(); // Read one chunk
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
#### `writable: WritableStream<Uint8Array>`
|
|
92
|
+
|
|
93
|
+
Stream for writing data to the socket. Use `getWriter()` to send data.
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
const writer = socket.writable.getWriter();
|
|
97
|
+
await writer.write(new TextEncoder().encode("HELLO\r\n"));
|
|
98
|
+
await writer.close();
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### `opened: Promise<SocketInfo>`
|
|
102
|
+
|
|
103
|
+
Promise that resolves when connection succeeds, rejects on failure.
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
interface SocketInfo {
|
|
107
|
+
remoteAddress?: string; // May be undefined
|
|
108
|
+
localAddress?: string; // May be undefined
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
const info = await socket.opened;
|
|
113
|
+
} catch (error) {
|
|
114
|
+
// Connection failed
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
#### `closed: Promise<void>`
|
|
119
|
+
|
|
120
|
+
Promise that resolves when socket is fully closed (both directions).
|
|
121
|
+
|
|
122
|
+
### Methods
|
|
123
|
+
|
|
124
|
+
#### `close(): Promise<void>`
|
|
125
|
+
|
|
126
|
+
Closes the socket gracefully, waiting for pending writes to complete.
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
const socket = connect({ hostname: "api.internal", port: 443 });
|
|
130
|
+
try {
|
|
131
|
+
// Use socket
|
|
132
|
+
} finally {
|
|
133
|
+
await socket.close(); // Always call in finally block
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
#### `startTls(): Socket`
|
|
138
|
+
|
|
139
|
+
Upgrades connection to TLS. Only available when `secureTransport: "starttls"` was specified.
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
const socket = connect(
|
|
143
|
+
{ hostname: "db.internal", port: 5432 },
|
|
144
|
+
{ secureTransport: "starttls" }
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
// Send protocol-specific StartTLS command
|
|
148
|
+
const writer = socket.writable.getWriter();
|
|
149
|
+
await writer.write(new TextEncoder().encode("STARTTLS\r\n"));
|
|
150
|
+
|
|
151
|
+
// Upgrade to TLS - use returned socket, not original
|
|
152
|
+
const secureSocket = socket.startTls();
|
|
153
|
+
const secureWriter = secureSocket.writable.getWriter();
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Complete Example
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
import { connect } from 'cloudflare:sockets';
|
|
160
|
+
|
|
161
|
+
export default {
|
|
162
|
+
async fetch(req: Request): Promise<Response> {
|
|
163
|
+
const socket = connect({ hostname: "echo.example.com", port: 7 }, { secureTransport: "on" });
|
|
164
|
+
|
|
165
|
+
try {
|
|
166
|
+
await socket.opened;
|
|
167
|
+
|
|
168
|
+
const writer = socket.writable.getWriter();
|
|
169
|
+
await writer.write(new TextEncoder().encode("Hello, TCP!\n"));
|
|
170
|
+
await writer.close();
|
|
171
|
+
|
|
172
|
+
const reader = socket.readable.getReader();
|
|
173
|
+
const { value } = await reader.read();
|
|
174
|
+
|
|
175
|
+
return new Response(value);
|
|
176
|
+
} finally {
|
|
177
|
+
await socket.close();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
See [patterns.md](./patterns.md) for multi-chunk reading, error handling, and protocol implementations.
|
|
184
|
+
|
|
185
|
+
## Quick Reference
|
|
186
|
+
|
|
187
|
+
| Task | Code |
|
|
188
|
+
|------|------|
|
|
189
|
+
| Import | `import { connect } from 'cloudflare:sockets';` |
|
|
190
|
+
| Connect | `connect({ hostname: "host", port: 443 })` |
|
|
191
|
+
| With TLS | `connect(addr, { secureTransport: "on" })` |
|
|
192
|
+
| StartTLS | `socket.startTls()` after handshake |
|
|
193
|
+
| Write | `await writer.write(data); await writer.close();` |
|
|
194
|
+
| Read | `const { value } = await reader.read();` |
|
|
195
|
+
| Error handling | `try { await socket.opened; } catch { }` |
|
|
196
|
+
| Always close | `try { } finally { await socket.close(); }` |
|
|
197
|
+
|
|
198
|
+
## See Also
|
|
199
|
+
|
|
200
|
+
- [patterns.md](./patterns.md) - Real-world protocol implementations
|
|
201
|
+
- [configuration.md](./configuration.md) - Wrangler setup and environment variables
|
|
202
|
+
- [gotchas.md](./gotchas.md) - Limits and error handling
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
Setup and configuration for TCP Sockets in Cloudflare Workers.
|
|
4
|
+
|
|
5
|
+
## Wrangler Configuration
|
|
6
|
+
|
|
7
|
+
### Basic Setup
|
|
8
|
+
|
|
9
|
+
TCP Sockets are available by default in Workers runtime. No special configuration required in `wrangler.jsonc`:
|
|
10
|
+
|
|
11
|
+
```jsonc
|
|
12
|
+
{
|
|
13
|
+
"name": "private-network-worker",
|
|
14
|
+
"main": "src/index.ts",
|
|
15
|
+
"compatibility_date": "2025-01-01"
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Environment Variables
|
|
20
|
+
|
|
21
|
+
Store connection details as env vars:
|
|
22
|
+
|
|
23
|
+
```jsonc
|
|
24
|
+
{
|
|
25
|
+
"vars": { "DB_HOST": "10.0.1.50", "DB_PORT": "5432" }
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
interface Env { DB_HOST: string; DB_PORT: string; }
|
|
31
|
+
|
|
32
|
+
export default {
|
|
33
|
+
async fetch(req: Request, env: Env): Promise<Response> {
|
|
34
|
+
const socket = connect({ hostname: env.DB_HOST, port: parseInt(env.DB_PORT) });
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Per-Environment Configuration
|
|
40
|
+
|
|
41
|
+
```jsonc
|
|
42
|
+
{
|
|
43
|
+
"vars": { "DB_HOST": "localhost" },
|
|
44
|
+
"env": {
|
|
45
|
+
"staging": { "vars": { "DB_HOST": "staging-db.internal.net" } },
|
|
46
|
+
"production": { "vars": { "DB_HOST": "prod-db.internal.net" } }
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Deploy: `wrangler deploy --env staging` or `wrangler deploy --env production`
|
|
52
|
+
|
|
53
|
+
## Integration with Cloudflare Tunnel
|
|
54
|
+
|
|
55
|
+
To connect Workers to private networks, combine TCP Sockets with Cloudflare Tunnel:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Worker (TCP Socket) → Tunnel hostname → cloudflared → Private Network
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Quick Setup
|
|
62
|
+
|
|
63
|
+
1. **Install cloudflared** on a server inside your private network
|
|
64
|
+
2. **Create tunnel**: `cloudflared tunnel create my-private-network`
|
|
65
|
+
3. **Configure routing** in `config.yml`:
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
tunnel: <TUNNEL_ID>
|
|
69
|
+
credentials-file: /path/to/<TUNNEL_ID>.json
|
|
70
|
+
ingress:
|
|
71
|
+
- hostname: db.internal.example.com
|
|
72
|
+
service: tcp://10.0.1.50:5432
|
|
73
|
+
- service: http_status:404 # Required catch-all
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
4. **Run tunnel**: `cloudflared tunnel run my-private-network`
|
|
77
|
+
5. **Connect from Worker**:
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
const socket = connect(
|
|
81
|
+
{ hostname: "db.internal.example.com", port: 5432 }, // Tunnel hostname
|
|
82
|
+
{ secureTransport: "on" }
|
|
83
|
+
);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
For detailed Tunnel setup, see [Tunnel configuration reference](../tunnel/configuration.md).
|
|
87
|
+
|
|
88
|
+
## Smart Placement Integration
|
|
89
|
+
|
|
90
|
+
Reduce latency by auto-placing Workers near backends:
|
|
91
|
+
|
|
92
|
+
```jsonc
|
|
93
|
+
{ "placement": { "mode": "smart" } }
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Workers automatically relocate closer to TCP socket destinations after observing connection latency. See [Smart Placement reference](../smart-placement/).
|
|
97
|
+
|
|
98
|
+
## Secrets Management
|
|
99
|
+
|
|
100
|
+
Store sensitive credentials as secrets (not in wrangler.jsonc):
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
wrangler secret put DB_PASSWORD # Enter value when prompted
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Access in Worker via `env.DB_PASSWORD`. Use in protocol handshake or authentication.
|
|
107
|
+
|
|
108
|
+
## Local Development
|
|
109
|
+
|
|
110
|
+
Test with `wrangler dev`. Note: Local mode may not access private networks. Use public endpoints or mock servers for development:
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
const config = process.env.NODE_ENV === 'dev'
|
|
114
|
+
? { hostname: 'localhost', port: 5432 } // Mock
|
|
115
|
+
: { hostname: 'db.internal.example.com', port: 5432 }; // Production
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Connection String Patterns
|
|
119
|
+
|
|
120
|
+
Parse connection strings to extract host and port:
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
function parseConnectionString(connStr: string): SocketAddress {
|
|
124
|
+
const url = new URL(connStr); // e.g., "postgres://10.0.1.50:5432/mydb"
|
|
125
|
+
return { hostname: url.hostname, port: parseInt(url.port) || 5432 };
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Hyperdrive Integration
|
|
130
|
+
|
|
131
|
+
For PostgreSQL/MySQL, prefer Hyperdrive over raw TCP sockets (includes connection pooling):
|
|
132
|
+
|
|
133
|
+
```jsonc
|
|
134
|
+
{ "hyperdrive": [{ "binding": "DB", "id": "<HYPERDRIVE_ID>" }] }
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
See [Hyperdrive reference](../hyperdrive/) for complete setup.
|
|
138
|
+
|
|
139
|
+
## Compatibility
|
|
140
|
+
|
|
141
|
+
TCP Sockets available in all modern Workers. Use current date: `"compatibility_date": "2025-01-01"`. No special flags required.
|
|
142
|
+
|
|
143
|
+
## Related Configuration
|
|
144
|
+
|
|
145
|
+
- **[Tunnel Configuration](../tunnel/configuration.md)** - Detailed cloudflared setup
|
|
146
|
+
- **[Smart Placement](../smart-placement/configuration.md)** - Placement mode options
|
|
147
|
+
- **[Hyperdrive](../hyperdrive/configuration.md)** - Database connection pooling setup
|