opencode-starterkit 1.0.1
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 +47 -0
- package/baseline/.env.example +196 -0
- package/baseline/.template-manifest.json +646 -0
- package/baseline/.version +1 -0
- package/baseline/AGENTS.md +410 -0
- package/baseline/AGENT_ALIGNMENT.md +564 -0
- package/baseline/README.md +79 -0
- package/baseline/agent/build.md +373 -0
- package/baseline/agent/explore.md +96 -0
- package/baseline/agent/general.md +186 -0
- package/baseline/agent/painter.md +74 -0
- package/baseline/agent/plan.md +435 -0
- package/baseline/agent/review.md +243 -0
- package/baseline/agent/runner.md +79 -0
- package/baseline/agent/scout.md +100 -0
- package/baseline/agent/vision.md +91 -0
- package/baseline/command/compound.md +143 -0
- package/baseline/command/create.md +213 -0
- package/baseline/command/design.md +112 -0
- package/baseline/command/handoff.md +147 -0
- package/baseline/command/init-context.md +273 -0
- package/baseline/command/init-user.md +105 -0
- package/baseline/command/init.md +117 -0
- package/baseline/command/lfg.md +170 -0
- package/baseline/command/plan.md +355 -0
- package/baseline/command/pr.md +161 -0
- package/baseline/command/research.md +125 -0
- package/baseline/command/resume.md +87 -0
- package/baseline/command/review-codebase.md +131 -0
- package/baseline/command/ship.md +342 -0
- package/baseline/command/start.md +158 -0
- package/baseline/command/status.md +117 -0
- package/baseline/command/ui-review.md +92 -0
- package/baseline/command/ui-slop-check.md +146 -0
- package/baseline/command/verify.md +160 -0
- package/baseline/context/README.md +29 -0
- package/baseline/dcp.jsonc +72 -0
- package/baseline/memory/README.md +89 -0
- package/baseline/memory/_templates/design.md +59 -0
- package/baseline/memory/_templates/prd.md +192 -0
- package/baseline/memory/_templates/project.md +58 -0
- package/baseline/memory/_templates/proposal.md +38 -0
- package/baseline/memory/_templates/roadmap.md +93 -0
- package/baseline/memory/_templates/state.md +89 -0
- package/baseline/memory/_templates/tasks.md +198 -0
- package/baseline/memory/_templates/tech-stack.md +85 -0
- package/baseline/memory/_templates/user.md +26 -0
- package/baseline/memory/project/gotchas.md +67 -0
- package/baseline/memory/project/project.md +92 -0
- package/baseline/memory/project/roadmap.md +142 -0
- package/baseline/memory/project/state.md +84 -0
- package/baseline/memory/project/tech-stack.md +53 -0
- package/baseline/memory/project/user.md +38 -0
- package/baseline/memory/research/benchmark-framework.md +162 -0
- package/baseline/memory/research/ccpm-analysis.md +334 -0
- package/baseline/memory/research/context-management-analysis.md +685 -0
- package/baseline/memory/research/effectiveness-audit.md +213 -0
- package/baseline/memory/research/opencode-mcp-bug-report.md +129 -0
- package/baseline/memory/research/openspec-analysis.md +226 -0
- package/baseline/memory/session-context.md +40 -0
- package/baseline/opencode.json +1431 -0
- package/baseline/opencode.json.tui-migration.bak +1380 -0
- package/baseline/package-lock.json +87 -0
- package/baseline/package.json +21 -0
- package/baseline/plans/1768385996691-silent-wizard.md +247 -0
- package/baseline/plans/1770006237537-mighty-otter.md +418 -0
- package/baseline/plans/1770006913647-glowing-forest.md +170 -0
- package/baseline/plans/1770013678126-witty-planet.md +278 -0
- package/baseline/plans/1770112267595-shiny-rocket.md +258 -0
- package/baseline/plans/swarm-protocol.md +123 -0
- package/baseline/plugin/README.md +70 -0
- package/baseline/plugin/copilot-auth.ts +607 -0
- package/baseline/plugin/lib/capture.ts +177 -0
- package/baseline/plugin/lib/context.ts +198 -0
- package/baseline/plugin/lib/curator.ts +234 -0
- package/baseline/plugin/lib/db/maintenance.ts +312 -0
- package/baseline/plugin/lib/db/observations.ts +299 -0
- package/baseline/plugin/lib/db/pipeline.ts +520 -0
- package/baseline/plugin/lib/db/schema.ts +356 -0
- package/baseline/plugin/lib/db/types.ts +211 -0
- package/baseline/plugin/lib/distill.ts +376 -0
- package/baseline/plugin/lib/inject.ts +126 -0
- package/baseline/plugin/lib/memory-admin-tools.ts +188 -0
- package/baseline/plugin/lib/memory-db.ts +58 -0
- package/baseline/plugin/lib/memory-helpers.ts +111 -0
- package/baseline/plugin/lib/memory-hooks.ts +195 -0
- package/baseline/plugin/lib/memory-tools.ts +341 -0
- package/baseline/plugin/lib/notify.ts +81 -0
- package/baseline/plugin/memory.ts +89 -0
- package/baseline/plugin/notification.ts.bak +64 -0
- package/baseline/plugin/package.json +7 -0
- package/baseline/plugin/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +178 -0
- package/baseline/plugin/sdk/copilot/chat/get-response-metadata.ts +15 -0
- package/baseline/plugin/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +19 -0
- package/baseline/plugin/sdk/copilot/chat/openai-compatible-api-types.ts +72 -0
- package/baseline/plugin/sdk/copilot/chat/openai-compatible-chat-language-model.ts +833 -0
- package/baseline/plugin/sdk/copilot/chat/openai-compatible-chat-options.ts +30 -0
- package/baseline/plugin/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +48 -0
- package/baseline/plugin/sdk/copilot/chat/openai-compatible-prepare-tools.ts +92 -0
- package/baseline/plugin/sdk/copilot/copilot-provider.ts +94 -0
- package/baseline/plugin/sdk/copilot/index.ts +5 -0
- package/baseline/plugin/sdk/copilot/openai-compatible-error.ts +30 -0
- package/baseline/plugin/sessions.ts +428 -0
- package/baseline/plugin/skill-mcp.ts +618 -0
- package/baseline/plugin/tsconfig.json +16 -0
- package/baseline/skill/accessibility-audit/SKILL.md +191 -0
- package/baseline/skill/agent-browser/SKILL.md +413 -0
- package/baseline/skill/agent-teams/SKILL.md +268 -0
- package/baseline/skill/augment-context-engine/SKILL.md +122 -0
- package/baseline/skill/augment-context-engine/mcp.json +6 -0
- package/baseline/skill/beads/SKILL.md +181 -0
- package/baseline/skill/beads/references/BEST_PRACTICES.md +27 -0
- package/baseline/skill/beads/references/BOUNDARIES.md +219 -0
- package/baseline/skill/beads/references/DEPENDENCIES.md +124 -0
- package/baseline/skill/beads/references/EXAMPLES.md +45 -0
- package/baseline/skill/beads/references/FILE_CLAIMING.md +101 -0
- package/baseline/skill/beads/references/GIT_SYNC.md +25 -0
- package/baseline/skill/beads/references/HIERARCHY.md +71 -0
- package/baseline/skill/beads/references/MULTI_AGENT.md +40 -0
- package/baseline/skill/beads/references/RESUMABILITY.md +177 -0
- package/baseline/skill/beads/references/SESSION_PROTOCOL.md +61 -0
- package/baseline/skill/beads/references/TASK_CREATION.md +38 -0
- package/baseline/skill/beads/references/TROUBLESHOOTING.md +38 -0
- package/baseline/skill/beads/references/WORKFLOWS.md +226 -0
- package/baseline/skill/beads-bridge/SKILL.md +321 -0
- package/baseline/skill/brainstorming/SKILL.md +114 -0
- package/baseline/skill/chrome-devtools/SKILL.md +76 -0
- package/baseline/skill/chrome-devtools/mcp.json +19 -0
- package/baseline/skill/cloudflare/SKILL.md +253 -0
- package/baseline/skill/cloudflare/references/agents-sdk/README.md +35 -0
- package/baseline/skill/cloudflare/references/agents-sdk/api.md +100 -0
- package/baseline/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
- package/baseline/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
- package/baseline/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
- package/baseline/skill/cloudflare/references/ai-gateway/README.md +695 -0
- package/baseline/skill/cloudflare/references/ai-search/README.md +14 -0
- package/baseline/skill/cloudflare/references/ai-search/api.md +38 -0
- package/baseline/skill/cloudflare/references/ai-search/configuration.md +52 -0
- package/baseline/skill/cloudflare/references/ai-search/gotchas.md +41 -0
- package/baseline/skill/cloudflare/references/ai-search/patterns.md +45 -0
- package/baseline/skill/cloudflare/references/analytics-engine/README.md +14 -0
- package/baseline/skill/cloudflare/references/analytics-engine/api.md +27 -0
- package/baseline/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
- package/baseline/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
- package/baseline/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
- package/baseline/skill/cloudflare/references/api/README.md +21 -0
- package/baseline/skill/cloudflare/references/api/api.md +31 -0
- package/baseline/skill/cloudflare/references/api/configuration.md +20 -0
- package/baseline/skill/cloudflare/references/api/gotchas.md +28 -0
- package/baseline/skill/cloudflare/references/api/patterns.md +47 -0
- package/baseline/skill/cloudflare/references/api-shield/README.md +20 -0
- package/baseline/skill/cloudflare/references/api-shield/api.md +78 -0
- package/baseline/skill/cloudflare/references/api-shield/configuration.md +128 -0
- package/baseline/skill/cloudflare/references/api-shield/gotchas.md +51 -0
- package/baseline/skill/cloudflare/references/api-shield/patterns.md +145 -0
- package/baseline/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
- package/baseline/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
- package/baseline/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
- package/baseline/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
- package/baseline/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
- package/baseline/skill/cloudflare/references/bindings/README.md +14 -0
- package/baseline/skill/cloudflare/references/bindings/api.md +3 -0
- package/baseline/skill/cloudflare/references/bindings/configuration.md +58 -0
- package/baseline/skill/cloudflare/references/bindings/gotchas.md +35 -0
- package/baseline/skill/cloudflare/references/bindings/patterns.md +37 -0
- package/baseline/skill/cloudflare/references/bot-management/README.md +71 -0
- package/baseline/skill/cloudflare/references/bot-management/api.md +168 -0
- package/baseline/skill/cloudflare/references/bot-management/configuration.md +114 -0
- package/baseline/skill/cloudflare/references/bot-management/gotchas.md +99 -0
- package/baseline/skill/cloudflare/references/bot-management/patterns.md +125 -0
- package/baseline/skill/cloudflare/references/browser-rendering/README.md +16 -0
- package/baseline/skill/cloudflare/references/browser-rendering/api.md +54 -0
- package/baseline/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
- package/baseline/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
- package/baseline/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
- package/baseline/skill/cloudflare/references/c3/README.md +264 -0
- package/baseline/skill/cloudflare/references/cache-reserve/README.md +93 -0
- package/baseline/skill/cloudflare/references/cache-reserve/api.md +176 -0
- package/baseline/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
- package/baseline/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
- package/baseline/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
- package/baseline/skill/cloudflare/references/containers/README.md +16 -0
- package/baseline/skill/cloudflare/references/containers/api.md +43 -0
- package/baseline/skill/cloudflare/references/containers/configuration.md +56 -0
- package/baseline/skill/cloudflare/references/containers/gotchas.md +21 -0
- package/baseline/skill/cloudflare/references/containers/patterns.md +40 -0
- package/baseline/skill/cloudflare/references/cron-triggers/README.md +85 -0
- package/baseline/skill/cloudflare/references/cron-triggers/api.md +198 -0
- package/baseline/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
- package/baseline/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
- package/baseline/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
- package/baseline/skill/cloudflare/references/d1/README.md +92 -0
- package/baseline/skill/cloudflare/references/d1/api.md +141 -0
- package/baseline/skill/cloudflare/references/d1/configuration.md +127 -0
- package/baseline/skill/cloudflare/references/d1/gotchas.md +70 -0
- package/baseline/skill/cloudflare/references/d1/patterns.md +144 -0
- package/baseline/skill/cloudflare/references/ddos/README.md +34 -0
- package/baseline/skill/cloudflare/references/ddos/api.md +136 -0
- package/baseline/skill/cloudflare/references/ddos/configuration.md +67 -0
- package/baseline/skill/cloudflare/references/ddos/gotchas.md +114 -0
- package/baseline/skill/cloudflare/references/ddos/patterns.md +158 -0
- package/baseline/skill/cloudflare/references/do-storage/README.md +62 -0
- package/baseline/skill/cloudflare/references/do-storage/api.md +89 -0
- package/baseline/skill/cloudflare/references/do-storage/configuration.md +116 -0
- package/baseline/skill/cloudflare/references/do-storage/gotchas.md +93 -0
- package/baseline/skill/cloudflare/references/do-storage/patterns.md +112 -0
- package/baseline/skill/cloudflare/references/durable-objects/README.md +125 -0
- package/baseline/skill/cloudflare/references/durable-objects/api.md +152 -0
- package/baseline/skill/cloudflare/references/durable-objects/configuration.md +148 -0
- package/baseline/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
- package/baseline/skill/cloudflare/references/durable-objects/patterns.md +255 -0
- package/baseline/skill/cloudflare/references/email-routing/README.md +18 -0
- package/baseline/skill/cloudflare/references/email-routing/api.md +46 -0
- package/baseline/skill/cloudflare/references/email-routing/configuration.md +63 -0
- package/baseline/skill/cloudflare/references/email-routing/gotchas.md +16 -0
- package/baseline/skill/cloudflare/references/email-routing/patterns.md +46 -0
- package/baseline/skill/cloudflare/references/email-workers/README.md +598 -0
- package/baseline/skill/cloudflare/references/hyperdrive/README.md +62 -0
- package/baseline/skill/cloudflare/references/hyperdrive/api.md +137 -0
- package/baseline/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
- package/baseline/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
- package/baseline/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
- package/baseline/skill/cloudflare/references/images/README.md +14 -0
- package/baseline/skill/cloudflare/references/images/api.md +3 -0
- package/baseline/skill/cloudflare/references/images/configuration.md +45 -0
- package/baseline/skill/cloudflare/references/images/gotchas.md +23 -0
- package/baseline/skill/cloudflare/references/images/patterns.md +31 -0
- package/baseline/skill/cloudflare/references/kv/README.md +60 -0
- package/baseline/skill/cloudflare/references/kv/api.md +114 -0
- package/baseline/skill/cloudflare/references/kv/configuration.md +92 -0
- package/baseline/skill/cloudflare/references/kv/gotchas.md +117 -0
- package/baseline/skill/cloudflare/references/kv/patterns.md +139 -0
- package/baseline/skill/cloudflare/references/miniflare/README.md +64 -0
- package/baseline/skill/cloudflare/references/miniflare/api.md +144 -0
- package/baseline/skill/cloudflare/references/miniflare/configuration.md +203 -0
- package/baseline/skill/cloudflare/references/miniflare/gotchas.md +187 -0
- package/baseline/skill/cloudflare/references/miniflare/patterns.md +211 -0
- package/baseline/skill/cloudflare/references/network-interconnect/README.md +60 -0
- package/baseline/skill/cloudflare/references/network-interconnect/api.md +240 -0
- package/baseline/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
- package/baseline/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
- package/baseline/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
- package/baseline/skill/cloudflare/references/observability/README.md +18 -0
- package/baseline/skill/cloudflare/references/observability/api.md +51 -0
- package/baseline/skill/cloudflare/references/observability/configuration.md +60 -0
- package/baseline/skill/cloudflare/references/observability/gotchas.md +36 -0
- package/baseline/skill/cloudflare/references/observability/patterns.md +42 -0
- package/baseline/skill/cloudflare/references/pages/README.md +76 -0
- package/baseline/skill/cloudflare/references/pages/api.md +200 -0
- package/baseline/skill/cloudflare/references/pages/configuration.md +228 -0
- package/baseline/skill/cloudflare/references/pages/gotchas.md +161 -0
- package/baseline/skill/cloudflare/references/pages/patterns.md +145 -0
- package/baseline/skill/cloudflare/references/pages-functions/README.md +57 -0
- package/baseline/skill/cloudflare/references/pages-functions/api.md +201 -0
- package/baseline/skill/cloudflare/references/pages-functions/configuration.md +159 -0
- package/baseline/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
- package/baseline/skill/cloudflare/references/pages-functions/patterns.md +190 -0
- package/baseline/skill/cloudflare/references/pipelines/README.md +664 -0
- package/baseline/skill/cloudflare/references/pulumi/README.md +107 -0
- package/baseline/skill/cloudflare/references/pulumi/api.md +194 -0
- package/baseline/skill/cloudflare/references/pulumi/configuration.md +216 -0
- package/baseline/skill/cloudflare/references/pulumi/gotchas.md +223 -0
- package/baseline/skill/cloudflare/references/pulumi/patterns.md +139 -0
- package/baseline/skill/cloudflare/references/queues/README.md +69 -0
- package/baseline/skill/cloudflare/references/queues/api.md +138 -0
- package/baseline/skill/cloudflare/references/queues/configuration.md +125 -0
- package/baseline/skill/cloudflare/references/queues/gotchas.md +112 -0
- package/baseline/skill/cloudflare/references/queues/patterns.md +155 -0
- package/baseline/skill/cloudflare/references/r2/README.md +61 -0
- package/baseline/skill/cloudflare/references/r2/api.md +127 -0
- package/baseline/skill/cloudflare/references/r2/configuration.md +76 -0
- package/baseline/skill/cloudflare/references/r2/gotchas.md +94 -0
- package/baseline/skill/cloudflare/references/r2/patterns.md +127 -0
- package/baseline/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
- package/baseline/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
- package/baseline/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
- package/baseline/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
- package/baseline/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
- package/baseline/skill/cloudflare/references/r2-sql/README.md +512 -0
- package/baseline/skill/cloudflare/references/realtime-sfu/README.md +21 -0
- package/baseline/skill/cloudflare/references/realtime-sfu/api.md +135 -0
- package/baseline/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
- package/baseline/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
- package/baseline/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
- package/baseline/skill/cloudflare/references/realtimekit/README.md +81 -0
- package/baseline/skill/cloudflare/references/realtimekit/api.md +164 -0
- package/baseline/skill/cloudflare/references/realtimekit/configuration.md +147 -0
- package/baseline/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
- package/baseline/skill/cloudflare/references/realtimekit/patterns.md +155 -0
- package/baseline/skill/cloudflare/references/sandbox/README.md +90 -0
- package/baseline/skill/cloudflare/references/sandbox/api.md +178 -0
- package/baseline/skill/cloudflare/references/sandbox/configuration.md +131 -0
- package/baseline/skill/cloudflare/references/sandbox/gotchas.md +156 -0
- package/baseline/skill/cloudflare/references/sandbox/patterns.md +203 -0
- package/baseline/skill/cloudflare/references/secrets-store/README.md +58 -0
- package/baseline/skill/cloudflare/references/secrets-store/api.md +182 -0
- package/baseline/skill/cloudflare/references/secrets-store/configuration.md +140 -0
- package/baseline/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
- package/baseline/skill/cloudflare/references/secrets-store/patterns.md +218 -0
- package/baseline/skill/cloudflare/references/smart-placement/README.md +91 -0
- package/baseline/skill/cloudflare/references/smart-placement/api.md +139 -0
- package/baseline/skill/cloudflare/references/smart-placement/configuration.md +129 -0
- package/baseline/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
- package/baseline/skill/cloudflare/references/smart-placement/patterns.md +135 -0
- package/baseline/skill/cloudflare/references/snippets/README.md +15 -0
- package/baseline/skill/cloudflare/references/snippets/api.md +47 -0
- package/baseline/skill/cloudflare/references/snippets/configuration.md +33 -0
- package/baseline/skill/cloudflare/references/snippets/gotchas.md +21 -0
- package/baseline/skill/cloudflare/references/snippets/patterns.md +34 -0
- package/baseline/skill/cloudflare/references/spectrum/README.md +16 -0
- package/baseline/skill/cloudflare/references/spectrum/api.md +24 -0
- package/baseline/skill/cloudflare/references/spectrum/configuration.md +43 -0
- package/baseline/skill/cloudflare/references/spectrum/gotchas.md +42 -0
- package/baseline/skill/cloudflare/references/spectrum/patterns.md +40 -0
- package/baseline/skill/cloudflare/references/static-assets/README.md +14 -0
- package/baseline/skill/cloudflare/references/static-assets/api.md +3 -0
- package/baseline/skill/cloudflare/references/static-assets/configuration.md +47 -0
- package/baseline/skill/cloudflare/references/static-assets/gotchas.md +44 -0
- package/baseline/skill/cloudflare/references/static-assets/patterns.md +42 -0
- package/baseline/skill/cloudflare/references/stream/README.md +103 -0
- package/baseline/skill/cloudflare/references/stream/api.md +204 -0
- package/baseline/skill/cloudflare/references/stream/configuration.md +127 -0
- package/baseline/skill/cloudflare/references/stream/gotchas.md +131 -0
- package/baseline/skill/cloudflare/references/stream/patterns.md +152 -0
- package/baseline/skill/cloudflare/references/tail-workers/README.md +640 -0
- package/baseline/skill/cloudflare/references/terraform/README.md +76 -0
- package/baseline/skill/cloudflare/references/terraform/api.md +159 -0
- package/baseline/skill/cloudflare/references/terraform/configuration.md +156 -0
- package/baseline/skill/cloudflare/references/terraform/gotchas.md +207 -0
- package/baseline/skill/cloudflare/references/terraform/patterns.md +135 -0
- package/baseline/skill/cloudflare/references/tunnel/README.md +82 -0
- package/baseline/skill/cloudflare/references/tunnel/api.md +105 -0
- package/baseline/skill/cloudflare/references/tunnel/configuration.md +113 -0
- package/baseline/skill/cloudflare/references/tunnel/gotchas.md +115 -0
- package/baseline/skill/cloudflare/references/tunnel/patterns.md +157 -0
- package/baseline/skill/cloudflare/references/turn/README.md +699 -0
- package/baseline/skill/cloudflare/references/turnstile/README.md +14 -0
- package/baseline/skill/cloudflare/references/turnstile/api.md +3 -0
- package/baseline/skill/cloudflare/references/turnstile/configuration.md +19 -0
- package/baseline/skill/cloudflare/references/turnstile/gotchas.md +27 -0
- package/baseline/skill/cloudflare/references/turnstile/patterns.md +41 -0
- package/baseline/skill/cloudflare/references/vectorize/README.md +682 -0
- package/baseline/skill/cloudflare/references/waf/README.md +14 -0
- package/baseline/skill/cloudflare/references/waf/api.md +3 -0
- package/baseline/skill/cloudflare/references/waf/configuration.md +44 -0
- package/baseline/skill/cloudflare/references/waf/gotchas.md +24 -0
- package/baseline/skill/cloudflare/references/waf/patterns.md +29 -0
- package/baseline/skill/cloudflare/references/web-analytics/README.md +19 -0
- package/baseline/skill/cloudflare/references/web-analytics/api.md +52 -0
- package/baseline/skill/cloudflare/references/web-analytics/configuration.md +31 -0
- package/baseline/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
- package/baseline/skill/cloudflare/references/web-analytics/patterns.md +52 -0
- package/baseline/skill/cloudflare/references/workerd/README.md +47 -0
- package/baseline/skill/cloudflare/references/workerd/api.md +199 -0
- package/baseline/skill/cloudflare/references/workerd/configuration.md +185 -0
- package/baseline/skill/cloudflare/references/workerd/gotchas.md +203 -0
- package/baseline/skill/cloudflare/references/workerd/patterns.md +216 -0
- package/baseline/skill/cloudflare/references/workers/README.md +96 -0
- package/baseline/skill/cloudflare/references/workers/api.md +137 -0
- package/baseline/skill/cloudflare/references/workers/configuration.md +147 -0
- package/baseline/skill/cloudflare/references/workers/gotchas.md +99 -0
- package/baseline/skill/cloudflare/references/workers/patterns.md +149 -0
- package/baseline/skill/cloudflare/references/workers-ai/README.md +116 -0
- package/baseline/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
- package/baseline/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
- package/baseline/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
- package/baseline/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
- package/baseline/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
- package/baseline/skill/cloudflare/references/workers-playground/README.md +16 -0
- package/baseline/skill/cloudflare/references/workers-playground/api.md +20 -0
- package/baseline/skill/cloudflare/references/workers-playground/configuration.md +3 -0
- package/baseline/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
- package/baseline/skill/cloudflare/references/workers-playground/patterns.md +42 -0
- package/baseline/skill/cloudflare/references/workers-vpc/README.md +579 -0
- package/baseline/skill/cloudflare/references/workflows/README.md +62 -0
- package/baseline/skill/cloudflare/references/workflows/api.md +125 -0
- package/baseline/skill/cloudflare/references/workflows/configuration.md +177 -0
- package/baseline/skill/cloudflare/references/workflows/gotchas.md +136 -0
- package/baseline/skill/cloudflare/references/workflows/patterns.md +132 -0
- package/baseline/skill/cloudflare/references/wrangler/README.md +90 -0
- package/baseline/skill/cloudflare/references/wrangler/api.md +140 -0
- package/baseline/skill/cloudflare/references/wrangler/configuration.md +128 -0
- package/baseline/skill/cloudflare/references/wrangler/gotchas.md +93 -0
- package/baseline/skill/cloudflare/references/wrangler/patterns.md +150 -0
- package/baseline/skill/cloudflare/references/zaraz/README.md +360 -0
- package/baseline/skill/code-navigation/SKILL.md +130 -0
- package/baseline/skill/compaction/SKILL.md +317 -0
- package/baseline/skill/condition-based-waiting/SKILL.md +123 -0
- package/baseline/skill/condition-based-waiting/example.ts +158 -0
- package/baseline/skill/context-engineering/SKILL.md +176 -0
- package/baseline/skill/context-initialization/SKILL.md +70 -0
- package/baseline/skill/context-management/SKILL.md +163 -0
- package/baseline/skill/core-data-expert/SKILL.md +93 -0
- package/baseline/skill/core-data-expert/references/batch-operations.md +543 -0
- package/baseline/skill/core-data-expert/references/cloudkit-integration.md +259 -0
- package/baseline/skill/core-data-expert/references/concurrency.md +522 -0
- package/baseline/skill/core-data-expert/references/fetch-requests.md +643 -0
- package/baseline/skill/core-data-expert/references/glossary.md +233 -0
- package/baseline/skill/core-data-expert/references/migration.md +393 -0
- package/baseline/skill/core-data-expert/references/model-configuration.md +597 -0
- package/baseline/skill/core-data-expert/references/performance.md +300 -0
- package/baseline/skill/core-data-expert/references/persistent-history.md +553 -0
- package/baseline/skill/core-data-expert/references/project-audit.md +60 -0
- package/baseline/skill/core-data-expert/references/saving.md +574 -0
- package/baseline/skill/core-data-expert/references/stack-setup.md +625 -0
- package/baseline/skill/core-data-expert/references/testing.md +300 -0
- package/baseline/skill/core-data-expert/references/threading.md +589 -0
- package/baseline/skill/deep-research/SKILL.md +384 -0
- package/baseline/skill/defense-in-depth/SKILL.md +166 -0
- package/baseline/skill/design-system-audit/SKILL.md +153 -0
- package/baseline/skill/development-lifecycle/SKILL.md +356 -0
- package/baseline/skill/dispatching-parallel-agents/SKILL.md +191 -0
- package/baseline/skill/executing-plans/SKILL.md +247 -0
- package/baseline/skill/figma/SKILL.md +224 -0
- package/baseline/skill/finishing-a-development-branch/SKILL.md +357 -0
- package/baseline/skill/frontend-design/SKILL.md +235 -0
- package/baseline/skill/frontend-design/references/animation/motion-advanced.md +224 -0
- package/baseline/skill/frontend-design/references/animation/motion-core.md +181 -0
- package/baseline/skill/frontend-design/references/canvas/execution.md +90 -0
- package/baseline/skill/frontend-design/references/canvas/philosophy.md +94 -0
- package/baseline/skill/frontend-design/references/design/color-system.md +111 -0
- package/baseline/skill/frontend-design/references/design/interaction.md +149 -0
- package/baseline/skill/frontend-design/references/design/typography-rules.md +106 -0
- package/baseline/skill/frontend-design/references/design/ux-writing.md +99 -0
- package/baseline/skill/frontend-design/references/shadcn/accessibility.md +132 -0
- package/baseline/skill/frontend-design/references/shadcn/core-components.md +153 -0
- package/baseline/skill/frontend-design/references/shadcn/form-components.md +158 -0
- package/baseline/skill/frontend-design/references/shadcn/setup.md +69 -0
- package/baseline/skill/frontend-design/references/shadcn/theming.md +152 -0
- package/baseline/skill/frontend-design/references/tailwind/responsive.md +112 -0
- package/baseline/skill/frontend-design/references/tailwind/utilities-layout.md +134 -0
- package/baseline/skill/frontend-design/references/tailwind/utilities-styling.md +165 -0
- package/baseline/skill/frontend-design/references/tailwind/v4-config.md +147 -0
- package/baseline/skill/frontend-design/references/tailwind/v4-features.md +128 -0
- package/baseline/skill/gemini-large-context/SKILL.md +216 -0
- package/baseline/skill/index-knowledge/SKILL.md +413 -0
- package/baseline/skill/jira/SKILL.md +283 -0
- package/baseline/skill/jira/mcp.json +6 -0
- package/baseline/skill/memory-system/SKILL.md +84 -0
- package/baseline/skill/mockup-to-code/SKILL.md +184 -0
- package/baseline/skill/mqdh/SKILL.md +171 -0
- package/baseline/skill/obsidian/SKILL.md +192 -0
- package/baseline/skill/obsidian/mcp.json +22 -0
- package/baseline/skill/opensrc/SKILL.md +127 -0
- package/baseline/skill/opensrc/references/architecture.md +176 -0
- package/baseline/skill/opensrc/references/cli-usage.md +176 -0
- package/baseline/skill/opensrc/references/registry-support.md +137 -0
- package/baseline/skill/pdf-extract/SKILL.md +438 -0
- package/baseline/skill/playwright/SKILL.md +320 -0
- package/baseline/skill/playwright/mcp.json +16 -0
- package/baseline/skill/playwriter/SKILL.md +158 -0
- package/baseline/skill/polar/SKILL.md +102 -0
- package/baseline/skill/prd/SKILL.md +146 -0
- package/baseline/skill/prd-task/SKILL.md +182 -0
- package/baseline/skill/prd-task/references/prd-schema.json +124 -0
- package/baseline/skill/ralph/SKILL.md +296 -0
- package/baseline/skill/react-best-practices/AGENTS.md +2410 -0
- package/baseline/skill/react-best-practices/README.md +123 -0
- package/baseline/skill/react-best-practices/SKILL.md +133 -0
- package/baseline/skill/react-best-practices/metadata.json +15 -0
- package/baseline/skill/react-best-practices/rules/_sections.md +46 -0
- package/baseline/skill/react-best-practices/rules/_template.md +28 -0
- package/baseline/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/baseline/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/baseline/skill/react-best-practices/rules/async-api-routes.md +38 -0
- package/baseline/skill/react-best-practices/rules/async-defer-await.md +80 -0
- package/baseline/skill/react-best-practices/rules/async-dependencies.md +36 -0
- package/baseline/skill/react-best-practices/rules/async-parallel.md +28 -0
- package/baseline/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/baseline/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/baseline/skill/react-best-practices/rules/bundle-conditional.md +31 -0
- package/baseline/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/baseline/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/baseline/skill/react-best-practices/rules/bundle-preload.md +50 -0
- package/baseline/skill/react-best-practices/rules/client-event-listeners.md +74 -0
- package/baseline/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/baseline/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/baseline/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/baseline/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/baseline/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/baseline/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/baseline/skill/react-best-practices/rules/js-cache-storage.md +70 -0
- package/baseline/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/baseline/skill/react-best-practices/rules/js-early-exit.md +50 -0
- package/baseline/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/baseline/skill/react-best-practices/rules/js-index-maps.md +37 -0
- package/baseline/skill/react-best-practices/rules/js-length-check-first.md +49 -0
- package/baseline/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/baseline/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/baseline/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/baseline/skill/react-best-practices/rules/rendering-activity.md +26 -0
- package/baseline/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/baseline/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/baseline/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/baseline/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/baseline/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/baseline/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/baseline/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/baseline/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/baseline/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/baseline/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/baseline/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/baseline/skill/react-best-practices/rules/rerender-memo.md +44 -0
- package/baseline/skill/react-best-practices/rules/rerender-transitions.md +40 -0
- package/baseline/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/baseline/skill/react-best-practices/rules/server-cache-lru.md +41 -0
- package/baseline/skill/react-best-practices/rules/server-cache-react.md +76 -0
- package/baseline/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/baseline/skill/react-best-practices/rules/server-serialization.md +38 -0
- package/baseline/skill/receiving-code-review/SKILL.md +252 -0
- package/baseline/skill/requesting-code-review/SKILL.md +397 -0
- package/baseline/skill/requesting-code-review/review.md +160 -0
- package/baseline/skill/resend/SKILL.md +177 -0
- package/baseline/skill/resend/references/react-email.md +287 -0
- package/baseline/skill/resend/references/receive-email.md +248 -0
- package/baseline/skill/resend/references/send-email.md +318 -0
- package/baseline/skill/root-cause-tracing/SKILL.md +192 -0
- package/baseline/skill/root-cause-tracing/find-polluter.sh +63 -0
- package/baseline/skill/session-management/SKILL.md +9 -0
- package/baseline/skill/sharing-skills/SKILL.md +214 -0
- package/baseline/skill/skill-creator/SKILL.md +156 -0
- package/baseline/skill/source-code-research/SKILL.md +293 -0
- package/baseline/skill/source-code-research/references/analysis-tips.md +43 -0
- package/baseline/skill/source-code-research/references/anti-patterns.md +36 -0
- package/baseline/skill/source-code-research/references/common-patterns.md +57 -0
- package/baseline/skill/source-code-research/references/example-workflow.md +60 -0
- package/baseline/skill/source-code-research/references/further-reading.md +5 -0
- package/baseline/skill/source-code-research/references/source-structure.md +45 -0
- package/baseline/skill/stitch/SKILL.md +147 -0
- package/baseline/skill/stitch/mcp.json +9 -0
- package/baseline/skill/structured-edit/SKILL.md +181 -0
- package/baseline/skill/subagent-driven-development/SKILL.md +237 -0
- package/baseline/skill/supabase/SKILL.md +130 -0
- package/baseline/skill/supabase/mcp.json +27 -0
- package/baseline/skill/supabase-postgres-best-practices/AGENTS.md +1490 -0
- package/baseline/skill/supabase-postgres-best-practices/SKILL.md +65 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/advanced-full-text-search.md +55 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/advanced-jsonb-indexing.md +49 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/conn-idle-timeout.md +46 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/conn-limits.md +44 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/conn-pooling.md +41 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/conn-prepared-statements.md +46 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/data-batch-inserts.md +54 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/data-n-plus-one.md +53 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/data-pagination.md +50 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/data-upsert.md +50 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/lock-advisory.md +56 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/lock-deadlock-prevention.md +68 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/lock-short-transactions.md +50 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/lock-skip-locked.md +54 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/monitor-explain-analyze.md +45 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/monitor-pg-stat-statements.md +55 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/monitor-vacuum-analyze.md +55 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/query-composite-indexes.md +44 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/query-covering-indexes.md +40 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/query-index-types.md +45 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/query-missing-indexes.md +43 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/query-partial-indexes.md +45 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/schema-data-types.md +46 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/schema-foreign-key-indexes.md +59 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/schema-lowercase-identifiers.md +55 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/schema-partitioning.md +55 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/schema-primary-keys.md +61 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/security-privileges.md +54 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/security-rls-basics.md +50 -0
- package/baseline/skill/supabase-postgres-best-practices/rules/security-rls-performance.md +57 -0
- package/baseline/skill/swarm-coordination/SKILL.md +179 -0
- package/baseline/skill/swarm-coordination/references/architecture.md +39 -0
- package/baseline/skill/swarm-coordination/references/delegation-worker-protocol.md +145 -0
- package/baseline/skill/swarm-coordination/references/dependency-graph.md +50 -0
- package/baseline/skill/swarm-coordination/references/drift-check.md +90 -0
- package/baseline/skill/swarm-coordination/references/integration-beads.md +20 -0
- package/baseline/skill/swarm-coordination/references/launch-flow.md +186 -0
- package/baseline/skill/swarm-coordination/references/reconciler.md +172 -0
- package/baseline/skill/swarm-coordination/references/tier-enforcement.md +78 -0
- package/baseline/skill/swarm-coordination/references/tmux-integration.md +134 -0
- package/baseline/skill/swift-concurrency/SKILL.md +266 -0
- package/baseline/skill/swift-concurrency/references/actors.md +640 -0
- package/baseline/skill/swift-concurrency/references/async-algorithms.md +822 -0
- package/baseline/skill/swift-concurrency/references/async-await-basics.md +249 -0
- package/baseline/skill/swift-concurrency/references/async-sequences.md +670 -0
- package/baseline/skill/swift-concurrency/references/core-data.md +533 -0
- package/baseline/skill/swift-concurrency/references/glossary.md +128 -0
- package/baseline/skill/swift-concurrency/references/linting.md +142 -0
- package/baseline/skill/swift-concurrency/references/memory-management.md +542 -0
- package/baseline/skill/swift-concurrency/references/migration.md +1076 -0
- package/baseline/skill/swift-concurrency/references/performance.md +574 -0
- package/baseline/skill/swift-concurrency/references/sendable.md +578 -0
- package/baseline/skill/swift-concurrency/references/tasks.md +604 -0
- package/baseline/skill/swift-concurrency/references/testing.md +565 -0
- package/baseline/skill/swift-concurrency/references/threading.md +452 -0
- package/baseline/skill/swiftui-expert-skill/SKILL.md +329 -0
- package/baseline/skill/swiftui-expert-skill/references/animation-advanced.md +351 -0
- package/baseline/skill/swiftui-expert-skill/references/animation-basics.md +284 -0
- package/baseline/skill/swiftui-expert-skill/references/animation-transitions.md +326 -0
- package/baseline/skill/swiftui-expert-skill/references/image-optimization.md +286 -0
- package/baseline/skill/swiftui-expert-skill/references/layout-best-practices.md +312 -0
- package/baseline/skill/swiftui-expert-skill/references/liquid-glass.md +377 -0
- package/baseline/skill/swiftui-expert-skill/references/list-patterns.md +153 -0
- package/baseline/skill/swiftui-expert-skill/references/modern-apis.md +400 -0
- package/baseline/skill/swiftui-expert-skill/references/performance-patterns.md +377 -0
- package/baseline/skill/swiftui-expert-skill/references/scroll-patterns.md +305 -0
- package/baseline/skill/swiftui-expert-skill/references/sheet-navigation-patterns.md +292 -0
- package/baseline/skill/swiftui-expert-skill/references/state-management.md +447 -0
- package/baseline/skill/swiftui-expert-skill/references/text-formatting.md +285 -0
- package/baseline/skill/swiftui-expert-skill/references/view-structure.md +276 -0
- package/baseline/skill/systematic-debugging/SKILL.md +402 -0
- package/baseline/skill/test-driven-development/SKILL.md +388 -0
- package/baseline/skill/testing-anti-patterns/SKILL.md +333 -0
- package/baseline/skill/testing-skills-with-subagents/SKILL.md +405 -0
- package/baseline/skill/tilth-cli/SKILL.md +180 -0
- package/baseline/skill/tool-priority/SKILL.md +299 -0
- package/baseline/skill/ui-ux-research/SKILL.md +9 -0
- package/baseline/skill/using-git-worktrees/SKILL.md +259 -0
- package/baseline/skill/using-skills/SKILL.md +117 -0
- package/baseline/skill/v0/SKILL.md +158 -0
- package/baseline/skill/v1-run/SKILL.md +175 -0
- package/baseline/skill/v1-run/mcp.json +6 -0
- package/baseline/skill/vercel-deploy-claimable/SKILL.md +124 -0
- package/baseline/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
- package/baseline/skill/verification-before-completion/SKILL.md +236 -0
- package/baseline/skill/verification-before-completion/references/VERIFICATION_PROTOCOL.md +171 -0
- package/baseline/skill/visual-analysis/SKILL.md +154 -0
- package/baseline/skill/web-design-guidelines/SKILL.md +46 -0
- package/baseline/skill/writing-plans/SKILL.md +320 -0
- package/baseline/skill/writing-skills/SKILL.md +287 -0
- package/baseline/skill/writing-skills/anthropic-best-practices.md +1173 -0
- package/baseline/skill/writing-skills/graphviz-conventions.dot +172 -0
- package/baseline/skill/writing-skills/persuasion-principles.md +220 -0
- package/baseline/skill/writing-skills/references/anti-patterns.md +25 -0
- package/baseline/skill/writing-skills/references/claude-search-optimization.md +140 -0
- package/baseline/skill/writing-skills/references/discovery-workflow.md +11 -0
- package/baseline/skill/writing-skills/references/file-organization.md +32 -0
- package/baseline/skill/writing-skills/references/flowcharts-and-examples.md +57 -0
- package/baseline/skill/writing-skills/references/rationalization-hardening.md +75 -0
- package/baseline/skill/writing-skills/references/testing-skill-types.md +52 -0
- package/baseline/tool/context7.ts +191 -0
- package/baseline/tool/grepsearch.ts +143 -0
- package/baseline/tsconfig.json +21 -0
- package/baseline/tui.json +15 -0
- package/bin/mrc-opc.mjs +25 -0
- package/bin/ocp.mjs +25 -0
- package/bin/opc.mjs +25 -0
- package/bin/opencode-starterkit.mjs +25 -0
- package/docs/reports/2026-03-18-memory-db-architecture-note.md +47 -0
- package/docs/reports/2026-03-18-vat-opencode-classification-matrix.md +180 -0
- package/package.json +25 -0
- package/src/cli.mjs +41 -0
- package/src/config-merge.mjs +61 -0
- package/src/constants.mjs +58 -0
- package/src/fs-utils.mjs +46 -0
- package/src/install-global.mjs +102 -0
- package/src/install-project.mjs +81 -0
- package/src/memory-bootstrap.mjs +29 -0
- package/src/prompt.mjs +31 -0
- package/src/templates.mjs +31 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Drift Check After Each Wave
|
|
2
|
+
|
|
3
|
+
After every wave completes and before starting the next, run a **drift check** to verify the codebase has not deviated from the intended state. Accumulated drift between waves is the primary cause of cascading failures in large swarms.
|
|
4
|
+
|
|
5
|
+
**Drift** = any difference between actual codebase state and the plan's expected state at a wave boundary.
|
|
6
|
+
|
|
7
|
+
## What to Check
|
|
8
|
+
|
|
9
|
+
| Check | Command | Passing Condition |
|
|
10
|
+
| ----------------- | -------------------------------------------------- | ------------------------------ |
|
|
11
|
+
| Build gates | `npm run typecheck && npm run lint` | Zero errors |
|
|
12
|
+
| Unexpected files | `git diff --name-only HEAD` | Only planned files modified |
|
|
13
|
+
| Missing artifacts | Verify expected files exist | All declared outputs present |
|
|
14
|
+
| Scope adherence | Compare `git status` vs wave's declared file scope | No out-of-scope files modified |
|
|
15
|
+
|
|
16
|
+
## Drift Check Protocol
|
|
17
|
+
|
|
18
|
+
Run after every wave, before spawning the next:
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
async function driftCheckAfterWave(wave: Wave, expectedFiles: string[]) {
|
|
22
|
+
console.log(`\n=== DRIFT CHECK: Wave ${wave.number} ===`);
|
|
23
|
+
|
|
24
|
+
// 1. Build gates must pass
|
|
25
|
+
const gates = await bash("npm run typecheck && npm run lint");
|
|
26
|
+
if (!gates.success) {
|
|
27
|
+
throw new Error(`Wave ${wave.number} drift: build gates failed\n${gates.output}`);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// 2. Detect unexpected file modifications
|
|
31
|
+
const changedFiles = await bash("git diff --name-only HEAD");
|
|
32
|
+
const actualFiles = changedFiles.output.trim().split("\n").filter(Boolean);
|
|
33
|
+
const unexpected = actualFiles.filter((f) => !expectedFiles.includes(f));
|
|
34
|
+
|
|
35
|
+
if (unexpected.length > 0) {
|
|
36
|
+
console.warn(`⚠️ Unexpected files modified in wave ${wave.number}:`);
|
|
37
|
+
unexpected.forEach((f) => console.warn(` - ${f}`));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// 3. Verify declared artifacts exist
|
|
41
|
+
for (const artifact of wave.expectedArtifacts ?? []) {
|
|
42
|
+
const exists = await bash(`test -f ${artifact} && echo "ok" || echo "missing"`);
|
|
43
|
+
if (exists.output.trim() === "missing") {
|
|
44
|
+
throw new Error(`Wave ${wave.number} drift: expected artifact missing: ${artifact}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
console.log(`✓ Drift check passed: Wave ${wave.number}`);
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Integration in Wave Execution
|
|
53
|
+
|
|
54
|
+
Call drift check between every wave:
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
for (let i = 0; i < waves.length; i++) {
|
|
58
|
+
const wave = waves[i];
|
|
59
|
+
const reconciler = runReconciler(teamName, "npm run typecheck && npm run lint");
|
|
60
|
+
|
|
61
|
+
await Promise.all(wave.tasks.map((task) => spawnWorker(task, teamName)));
|
|
62
|
+
await reconciler;
|
|
63
|
+
|
|
64
|
+
// MANDATORY: Drift check before next wave
|
|
65
|
+
await driftCheckAfterWave(
|
|
66
|
+
wave,
|
|
67
|
+
wave.tasks.flatMap((t) => t.assignedFiles),
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
console.log(`✓ Wave ${i + 1}/${waves.length} complete and verified`);
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Drift Response Protocol
|
|
75
|
+
|
|
76
|
+
| Drift Type | Severity | Action |
|
|
77
|
+
| ------------------------ | -------- | ------------------------------------------------ |
|
|
78
|
+
| Build gate failure | Critical | Stop swarm, run reconciler, fix before next wave |
|
|
79
|
+
| Unexpected file modified | Warning | Review change, revert if out of scope |
|
|
80
|
+
| Missing artifact | Critical | Re-run failed worker task, verify output |
|
|
81
|
+
| Scope creep | Warning | Escalate to user if >3 unexpected files changed |
|
|
82
|
+
|
|
83
|
+
## When Drift Is Unrecoverable
|
|
84
|
+
|
|
85
|
+
If drift check fails twice in a row on the same wave:
|
|
86
|
+
|
|
87
|
+
1. **Stop the swarm** - don't start next wave
|
|
88
|
+
2. **Report to user**: exact drift details, failing gate output, list of unexpected files
|
|
89
|
+
3. **Rollback option**: use `git reset --hard <wave-N-start-tag>` (see `executing-plans` skill)
|
|
90
|
+
4. **Never paper over drift** - proceeding with known drift compounds into cascading failure
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Integration with Beads
|
|
2
|
+
|
|
3
|
+
Swarm works on top of Beads:
|
|
4
|
+
|
|
5
|
+
1. **Session start**: `swarm sync push` to make tasks visible
|
|
6
|
+
2. **Leader claims parent** bead
|
|
7
|
+
3. **Workers claim child** beads (via delegation packets)
|
|
8
|
+
4. **Progress tracked** via `swarm monitor progress_update`
|
|
9
|
+
5. **Completion syncs** back via `swarm sync pull`
|
|
10
|
+
6. **Close parent** bead with `br close`
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
// Full integration workflow
|
|
14
|
+
await swarm({ operation: "sync", action: "push" }); // Make Beads visible
|
|
15
|
+
// ... spawn swarm ...
|
|
16
|
+
await swarm({ operation: "monitor", action: "render_block", team_name: "..." }); // Monitor progress
|
|
17
|
+
// ... monitor completion ...
|
|
18
|
+
await swarm({ operation: "sync", action: "pull" }); // Sync completed back
|
|
19
|
+
await bash("br close parent-task --reason 'Swarm completed'");
|
|
20
|
+
```
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Swarm Launch Flow - PARL Pattern (7 Steps)
|
|
2
|
+
|
|
3
|
+
## Step 0: Task Analysis (Anti-Serial-Collapse + Dependency Graph)
|
|
4
|
+
|
|
5
|
+
Analyze the user's actual task to determine optimal swarm strategy:
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// 1. Classify the task and build dependency graph
|
|
9
|
+
const analysis = await swarm({
|
|
10
|
+
operation: "plan",
|
|
11
|
+
operation: "analyze",
|
|
12
|
+
task: "<user's request from input>",
|
|
13
|
+
files: "<detected files from glob/grep>",
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
// Returns:
|
|
17
|
+
// - type: "search" | "batch" | "writing" | "sequential" | "mixed"
|
|
18
|
+
// - recommended_agents: number
|
|
19
|
+
// - phases: [{ name, role, agent_count, dependencies }]
|
|
20
|
+
// - coupling: "high" | "medium" | "low"
|
|
21
|
+
// - confidence: "high" | "medium" | "low"
|
|
22
|
+
// - dependency_graph: { nodes, edges, critical_path, parallelizable_groups }
|
|
23
|
+
|
|
24
|
+
const plan = JSON.parse(analysis);
|
|
25
|
+
|
|
26
|
+
// 2. Check for serial collapse
|
|
27
|
+
const check = await swarm({
|
|
28
|
+
operation: "plan",
|
|
29
|
+
operation: "check",
|
|
30
|
+
task: "<user's request>",
|
|
31
|
+
files: String(plan.file_count),
|
|
32
|
+
recommended_agents: plan.classification.recommended_agents,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// If serial collapse detected, force parallelization
|
|
36
|
+
if (check.serial_collapse_detected) {
|
|
37
|
+
console.log(`⚠️ Serial collapse detected: ${check.warning_signs.join(", ")}`);
|
|
38
|
+
console.log(`✓ Adjusting to ${check.suggested_agents} agents`);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// 3. Use dependency graph for spawn ordering
|
|
42
|
+
const { parallelizable_groups, critical_path } = plan.dependency_graph;
|
|
43
|
+
console.log(`Critical path: ${critical_path.join(" → ")}`);
|
|
44
|
+
console.log(`Parallel groups: ${parallelizable_groups.length}`);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Step 1: Session Setup (Push Beads to Todos)
|
|
48
|
+
|
|
49
|
+
Make Beads tasks visible to subagents:
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
// Push Beads to OpenCode todos (subagents see via todoread)
|
|
53
|
+
await swarm({ operation: "sync", operation: "push", filter: "open" });
|
|
54
|
+
|
|
55
|
+
// Check for existing swarm state
|
|
56
|
+
const status = await swarm({
|
|
57
|
+
operation: "monitor",
|
|
58
|
+
operation: "status",
|
|
59
|
+
team_name: "plan-implementation",
|
|
60
|
+
});
|
|
61
|
+
const stats = JSON.parse(status).summary;
|
|
62
|
+
|
|
63
|
+
if (stats.total_workers > 0) {
|
|
64
|
+
console.log(`Found existing swarm with ${stats.total_workers} workers`);
|
|
65
|
+
// Render current progress
|
|
66
|
+
const ui = await swarm({
|
|
67
|
+
operation: "monitor",
|
|
68
|
+
operation: "render_block",
|
|
69
|
+
team_name: "plan-implementation",
|
|
70
|
+
});
|
|
71
|
+
console.log(ui);
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Step 2: Create Delegation Packets
|
|
76
|
+
|
|
77
|
+
For each task, create a delegation packet:
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
swarm({
|
|
81
|
+
operation: "delegate",
|
|
82
|
+
bead_id: "task-1",
|
|
83
|
+
title: "Implement auth service",
|
|
84
|
+
expected_outcome: "Auth service with JWT tokens, tests pass",
|
|
85
|
+
required_tools: "read, grep, lsp, edit, bash",
|
|
86
|
+
must_do: "LSP before edits, run npm test after changes",
|
|
87
|
+
must_not_do: "No new dependencies, don't edit config files",
|
|
88
|
+
acceptance_checks: "typecheck: npm run typecheck, lint: npm run lint, test: npm test",
|
|
89
|
+
context: "See .beads/artifacts/task-1/spec.md for requirements",
|
|
90
|
+
write: true,
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Step 3: Spawn Worker Agents (Using Dependency Groups)
|
|
95
|
+
|
|
96
|
+
Use parallelizable_groups from dependency graph for proper ordering:
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
// Spawn workers in dependency order
|
|
100
|
+
for (const group of plan.dependency_graph.parallelizable_groups) {
|
|
101
|
+
// All tasks in this group can run in parallel
|
|
102
|
+
const spawnPromises = group.map((taskId) => {
|
|
103
|
+
const node = plan.dependency_graph.nodes.find((n) => n.id === taskId);
|
|
104
|
+
return Task({
|
|
105
|
+
subagent_type: "general",
|
|
106
|
+
description: `Execute ${taskId}`,
|
|
107
|
+
prompt: `Execute bead ${taskId}: ${node.content}
|
|
108
|
+
|
|
109
|
+
Read delegation packet at: .beads/artifacts/${taskId}/delegation.md
|
|
110
|
+
|
|
111
|
+
Files: ${node.assignedFiles.join(", ")}
|
|
112
|
+
Phase: ${node.phase}
|
|
113
|
+
Worker: ${node.worker}
|
|
114
|
+
Team: plan-implementation
|
|
115
|
+
|
|
116
|
+
Requirements:
|
|
117
|
+
1. Follow all MUST DO constraints
|
|
118
|
+
2. Avoid all MUST NOT DO items
|
|
119
|
+
3. Run acceptance checks before claiming done
|
|
120
|
+
4. Report progress via swarm monitor`,
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// Wait for parallel group to complete before starting next
|
|
125
|
+
await Promise.all(spawnPromises);
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Step 4: Monitor Progress (Real-time TUI + Persistence)
|
|
130
|
+
|
|
131
|
+
Monitor with beautiful block UI, progress tracking, and auto-persistence:
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
let allComplete = false;
|
|
135
|
+
while (!allComplete) {
|
|
136
|
+
// Option A: Render beautiful TUI block
|
|
137
|
+
const ui = await swarm({
|
|
138
|
+
operation: "monitor",
|
|
139
|
+
operation: "render_block",
|
|
140
|
+
team_name: "plan-implementation",
|
|
141
|
+
});
|
|
142
|
+
console.log(ui); // Markdown block with tables, emojis, progress
|
|
143
|
+
|
|
144
|
+
// Option B: Get detailed status
|
|
145
|
+
const status = await swarm({
|
|
146
|
+
operation: "monitor",
|
|
147
|
+
operation: "status",
|
|
148
|
+
team_name: "plan-implementation",
|
|
149
|
+
});
|
|
150
|
+
const stats = JSON.parse(status).summary;
|
|
151
|
+
// Returns: total_workers, completed, working, errors, messages
|
|
152
|
+
|
|
153
|
+
// Check completion
|
|
154
|
+
allComplete = stats.completed === stats.total_workers;
|
|
155
|
+
|
|
156
|
+
if (!allComplete) {
|
|
157
|
+
// Wait before checking again
|
|
158
|
+
await new Promise((r) => setTimeout(r, 2000)); // Wait 2s
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Step 5: Synthesize Results
|
|
164
|
+
|
|
165
|
+
When all workers complete:
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
// 1. Get final status
|
|
169
|
+
const finalStatus = await swarm({
|
|
170
|
+
operation: "monitor",
|
|
171
|
+
operation: "status",
|
|
172
|
+
team_name: "plan-implementation",
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
// 2. Run full verification
|
|
176
|
+
await bash("npm run typecheck && npm run lint && npm test");
|
|
177
|
+
|
|
178
|
+
// 3. Pull completed todos back to Beads
|
|
179
|
+
await swarm({ operation: "sync", operation: "pull" });
|
|
180
|
+
|
|
181
|
+
// 4. Clear swarm data
|
|
182
|
+
await swarm({ operation: "monitor", operation: "clear", team_name: "plan-implementation" });
|
|
183
|
+
|
|
184
|
+
// 5. Close parent bead
|
|
185
|
+
await bash("br close parent-task --reason 'Swarm completed all subtasks'");
|
|
186
|
+
```
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Reconciler Agent Pattern (Self-Healing)
|
|
2
|
+
|
|
3
|
+
The reconciler is the key to scaling beyond 50+ agents. Without reconciliation, broken builds cascade and the swarm collapses. The reconciler provides **continuous self-healing** by watching for failures and spawning targeted fix tasks.
|
|
4
|
+
|
|
5
|
+
## When to Use Reconciler
|
|
6
|
+
|
|
7
|
+
- **50+ agents** running in parallel → **REQUIRED**
|
|
8
|
+
- **10-50 agents** → Recommended
|
|
9
|
+
- **<10 agents** → Optional (leader can handle)
|
|
10
|
+
|
|
11
|
+
## Reconciler Responsibilities
|
|
12
|
+
|
|
13
|
+
1. **Watch CI/Build Status**: Monitor build gates continuously
|
|
14
|
+
2. **Detect Failures**: Identify which worker caused the failure
|
|
15
|
+
3. **Analyze Root Cause**: Determine if it's a merge conflict, test failure, or type error
|
|
16
|
+
4. **Spawn Fix Tasks**: Create targeted fix tasks with context about what failed
|
|
17
|
+
5. **Verify Fix**: Wait for fix to pass gates before continuing
|
|
18
|
+
|
|
19
|
+
## Reconciler vs Leader
|
|
20
|
+
|
|
21
|
+
| Aspect | Leader | Reconciler |
|
|
22
|
+
| -------------- | ----------------------------- | ----------------------------- |
|
|
23
|
+
| Focus | Orchestration, spawning | Recovery, fixing |
|
|
24
|
+
| Runs | At swarm start, between waves | Continuously during execution |
|
|
25
|
+
| On failure | Spawns workers | Spawns fix tasks |
|
|
26
|
+
| Failure impact | Can't start work | Wave can't complete |
|
|
27
|
+
|
|
28
|
+
## Implementing Reconciler
|
|
29
|
+
|
|
30
|
+
The reconciler runs in a loop during swarm execution:
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// Reconciler runs in background during swarm execution
|
|
34
|
+
async function runReconciler(teamName: string, buildCommand: string) {
|
|
35
|
+
while (swarmActive) {
|
|
36
|
+
// 1. Check build status
|
|
37
|
+
const status = await swarm({
|
|
38
|
+
operation: "monitor",
|
|
39
|
+
operation: "status",
|
|
40
|
+
team_name: teamName,
|
|
41
|
+
});
|
|
42
|
+
const stats = JSON.parse(status).summary;
|
|
43
|
+
|
|
44
|
+
// 2. If there are errors, investigate
|
|
45
|
+
if (stats.errors > 0) {
|
|
46
|
+
// 3. Get error details
|
|
47
|
+
const errors = await getWorkerErrors(teamName);
|
|
48
|
+
|
|
49
|
+
for (const error of errors) {
|
|
50
|
+
// 4. Analyze root cause
|
|
51
|
+
const cause = await analyzeError(error);
|
|
52
|
+
|
|
53
|
+
// 5. Spawn fix task
|
|
54
|
+
const fixBead = await br create({
|
|
55
|
+
title: `Fix: ${cause.summary}`,
|
|
56
|
+
type: "bug",
|
|
57
|
+
description: `Detected by reconciler: ${error.message}. Root cause: ${cause.rootCause}. Suggested fix: ${cause.suggestion}`,
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// 6. Assign to targeted worker
|
|
61
|
+
await Task({
|
|
62
|
+
subagent_type: "general",
|
|
63
|
+
description: `Fix ${error.worker}`,
|
|
64
|
+
prompt: `Fix the error in ${error.file}.
|
|
65
|
+
|
|
66
|
+
Error: ${error.message}
|
|
67
|
+
Root cause: ${cause.rootCause}
|
|
68
|
+
Suggested fix: ${cause.suggestion}
|
|
69
|
+
|
|
70
|
+
Run: ${buildCommand}
|
|
71
|
+
Verify: npm run typecheck && npm run lint`,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Wait before next check
|
|
77
|
+
await sleep(30000); // Check every 30 seconds
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Error Analysis Patterns
|
|
83
|
+
|
|
84
|
+
The reconciler categorizes errors:
|
|
85
|
+
|
|
86
|
+
| Error Type | Detection | Fix Strategy |
|
|
87
|
+
| -------------- | -------------------------------- | ---------------------------- |
|
|
88
|
+
| Merge conflict | "CONFLICT" in output, git status | Re-base, resolve, force push |
|
|
89
|
+
| Type error | "typecheck failed" | Fix types, run typecheck |
|
|
90
|
+
| Test failure | "test failed", "expect" mismatch | Fix test or implementation |
|
|
91
|
+
| Lint error | "lint failed", formatting issues | Run lint:fix |
|
|
92
|
+
| Build error | "build failed", bundler errors | Fix imports, dependencies |
|
|
93
|
+
|
|
94
|
+
## Spawning Fix Tasks
|
|
95
|
+
|
|
96
|
+
When the reconciler spawns a fix task, it includes:
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
// Create fix task with full context
|
|
100
|
+
await br create({
|
|
101
|
+
title: `Fix: ${error.type} in ${error.file}`,
|
|
102
|
+
type: "bug",
|
|
103
|
+
description: `## Error Detected
|
|
104
|
+
- Worker: ${error.worker}
|
|
105
|
+
- File: ${error.file}
|
|
106
|
+
- Error: ${error.message}
|
|
107
|
+
- Timestamp: ${error.timestamp}
|
|
108
|
+
|
|
109
|
+
## Root Cause Analysis
|
|
110
|
+
${cause.explanation}
|
|
111
|
+
|
|
112
|
+
## Suggested Fix
|
|
113
|
+
${cause.suggestion}
|
|
114
|
+
|
|
115
|
+
## Verification
|
|
116
|
+
Run: ${buildCommand}
|
|
117
|
+
Must pass before wave can complete.`,
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Reconciler in Wave Execution
|
|
122
|
+
|
|
123
|
+
Add reconciler monitoring to each wave:
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
// Execute wave with reconciler
|
|
127
|
+
async function executeWaveWithReconciler(wave, teamName) {
|
|
128
|
+
// Start reconciler in background
|
|
129
|
+
const reconciler = runReconciler(teamName, "npm run typecheck && npm run lint");
|
|
130
|
+
|
|
131
|
+
// Execute workers in this wave
|
|
132
|
+
await Promise.all(wave.tasks.map(spawnWorker));
|
|
133
|
+
|
|
134
|
+
// Wait for all workers + reconciler to complete
|
|
135
|
+
await reconciler;
|
|
136
|
+
|
|
137
|
+
// Verify wave output before proceeding
|
|
138
|
+
await bash("npm run typecheck && npm run lint");
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Example: Full Swarm with Reconciler
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
// Full swarm execution with reconciler
|
|
146
|
+
async function runSwarmWithReconciler(tasks, teamName) {
|
|
147
|
+
// 1. Analyze and create waves
|
|
148
|
+
const waves = createWaves(tasks);
|
|
149
|
+
|
|
150
|
+
// 2. Execute each wave with reconciler
|
|
151
|
+
for (const wave of waves) {
|
|
152
|
+
console.log(`Executing wave ${wave.number} with ${wave.tasks.length} tasks`);
|
|
153
|
+
|
|
154
|
+
// Start reconciler for this wave
|
|
155
|
+
const reconcilerPromise = runReconciler(teamName, "npm run typecheck && npm run lint");
|
|
156
|
+
|
|
157
|
+
// Spawn workers
|
|
158
|
+
await Promise.all(wave.tasks.map((task) => spawnWorker(task, teamName)));
|
|
159
|
+
|
|
160
|
+
// Wait for reconciler to finish fixing any errors
|
|
161
|
+
await reconcilerPromise;
|
|
162
|
+
|
|
163
|
+
// Verify wave output
|
|
164
|
+
const result = await bash("npm run typecheck && npm run lint");
|
|
165
|
+
if (!result.success) {
|
|
166
|
+
throw new Error(`Wave ${wave.number} failed gates`);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
console.log(`Wave ${wave.number} complete`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
```
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Tier Enforcement (Longshot Pattern)
|
|
2
|
+
|
|
3
|
+
For multi-agent execution at scale (10+ agents), enforce explicit tier hierarchy. This is the Longshot pattern that enabled 200 agents to build Minecraft.
|
|
4
|
+
|
|
5
|
+
## Tier System
|
|
6
|
+
|
|
7
|
+
| Tier | Role | Swarm Equivalent | Responsibility |
|
|
8
|
+
| --------------- | --------------------- | ---------------- | -------------------------------------------------------------- |
|
|
9
|
+
| **planner** | Lead orchestrator | Build agent | Analyzes scope, decomposes into sub-tasks, coordinates workers |
|
|
10
|
+
| **sub-planner** | Mid-level coordinator | N/A | Takes planner output, further decomposes, assigns to workers |
|
|
11
|
+
| **worker** | Execution agent | Worker agents | Executes assigned work, reports progress |
|
|
12
|
+
|
|
13
|
+
## When Tiers Are Required
|
|
14
|
+
|
|
15
|
+
- **<10 agents**: Optional - flat decomposition works
|
|
16
|
+
- **10-50 agents**: Recommended - planner + workers
|
|
17
|
+
- **50+ agents**: Required - planner + sub-planners + workers
|
|
18
|
+
|
|
19
|
+
## Enforcing Tier Boundaries
|
|
20
|
+
|
|
21
|
+
The swarm leader enforces tier boundaries:
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// Tier enforcement in swarm execution
|
|
25
|
+
async function enforceTiers(waves, tierConfig) {
|
|
26
|
+
// Wave 1: Planner tasks only
|
|
27
|
+
const planners = waves.filter((w) => w.tier === "planner");
|
|
28
|
+
await executeWave(planners);
|
|
29
|
+
|
|
30
|
+
// Wave 2: Sub-planner tasks (if any)
|
|
31
|
+
const subPlanners = waves.filter((w) => w.tier === "sub-planner");
|
|
32
|
+
await executeWave(subPlanners);
|
|
33
|
+
|
|
34
|
+
// Wave 3+: Worker tasks
|
|
35
|
+
const workers = waves.filter((w) => w.tier === "worker");
|
|
36
|
+
await executeWave(workers);
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Handoff Contracts Between Tiers
|
|
41
|
+
|
|
42
|
+
Each tier must declare handoff contracts:
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// Planner declares what it produces for sub-planners
|
|
46
|
+
const plannerHandoff = {
|
|
47
|
+
produces: [
|
|
48
|
+
{ artifact: "docs/auth-design.md", format: "markdown" },
|
|
49
|
+
{ artifact: "tasks/auth-tasks.json", format: "json" },
|
|
50
|
+
],
|
|
51
|
+
consumedBy: ["sub-planner-auth"],
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// Worker declares what it consumes from sub-planners
|
|
55
|
+
const workerHandoff = {
|
|
56
|
+
consumes: [{ artifact: "tasks/auth-tasks.json", format: "json" }],
|
|
57
|
+
produces: [{ artifact: "src/auth/service.ts", format: "typescript" }],
|
|
58
|
+
};
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Anti-Pattern: Flat Decomposition at Scale
|
|
62
|
+
|
|
63
|
+
Without tiers, 20 agents get 20 flat tasks → chaos:
|
|
64
|
+
|
|
65
|
+
- Workers step on each other
|
|
66
|
+
- No coordination between related work
|
|
67
|
+
- Merge conflicts everywhere
|
|
68
|
+
- No clear ownership
|
|
69
|
+
|
|
70
|
+
With tiers (Longshot pattern):
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Lead Planner → Sub-planner A → Worker 1, 2, 3
|
|
74
|
+
→ Sub-planner B → Worker 4, 5, 6
|
|
75
|
+
Sub-planner C → Worker 7, 8, 9
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
This mirrors real engineering orgs: lead → tech lead → IC. The architecture is the differentiator.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Tmux Integration (Visual Swarm Monitoring)
|
|
2
|
+
|
|
3
|
+
Enable real-time visualization of swarm workers in separate tmux panes.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
1. Start OpenCode inside tmux:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
tmux new -s opencode
|
|
11
|
+
opencode
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
2. The tmux tool auto-detects when running inside tmux and uses these defaults:
|
|
15
|
+
- Layout: `main-vertical` (leader left, workers right)
|
|
16
|
+
- Main pane size: 60%
|
|
17
|
+
- Auto-cleanup: enabled
|
|
18
|
+
|
|
19
|
+
## Detecting Tmux
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// Check if running inside tmux
|
|
23
|
+
const status = await tmux({ operation: "detect" });
|
|
24
|
+
const { available, inside_session } = JSON.parse(status);
|
|
25
|
+
|
|
26
|
+
if (!inside_session) {
|
|
27
|
+
console.log("Tip: Run inside tmux for visual swarm monitoring");
|
|
28
|
+
console.log("Start with: tmux new -s opencode");
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Spawning Worker Panes
|
|
33
|
+
|
|
34
|
+
When spawning workers, create visual panes:
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// Before spawning worker via Task tool
|
|
38
|
+
if (inside_session) {
|
|
39
|
+
// Create pane for this worker
|
|
40
|
+
const pane = await tmux({
|
|
41
|
+
operation: "spawn",
|
|
42
|
+
worker_id: "worker-1",
|
|
43
|
+
title: "Explorer: auth.ts",
|
|
44
|
+
size: 40, // 40% width
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
const { pane_id } = JSON.parse(pane);
|
|
48
|
+
|
|
49
|
+
// Send command to pane (optional - for visual feedback)
|
|
50
|
+
await tmux({
|
|
51
|
+
operation: "send",
|
|
52
|
+
pane_id,
|
|
53
|
+
command: `echo "🔍 Worker-1: Exploring auth.ts..."`,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Spawn the actual worker
|
|
58
|
+
await Task({
|
|
59
|
+
subagent_type: "general",
|
|
60
|
+
description: "Execute worker-1",
|
|
61
|
+
prompt: `...`,
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Layout Options
|
|
66
|
+
|
|
67
|
+
| Layout | Description | Best For |
|
|
68
|
+
| ----------------- | ------------------------------------- | ----------------------------- |
|
|
69
|
+
| `main-vertical` | Main pane left, workers stacked right | Default, good for 2-4 workers |
|
|
70
|
+
| `main-horizontal` | Main pane top, workers below | Wide monitors |
|
|
71
|
+
| `tiled` | Equal grid for all panes | Many workers (5+) |
|
|
72
|
+
| `even-horizontal` | Equal width columns | 2-3 workers |
|
|
73
|
+
| `even-vertical` | Equal height rows | 2-3 workers |
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
// Change layout dynamically
|
|
77
|
+
await tmux({
|
|
78
|
+
operation: "layout",
|
|
79
|
+
layout: "tiled", // When many workers spawn
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Monitoring Worker Output
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
// Capture output from a worker's pane
|
|
87
|
+
const output = await tmux({
|
|
88
|
+
operation: "capture",
|
|
89
|
+
pane_id: "%5",
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Check what the worker is doing
|
|
93
|
+
console.log(JSON.parse(output).output);
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Cleanup
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
// Kill specific pane when worker completes
|
|
100
|
+
await tmux({
|
|
101
|
+
operation: "kill",
|
|
102
|
+
pane_id: "%5",
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
// Or cleanup all spawned panes at end of swarm
|
|
106
|
+
await tmux({
|
|
107
|
+
operation: "cleanup",
|
|
108
|
+
});
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## User Commands
|
|
112
|
+
|
|
113
|
+
| Action | Keys |
|
|
114
|
+
| ----------------------- | ------------- |
|
|
115
|
+
| Switch to next pane | `Ctrl+B →` |
|
|
116
|
+
| Switch to previous pane | `Ctrl+B ←` |
|
|
117
|
+
| Zoom current pane | `Ctrl+B z` |
|
|
118
|
+
| Detach (keep running) | `Ctrl+B d` |
|
|
119
|
+
| Reattach | `tmux attach` |
|
|
120
|
+
| List all panes | `Ctrl+B w` |
|
|
121
|
+
|
|
122
|
+
## Watch Command
|
|
123
|
+
|
|
124
|
+
Use `/swarm-watch` for real-time progress monitoring:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
/swarm-watch my-swarm-team
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
This renders the beautiful TUI block and shows:
|
|
131
|
+
|
|
132
|
+
- Worker progress percentages
|
|
133
|
+
- Current files being worked on
|
|
134
|
+
- Completion status
|