@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,204 @@
|
|
|
1
|
+
# Gotchas & Troubleshooting
|
|
2
|
+
|
|
3
|
+
## Execution Order
|
|
4
|
+
|
|
5
|
+
**Problem:** Rules execute in unexpected order
|
|
6
|
+
**Cause:** Misunderstanding phase execution
|
|
7
|
+
**Solution:**
|
|
8
|
+
|
|
9
|
+
Phases execute sequentially (can't be changed):
|
|
10
|
+
1. `http_request_firewall_custom` - Custom rules
|
|
11
|
+
2. `http_request_firewall_managed` - Managed rulesets
|
|
12
|
+
3. `http_ratelimit` - Rate limiting
|
|
13
|
+
|
|
14
|
+
Within phase: top-to-bottom, first match wins (unless `skip`)
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
// WRONG: Can't mix phase-specific actions
|
|
18
|
+
await client.rulesets.create({
|
|
19
|
+
phase: 'http_request_firewall_custom',
|
|
20
|
+
rules: [
|
|
21
|
+
{ action: 'block', expression: 'cf.waf.score gt 50' },
|
|
22
|
+
{ action: 'execute', action_parameters: { id: 'managed_id' } }, // WRONG
|
|
23
|
+
],
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// CORRECT: Separate rulesets per phase
|
|
27
|
+
await client.rulesets.create({ phase: 'http_request_firewall_custom', rules: [...] });
|
|
28
|
+
await client.rulesets.create({ phase: 'http_request_firewall_managed', rules: [...] });
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Expression Errors
|
|
32
|
+
|
|
33
|
+
**Problem:** Syntax errors prevent deployment
|
|
34
|
+
**Cause:** Invalid field/operator/syntax
|
|
35
|
+
**Solution:**
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
// Common mistakes
|
|
39
|
+
'http.request.path' → 'http.request.uri.path' // Correct field
|
|
40
|
+
'ip.geoip.country eq US' → 'ip.geoip.country eq "US"' // Quote strings
|
|
41
|
+
'http.user_agent eq "Mozilla"' → 'lower(http.user_agent) contains "mozilla"' // Case sensitivity
|
|
42
|
+
'matches ".*[.jpg"' → 'matches ".*\\.jpg$"' // Valid regex
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Test expressions in Security Events before deploying.
|
|
46
|
+
|
|
47
|
+
## Skip Rule Pitfalls
|
|
48
|
+
|
|
49
|
+
**Problem:** Skip rules don't work as expected
|
|
50
|
+
**Cause:** Misunderstanding skip scope
|
|
51
|
+
**Solution:**
|
|
52
|
+
|
|
53
|
+
Skip types:
|
|
54
|
+
- `ruleset: 'current'` - Skip remaining rules in current ruleset only
|
|
55
|
+
- `phases: ['phase_name']` - Skip entire phases
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
// WRONG: Trying to skip managed rules from custom phase
|
|
59
|
+
// In http_request_firewall_custom:
|
|
60
|
+
{
|
|
61
|
+
action: 'skip',
|
|
62
|
+
action_parameters: { ruleset: 'current' },
|
|
63
|
+
expression: 'ip.src in {192.0.2.0/24}',
|
|
64
|
+
}
|
|
65
|
+
// This only skips remaining custom rules, not managed rules
|
|
66
|
+
|
|
67
|
+
// CORRECT: Skip specific phases
|
|
68
|
+
{
|
|
69
|
+
action: 'skip',
|
|
70
|
+
action_parameters: {
|
|
71
|
+
phases: ['http_request_firewall_managed', 'http_ratelimit'],
|
|
72
|
+
},
|
|
73
|
+
expression: 'ip.src in {192.0.2.0/24}',
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Update Replaces All Rules
|
|
78
|
+
|
|
79
|
+
**Problem:** Updating ruleset deletes other rules
|
|
80
|
+
**Cause:** `update()` replaces entire rule list
|
|
81
|
+
**Solution:**
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// WRONG: This deletes all existing rules!
|
|
85
|
+
await client.rulesets.update({
|
|
86
|
+
zone_id: 'zone_id',
|
|
87
|
+
ruleset_id: 'ruleset_id',
|
|
88
|
+
rules: [{ action: 'block', expression: 'cf.waf.score gt 50' }],
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// CORRECT: Get existing rules first
|
|
92
|
+
const ruleset = await client.rulesets.get({ zone_id: 'zone_id', ruleset_id: 'ruleset_id' });
|
|
93
|
+
await client.rulesets.update({
|
|
94
|
+
zone_id: 'zone_id',
|
|
95
|
+
ruleset_id: 'ruleset_id',
|
|
96
|
+
rules: [...ruleset.rules, { action: 'block', expression: 'cf.waf.score gt 50' }],
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Override Conflicts
|
|
101
|
+
|
|
102
|
+
**Problem:** Managed ruleset overrides don't apply
|
|
103
|
+
**Cause:** Rule ID doesn't exist or category name incorrect
|
|
104
|
+
**Solution:**
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// List managed ruleset rules to find IDs
|
|
108
|
+
const ruleset = await client.rulesets.get({
|
|
109
|
+
zone_id: 'zone_id',
|
|
110
|
+
ruleset_id: 'efb7b8c949ac4650a09736fc376e9aee',
|
|
111
|
+
});
|
|
112
|
+
console.log(ruleset.rules.map(r => ({ id: r.id, description: r.description })));
|
|
113
|
+
|
|
114
|
+
// Use correct IDs in overrides
|
|
115
|
+
{ action: 'execute', action_parameters: { id: 'efb7b8c949ac4650a09736fc376e9aee',
|
|
116
|
+
overrides: { rules: [{ id: '5de7edfa648c4d6891dc3e7f84534ffa', action: 'log' }] } } }
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## False Positives
|
|
120
|
+
|
|
121
|
+
**Problem:** Legitimate traffic blocked
|
|
122
|
+
**Cause:** Aggressive rules/thresholds
|
|
123
|
+
**Solution:**
|
|
124
|
+
|
|
125
|
+
1. Start with log mode: `overrides: { action: 'log' }`
|
|
126
|
+
2. Review Security Events to identify false positives
|
|
127
|
+
3. Override specific rules: `overrides: { rules: [{ id: 'rule_id', action: 'log' }] }`
|
|
128
|
+
|
|
129
|
+
## Rate Limiting NAT Issues
|
|
130
|
+
|
|
131
|
+
**Problem:** Users behind NAT hit rate limits too quickly
|
|
132
|
+
**Cause:** Multiple users sharing single IP
|
|
133
|
+
**Solution:**
|
|
134
|
+
|
|
135
|
+
Add more characteristics: User-Agent, session cookie, or authorization header
|
|
136
|
+
```typescript
|
|
137
|
+
{
|
|
138
|
+
action: 'block',
|
|
139
|
+
expression: 'http.request.uri.path starts_with "/api"',
|
|
140
|
+
action_parameters: {
|
|
141
|
+
ratelimit: {
|
|
142
|
+
characteristics: ['cf.colo.id', 'ip.src', 'http.request.cookies["session"][0]'],
|
|
143
|
+
period: 60,
|
|
144
|
+
requests_per_period: 100,
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Performance Issues
|
|
151
|
+
|
|
152
|
+
**Problem:** Increased latency
|
|
153
|
+
**Cause:** Complex expressions, excessive rules
|
|
154
|
+
**Solution:**
|
|
155
|
+
|
|
156
|
+
1. Skip static assets early: `action: 'skip'` for `\\.(jpg|css|js)$`
|
|
157
|
+
2. Path-based deployment: Only run managed on `/api` or `/admin`
|
|
158
|
+
3. Disable unused categories: `{ category: 'wordpress', enabled: false }`
|
|
159
|
+
4. Prefer string operators over regex: `starts_with` vs `matches`
|
|
160
|
+
|
|
161
|
+
## Limits & Quotas
|
|
162
|
+
|
|
163
|
+
| Resource | Free | Pro | Business | Enterprise |
|
|
164
|
+
|----------|------|-----|----------|------------|
|
|
165
|
+
| Custom rules | 5 | 20 | 100 | 1000 |
|
|
166
|
+
| Rate limiting rules | 1 | 10 | 25 | 100 |
|
|
167
|
+
| Rule expression length | 4096 chars | 4096 chars | 4096 chars | 4096 chars |
|
|
168
|
+
| Rules per ruleset | 75 | 75 | 400 | 1000 |
|
|
169
|
+
| Managed rulesets | Yes | Yes | Yes | Yes |
|
|
170
|
+
| Rate limit characteristics | 2 | 3 | 5 | 5 |
|
|
171
|
+
|
|
172
|
+
**Important Notes:**
|
|
173
|
+
- Rules execute in order; first match wins (except skip rules)
|
|
174
|
+
- Expression evaluation stops at first `false` in AND chains
|
|
175
|
+
- `matches` regex operator is slower than string operators
|
|
176
|
+
- Rate limit counting happens before mitigation
|
|
177
|
+
|
|
178
|
+
## API Errors
|
|
179
|
+
|
|
180
|
+
**Problem:** API calls fail with cryptic errors
|
|
181
|
+
**Cause:** Invalid parameters or permissions
|
|
182
|
+
**Solution:**
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
// Error: "Invalid phase" → Use exact phase name
|
|
186
|
+
phase: 'http_request_firewall_custom'
|
|
187
|
+
|
|
188
|
+
// Error: "Ruleset already exists" → Use update() or list first
|
|
189
|
+
const rulesets = await client.rulesets.list({ zone_id, phase: 'http_request_firewall_custom' });
|
|
190
|
+
if (rulesets.result.length > 0) {
|
|
191
|
+
await client.rulesets.update({ zone_id, ruleset_id: rulesets.result[0].id, rules: [...] });
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Error: "Action not supported" → Check phase/action compatibility
|
|
195
|
+
// 'execute' only in http_request_firewall_managed
|
|
196
|
+
// Rate limit config only in http_ratelimit phase
|
|
197
|
+
|
|
198
|
+
// Error: "Expression parse error" → Common fixes:
|
|
199
|
+
'ip.geoip.country eq "US"' // Quote strings
|
|
200
|
+
'cf.waf.score gt 40' // Use 'gt' not '>'
|
|
201
|
+
'http.request.uri.path' // Not 'http.request.path'
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**Tip**: Test expressions in dashboard Security Events before deploying.
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Common Patterns
|
|
2
|
+
|
|
3
|
+
## Deploy Managed Rulesets
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
// Deploy Cloudflare Managed Ruleset (default)
|
|
7
|
+
await client.rulesets.create({
|
|
8
|
+
zone_id: 'zone_id',
|
|
9
|
+
kind: 'zone',
|
|
10
|
+
phase: 'http_request_firewall_managed',
|
|
11
|
+
name: 'Cloudflare Managed Ruleset',
|
|
12
|
+
rules: [{
|
|
13
|
+
action: 'execute',
|
|
14
|
+
action_parameters: {
|
|
15
|
+
id: 'efb7b8c949ac4650a09736fc376e9aee', // Cloudflare Managed
|
|
16
|
+
// Or: '4814384a9e5d4991b9815dcfc25d2f1f' for OWASP CRS
|
|
17
|
+
// Or: 'c2e184081120413c86c3ab7e14069605' for Exposed Credentials
|
|
18
|
+
},
|
|
19
|
+
expression: 'true', // All requests
|
|
20
|
+
// Or: 'http.request.uri.path starts_with "/api"' for specific paths
|
|
21
|
+
enabled: true,
|
|
22
|
+
}],
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Override Managed Ruleset
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
await client.rulesets.create({
|
|
30
|
+
zone_id: 'zone_id',
|
|
31
|
+
phase: 'http_request_firewall_managed',
|
|
32
|
+
rules: [{
|
|
33
|
+
action: 'execute',
|
|
34
|
+
action_parameters: {
|
|
35
|
+
id: 'efb7b8c949ac4650a09736fc376e9aee',
|
|
36
|
+
overrides: {
|
|
37
|
+
// Override specific rules
|
|
38
|
+
rules: [
|
|
39
|
+
{ id: '5de7edfa648c4d6891dc3e7f84534ffa', action: 'log' },
|
|
40
|
+
{ id: '75a0060762034b9dad4e883afc121b4c', enabled: false },
|
|
41
|
+
],
|
|
42
|
+
// Override categories: wordpress, sqli, xss, rce, etc.
|
|
43
|
+
categories: [
|
|
44
|
+
{ category: 'wordpress', enabled: false },
|
|
45
|
+
{ category: 'sqli', action: 'log' },
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
expression: 'true',
|
|
50
|
+
}],
|
|
51
|
+
});
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Custom Rules
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
await client.rulesets.create({
|
|
58
|
+
zone_id: 'zone_id',
|
|
59
|
+
kind: 'zone',
|
|
60
|
+
phase: 'http_request_firewall_custom',
|
|
61
|
+
name: 'Custom WAF Rules',
|
|
62
|
+
rules: [
|
|
63
|
+
// Attack score-based
|
|
64
|
+
{ action: 'block', expression: 'cf.waf.score gt 50', enabled: true },
|
|
65
|
+
{ action: 'challenge', expression: 'cf.waf.score gt 20', enabled: true },
|
|
66
|
+
|
|
67
|
+
// Specific attack types
|
|
68
|
+
{ action: 'block', expression: 'cf.waf.score.sqli gt 30 or cf.waf.score.xss gt 30', enabled: true },
|
|
69
|
+
|
|
70
|
+
// Geographic blocking
|
|
71
|
+
{ action: 'block', expression: 'ip.geoip.country in {"CN" "RU"}', enabled: true },
|
|
72
|
+
],
|
|
73
|
+
});
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Rate Limiting
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
await client.rulesets.create({
|
|
80
|
+
zone_id: 'zone_id',
|
|
81
|
+
kind: 'zone',
|
|
82
|
+
phase: 'http_ratelimit',
|
|
83
|
+
name: 'Rate Limits',
|
|
84
|
+
rules: [
|
|
85
|
+
// Per-IP global limit
|
|
86
|
+
{
|
|
87
|
+
action: 'block',
|
|
88
|
+
expression: 'true',
|
|
89
|
+
action_parameters: {
|
|
90
|
+
ratelimit: {
|
|
91
|
+
characteristics: ['cf.colo.id', 'ip.src'],
|
|
92
|
+
period: 60,
|
|
93
|
+
requests_per_period: 100,
|
|
94
|
+
mitigation_timeout: 600,
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
// Login endpoint (stricter)
|
|
100
|
+
{
|
|
101
|
+
action: 'block',
|
|
102
|
+
expression: 'http.request.uri.path eq "/api/login"',
|
|
103
|
+
action_parameters: {
|
|
104
|
+
ratelimit: {
|
|
105
|
+
characteristics: ['ip.src'],
|
|
106
|
+
period: 60,
|
|
107
|
+
requests_per_period: 5,
|
|
108
|
+
mitigation_timeout: 600,
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
// API writes only (using counting_expression)
|
|
114
|
+
{
|
|
115
|
+
action: 'block',
|
|
116
|
+
expression: 'http.request.uri.path starts_with "/api"',
|
|
117
|
+
action_parameters: {
|
|
118
|
+
ratelimit: {
|
|
119
|
+
characteristics: ['cf.colo.id', 'ip.src'],
|
|
120
|
+
period: 60,
|
|
121
|
+
requests_per_period: 50,
|
|
122
|
+
counting_expression: 'http.request.method ne "GET"',
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
});
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Skip Rules
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
await client.rulesets.create({
|
|
134
|
+
zone_id: 'zone_id',
|
|
135
|
+
kind: 'zone',
|
|
136
|
+
phase: 'http_request_firewall_custom',
|
|
137
|
+
name: 'Skip Rules',
|
|
138
|
+
rules: [
|
|
139
|
+
// Skip static assets (current ruleset only)
|
|
140
|
+
{
|
|
141
|
+
action: 'skip',
|
|
142
|
+
action_parameters: { ruleset: 'current' },
|
|
143
|
+
expression: 'http.request.uri.path matches "\\.(jpg|css|js|woff2?)$"',
|
|
144
|
+
},
|
|
145
|
+
|
|
146
|
+
// Skip all WAF phases for trusted IPs
|
|
147
|
+
{
|
|
148
|
+
action: 'skip',
|
|
149
|
+
action_parameters: {
|
|
150
|
+
phases: ['http_request_firewall_managed', 'http_ratelimit'],
|
|
151
|
+
},
|
|
152
|
+
expression: 'ip.src in {192.0.2.0/24}',
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
});
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Complete Setup Example
|
|
159
|
+
|
|
160
|
+
Combine all three phases for comprehensive protection:
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
const client = new Cloudflare({ apiToken: process.env.CF_API_TOKEN });
|
|
164
|
+
const zoneId = process.env.ZONE_ID;
|
|
165
|
+
|
|
166
|
+
// 1. Custom rules (execute first)
|
|
167
|
+
await client.rulesets.create({
|
|
168
|
+
zone_id: zoneId,
|
|
169
|
+
phase: 'http_request_firewall_custom',
|
|
170
|
+
rules: [
|
|
171
|
+
{ action: 'skip', action_parameters: { phases: ['http_request_firewall_managed', 'http_ratelimit'] }, expression: 'ip.src in {192.0.2.0/24}' },
|
|
172
|
+
{ action: 'block', expression: 'cf.waf.score gt 50' },
|
|
173
|
+
{ action: 'managed_challenge', expression: 'cf.waf.score gt 20' },
|
|
174
|
+
],
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// 2. Managed ruleset (execute second)
|
|
178
|
+
await client.rulesets.create({
|
|
179
|
+
zone_id: zoneId,
|
|
180
|
+
phase: 'http_request_firewall_managed',
|
|
181
|
+
rules: [{
|
|
182
|
+
action: 'execute',
|
|
183
|
+
action_parameters: { id: 'efb7b8c949ac4650a09736fc376e9aee', overrides: { categories: [{ category: 'wordpress', enabled: false }] } },
|
|
184
|
+
expression: 'true',
|
|
185
|
+
}],
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
// 3. Rate limiting (execute third)
|
|
189
|
+
await client.rulesets.create({
|
|
190
|
+
zone_id: zoneId,
|
|
191
|
+
phase: 'http_ratelimit',
|
|
192
|
+
rules: [
|
|
193
|
+
{ action: 'block', expression: 'true', action_parameters: { ratelimit: { characteristics: ['cf.colo.id', 'ip.src'], period: 60, requests_per_period: 100, mitigation_timeout: 600 } } },
|
|
194
|
+
{ action: 'block', expression: 'http.request.uri.path eq "/api/login"', action_parameters: { ratelimit: { characteristics: ['ip.src'], period: 60, requests_per_period: 5, mitigation_timeout: 600 } } },
|
|
195
|
+
],
|
|
196
|
+
});
|
|
197
|
+
```
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Cloudflare Web Analytics
|
|
2
|
+
|
|
3
|
+
Privacy-first web analytics providing Core Web Vitals, traffic metrics, and user insights without compromising visitor privacy.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Cloudflare Web Analytics provides:
|
|
8
|
+
- **Core Web Vitals** - LCP, FID, CLS, INP, TTFB monitoring
|
|
9
|
+
- **Page views & visits** - Traffic patterns without cookies
|
|
10
|
+
- **Referrers & paths** - Traffic sources and popular pages
|
|
11
|
+
- **Device & browser data** - User agent breakdown
|
|
12
|
+
- **Geographic data** - Country-level visitor distribution
|
|
13
|
+
- **Privacy-first** - No cookies, fingerprinting, or PII collection
|
|
14
|
+
- **Free** - No cost, unlimited pageviews
|
|
15
|
+
|
|
16
|
+
**Important:** Web Analytics is **dashboard-only**. No API exists for programmatic data access.
|
|
17
|
+
|
|
18
|
+
## Quick Start Decision Tree
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Is your site proxied through Cloudflare?
|
|
22
|
+
├─ YES → Use automatic injection (configuration.md)
|
|
23
|
+
│ ├─ Enable auto-injection in dashboard
|
|
24
|
+
│ └─ No code changes needed (unless Cache-Control: no-transform)
|
|
25
|
+
│
|
|
26
|
+
└─ NO → Use manual beacon integration (integration.md)
|
|
27
|
+
├─ Add JS snippet to HTML
|
|
28
|
+
├─ Use spa: true for React/Vue/Next.js
|
|
29
|
+
└─ Configure CSP if needed
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Reading Order
|
|
33
|
+
|
|
34
|
+
1. **[configuration.md](configuration.md)** - Setup for proxied vs non-proxied sites
|
|
35
|
+
2. **[integration.md](integration.md)** - Framework-specific beacon integration (React, Next.js, Vue, Nuxt, etc.)
|
|
36
|
+
3. **[patterns.md](patterns.md)** - Common use cases (performance monitoring, GDPR consent, multi-site tracking)
|
|
37
|
+
4. **[gotchas.md](gotchas.md)** - Troubleshooting (SPA tracking, CSP issues, hash routing limitations)
|
|
38
|
+
|
|
39
|
+
## When to Use Each File
|
|
40
|
+
|
|
41
|
+
- **Setting up for first time?** → Start with configuration.md
|
|
42
|
+
- **Using React/Next.js/Vue/Nuxt?** → Go to integration.md for framework code
|
|
43
|
+
- **Need GDPR consent loading?** → See patterns.md
|
|
44
|
+
- **Beacon not loading or no data?** → Check gotchas.md
|
|
45
|
+
- **SPA not tracking navigation?** → See integration.md for `spa: true` config
|
|
46
|
+
|
|
47
|
+
## Key Concepts
|
|
48
|
+
|
|
49
|
+
### Proxied vs Non-Proxied Sites
|
|
50
|
+
|
|
51
|
+
| Type | Description | Beacon Injection | Limit |
|
|
52
|
+
|------|-------------|------------------|-------|
|
|
53
|
+
| **Proxied** | DNS through Cloudflare (orange cloud) | Automatic or manual | Unlimited |
|
|
54
|
+
| **Non-proxied** | External hosting, manual beacon | Manual only | 10 sites max |
|
|
55
|
+
|
|
56
|
+
### SPA Mode
|
|
57
|
+
|
|
58
|
+
**Critical for modern frameworks:**
|
|
59
|
+
```json
|
|
60
|
+
{"token": "YOUR_TOKEN", "spa": true}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Without `spa: true`, client-side navigation (React Router, Vue Router, Next.js routing) will NOT be tracked. Only initial page loads will register.
|
|
64
|
+
|
|
65
|
+
### CSP Requirements
|
|
66
|
+
|
|
67
|
+
If using Content Security Policy, allow both domains:
|
|
68
|
+
```
|
|
69
|
+
script-src https://static.cloudflareinsights.com https://cloudflareinsights.com;
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Features
|
|
73
|
+
|
|
74
|
+
### Core Web Vitals Debugging
|
|
75
|
+
- **LCP (Largest Contentful Paint)** - Identifies slow-loading hero images/elements
|
|
76
|
+
- **FID (First Input Delay)** - Interaction responsiveness (legacy metric)
|
|
77
|
+
- **INP (Interaction to Next Paint)** - Modern interaction responsiveness metric
|
|
78
|
+
- **CLS (Cumulative Layout Shift)** - Visual stability issues
|
|
79
|
+
- **TTFB (Time to First Byte)** - Server response performance
|
|
80
|
+
|
|
81
|
+
Dashboard shows top 5 problematic elements with CSS selectors for debugging.
|
|
82
|
+
|
|
83
|
+
### Traffic Filters
|
|
84
|
+
- **Bot filtering** - Exclude automated traffic from metrics
|
|
85
|
+
- **Date ranges** - Custom time period analysis
|
|
86
|
+
- **Geographic** - Country-level filtering
|
|
87
|
+
- **Device type** - Desktop, mobile, tablet breakdown
|
|
88
|
+
- **Browser/OS** - User agent filtering
|
|
89
|
+
|
|
90
|
+
### Rules (Advanced - Plan-dependent)
|
|
91
|
+
|
|
92
|
+
Create custom tracking rules for advanced configurations:
|
|
93
|
+
|
|
94
|
+
**Sample Rate Rules:**
|
|
95
|
+
- Reduce data collection percentage for high-traffic sites
|
|
96
|
+
- Example: Track only 50% of visitors to reduce volume
|
|
97
|
+
|
|
98
|
+
**Path-Based Rules:**
|
|
99
|
+
- Different behavior per route
|
|
100
|
+
- Example: Exclude `/admin/*` or `/internal/*` from tracking
|
|
101
|
+
|
|
102
|
+
**Host-Based Rules:**
|
|
103
|
+
- Multi-domain configurations
|
|
104
|
+
- Example: Separate tracking for staging vs production subdomains
|
|
105
|
+
|
|
106
|
+
**Availability:** Rules feature depends on your Cloudflare plan. Check dashboard under Web Analytics → Rules to see if available. Free plans may have limited or no access.
|
|
107
|
+
|
|
108
|
+
## Plan Limits
|
|
109
|
+
|
|
110
|
+
| Feature | Free | Notes |
|
|
111
|
+
|---------|------|-------|
|
|
112
|
+
| Proxied sites | Unlimited | DNS through Cloudflare |
|
|
113
|
+
| Non-proxied sites | 10 | External hosting |
|
|
114
|
+
| Pageviews | Unlimited | No volume limits |
|
|
115
|
+
| Data retention | 6 months | Rolling window |
|
|
116
|
+
| Rules | Plan-dependent | Check dashboard |
|
|
117
|
+
|
|
118
|
+
## Privacy & Compliance
|
|
119
|
+
|
|
120
|
+
- **No cookies** - Zero client-side storage
|
|
121
|
+
- **No fingerprinting** - No tracking across sites
|
|
122
|
+
- **No PII** - IP addresses not stored
|
|
123
|
+
- **GDPR-friendly** - Minimal data collection
|
|
124
|
+
- **CCPA-compliant** - No personal data sale
|
|
125
|
+
|
|
126
|
+
**EU opt-out:** Dashboard option to exclude EU visitor data entirely.
|
|
127
|
+
|
|
128
|
+
## Limitations
|
|
129
|
+
|
|
130
|
+
- **Dashboard-only** - No API for programmatic access
|
|
131
|
+
- **No real-time** - 5-10 minute data delay
|
|
132
|
+
- **No custom events** - Automatic pageview/navigation tracking only
|
|
133
|
+
- **History API only** - Hash-based routing (`#/path`) not supported
|
|
134
|
+
- **No session replay** - Metrics only, no user recordings
|
|
135
|
+
- **No form tracking** - Page navigation tracking only
|
|
136
|
+
|
|
137
|
+
## See Also
|
|
138
|
+
|
|
139
|
+
- [Cloudflare Web Analytics Docs](https://developers.cloudflare.com/analytics/web-analytics/)
|
|
140
|
+
- [Core Web Vitals Guide](https://web.dev/vitals/)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
## Setup Methods
|
|
4
|
+
|
|
5
|
+
### Proxied Sites (Automatic)
|
|
6
|
+
|
|
7
|
+
Dashboard → Web Analytics → Add site → Select hostname → Done
|
|
8
|
+
|
|
9
|
+
| Injection Option | Description |
|
|
10
|
+
|------------------|-------------|
|
|
11
|
+
| Enable | Auto-inject for all visitors (default) |
|
|
12
|
+
| Enable, excluding EU | No injection for EU (GDPR) |
|
|
13
|
+
| Enable with manual snippet | You add beacon manually |
|
|
14
|
+
| Disable | Pause tracking |
|
|
15
|
+
|
|
16
|
+
**Fails if response has:** `Cache-Control: public, no-transform`
|
|
17
|
+
|
|
18
|
+
**CSP required:**
|
|
19
|
+
```
|
|
20
|
+
script-src https://static.cloudflareinsights.com https://cloudflareinsights.com;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Non-Proxied Sites (Manual)
|
|
24
|
+
|
|
25
|
+
Dashboard → Web Analytics → Add site → Enter hostname → Copy snippet
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<script defer src='https://static.cloudflareinsights.com/beacon.min.js'
|
|
29
|
+
data-cf-beacon='{"token": "YOUR_TOKEN", "spa": true}'></script>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Limits:** 10 non-proxied sites per account
|
|
33
|
+
|
|
34
|
+
## SPA Mode
|
|
35
|
+
|
|
36
|
+
**Enable `spa: true` for:** React Router, Next.js, Vue Router, Nuxt, SvelteKit, Angular
|
|
37
|
+
|
|
38
|
+
**Keep `spa: false` for:** Traditional multi-page apps, static sites, WordPress
|
|
39
|
+
|
|
40
|
+
**Hash routing (`#/path`) NOT supported** - use History API routing.
|
|
41
|
+
|
|
42
|
+
## Token Management
|
|
43
|
+
|
|
44
|
+
- Found in: Dashboard → Web Analytics → Manage site
|
|
45
|
+
- **Not secrets** - domain-locked, safe to expose in HTML
|
|
46
|
+
- Each site gets unique token
|
|
47
|
+
|
|
48
|
+
## Environment Config
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
// Only load in production
|
|
52
|
+
if (process.env.NODE_ENV === 'production') {
|
|
53
|
+
// Load beacon
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Or use environment-specific tokens via env vars.
|
|
58
|
+
|
|
59
|
+
## Verify Installation
|
|
60
|
+
|
|
61
|
+
1. DevTools Network → filter `cloudflareinsights` → see `beacon.min.js` + data request
|
|
62
|
+
2. No CSP/CORS errors in console
|
|
63
|
+
3. Dashboard shows pageviews after 5-10 min delay
|
|
64
|
+
|
|
65
|
+
## Rules (Plan-dependent)
|
|
66
|
+
|
|
67
|
+
Configure in dashboard for:
|
|
68
|
+
- **Sample rate** - reduce collection % for high-traffic
|
|
69
|
+
- **Path-based** - different behavior per route
|
|
70
|
+
- **Host-based** - separate tracking per domain
|
|
71
|
+
|
|
72
|
+
## Data Retention
|
|
73
|
+
|
|
74
|
+
- 6 months rolling window
|
|
75
|
+
- 1-hour bucket granularity
|
|
76
|
+
- No raw export, dashboard only
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Web Analytics Gotchas
|
|
2
|
+
|
|
3
|
+
## Critical Issues
|
|
4
|
+
|
|
5
|
+
### SPA Navigation Not Tracked
|
|
6
|
+
|
|
7
|
+
**Symptom:** Only initial pageload counted
|
|
8
|
+
**Fix:** Add `spa: true`:
|
|
9
|
+
```html
|
|
10
|
+
<script data-cf-beacon='{"token": "TOKEN", "spa": true}' ...></script>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### CSP Blocking Beacon
|
|
14
|
+
|
|
15
|
+
**Symptom:** Console error "Refused to load script"
|
|
16
|
+
**Fix:** Allow both domains:
|
|
17
|
+
```
|
|
18
|
+
script-src 'self' https://static.cloudflareinsights.com https://cloudflareinsights.com;
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Hash-Based Routing Unsupported
|
|
22
|
+
|
|
23
|
+
**Symptom:** `#/path` URLs not tracked
|
|
24
|
+
**Fix:** Migrate to History API (`BrowserRouter`, not `HashRouter`). No workaround for hash routing.
|
|
25
|
+
|
|
26
|
+
### No Data Appearing
|
|
27
|
+
|
|
28
|
+
**Causes & Fixes:**
|
|
29
|
+
1. **Delay** - Wait 5-15 minutes
|
|
30
|
+
2. **Wrong token** - Verify matches dashboard exactly
|
|
31
|
+
3. **Script blocked** - Check DevTools Network tab for beacon.min.js
|
|
32
|
+
4. **Domain mismatch** - Dashboard site must match actual URL
|
|
33
|
+
|
|
34
|
+
### Auto-Injection Fails
|
|
35
|
+
|
|
36
|
+
**Cause:** `Cache-Control: no-transform` header
|
|
37
|
+
**Fix:** Remove `no-transform` or install beacon manually
|
|
38
|
+
|
|
39
|
+
### Duplicate Pageviews
|
|
40
|
+
|
|
41
|
+
**Cause:** Multiple beacon scripts
|
|
42
|
+
**Fix:** Keep only one beacon per page
|
|
43
|
+
|
|
44
|
+
## Configuration Issues
|
|
45
|
+
|
|
46
|
+
| Issue | Fix |
|
|
47
|
+
|-------|-----|
|
|
48
|
+
| 10-site limit reached | Delete old sites or proxy through CF (unlimited) |
|
|
49
|
+
| Token not recognized | Use exact alphanumeric token from dashboard |
|
|
50
|
+
|
|
51
|
+
## Framework-Specific
|
|
52
|
+
|
|
53
|
+
### Next.js Hydration Warning
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
<script suppressHydrationWarning ... />
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Gatsby Window Undefined
|
|
60
|
+
|
|
61
|
+
Use `gatsby-browser.js` to load client-side only.
|
|
62
|
+
|
|
63
|
+
## Limits
|
|
64
|
+
|
|
65
|
+
| Resource | Limit |
|
|
66
|
+
|----------|-------|
|
|
67
|
+
| Non-proxied sites | 10 |
|
|
68
|
+
| Proxied sites | Unlimited |
|
|
69
|
+
| Data retention | 6 months |
|
|
70
|
+
| Ingestion delay | 5-10 min |
|
|
71
|
+
| API access | None (dashboard only) |
|
|
72
|
+
|
|
73
|
+
## When NOT to Use Web Analytics
|
|
74
|
+
|
|
75
|
+
Use alternatives if you need:
|
|
76
|
+
- Custom event tracking
|
|
77
|
+
- Real-time data
|
|
78
|
+
- User-level tracking
|
|
79
|
+
- Conversion funnels
|
|
80
|
+
- Data export/API access
|
|
81
|
+
|
|
82
|
+
**Web Analytics excels at:** Core Web Vitals, basic traffic, privacy compliance, free unlimited pageviews.
|