@ultrakit/ultrakit 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +5991 -0
- package/dist/template/.opencode/.env.example +196 -0
- package/dist/template/.opencode/.template-manifest.json +718 -0
- package/dist/template/.opencode/.version +1 -0
- package/dist/template/.opencode/AGENTS.md +573 -0
- package/dist/template/.opencode/AGENT_ALIGNMENT.md +564 -0
- package/dist/template/.opencode/README.md +79 -0
- package/dist/template/.opencode/agent/build.md +447 -0
- package/dist/template/.opencode/agent/explore.md +114 -0
- package/dist/template/.opencode/agent/general.md +201 -0
- package/dist/template/.opencode/agent/painter.md +83 -0
- package/dist/template/.opencode/agent/plan.md +469 -0
- package/dist/template/.opencode/agent/review.md +235 -0
- package/dist/template/.opencode/agent/scout.md +142 -0
- package/dist/template/.opencode/agent/vision.md +169 -0
- package/dist/template/.opencode/command/compound.md +240 -0
- package/dist/template/.opencode/command/create.md +298 -0
- package/dist/template/.opencode/command/curate.md +299 -0
- package/dist/template/.opencode/command/design.md +130 -0
- package/dist/template/.opencode/command/explore.md +170 -0
- package/dist/template/.opencode/command/handoff.md +149 -0
- package/dist/template/.opencode/command/health.md +356 -0
- package/dist/template/.opencode/command/init-context.md +297 -0
- package/dist/template/.opencode/command/init-user.md +125 -0
- package/dist/template/.opencode/command/init.md +115 -0
- package/dist/template/.opencode/command/iterate.md +200 -0
- package/dist/template/.opencode/command/lfg.md +173 -0
- package/dist/template/.opencode/command/plan.md +436 -0
- package/dist/template/.opencode/command/pr.md +166 -0
- package/dist/template/.opencode/command/research.md +128 -0
- package/dist/template/.opencode/command/resume.md +78 -0
- package/dist/template/.opencode/command/review-codebase.md +135 -0
- package/dist/template/.opencode/command/ship.md +390 -0
- package/dist/template/.opencode/command/status.md +126 -0
- package/dist/template/.opencode/command/ui-review.md +111 -0
- package/dist/template/.opencode/command/ui-slop-check.md +169 -0
- package/dist/template/.opencode/command/verify.md +173 -0
- package/dist/template/.opencode/context/README.md +29 -0
- package/dist/template/.opencode/context/git-context.md +32 -0
- package/dist/template/.opencode/dcp-prompts/defaults/README.md +40 -0
- package/dist/template/.opencode/dcp-prompts/defaults/compress-message.md +42 -0
- package/dist/template/.opencode/dcp-prompts/defaults/compress-range.md +59 -0
- package/dist/template/.opencode/dcp-prompts/defaults/context-limit-nudge.md +15 -0
- package/dist/template/.opencode/dcp-prompts/defaults/iteration-nudge.md +3 -0
- package/dist/template/.opencode/dcp-prompts/defaults/system.md +31 -0
- package/dist/template/.opencode/dcp-prompts/defaults/turn-nudge.md +7 -0
- package/dist/template/.opencode/dcp-prompts/overrides/compress-message.md +71 -0
- package/dist/template/.opencode/dcp.jsonc +115 -0
- package/dist/template/.opencode/memory/README.md +89 -0
- package/dist/template/.opencode/memory/_templates/design.md +59 -0
- package/dist/template/.opencode/memory/_templates/prd.md +203 -0
- package/dist/template/.opencode/memory/_templates/project.md +58 -0
- package/dist/template/.opencode/memory/_templates/proposal.md +38 -0
- package/dist/template/.opencode/memory/_templates/roadmap.md +93 -0
- package/dist/template/.opencode/memory/_templates/state.md +89 -0
- package/dist/template/.opencode/memory/_templates/tasks.md +198 -0
- package/dist/template/.opencode/memory/_templates/tech-stack.md +85 -0
- package/dist/template/.opencode/memory/_templates/user.md +26 -0
- package/dist/template/.opencode/memory/project/gotchas.md +67 -0
- package/dist/template/.opencode/memory/project/project.md +92 -0
- package/dist/template/.opencode/memory/project/roadmap.md +142 -0
- package/dist/template/.opencode/memory/project/state.md +84 -0
- package/dist/template/.opencode/memory/project/tech-stack.md +53 -0
- package/dist/template/.opencode/memory/project/user.md +45 -0
- package/dist/template/.opencode/memory/research/benchmark-framework.md +162 -0
- package/dist/template/.opencode/memory/research/ccpm-analysis.md +334 -0
- package/dist/template/.opencode/memory/research/context-management-analysis.md +685 -0
- package/dist/template/.opencode/memory/research/effectiveness-audit.md +213 -0
- package/dist/template/.opencode/memory/research/opencode-mcp-bug-report.md +129 -0
- package/dist/template/.opencode/memory/research/openspec-analysis.md +226 -0
- package/dist/template/.opencode/memory/session-context.md +40 -0
- package/dist/template/.opencode/opencode.json +1148 -0
- package/dist/template/.opencode/opencodex-fast.jsonc +3 -0
- package/dist/template/.opencode/package.json +21 -0
- package/dist/template/.opencode/plugin/README.md +81 -0
- package/dist/template/.opencode/plugin/copilot-auth.ts +1285 -0
- package/dist/template/.opencode/plugin/lib/capture.ts +177 -0
- package/dist/template/.opencode/plugin/lib/compact.ts +194 -0
- package/dist/template/.opencode/plugin/lib/compile.ts +253 -0
- package/dist/template/.opencode/plugin/lib/context.ts +198 -0
- package/dist/template/.opencode/plugin/lib/curator.ts +234 -0
- package/dist/template/.opencode/plugin/lib/db/graph.ts +253 -0
- package/dist/template/.opencode/plugin/lib/db/maintenance.ts +312 -0
- package/dist/template/.opencode/plugin/lib/db/observations.ts +304 -0
- package/dist/template/.opencode/plugin/lib/db/pipeline.ts +520 -0
- package/dist/template/.opencode/plugin/lib/db/schema.ts +687 -0
- package/dist/template/.opencode/plugin/lib/db/types.ts +284 -0
- package/dist/template/.opencode/plugin/lib/distill.ts +376 -0
- package/dist/template/.opencode/plugin/lib/index-generator.ts +170 -0
- package/dist/template/.opencode/plugin/lib/inject.ts +126 -0
- package/dist/template/.opencode/plugin/lib/lint.ts +359 -0
- package/dist/template/.opencode/plugin/lib/memory-admin-tools.ts +277 -0
- package/dist/template/.opencode/plugin/lib/memory-db.ts +100 -0
- package/dist/template/.opencode/plugin/lib/memory-helpers.ts +141 -0
- package/dist/template/.opencode/plugin/lib/memory-hooks.ts +399 -0
- package/dist/template/.opencode/plugin/lib/memory-tools.ts +535 -0
- package/dist/template/.opencode/plugin/lib/notify.ts +89 -0
- package/dist/template/.opencode/plugin/lib/operation-log.ts +110 -0
- package/dist/template/.opencode/plugin/lib/validate.ts +243 -0
- package/dist/template/.opencode/plugin/memory.ts +90 -0
- package/dist/template/.opencode/plugin/package.json +7 -0
- package/dist/template/.opencode/plugin/prompt-leverage.ts +191 -0
- package/dist/template/.opencode/plugin/rtk.ts +43 -0
- package/dist/template/.opencode/plugin/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +172 -0
- package/dist/template/.opencode/plugin/sdk/copilot/chat/get-response-metadata.ts +15 -0
- package/dist/template/.opencode/plugin/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +19 -0
- package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-api-types.ts +72 -0
- package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-chat-language-model.ts +835 -0
- package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-chat-options.ts +30 -0
- package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +48 -0
- package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-prepare-tools.ts +92 -0
- package/dist/template/.opencode/plugin/sdk/copilot/copilot-provider.ts +101 -0
- package/dist/template/.opencode/plugin/sdk/copilot/index.ts +5 -0
- package/dist/template/.opencode/plugin/sdk/copilot/openai-compatible-error.ts +30 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/convert-to-openai-responses-input.ts +335 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/map-openai-responses-finish-reason.ts +22 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-config.ts +18 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-error.ts +22 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-responses-api-types.ts +214 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-responses-language-model.ts +1770 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-responses-prepare-tools.ts +173 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-responses-settings.ts +1 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/code-interpreter.ts +87 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/file-search.ts +127 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/image-generation.ts +114 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/local-shell.ts +64 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/web-search-preview.ts +103 -0
- package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/web-search.ts +102 -0
- package/dist/template/.opencode/plugin/sessions.ts +457 -0
- package/dist/template/.opencode/plugin/skill-mcp.ts +618 -0
- package/dist/template/.opencode/plugin/tsconfig.json +16 -0
- package/dist/template/.opencode/skill/accessibility-audit/SKILL.md +191 -0
- package/dist/template/.opencode/skill/agent-evals/SKILL.md +208 -0
- package/dist/template/.opencode/skill/agent-teams/SKILL.md +268 -0
- package/dist/template/.opencode/skill/anti-ai-slop/SKILL.md +76 -0
- package/dist/template/.opencode/skill/api-and-interface-design/SKILL.md +162 -0
- package/dist/template/.opencode/skill/augment-context-engine/SKILL.md +122 -0
- package/dist/template/.opencode/skill/augment-context-engine/mcp.json +6 -0
- package/dist/template/.opencode/skill/beads/SKILL.md +182 -0
- package/dist/template/.opencode/skill/beads/references/BEST_PRACTICES.md +27 -0
- package/dist/template/.opencode/skill/beads/references/BOUNDARIES.md +219 -0
- package/dist/template/.opencode/skill/beads/references/DEPENDENCIES.md +124 -0
- package/dist/template/.opencode/skill/beads/references/EXAMPLES.md +45 -0
- package/dist/template/.opencode/skill/beads/references/FILE_CLAIMING.md +101 -0
- package/dist/template/.opencode/skill/beads/references/GIT_SYNC.md +25 -0
- package/dist/template/.opencode/skill/beads/references/HIERARCHY.md +71 -0
- package/dist/template/.opencode/skill/beads/references/MULTI_AGENT.md +40 -0
- package/dist/template/.opencode/skill/beads/references/RESUMABILITY.md +177 -0
- package/dist/template/.opencode/skill/beads/references/SESSION_PROTOCOL.md +61 -0
- package/dist/template/.opencode/skill/beads/references/TASK_CREATION.md +38 -0
- package/dist/template/.opencode/skill/beads/references/TROUBLESHOOTING.md +38 -0
- package/dist/template/.opencode/skill/beads/references/WORKFLOWS.md +226 -0
- package/dist/template/.opencode/skill/brainstorming/SKILL.md +114 -0
- package/dist/template/.opencode/skill/brand-asset-protocol/SKILL.md +222 -0
- package/dist/template/.opencode/skill/chrome-devtools/SKILL.md +76 -0
- package/dist/template/.opencode/skill/chrome-devtools/mcp.json +19 -0
- package/dist/template/.opencode/skill/ci-cd-and-automation/SKILL.md +202 -0
- package/dist/template/.opencode/skill/cloudflare/SKILL.md +253 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
- package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
- package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
- package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
- package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
- package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
- package/dist/template/.opencode/skill/code-search-patterns/SKILL.md +253 -0
- package/dist/template/.opencode/skill/code-simplification/SKILL.md +211 -0
- package/dist/template/.opencode/skill/condition-based-waiting/SKILL.md +135 -0
- package/dist/template/.opencode/skill/condition-based-waiting/example.ts +158 -0
- package/dist/template/.opencode/skill/context-condensation/SKILL.md +149 -0
- package/dist/template/.opencode/skill/context-engineering/SKILL.md +176 -0
- package/dist/template/.opencode/skill/context-initialization/SKILL.md +69 -0
- package/dist/template/.opencode/skill/context-management/SKILL.md +390 -0
- package/dist/template/.opencode/skill/core-data-expert/SKILL.md +93 -0
- package/dist/template/.opencode/skill/core-data-expert/references/batch-operations.md +543 -0
- package/dist/template/.opencode/skill/core-data-expert/references/cloudkit-integration.md +259 -0
- package/dist/template/.opencode/skill/core-data-expert/references/concurrency.md +522 -0
- package/dist/template/.opencode/skill/core-data-expert/references/fetch-requests.md +643 -0
- package/dist/template/.opencode/skill/core-data-expert/references/glossary.md +233 -0
- package/dist/template/.opencode/skill/core-data-expert/references/migration.md +393 -0
- package/dist/template/.opencode/skill/core-data-expert/references/model-configuration.md +597 -0
- package/dist/template/.opencode/skill/core-data-expert/references/performance.md +300 -0
- package/dist/template/.opencode/skill/core-data-expert/references/persistent-history.md +553 -0
- package/dist/template/.opencode/skill/core-data-expert/references/project-audit.md +60 -0
- package/dist/template/.opencode/skill/core-data-expert/references/saving.md +574 -0
- package/dist/template/.opencode/skill/core-data-expert/references/stack-setup.md +625 -0
- package/dist/template/.opencode/skill/core-data-expert/references/testing.md +300 -0
- package/dist/template/.opencode/skill/core-data-expert/references/threading.md +589 -0
- package/dist/template/.opencode/skill/deep-research/SKILL.md +384 -0
- package/dist/template/.opencode/skill/defense-in-depth/SKILL.md +176 -0
- package/dist/template/.opencode/skill/deprecation-and-migration/SKILL.md +189 -0
- package/dist/template/.opencode/skill/design-direction-advisor/SKILL.md +139 -0
- package/dist/template/.opencode/skill/design-system-audit/SKILL.md +153 -0
- package/dist/template/.opencode/skill/design-taste-frontend/SKILL.md +238 -0
- package/dist/template/.opencode/skill/development-lifecycle/SKILL.md +320 -0
- package/dist/template/.opencode/skill/dispatching-parallel-agents/SKILL.md +191 -0
- package/dist/template/.opencode/skill/documentation-and-adrs/SKILL.md +220 -0
- package/dist/template/.opencode/skill/executing-plans/SKILL.md +247 -0
- package/dist/template/.opencode/skill/figma/SKILL.md +224 -0
- package/dist/template/.opencode/skill/figma-go/SKILL.md +65 -0
- package/dist/template/.opencode/skill/finishing-a-development-branch/SKILL.md +357 -0
- package/dist/template/.opencode/skill/frontend-design/SKILL.md +235 -0
- package/dist/template/.opencode/skill/frontend-design/references/animation/motion-advanced.md +224 -0
- package/dist/template/.opencode/skill/frontend-design/references/animation/motion-core.md +181 -0
- package/dist/template/.opencode/skill/frontend-design/references/canvas/execution.md +90 -0
- package/dist/template/.opencode/skill/frontend-design/references/canvas/philosophy.md +94 -0
- package/dist/template/.opencode/skill/frontend-design/references/design/color-system.md +111 -0
- package/dist/template/.opencode/skill/frontend-design/references/design/interaction.md +149 -0
- package/dist/template/.opencode/skill/frontend-design/references/design/typography-rules.md +106 -0
- package/dist/template/.opencode/skill/frontend-design/references/design/ux-writing.md +99 -0
- package/dist/template/.opencode/skill/frontend-design/references/shadcn/accessibility.md +132 -0
- package/dist/template/.opencode/skill/frontend-design/references/shadcn/core-components.md +153 -0
- package/dist/template/.opencode/skill/frontend-design/references/shadcn/form-components.md +158 -0
- package/dist/template/.opencode/skill/frontend-design/references/shadcn/setup.md +69 -0
- package/dist/template/.opencode/skill/frontend-design/references/shadcn/theming.md +152 -0
- package/dist/template/.opencode/skill/frontend-design/references/tailwind/responsive.md +112 -0
- package/dist/template/.opencode/skill/frontend-design/references/tailwind/utilities-layout.md +134 -0
- package/dist/template/.opencode/skill/frontend-design/references/tailwind/utilities-styling.md +165 -0
- package/dist/template/.opencode/skill/frontend-design/references/tailwind/v4-config.md +147 -0
- package/dist/template/.opencode/skill/frontend-design/references/tailwind/v4-features.md +128 -0
- package/dist/template/.opencode/skill/full-output-enforcement/SKILL.md +62 -0
- package/dist/template/.opencode/skill/gemini-large-context/SKILL.md +216 -0
- package/dist/template/.opencode/skill/gh-address-comments/SKILL.md +29 -0
- package/dist/template/.opencode/skill/gh-address-comments/scripts/fetch_comments.py +237 -0
- package/dist/template/.opencode/skill/gh-fix-ci/SKILL.md +38 -0
- package/dist/template/.opencode/skill/gh-fix-ci/scripts/inspect_pr_checks.py +509 -0
- package/dist/template/.opencode/skill/hi-fi-prototype-html/SKILL.md +253 -0
- package/dist/template/.opencode/skill/high-end-visual-design/SKILL.md +111 -0
- package/dist/template/.opencode/skill/html-deck-export/SKILL.md +189 -0
- package/dist/template/.opencode/skill/incremental-implementation/SKILL.md +191 -0
- package/dist/template/.opencode/skill/index-knowledge/SKILL.md +413 -0
- package/dist/template/.opencode/skill/industrial-brutalist-ui/SKILL.md +105 -0
- package/dist/template/.opencode/skill/jira/SKILL.md +283 -0
- package/dist/template/.opencode/skill/jira/mcp.json +6 -0
- package/dist/template/.opencode/skill/memory-grounding/SKILL.md +68 -0
- package/dist/template/.opencode/skill/memory-system/SKILL.md +148 -0
- package/dist/template/.opencode/skill/minimalist-ui/SKILL.md +98 -0
- package/dist/template/.opencode/skill/mockup-to-code/SKILL.md +184 -0
- package/dist/template/.opencode/skill/opensrc/SKILL.md +284 -0
- package/dist/template/.opencode/skill/opensrc/references/architecture.md +176 -0
- package/dist/template/.opencode/skill/opensrc/references/cli-usage.md +176 -0
- package/dist/template/.opencode/skill/opensrc/references/registry-support.md +137 -0
- package/dist/template/.opencode/skill/pdf-extract/SKILL.md +438 -0
- package/dist/template/.opencode/skill/performance-optimization/SKILL.md +236 -0
- package/dist/template/.opencode/skill/playwright/SKILL.md +381 -0
- package/dist/template/.opencode/skill/playwright/mcp.json +16 -0
- package/dist/template/.opencode/skill/playwright/references/agent-browser-cli.md +405 -0
- package/dist/template/.opencode/skill/playwriter/SKILL.md +158 -0
- package/dist/template/.opencode/skill/polar/SKILL.md +102 -0
- package/dist/template/.opencode/skill/portless/SKILL.md +109 -0
- package/dist/template/.opencode/skill/prd/SKILL.md +146 -0
- package/dist/template/.opencode/skill/prd-task/SKILL.md +182 -0
- package/dist/template/.opencode/skill/prd-task/references/prd-schema.json +124 -0
- package/dist/template/.opencode/skill/prompt-leverage/SKILL.md +90 -0
- package/dist/template/.opencode/skill/prompt-leverage/references/framework.md +91 -0
- package/dist/template/.opencode/skill/prompt-leverage/scripts/augment_prompt.py +157 -0
- package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
- package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
- package/dist/template/.opencode/skill/react-best-practices/SKILL.md +133 -0
- package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
- package/dist/template/.opencode/skill/receiving-code-review/SKILL.md +263 -0
- package/dist/template/.opencode/skill/reconcile/SKILL.md +183 -0
- package/dist/template/.opencode/skill/redesign-existing-projects/SKILL.md +191 -0
- package/dist/template/.opencode/skill/reflection-checkpoints/SKILL.md +183 -0
- package/dist/template/.opencode/skill/requesting-code-review/SKILL.md +443 -0
- package/dist/template/.opencode/skill/requesting-code-review/references/specialist-profiles.md +108 -0
- package/dist/template/.opencode/skill/requesting-code-review/review.md +160 -0
- package/dist/template/.opencode/skill/resend/SKILL.md +177 -0
- package/dist/template/.opencode/skill/resend/references/react-email.md +287 -0
- package/dist/template/.opencode/skill/resend/references/receive-email.md +248 -0
- package/dist/template/.opencode/skill/resend/references/send-email.md +318 -0
- package/dist/template/.opencode/skill/root-cause-tracing/SKILL.md +192 -0
- package/dist/template/.opencode/skill/root-cause-tracing/find-polluter.sh +63 -0
- package/dist/template/.opencode/skill/rtk-command-compression/SKILL.md +134 -0
- package/dist/template/.opencode/skill/screenshot/SKILL.md +48 -0
- package/dist/template/.opencode/skill/screenshot/scripts/ensure_macos_permissions.sh +54 -0
- package/dist/template/.opencode/skill/screenshot/scripts/macos_display_info.swift +22 -0
- package/dist/template/.opencode/skill/screenshot/scripts/macos_permissions.swift +40 -0
- package/dist/template/.opencode/skill/screenshot/scripts/macos_window_info.swift +126 -0
- package/dist/template/.opencode/skill/screenshot/scripts/take_screenshot.ps1 +163 -0
- package/dist/template/.opencode/skill/screenshot/scripts/take_screenshot.py +585 -0
- package/dist/template/.opencode/skill/security-and-hardening/SKILL.md +296 -0
- package/dist/template/.opencode/skill/security-threat-model/SKILL.md +36 -0
- package/dist/template/.opencode/skill/security-threat-model/references/prompt-template.md +255 -0
- package/dist/template/.opencode/skill/security-threat-model/references/security-controls-and-assets.md +32 -0
- package/dist/template/.opencode/skill/sharing-skills/SKILL.md +214 -0
- package/dist/template/.opencode/skill/skill-creator/SKILL.md +181 -0
- package/dist/template/.opencode/skill/skill-installer/SKILL.md +58 -0
- package/dist/template/.opencode/skill/skill-installer/scripts/github_utils.py +21 -0
- package/dist/template/.opencode/skill/skill-installer/scripts/install-skill-from-github.py +313 -0
- package/dist/template/.opencode/skill/skill-installer/scripts/list-skills.py +106 -0
- package/dist/template/.opencode/skill/structured-edit/SKILL.md +191 -0
- package/dist/template/.opencode/skill/subagent-driven-development/SKILL.md +237 -0
- package/dist/template/.opencode/skill/supabase/SKILL.md +130 -0
- package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/AGENTS.md +1490 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/SKILL.md +65 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/advanced-full-text-search.md +55 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/advanced-jsonb-indexing.md +49 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-idle-timeout.md +46 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-limits.md +44 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-pooling.md +41 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-prepared-statements.md +46 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-batch-inserts.md +54 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-n-plus-one.md +53 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-pagination.md +50 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-upsert.md +50 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-advisory.md +56 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-deadlock-prevention.md +68 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-short-transactions.md +50 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-skip-locked.md +54 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-explain-analyze.md +45 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-pg-stat-statements.md +55 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-vacuum-analyze.md +55 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-composite-indexes.md +44 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-covering-indexes.md +40 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-index-types.md +45 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-missing-indexes.md +43 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-partial-indexes.md +45 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-data-types.md +46 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-foreign-key-indexes.md +59 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-lowercase-identifiers.md +55 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-partitioning.md +55 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-primary-keys.md +61 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-privileges.md +54 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-rls-basics.md +50 -0
- package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-rls-performance.md +57 -0
- package/dist/template/.opencode/skill/swarm-coordination/SKILL.md +244 -0
- package/dist/template/.opencode/skill/swarm-coordination/references/architecture.md +39 -0
- package/dist/template/.opencode/skill/swarm-coordination/references/delegation-worker-protocol.md +145 -0
- package/dist/template/.opencode/skill/swarm-coordination/references/dependency-graph.md +50 -0
- package/dist/template/.opencode/skill/swarm-coordination/references/drift-check.md +90 -0
- package/dist/template/.opencode/skill/swarm-coordination/references/integration-beads.md +20 -0
- package/dist/template/.opencode/skill/swarm-coordination/references/launch-flow.md +186 -0
- package/dist/template/.opencode/skill/swarm-coordination/references/reconciler.md +172 -0
- package/dist/template/.opencode/skill/swarm-coordination/references/tier-enforcement.md +78 -0
- package/dist/template/.opencode/skill/swarm-coordination/references/tmux-integration.md +134 -0
- package/dist/template/.opencode/skill/swift-concurrency/SKILL.md +266 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/actors.md +640 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/async-algorithms.md +822 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/async-await-basics.md +249 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/async-sequences.md +670 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/core-data.md +533 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/glossary.md +128 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/linting.md +142 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/memory-management.md +542 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/migration.md +1076 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/performance.md +574 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/sendable.md +578 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/tasks.md +604 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/testing.md +565 -0
- package/dist/template/.opencode/skill/swift-concurrency/references/threading.md +452 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/SKILL.md +329 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/animation-advanced.md +351 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/animation-basics.md +284 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/animation-transitions.md +326 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/image-optimization.md +286 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/layout-best-practices.md +312 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/liquid-glass.md +377 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/list-patterns.md +153 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/modern-apis.md +400 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/performance-patterns.md +377 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/scroll-patterns.md +305 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/sheet-navigation-patterns.md +292 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/state-management.md +447 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/text-formatting.md +285 -0
- package/dist/template/.opencode/skill/swiftui-expert-skill/references/view-structure.md +276 -0
- package/dist/template/.opencode/skill/systematic-debugging/SKILL.md +402 -0
- package/dist/template/.opencode/skill/terse-output-mode/SKILL.md +95 -0
- package/dist/template/.opencode/skill/test-driven-development/SKILL.md +403 -0
- package/dist/template/.opencode/skill/testing-anti-patterns/SKILL.md +333 -0
- package/dist/template/.opencode/skill/think-in-code/SKILL.md +136 -0
- package/dist/template/.opencode/skill/using-git-worktrees/SKILL.md +259 -0
- package/dist/template/.opencode/skill/ux-quality-gates/SKILL.md +137 -0
- package/dist/template/.opencode/skill/v0/SKILL.md +158 -0
- package/dist/template/.opencode/skill/v1-run/SKILL.md +175 -0
- package/dist/template/.opencode/skill/v1-run/mcp.json +6 -0
- package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +124 -0
- package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
- package/dist/template/.opencode/skill/verification-before-completion/SKILL.md +357 -0
- package/dist/template/.opencode/skill/verification-before-completion/references/VERIFICATION_PROTOCOL.md +171 -0
- package/dist/template/.opencode/skill/verification-gates/SKILL.md +63 -0
- package/dist/template/.opencode/skill/visual-analysis/SKILL.md +154 -0
- package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +46 -0
- package/dist/template/.opencode/skill/webclaw/SKILL.md +155 -0
- package/dist/template/.opencode/skill/workspace-setup/SKILL.md +76 -0
- package/dist/template/.opencode/skill/writing-plans/SKILL.md +320 -0
- package/dist/template/.opencode/skill/writing-skills/SKILL.md +324 -0
- package/dist/template/.opencode/skill/writing-skills/anthropic-best-practices.md +1173 -0
- package/dist/template/.opencode/skill/writing-skills/graphviz-conventions.dot +172 -0
- package/dist/template/.opencode/skill/writing-skills/persuasion-principles.md +220 -0
- package/dist/template/.opencode/skill/writing-skills/references/anti-patterns.md +25 -0
- package/dist/template/.opencode/skill/writing-skills/references/claude-search-optimization.md +140 -0
- package/dist/template/.opencode/skill/writing-skills/references/discovery-workflow.md +11 -0
- package/dist/template/.opencode/skill/writing-skills/references/file-organization.md +32 -0
- package/dist/template/.opencode/skill/writing-skills/references/flowcharts-and-examples.md +57 -0
- package/dist/template/.opencode/skill/writing-skills/references/rationalization-hardening.md +75 -0
- package/dist/template/.opencode/skill/writing-skills/references/testing-methodology.md +397 -0
- package/dist/template/.opencode/skill/writing-skills/references/testing-skill-types.md +52 -0
- package/dist/template/.opencode/tool/context7.ts +191 -0
- package/dist/template/.opencode/tool/grepsearch.ts +143 -0
- package/dist/template/.opencode/tsconfig.json +21 -0
- package/dist/template/.opencode/tui.json +15 -0
- package/package.json +78 -0
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
# agent-browser
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
- When you need Playwright-based browser automation via the agent-browser CLI.
|
|
6
|
+
|
|
7
|
+
## When NOT to Use
|
|
8
|
+
|
|
9
|
+
- When MCP-based browser control is required instead of a CLI workflow.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g agent-browser
|
|
16
|
+
agent-browser install # Download Chromium
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Linux: `agent-browser install --with-deps`
|
|
20
|
+
|
|
21
|
+
## Architecture
|
|
22
|
+
|
|
23
|
+
- **Rust CLI** (fast native binary) parses commands, communicates with daemon
|
|
24
|
+
- **Node.js daemon** manages Playwright browser instance, persists between commands
|
|
25
|
+
- Daemon auto-starts on first command, stays alive for fast subsequent ops
|
|
26
|
+
- Each session has own daemon process + Unix socket (or TCP on Windows)
|
|
27
|
+
|
|
28
|
+
## Core Workflow
|
|
29
|
+
|
|
30
|
+
1. **Open page**: `agent-browser open <url>`
|
|
31
|
+
2. **Get snapshot**: `agent-browser snapshot -i` (interactive elements only)
|
|
32
|
+
3. **Use refs**: `agent-browser click @e2` / `agent-browser fill @e3 "text"`
|
|
33
|
+
4. **Repeat snapshot** after page changes
|
|
34
|
+
|
|
35
|
+
## Refs (Primary Selection Method)
|
|
36
|
+
|
|
37
|
+
Snapshot generates ARIA accessibility tree with `[ref=eN]` tags. Refs map to `getByRole()` locators internally.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
agent-browser snapshot
|
|
41
|
+
# - heading "Example Domain" [ref=e1] [level=1]
|
|
42
|
+
# - button "Submit" [ref=e2]
|
|
43
|
+
# - textbox "Email" [ref=e3]
|
|
44
|
+
# - link "Learn more" [ref=e4]
|
|
45
|
+
|
|
46
|
+
agent-browser click @e2 # Click button
|
|
47
|
+
agent-browser fill @e3 "test@example.com"
|
|
48
|
+
agent-browser get text @e1 # Get heading text
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Ref syntax: `@e1`, `e1`, or `ref=e1` all work.
|
|
52
|
+
|
|
53
|
+
**Why refs?**
|
|
54
|
+
|
|
55
|
+
- Deterministic: points to exact element from snapshot
|
|
56
|
+
- Fast: no DOM re-query, uses cached role/name locator
|
|
57
|
+
- AI-friendly: snapshot + ref workflow optimal for LLMs
|
|
58
|
+
|
|
59
|
+
### Interactive Roles (get refs automatically)
|
|
60
|
+
|
|
61
|
+
`button`, `link`, `textbox`, `checkbox`, `radio`, `combobox`, `listbox`, `menuitem`, `option`, `searchbox`, `slider`, `spinbutton`, `switch`, `tab`, `treeitem`
|
|
62
|
+
|
|
63
|
+
### Content Roles (get refs when named)
|
|
64
|
+
|
|
65
|
+
`heading`, `cell`, `gridcell`, `columnheader`, `rowheader`, `listitem`, `article`, `region`, `main`, `navigation`
|
|
66
|
+
|
|
67
|
+
## Commands
|
|
68
|
+
|
|
69
|
+
### Navigation
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
agent-browser open <url> # Auto-prepends https:// if needed
|
|
73
|
+
agent-browser back
|
|
74
|
+
agent-browser forward
|
|
75
|
+
agent-browser reload
|
|
76
|
+
agent-browser close # Closes browser + daemon
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Interaction
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
agent-browser click <sel> # Left click
|
|
83
|
+
agent-browser dblclick <sel> # Double click
|
|
84
|
+
agent-browser fill <sel> <text> # Clear field + set value (atomic)
|
|
85
|
+
agent-browser type <sel> <text> # Type character by character (preserves existing)
|
|
86
|
+
agent-browser press <key> # Key press: Enter, Tab, Control+a, Shift+Tab
|
|
87
|
+
agent-browser keydown <key> # Hold key down
|
|
88
|
+
agent-browser keyup <key> # Release key
|
|
89
|
+
agent-browser hover <sel>
|
|
90
|
+
agent-browser focus <sel>
|
|
91
|
+
agent-browser select <sel> <val> # Select dropdown option by value
|
|
92
|
+
agent-browser check <sel> # Check checkbox
|
|
93
|
+
agent-browser uncheck <sel> # Uncheck checkbox
|
|
94
|
+
agent-browser scroll up|down|left|right [px] # Default 300px
|
|
95
|
+
agent-browser scrollintoview <sel>
|
|
96
|
+
agent-browser drag <src> <tgt> # Drag and drop
|
|
97
|
+
agent-browser upload <sel> <file1> [file2...]
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Get Info
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
agent-browser get text <sel> # textContent
|
|
104
|
+
agent-browser get html <sel> # innerHTML
|
|
105
|
+
agent-browser get value <sel> # input value
|
|
106
|
+
agent-browser get attr <sel> <attr>
|
|
107
|
+
agent-browser get title
|
|
108
|
+
agent-browser get url
|
|
109
|
+
agent-browser get count <sel> # Number of matching elements
|
|
110
|
+
agent-browser get box <sel> # Bounding box {x,y,width,height}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Check State
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
agent-browser is visible <sel>
|
|
117
|
+
agent-browser is enabled <sel>
|
|
118
|
+
agent-browser is checked <sel>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Snapshot Options
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
agent-browser snapshot # Full accessibility tree
|
|
125
|
+
agent-browser snapshot -i # Interactive elements only (buttons, inputs, links)
|
|
126
|
+
agent-browser snapshot -c # Compact (remove empty structural elements)
|
|
127
|
+
agent-browser snapshot -d 3 # Limit depth to 3 levels
|
|
128
|
+
agent-browser snapshot -s "#main" # Scope to CSS selector
|
|
129
|
+
agent-browser snapshot -i -c -d 5 # Combine options
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Screenshots & PDF
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
agent-browser screenshot [path] # PNG to stdout (base64) or file
|
|
136
|
+
agent-browser screenshot --full # Full page screenshot
|
|
137
|
+
agent-browser screenshot -f page.png
|
|
138
|
+
agent-browser pdf <path> # Save as PDF (format: Letter, A4, etc)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Wait
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
agent-browser wait <selector> # Wait for element visible
|
|
145
|
+
agent-browser wait <ms> # Wait for time (numeric = milliseconds)
|
|
146
|
+
agent-browser wait --text "Welcome"
|
|
147
|
+
agent-browser wait --url "**/dashboard"
|
|
148
|
+
agent-browser wait --load networkidle # load | domcontentloaded | networkidle
|
|
149
|
+
agent-browser wait --fn "window.ready === true" # Wait for JS condition
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Find (Semantic Locators)
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
agent-browser find role button click --name "Submit"
|
|
156
|
+
agent-browser find text "Sign In" click
|
|
157
|
+
agent-browser find label "Email" fill "test@test.com"
|
|
158
|
+
agent-browser find placeholder "Search" fill "query"
|
|
159
|
+
agent-browser find alt "Logo" click # By alt text
|
|
160
|
+
agent-browser find title "Close" click # By title attribute
|
|
161
|
+
agent-browser find testid "submit-btn" click
|
|
162
|
+
agent-browser find first ".item" click # First match
|
|
163
|
+
agent-browser find last ".item" click # Last match
|
|
164
|
+
agent-browser find nth 2 "a" text # Nth match (0-indexed)
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Actions: `click`, `fill`, `check`, `hover`, `text`
|
|
168
|
+
|
|
169
|
+
### Sessions (Isolated Browser Instances)
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
agent-browser --session agent1 open site-a.com
|
|
173
|
+
agent-browser --session agent2 open site-b.com
|
|
174
|
+
AGENT_BROWSER_SESSION=agent1 agent-browser click @e2
|
|
175
|
+
|
|
176
|
+
agent-browser session list # List active sessions
|
|
177
|
+
agent-browser session # Show current session
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Each session has: own browser, cookies/storage, navigation history, auth state.
|
|
181
|
+
|
|
182
|
+
### Storage & Cookies
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
agent-browser cookies # Get all cookies
|
|
186
|
+
agent-browser cookies set <name> <val>
|
|
187
|
+
agent-browser cookies clear
|
|
188
|
+
|
|
189
|
+
agent-browser storage local # Get all localStorage
|
|
190
|
+
agent-browser storage local <key> # Get specific key
|
|
191
|
+
agent-browser storage local set <k> <v>
|
|
192
|
+
agent-browser storage local clear
|
|
193
|
+
agent-browser storage session # Same for sessionStorage
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Tabs & Windows
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
agent-browser tab # List tabs
|
|
200
|
+
agent-browser tab new [url] # New tab
|
|
201
|
+
agent-browser tab <n> # Switch to tab n
|
|
202
|
+
agent-browser tab close [n] # Close tab
|
|
203
|
+
agent-browser window new # New window (new context)
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Frames
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
agent-browser frame <sel> # Switch to iframe by selector
|
|
210
|
+
agent-browser frame main # Back to main frame
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Dialogs (alert/confirm/prompt)
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
agent-browser dialog accept [text] # Accept (with optional prompt text)
|
|
217
|
+
agent-browser dialog dismiss # Dismiss
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Network Interception
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
agent-browser network route <url> # Intercept requests
|
|
224
|
+
agent-browser network route <url> --abort # Block requests
|
|
225
|
+
agent-browser network route <url> --body '{"mock":true}' # Mock response
|
|
226
|
+
agent-browser network unroute [url] # Remove routes
|
|
227
|
+
agent-browser network requests # View tracked requests
|
|
228
|
+
agent-browser network requests --filter api # Filter by URL pattern
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Browser Settings
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
agent-browser set viewport <w> <h>
|
|
235
|
+
agent-browser set device "iPhone 14" # Emulate device
|
|
236
|
+
agent-browser set geo <lat> <lng> # Geolocation
|
|
237
|
+
agent-browser set offline [on|off] # Toggle offline mode
|
|
238
|
+
agent-browser set media dark|light # Color scheme
|
|
239
|
+
agent-browser set credentials <u> <p> # HTTP basic auth
|
|
240
|
+
agent-browser set headers '{"X-Custom":"value"}'
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Debug & Tracing
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
agent-browser --headed open <url> # Show browser window (not headless)
|
|
247
|
+
agent-browser console # View console messages
|
|
248
|
+
agent-browser console --clear # Clear console
|
|
249
|
+
agent-browser errors # View page errors
|
|
250
|
+
agent-browser errors --clear
|
|
251
|
+
agent-browser highlight <sel> # Highlight element visually
|
|
252
|
+
agent-browser eval <js> # Run JavaScript, returns result
|
|
253
|
+
agent-browser trace start [path] # Start recording trace
|
|
254
|
+
agent-browser trace stop [path] # Stop and save trace
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Auth State Persistence
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
agent-browser state save auth.json # Save cookies, localStorage, sessionStorage
|
|
261
|
+
agent-browser state load auth.json # Load at next launch (must be at browser start)
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Mouse Control
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
agent-browser mouse move <x> <y> # Move to coordinates
|
|
268
|
+
agent-browser mouse down [button] # left|right|middle
|
|
269
|
+
agent-browser mouse up [button]
|
|
270
|
+
agent-browser mouse wheel <dy> [dx] # Scroll wheel
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## Options
|
|
274
|
+
|
|
275
|
+
| Option | Description |
|
|
276
|
+
| ------------------ | ------------------------------------------------- |
|
|
277
|
+
| `--session <name>` | Isolated session (or `AGENT_BROWSER_SESSION` env) |
|
|
278
|
+
| `--json` | JSON output (for parsing) |
|
|
279
|
+
| `--full, -f` | Full page screenshot |
|
|
280
|
+
| `--headed` | Show browser window |
|
|
281
|
+
| `--name, -n` | Locator name filter |
|
|
282
|
+
| `--exact` | Exact text match |
|
|
283
|
+
| `--debug` | Debug output |
|
|
284
|
+
|
|
285
|
+
## Selector Types
|
|
286
|
+
|
|
287
|
+
1. **Refs** (preferred): `@e1`, `@e2` from snapshot
|
|
288
|
+
2. **CSS**: `#id`, `.class`, `div > button`
|
|
289
|
+
3. **Text**: `text=Submit`
|
|
290
|
+
4. **XPath**: `xpath=//button`
|
|
291
|
+
|
|
292
|
+
## JSON Output Format
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
agent-browser snapshot --json
|
|
296
|
+
# {"success":true,"data":{"snapshot":"...","refs":{"e1":{"role":"heading","name":"Title"},...}}}
|
|
297
|
+
|
|
298
|
+
agent-browser get text @e1 --json
|
|
299
|
+
# {"success":true,"data":{"text":"Hello World"}}
|
|
300
|
+
|
|
301
|
+
agent-browser is visible @e2 --json
|
|
302
|
+
# {"success":true,"data":{"visible":true}}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Patterns
|
|
306
|
+
|
|
307
|
+
### Login Flow
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
agent-browser open https://example.com/login
|
|
311
|
+
agent-browser snapshot -i
|
|
312
|
+
# Identify refs for username, password, submit
|
|
313
|
+
agent-browser fill @e2 "username"
|
|
314
|
+
agent-browser fill @e3 "password"
|
|
315
|
+
agent-browser click @e4
|
|
316
|
+
agent-browser wait --url "**/dashboard"
|
|
317
|
+
agent-browser state save auth.json # Persist auth for later
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### Form Submission
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
agent-browser open https://example.com/form
|
|
324
|
+
agent-browser snapshot -i --json
|
|
325
|
+
# Parse refs from JSON response
|
|
326
|
+
agent-browser fill @e1 "John Doe"
|
|
327
|
+
agent-browser fill @e2 "john@example.com"
|
|
328
|
+
agent-browser select @e3 "option-value"
|
|
329
|
+
agent-browser check @e4
|
|
330
|
+
agent-browser click @e5
|
|
331
|
+
agent-browser wait --text "Success"
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Scraping Data
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
agent-browser open https://example.com/data
|
|
338
|
+
agent-browser snapshot
|
|
339
|
+
agent-browser get text @e1
|
|
340
|
+
agent-browser get attr @e2 "href"
|
|
341
|
+
agent-browser eval "document.querySelectorAll('.item').length"
|
|
342
|
+
agent-browser eval "JSON.stringify([...document.querySelectorAll('.price')].map(e => e.textContent))"
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Multi-page Navigation
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
agent-browser open https://example.com
|
|
349
|
+
agent-browser snapshot -i
|
|
350
|
+
agent-browser click @e3 # Navigate to new page
|
|
351
|
+
agent-browser wait --load networkidle
|
|
352
|
+
agent-browser snapshot -i # Fresh snapshot for new page
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Parallel Browser Sessions
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
# Terminal 1
|
|
359
|
+
agent-browser --session scraper1 open https://site-a.com
|
|
360
|
+
agent-browser --session scraper1 snapshot -i
|
|
361
|
+
|
|
362
|
+
# Terminal 2
|
|
363
|
+
agent-browser --session scraper2 open https://site-b.com
|
|
364
|
+
agent-browser --session scraper2 snapshot -i
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### Mock API Response
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
agent-browser network route "**/api/users" --body '[{"id":1,"name":"Mock User"}]'
|
|
371
|
+
agent-browser open https://example.com # App sees mocked data
|
|
372
|
+
agent-browser network unroute "**/api/users"
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Handle File Downloads
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
agent-browser open https://example.com/downloads
|
|
379
|
+
agent-browser snapshot -i
|
|
380
|
+
agent-browser click @e2 # Download button
|
|
381
|
+
# Download handled automatically, saved to suggested filename
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
## Anti-Patterns
|
|
385
|
+
|
|
386
|
+
- **Don't use CSS selectors when refs available** - refs from snapshot are deterministic
|
|
387
|
+
- **Don't skip snapshot after page changes** - refs become stale after navigation
|
|
388
|
+
- **Don't use `type` when `fill` works** - `fill` atomically clears + sets, `type` appends
|
|
389
|
+
- **Don't hardcode wait times** - use semantic waits (`--text`, `--url`, `--load`, `--fn`)
|
|
390
|
+
- **Don't use `--headed` in automation** - only for debugging
|
|
391
|
+
- **Don't call `state load` after browser started** - must be at launch time
|
|
392
|
+
|
|
393
|
+
## Timeouts
|
|
394
|
+
|
|
395
|
+
Default timeout: 10 seconds (Playwright default is 30s). Commands will fail after timeout if element not found or condition not met.
|
|
396
|
+
|
|
397
|
+
## Browser Support
|
|
398
|
+
|
|
399
|
+
| Platform | Binary | Fallback |
|
|
400
|
+
| ----------- | ----------- | -------- |
|
|
401
|
+
| macOS ARM64 | Native Rust | Node.js |
|
|
402
|
+
| macOS x64 | Native Rust | Node.js |
|
|
403
|
+
| Linux ARM64 | Native Rust | Node.js |
|
|
404
|
+
| Linux x64 | Native Rust | Node.js |
|
|
405
|
+
| Windows | - | Node.js |
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: playwriter
|
|
3
|
+
description: Use when you need browser automation using the user's existing Chrome with extensions, sessions, and cookies intact. 90% less context than traditional browser MCP. Prefer over playwright skill when existing session state matters.
|
|
4
|
+
mcp:
|
|
5
|
+
playwriter:
|
|
6
|
+
command: npx
|
|
7
|
+
args: ["playwriter@latest"]
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
tags: [automation, mcp]
|
|
10
|
+
dependencies: []
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Playwriter Browser Automation (MCP)
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
- When you need to automate your existing Chrome browser session via the Playwriter extension.
|
|
18
|
+
|
|
19
|
+
## When NOT to Use
|
|
20
|
+
|
|
21
|
+
- When you need a fresh, isolated browser instance without your local extensions/cookies.
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
- **Uses your existing browser** - extensions, sessions, cookies all work
|
|
25
|
+
- **Single `execute` tool** - send Playwright code snippets directly
|
|
26
|
+
- **90% less context** - no tool schema bloat
|
|
27
|
+
- **Full Playwright API** - LLMs already know it from training
|
|
28
|
+
- **Bypass automation detection** - disconnect extension when needed
|
|
29
|
+
|
|
30
|
+
## Prerequisites
|
|
31
|
+
|
|
32
|
+
**You must install the Chrome extension first:**
|
|
33
|
+
|
|
34
|
+
1. Install [Playwriter Extension](https://chromewebstore.google.com/detail/playwriter-mcp/jfeammnjpkecdekppnclgkkffahnhfhe)
|
|
35
|
+
2. Click extension icon on tabs you want to control (icon turns green)
|
|
36
|
+
3. Now the skill can interact with those tabs
|
|
37
|
+
|
|
38
|
+
## Quick Start
|
|
39
|
+
|
|
40
|
+
After loading this skill:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
# List available tabs (enabled ones)
|
|
44
|
+
skill_mcp(skill_name="playwriter", tool_name="listTabs")
|
|
45
|
+
|
|
46
|
+
# Execute Playwright code on a tab
|
|
47
|
+
skill_mcp(skill_name="playwriter", tool_name="execute", arguments='{"tabId": "tab-id-here", "code": "await page.goto(\"https://example.com\")"}')
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Available Tools
|
|
51
|
+
|
|
52
|
+
| Tool | Description | Arguments |
|
|
53
|
+
| ---------- | -------------------------------- | --------------------------------- |
|
|
54
|
+
| `listTabs` | List tabs with extension enabled | `{}` |
|
|
55
|
+
| `execute` | Run Playwright code snippet | `{"tabId": "...", "code": "..."}` |
|
|
56
|
+
|
|
57
|
+
That's it. Two tools. The power is in the Playwright code you send.
|
|
58
|
+
|
|
59
|
+
## The `execute` Pattern
|
|
60
|
+
|
|
61
|
+
Send any valid Playwright code. The `page` object is already available:
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
// Navigate
|
|
65
|
+
await page.goto("https://github.com");
|
|
66
|
+
|
|
67
|
+
// Click
|
|
68
|
+
await page.click("button.sign-in");
|
|
69
|
+
|
|
70
|
+
// Fill form
|
|
71
|
+
await page.fill("#email", "user@example.com");
|
|
72
|
+
await page.fill("#password", "secret");
|
|
73
|
+
await page.click('button[type="submit"]');
|
|
74
|
+
|
|
75
|
+
// Wait for element
|
|
76
|
+
await page.waitForSelector(".dashboard");
|
|
77
|
+
|
|
78
|
+
// Get text
|
|
79
|
+
const title = await page.title();
|
|
80
|
+
|
|
81
|
+
// Screenshot
|
|
82
|
+
await page.screenshot({ path: "/tmp/screenshot.png" });
|
|
83
|
+
|
|
84
|
+
// Complex selectors
|
|
85
|
+
await page.click("text=Submit");
|
|
86
|
+
await page.click('[data-testid="login-btn"]');
|
|
87
|
+
|
|
88
|
+
// Evaluate JS in page
|
|
89
|
+
const links = await page.evaluate(() =>
|
|
90
|
+
Array.from(document.querySelectorAll("a")).map((a) => a.href),
|
|
91
|
+
);
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Examples
|
|
95
|
+
|
|
96
|
+
### Navigate and Screenshot
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
skill_mcp(skill_name="playwriter", tool_name="execute", arguments='{"tabId": "abc123", "code": "await page.goto(\"https://example.com\"); await page.screenshot({ path: \"/tmp/example.png\" })"}')
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Fill a Form
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
skill_mcp(skill_name="playwriter", tool_name="execute", arguments='{"tabId": "abc123", "code": "await page.fill(\"#name\", \"John Doe\"); await page.fill(\"#email\", \"john@example.com\"); await page.click(\"button[type=submit]\")"}')
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Login Flow (Using Your Saved Sessions)
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
# If you're already logged in via browser, just navigate
|
|
112
|
+
skill_mcp(skill_name="playwriter", tool_name="execute", arguments='{"tabId": "abc123", "code": "await page.goto(\"https://github.com/settings/profile\")"}')
|
|
113
|
+
|
|
114
|
+
# Your cookies/session already work - no login needed!
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Scrape Data
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
skill_mcp(skill_name="playwriter", tool_name="execute", arguments='{"tabId": "abc123", "code": "const items = await page.$$eval(\".product\", els => els.map(e => ({ name: e.querySelector(\"h2\").textContent, price: e.querySelector(\".price\").textContent }))); return items"}')
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Test Responsive
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
skill_mcp(skill_name="playwriter", tool_name="execute", arguments='{"tabId": "abc123", "code": "await page.setViewportSize({ width: 375, height: 667 }); await page.screenshot({ path: \"/tmp/mobile.png\" })"}')
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Bypassing Automation Detection
|
|
130
|
+
|
|
131
|
+
For sites that detect automation (Google login, etc.):
|
|
132
|
+
|
|
133
|
+
1. **Disconnect the extension** before sensitive actions
|
|
134
|
+
2. Perform login manually
|
|
135
|
+
3. **Reconnect** after authentication
|
|
136
|
+
4. Continue automation with your authenticated session
|
|
137
|
+
|
|
138
|
+
This works because the browser is real - not a Puppeteer/Playwright-spawned instance.
|
|
139
|
+
|
|
140
|
+
## vs Traditional Playwright MCP
|
|
141
|
+
|
|
142
|
+
| Aspect | `playwright` skill | `playwriter` skill |
|
|
143
|
+
| -------------------- | ----------------------- | ----------------------- |
|
|
144
|
+
| Tools | 17+ | 2 |
|
|
145
|
+
| Context usage | High | ~90% less |
|
|
146
|
+
| Browser | New instance | Your existing browser |
|
|
147
|
+
| Extensions | None | All yours |
|
|
148
|
+
| Sessions/cookies | Fresh | Your logged-in sessions |
|
|
149
|
+
| Automation detection | Always detected | Can bypass |
|
|
150
|
+
| API knowledge | Must learn tool schemas | Standard Playwright |
|
|
151
|
+
|
|
152
|
+
## Tips
|
|
153
|
+
|
|
154
|
+
- **List tabs first** to get valid tabId values
|
|
155
|
+
- **Chain commands** in single execute for efficiency
|
|
156
|
+
- **Use your sessions** - if you're logged into GitHub in Chrome, it just works
|
|
157
|
+
- **Return data** from execute to get values back
|
|
158
|
+
- **Standard Playwright docs** apply - no special syntax to learn
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: polar
|
|
3
|
+
description: Use when implementing payment flows, subscriptions, license keys, or customer portals with Polar. MUST load before writing any checkout, monetization, or billing code using Polar platform.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
tags: [integration, mcp]
|
|
6
|
+
dependencies: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Polar Integration
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- When implementing Polar checkout, subscriptions, or license key flows.
|
|
14
|
+
|
|
15
|
+
## When NOT to Use
|
|
16
|
+
|
|
17
|
+
- When payments are handled by a different platform.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## What I Do
|
|
21
|
+
|
|
22
|
+
- Guide implementation of Polar checkout and payments
|
|
23
|
+
- Help with subscription management and billing
|
|
24
|
+
- Assist with license key validation
|
|
25
|
+
- Set up webhook handlers for payment events
|
|
26
|
+
|
|
27
|
+
## When to Use Me
|
|
28
|
+
|
|
29
|
+
- Implementing checkout flow for a product
|
|
30
|
+
- Adding subscription billing to an app
|
|
31
|
+
- Setting up license key validation
|
|
32
|
+
- Building a customer portal
|
|
33
|
+
- Handling payment webhooks
|
|
34
|
+
|
|
35
|
+
## Quick Start
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install @polar-sh/sdk
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
import { Polar } from "@polar-sh/sdk";
|
|
43
|
+
|
|
44
|
+
const polar = new Polar({
|
|
45
|
+
accessToken: process.env.POLAR_ACCESS_TOKEN!,
|
|
46
|
+
server: "production", // or "sandbox"
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Key APIs
|
|
51
|
+
|
|
52
|
+
| API | Purpose |
|
|
53
|
+
| ----------------------- | --------------------------------- |
|
|
54
|
+
| `polar.products.*` | Create/manage products and prices |
|
|
55
|
+
| `polar.checkouts.*` | Create checkout sessions |
|
|
56
|
+
| `polar.subscriptions.*` | Manage subscriptions |
|
|
57
|
+
| `polar.orders.*` | View order history |
|
|
58
|
+
| `polar.customers.*` | Customer management |
|
|
59
|
+
| `polar.licenseKeys.*` | Issue and validate licenses |
|
|
60
|
+
|
|
61
|
+
## Environment Variables
|
|
62
|
+
|
|
63
|
+
| Variable | Description |
|
|
64
|
+
| ---------------------- | ------------------------------- |
|
|
65
|
+
| `POLAR_ACCESS_TOKEN` | Organization Access Token (OAT) |
|
|
66
|
+
| `POLAR_WEBHOOK_SECRET` | Webhook signing secret |
|
|
67
|
+
|
|
68
|
+
## Common Patterns
|
|
69
|
+
|
|
70
|
+
### Create Checkout
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
const checkout = await polar.checkouts.create({
|
|
74
|
+
productId: "prod_xxx",
|
|
75
|
+
successUrl: "https://myapp.com/success",
|
|
76
|
+
});
|
|
77
|
+
// Redirect to checkout.url
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Validate License Key
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
const result = await polar.licenseKeys.validate({
|
|
84
|
+
key: "XXXX-XXXX-XXXX-XXXX",
|
|
85
|
+
organizationId: "org_xxx",
|
|
86
|
+
});
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Handle Webhook
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import { validateEvent } from "@polar-sh/sdk/webhooks";
|
|
93
|
+
|
|
94
|
+
const event = validateEvent(body, signature, process.env.POLAR_WEBHOOK_SECRET!);
|
|
95
|
+
// event.type: "subscription.created", "order.created", etc.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Links
|
|
99
|
+
|
|
100
|
+
- [Dashboard](https://polar.sh)
|
|
101
|
+
- [API Docs](https://docs.polar.sh/api-reference)
|
|
102
|
+
- [SDK](https://www.npmjs.com/package/@polar-sh/sdk)
|