@minhduydev/mdpi 0.3.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 +31 -0
- package/dist/index.js +1187 -0
- package/dist/template/.pi/.env.example +28 -0
- package/dist/template/.pi/AGENTS.md +226 -0
- package/dist/template/.pi/QUALITY.md +13 -0
- package/dist/template/.pi/README.md +452 -0
- package/dist/template/.pi/VERSION +1 -0
- package/dist/template/.pi/agents/INDEX.md +54 -0
- package/dist/template/.pi/agents/build.md +194 -0
- package/dist/template/.pi/agents/explore.md +85 -0
- package/dist/template/.pi/agents/general.md +189 -0
- package/dist/template/.pi/agents/plan.md +407 -0
- package/dist/template/.pi/agents/review.md +198 -0
- package/dist/template/.pi/agents/scout.md +142 -0
- package/dist/template/.pi/agents/vision.md +157 -0
- package/dist/template/.pi/artifacts/example/plan.md +12 -0
- package/dist/template/.pi/artifacts/example/progress.md +4 -0
- package/dist/template/.pi/artifacts/example/research.md +4 -0
- package/dist/template/.pi/artifacts/example/spec.md +16 -0
- package/dist/template/.pi/context/architecture.md +141 -0
- package/dist/template/.pi/context/fallow.md +137 -0
- package/dist/template/.pi/extensions/templates-injector.ts +76 -0
- package/dist/template/.pi/extensions/workflows-runner.ts +301 -0
- package/dist/template/.pi/guard.example.json +75 -0
- package/dist/template/.pi/prompts/INDEX.md +78 -0
- package/dist/template/.pi/prompts/audit.md +109 -0
- package/dist/template/.pi/prompts/close.md +88 -0
- package/dist/template/.pi/prompts/create.md +197 -0
- package/dist/template/.pi/prompts/fix.md +117 -0
- package/dist/template/.pi/prompts/gc.md +112 -0
- package/dist/template/.pi/prompts/init.md +206 -0
- package/dist/template/.pi/prompts/loop-check.md +87 -0
- package/dist/template/.pi/prompts/loop-init.md +157 -0
- package/dist/template/.pi/prompts/loop-review.md +90 -0
- package/dist/template/.pi/prompts/plan.md +254 -0
- package/dist/template/.pi/prompts/research.md +136 -0
- package/dist/template/.pi/prompts/ship.md +219 -0
- package/dist/template/.pi/prompts/status.md +92 -0
- package/dist/template/.pi/prompts/verify.md +154 -0
- package/dist/template/.pi/scripts/gc-check.sh +86 -0
- package/dist/template/.pi/settings.json +15 -0
- package/dist/template/.pi/skills/INDEX.md +331 -0
- package/dist/template/.pi/skills/accessibility-audit/SKILL.md +205 -0
- package/dist/template/.pi/skills/accessibility-audit/references/accessibility-checklist.md +109 -0
- package/dist/template/.pi/skills/agent-code-quality-gate/SKILL.md +131 -0
- package/dist/template/.pi/skills/api-and-interface-design/SKILL.md +159 -0
- package/dist/template/.pi/skills/behavioral-kernel/SKILL.md +92 -0
- package/dist/template/.pi/skills/brainstorming/SKILL.md +138 -0
- package/dist/template/.pi/skills/browser-testing-with-devtools/SKILL.md +90 -0
- package/dist/template/.pi/skills/chrome-devtools/SKILL.md +129 -0
- package/dist/template/.pi/skills/ci-cd-and-automation/SKILL.md +199 -0
- package/dist/template/.pi/skills/cloudflare/SKILL.md +271 -0
- package/dist/template/.pi/skills/cloudflare/references/agents-sdk/README.md +35 -0
- package/dist/template/.pi/skills/cloudflare/references/agents-sdk/api.md +100 -0
- package/dist/template/.pi/skills/cloudflare/references/agents-sdk/configuration.md +99 -0
- package/dist/template/.pi/skills/cloudflare/references/agents-sdk/gotchas.md +59 -0
- package/dist/template/.pi/skills/cloudflare/references/agents-sdk/patterns.md +89 -0
- package/dist/template/.pi/skills/cloudflare/references/ai-gateway/README.md +695 -0
- package/dist/template/.pi/skills/cloudflare/references/ai-search/README.md +14 -0
- package/dist/template/.pi/skills/cloudflare/references/ai-search/api.md +38 -0
- package/dist/template/.pi/skills/cloudflare/references/ai-search/configuration.md +52 -0
- package/dist/template/.pi/skills/cloudflare/references/ai-search/gotchas.md +41 -0
- package/dist/template/.pi/skills/cloudflare/references/ai-search/patterns.md +45 -0
- package/dist/template/.pi/skills/cloudflare/references/analytics-engine/README.md +14 -0
- package/dist/template/.pi/skills/cloudflare/references/analytics-engine/api.md +27 -0
- package/dist/template/.pi/skills/cloudflare/references/analytics-engine/configuration.md +45 -0
- package/dist/template/.pi/skills/cloudflare/references/analytics-engine/gotchas.md +3 -0
- package/dist/template/.pi/skills/cloudflare/references/analytics-engine/patterns.md +36 -0
- package/dist/template/.pi/skills/cloudflare/references/api/README.md +21 -0
- package/dist/template/.pi/skills/cloudflare/references/api/api.md +31 -0
- package/dist/template/.pi/skills/cloudflare/references/api/configuration.md +20 -0
- package/dist/template/.pi/skills/cloudflare/references/api/gotchas.md +28 -0
- package/dist/template/.pi/skills/cloudflare/references/api/patterns.md +47 -0
- package/dist/template/.pi/skills/cloudflare/references/api-shield/README.md +20 -0
- package/dist/template/.pi/skills/cloudflare/references/api-shield/api.md +78 -0
- package/dist/template/.pi/skills/cloudflare/references/api-shield/configuration.md +128 -0
- package/dist/template/.pi/skills/cloudflare/references/api-shield/gotchas.md +51 -0
- package/dist/template/.pi/skills/cloudflare/references/api-shield/patterns.md +145 -0
- package/dist/template/.pi/skills/cloudflare/references/argo-smart-routing/README.md +16 -0
- package/dist/template/.pi/skills/cloudflare/references/argo-smart-routing/api.md +50 -0
- package/dist/template/.pi/skills/cloudflare/references/argo-smart-routing/configuration.md +53 -0
- package/dist/template/.pi/skills/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
- package/dist/template/.pi/skills/cloudflare/references/argo-smart-routing/patterns.md +45 -0
- package/dist/template/.pi/skills/cloudflare/references/bindings/README.md +14 -0
- package/dist/template/.pi/skills/cloudflare/references/bindings/api.md +3 -0
- package/dist/template/.pi/skills/cloudflare/references/bindings/configuration.md +58 -0
- package/dist/template/.pi/skills/cloudflare/references/bindings/gotchas.md +35 -0
- package/dist/template/.pi/skills/cloudflare/references/bindings/patterns.md +37 -0
- package/dist/template/.pi/skills/cloudflare/references/bot-management/README.md +71 -0
- package/dist/template/.pi/skills/cloudflare/references/bot-management/api.md +168 -0
- package/dist/template/.pi/skills/cloudflare/references/bot-management/configuration.md +114 -0
- package/dist/template/.pi/skills/cloudflare/references/bot-management/gotchas.md +99 -0
- package/dist/template/.pi/skills/cloudflare/references/bot-management/patterns.md +125 -0
- package/dist/template/.pi/skills/cloudflare/references/browser-rendering/README.md +16 -0
- package/dist/template/.pi/skills/cloudflare/references/browser-rendering/api.md +54 -0
- package/dist/template/.pi/skills/cloudflare/references/browser-rendering/configuration.md +47 -0
- package/dist/template/.pi/skills/cloudflare/references/browser-rendering/gotchas.md +29 -0
- package/dist/template/.pi/skills/cloudflare/references/browser-rendering/patterns.md +29 -0
- package/dist/template/.pi/skills/cloudflare/references/c3/README.md +264 -0
- package/dist/template/.pi/skills/cloudflare/references/cache-reserve/README.md +93 -0
- package/dist/template/.pi/skills/cloudflare/references/cache-reserve/api.md +176 -0
- package/dist/template/.pi/skills/cloudflare/references/cache-reserve/configuration.md +164 -0
- package/dist/template/.pi/skills/cloudflare/references/cache-reserve/gotchas.md +203 -0
- package/dist/template/.pi/skills/cloudflare/references/cache-reserve/patterns.md +180 -0
- package/dist/template/.pi/skills/cloudflare/references/containers/README.md +16 -0
- package/dist/template/.pi/skills/cloudflare/references/containers/api.md +43 -0
- package/dist/template/.pi/skills/cloudflare/references/containers/configuration.md +56 -0
- package/dist/template/.pi/skills/cloudflare/references/containers/gotchas.md +21 -0
- package/dist/template/.pi/skills/cloudflare/references/containers/patterns.md +40 -0
- package/dist/template/.pi/skills/cloudflare/references/cron-triggers/README.md +85 -0
- package/dist/template/.pi/skills/cloudflare/references/cron-triggers/api.md +198 -0
- package/dist/template/.pi/skills/cloudflare/references/cron-triggers/configuration.md +151 -0
- package/dist/template/.pi/skills/cloudflare/references/cron-triggers/gotchas.md +129 -0
- package/dist/template/.pi/skills/cloudflare/references/cron-triggers/patterns.md +122 -0
- package/dist/template/.pi/skills/cloudflare/references/d1/README.md +92 -0
- package/dist/template/.pi/skills/cloudflare/references/d1/api.md +141 -0
- package/dist/template/.pi/skills/cloudflare/references/d1/configuration.md +127 -0
- package/dist/template/.pi/skills/cloudflare/references/d1/gotchas.md +70 -0
- package/dist/template/.pi/skills/cloudflare/references/d1/patterns.md +144 -0
- package/dist/template/.pi/skills/cloudflare/references/ddos/README.md +34 -0
- package/dist/template/.pi/skills/cloudflare/references/ddos/api.md +136 -0
- package/dist/template/.pi/skills/cloudflare/references/ddos/configuration.md +67 -0
- package/dist/template/.pi/skills/cloudflare/references/ddos/gotchas.md +114 -0
- package/dist/template/.pi/skills/cloudflare/references/ddos/patterns.md +158 -0
- package/dist/template/.pi/skills/cloudflare/references/do-storage/README.md +62 -0
- package/dist/template/.pi/skills/cloudflare/references/do-storage/api.md +89 -0
- package/dist/template/.pi/skills/cloudflare/references/do-storage/configuration.md +116 -0
- package/dist/template/.pi/skills/cloudflare/references/do-storage/gotchas.md +93 -0
- package/dist/template/.pi/skills/cloudflare/references/do-storage/patterns.md +112 -0
- package/dist/template/.pi/skills/cloudflare/references/durable-objects/README.md +125 -0
- package/dist/template/.pi/skills/cloudflare/references/durable-objects/api.md +152 -0
- package/dist/template/.pi/skills/cloudflare/references/durable-objects/configuration.md +148 -0
- package/dist/template/.pi/skills/cloudflare/references/durable-objects/gotchas.md +158 -0
- package/dist/template/.pi/skills/cloudflare/references/durable-objects/patterns.md +255 -0
- package/dist/template/.pi/skills/cloudflare/references/email-routing/README.md +18 -0
- package/dist/template/.pi/skills/cloudflare/references/email-routing/api.md +46 -0
- package/dist/template/.pi/skills/cloudflare/references/email-routing/configuration.md +63 -0
- package/dist/template/.pi/skills/cloudflare/references/email-routing/gotchas.md +16 -0
- package/dist/template/.pi/skills/cloudflare/references/email-routing/patterns.md +46 -0
- package/dist/template/.pi/skills/cloudflare/references/email-workers/README.md +598 -0
- package/dist/template/.pi/skills/cloudflare/references/hyperdrive/README.md +62 -0
- package/dist/template/.pi/skills/cloudflare/references/hyperdrive/api.md +137 -0
- package/dist/template/.pi/skills/cloudflare/references/hyperdrive/configuration.md +133 -0
- package/dist/template/.pi/skills/cloudflare/references/hyperdrive/gotchas.md +184 -0
- package/dist/template/.pi/skills/cloudflare/references/hyperdrive/patterns.md +176 -0
- package/dist/template/.pi/skills/cloudflare/references/images/README.md +14 -0
- package/dist/template/.pi/skills/cloudflare/references/images/api.md +3 -0
- package/dist/template/.pi/skills/cloudflare/references/images/configuration.md +45 -0
- package/dist/template/.pi/skills/cloudflare/references/images/gotchas.md +23 -0
- package/dist/template/.pi/skills/cloudflare/references/images/patterns.md +31 -0
- package/dist/template/.pi/skills/cloudflare/references/kv/README.md +60 -0
- package/dist/template/.pi/skills/cloudflare/references/kv/api.md +114 -0
- package/dist/template/.pi/skills/cloudflare/references/kv/configuration.md +92 -0
- package/dist/template/.pi/skills/cloudflare/references/kv/gotchas.md +117 -0
- package/dist/template/.pi/skills/cloudflare/references/kv/patterns.md +139 -0
- package/dist/template/.pi/skills/cloudflare/references/miniflare/README.md +64 -0
- package/dist/template/.pi/skills/cloudflare/references/miniflare/api.md +144 -0
- package/dist/template/.pi/skills/cloudflare/references/miniflare/configuration.md +203 -0
- package/dist/template/.pi/skills/cloudflare/references/miniflare/gotchas.md +187 -0
- package/dist/template/.pi/skills/cloudflare/references/miniflare/patterns.md +211 -0
- package/dist/template/.pi/skills/cloudflare/references/network-interconnect/README.md +60 -0
- package/dist/template/.pi/skills/cloudflare/references/network-interconnect/api.md +240 -0
- package/dist/template/.pi/skills/cloudflare/references/network-interconnect/configuration.md +127 -0
- package/dist/template/.pi/skills/cloudflare/references/network-interconnect/gotchas.md +171 -0
- package/dist/template/.pi/skills/cloudflare/references/network-interconnect/patterns.md +171 -0
- package/dist/template/.pi/skills/cloudflare/references/observability/README.md +18 -0
- package/dist/template/.pi/skills/cloudflare/references/observability/api.md +51 -0
- package/dist/template/.pi/skills/cloudflare/references/observability/configuration.md +60 -0
- package/dist/template/.pi/skills/cloudflare/references/observability/gotchas.md +36 -0
- package/dist/template/.pi/skills/cloudflare/references/observability/patterns.md +42 -0
- package/dist/template/.pi/skills/cloudflare/references/pages/README.md +76 -0
- package/dist/template/.pi/skills/cloudflare/references/pages/api.md +200 -0
- package/dist/template/.pi/skills/cloudflare/references/pages/configuration.md +228 -0
- package/dist/template/.pi/skills/cloudflare/references/pages/gotchas.md +161 -0
- package/dist/template/.pi/skills/cloudflare/references/pages/patterns.md +145 -0
- package/dist/template/.pi/skills/cloudflare/references/pages-functions/README.md +57 -0
- package/dist/template/.pi/skills/cloudflare/references/pages-functions/api.md +201 -0
- package/dist/template/.pi/skills/cloudflare/references/pages-functions/configuration.md +159 -0
- package/dist/template/.pi/skills/cloudflare/references/pages-functions/gotchas.md +151 -0
- package/dist/template/.pi/skills/cloudflare/references/pages-functions/patterns.md +190 -0
- package/dist/template/.pi/skills/cloudflare/references/pipelines/README.md +664 -0
- package/dist/template/.pi/skills/cloudflare/references/pulumi/README.md +107 -0
- package/dist/template/.pi/skills/cloudflare/references/pulumi/api.md +194 -0
- package/dist/template/.pi/skills/cloudflare/references/pulumi/configuration.md +216 -0
- package/dist/template/.pi/skills/cloudflare/references/pulumi/gotchas.md +223 -0
- package/dist/template/.pi/skills/cloudflare/references/pulumi/patterns.md +139 -0
- package/dist/template/.pi/skills/cloudflare/references/queues/README.md +69 -0
- package/dist/template/.pi/skills/cloudflare/references/queues/api.md +138 -0
- package/dist/template/.pi/skills/cloudflare/references/queues/configuration.md +125 -0
- package/dist/template/.pi/skills/cloudflare/references/queues/gotchas.md +112 -0
- package/dist/template/.pi/skills/cloudflare/references/queues/patterns.md +155 -0
- package/dist/template/.pi/skills/cloudflare/references/r2/README.md +61 -0
- package/dist/template/.pi/skills/cloudflare/references/r2/api.md +127 -0
- package/dist/template/.pi/skills/cloudflare/references/r2/configuration.md +76 -0
- package/dist/template/.pi/skills/cloudflare/references/r2/gotchas.md +94 -0
- package/dist/template/.pi/skills/cloudflare/references/r2/patterns.md +127 -0
- package/dist/template/.pi/skills/cloudflare/references/r2-data-catalog/README.md +18 -0
- package/dist/template/.pi/skills/cloudflare/references/r2-data-catalog/api.md +29 -0
- package/dist/template/.pi/skills/cloudflare/references/r2-data-catalog/configuration.md +39 -0
- package/dist/template/.pi/skills/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
- package/dist/template/.pi/skills/cloudflare/references/r2-data-catalog/patterns.md +46 -0
- package/dist/template/.pi/skills/cloudflare/references/r2-sql/README.md +512 -0
- package/dist/template/.pi/skills/cloudflare/references/realtime-sfu/README.md +21 -0
- package/dist/template/.pi/skills/cloudflare/references/realtime-sfu/api.md +135 -0
- package/dist/template/.pi/skills/cloudflare/references/realtime-sfu/configuration.md +63 -0
- package/dist/template/.pi/skills/cloudflare/references/realtime-sfu/gotchas.md +75 -0
- package/dist/template/.pi/skills/cloudflare/references/realtime-sfu/patterns.md +102 -0
- package/dist/template/.pi/skills/cloudflare/references/realtimekit/README.md +81 -0
- package/dist/template/.pi/skills/cloudflare/references/realtimekit/api.md +164 -0
- package/dist/template/.pi/skills/cloudflare/references/realtimekit/configuration.md +147 -0
- package/dist/template/.pi/skills/cloudflare/references/realtimekit/gotchas.md +172 -0
- package/dist/template/.pi/skills/cloudflare/references/realtimekit/patterns.md +155 -0
- package/dist/template/.pi/skills/cloudflare/references/sandbox/README.md +90 -0
- package/dist/template/.pi/skills/cloudflare/references/sandbox/api.md +178 -0
- package/dist/template/.pi/skills/cloudflare/references/sandbox/configuration.md +131 -0
- package/dist/template/.pi/skills/cloudflare/references/sandbox/gotchas.md +156 -0
- package/dist/template/.pi/skills/cloudflare/references/sandbox/patterns.md +203 -0
- package/dist/template/.pi/skills/cloudflare/references/secrets-store/README.md +58 -0
- package/dist/template/.pi/skills/cloudflare/references/secrets-store/api.md +182 -0
- package/dist/template/.pi/skills/cloudflare/references/secrets-store/configuration.md +140 -0
- package/dist/template/.pi/skills/cloudflare/references/secrets-store/gotchas.md +129 -0
- package/dist/template/.pi/skills/cloudflare/references/secrets-store/patterns.md +218 -0
- package/dist/template/.pi/skills/cloudflare/references/smart-placement/README.md +91 -0
- package/dist/template/.pi/skills/cloudflare/references/smart-placement/api.md +139 -0
- package/dist/template/.pi/skills/cloudflare/references/smart-placement/configuration.md +129 -0
- package/dist/template/.pi/skills/cloudflare/references/smart-placement/gotchas.md +87 -0
- package/dist/template/.pi/skills/cloudflare/references/smart-placement/patterns.md +135 -0
- package/dist/template/.pi/skills/cloudflare/references/snippets/README.md +15 -0
- package/dist/template/.pi/skills/cloudflare/references/snippets/api.md +47 -0
- package/dist/template/.pi/skills/cloudflare/references/snippets/configuration.md +33 -0
- package/dist/template/.pi/skills/cloudflare/references/snippets/gotchas.md +21 -0
- package/dist/template/.pi/skills/cloudflare/references/snippets/patterns.md +34 -0
- package/dist/template/.pi/skills/cloudflare/references/spectrum/README.md +16 -0
- package/dist/template/.pi/skills/cloudflare/references/spectrum/api.md +24 -0
- package/dist/template/.pi/skills/cloudflare/references/spectrum/configuration.md +43 -0
- package/dist/template/.pi/skills/cloudflare/references/spectrum/gotchas.md +42 -0
- package/dist/template/.pi/skills/cloudflare/references/spectrum/patterns.md +40 -0
- package/dist/template/.pi/skills/cloudflare/references/static-assets/README.md +14 -0
- package/dist/template/.pi/skills/cloudflare/references/static-assets/api.md +3 -0
- package/dist/template/.pi/skills/cloudflare/references/static-assets/configuration.md +47 -0
- package/dist/template/.pi/skills/cloudflare/references/static-assets/gotchas.md +44 -0
- package/dist/template/.pi/skills/cloudflare/references/static-assets/patterns.md +42 -0
- package/dist/template/.pi/skills/cloudflare/references/stream/README.md +103 -0
- package/dist/template/.pi/skills/cloudflare/references/stream/api.md +204 -0
- package/dist/template/.pi/skills/cloudflare/references/stream/configuration.md +127 -0
- package/dist/template/.pi/skills/cloudflare/references/stream/gotchas.md +131 -0
- package/dist/template/.pi/skills/cloudflare/references/stream/patterns.md +152 -0
- package/dist/template/.pi/skills/cloudflare/references/tail-workers/README.md +640 -0
- package/dist/template/.pi/skills/cloudflare/references/terraform/README.md +76 -0
- package/dist/template/.pi/skills/cloudflare/references/terraform/api.md +159 -0
- package/dist/template/.pi/skills/cloudflare/references/terraform/configuration.md +156 -0
- package/dist/template/.pi/skills/cloudflare/references/terraform/gotchas.md +207 -0
- package/dist/template/.pi/skills/cloudflare/references/terraform/patterns.md +135 -0
- package/dist/template/.pi/skills/cloudflare/references/tunnel/README.md +82 -0
- package/dist/template/.pi/skills/cloudflare/references/tunnel/api.md +105 -0
- package/dist/template/.pi/skills/cloudflare/references/tunnel/configuration.md +113 -0
- package/dist/template/.pi/skills/cloudflare/references/tunnel/gotchas.md +115 -0
- package/dist/template/.pi/skills/cloudflare/references/tunnel/patterns.md +157 -0
- package/dist/template/.pi/skills/cloudflare/references/turn/README.md +699 -0
- package/dist/template/.pi/skills/cloudflare/references/turnstile/README.md +14 -0
- package/dist/template/.pi/skills/cloudflare/references/turnstile/api.md +3 -0
- package/dist/template/.pi/skills/cloudflare/references/turnstile/configuration.md +19 -0
- package/dist/template/.pi/skills/cloudflare/references/turnstile/gotchas.md +27 -0
- package/dist/template/.pi/skills/cloudflare/references/turnstile/patterns.md +41 -0
- package/dist/template/.pi/skills/cloudflare/references/vectorize/README.md +682 -0
- package/dist/template/.pi/skills/cloudflare/references/waf/README.md +14 -0
- package/dist/template/.pi/skills/cloudflare/references/waf/api.md +3 -0
- package/dist/template/.pi/skills/cloudflare/references/waf/configuration.md +44 -0
- package/dist/template/.pi/skills/cloudflare/references/waf/gotchas.md +24 -0
- package/dist/template/.pi/skills/cloudflare/references/waf/patterns.md +29 -0
- package/dist/template/.pi/skills/cloudflare/references/web-analytics/README.md +19 -0
- package/dist/template/.pi/skills/cloudflare/references/web-analytics/api.md +52 -0
- package/dist/template/.pi/skills/cloudflare/references/web-analytics/configuration.md +31 -0
- package/dist/template/.pi/skills/cloudflare/references/web-analytics/gotchas.md +28 -0
- package/dist/template/.pi/skills/cloudflare/references/web-analytics/patterns.md +52 -0
- package/dist/template/.pi/skills/cloudflare/references/workerd/README.md +47 -0
- package/dist/template/.pi/skills/cloudflare/references/workerd/api.md +199 -0
- package/dist/template/.pi/skills/cloudflare/references/workerd/configuration.md +185 -0
- package/dist/template/.pi/skills/cloudflare/references/workerd/gotchas.md +203 -0
- package/dist/template/.pi/skills/cloudflare/references/workerd/patterns.md +216 -0
- package/dist/template/.pi/skills/cloudflare/references/workers/README.md +96 -0
- package/dist/template/.pi/skills/cloudflare/references/workers/api.md +137 -0
- package/dist/template/.pi/skills/cloudflare/references/workers/configuration.md +147 -0
- package/dist/template/.pi/skills/cloudflare/references/workers/gotchas.md +99 -0
- package/dist/template/.pi/skills/cloudflare/references/workers/patterns.md +149 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-ai/README.md +116 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-for-platforms/README.md +48 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-for-platforms/api.md +169 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-for-platforms/configuration.md +136 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-for-platforms/patterns.md +170 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-playground/README.md +16 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-playground/api.md +20 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-playground/configuration.md +3 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-playground/gotchas.md +35 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-playground/patterns.md +42 -0
- package/dist/template/.pi/skills/cloudflare/references/workers-vpc/README.md +579 -0
- package/dist/template/.pi/skills/cloudflare/references/workflows/README.md +62 -0
- package/dist/template/.pi/skills/cloudflare/references/workflows/api.md +125 -0
- package/dist/template/.pi/skills/cloudflare/references/workflows/configuration.md +177 -0
- package/dist/template/.pi/skills/cloudflare/references/workflows/gotchas.md +136 -0
- package/dist/template/.pi/skills/cloudflare/references/workflows/patterns.md +132 -0
- package/dist/template/.pi/skills/cloudflare/references/wrangler/README.md +90 -0
- package/dist/template/.pi/skills/cloudflare/references/wrangler/api.md +140 -0
- package/dist/template/.pi/skills/cloudflare/references/wrangler/configuration.md +128 -0
- package/dist/template/.pi/skills/cloudflare/references/wrangler/gotchas.md +93 -0
- package/dist/template/.pi/skills/cloudflare/references/wrangler/patterns.md +150 -0
- package/dist/template/.pi/skills/cloudflare/references/zaraz/README.md +360 -0
- package/dist/template/.pi/skills/code-cleanup/SKILL.md +232 -0
- package/dist/template/.pi/skills/code-review-and-quality/SKILL.md +344 -0
- package/dist/template/.pi/skills/code-simplification/SKILL.md +348 -0
- package/dist/template/.pi/skills/context-engineering/SKILL.md +296 -0
- package/dist/template/.pi/skills/core-data-expert/SKILL.md +117 -0
- package/dist/template/.pi/skills/core-data-expert/references/batch-operations.md +543 -0
- package/dist/template/.pi/skills/core-data-expert/references/cloudkit-integration.md +259 -0
- package/dist/template/.pi/skills/core-data-expert/references/concurrency.md +522 -0
- package/dist/template/.pi/skills/core-data-expert/references/fetch-requests.md +643 -0
- package/dist/template/.pi/skills/core-data-expert/references/glossary.md +233 -0
- package/dist/template/.pi/skills/core-data-expert/references/migration.md +393 -0
- package/dist/template/.pi/skills/core-data-expert/references/model-configuration.md +597 -0
- package/dist/template/.pi/skills/core-data-expert/references/performance.md +300 -0
- package/dist/template/.pi/skills/core-data-expert/references/persistent-history.md +553 -0
- package/dist/template/.pi/skills/core-data-expert/references/project-audit.md +60 -0
- package/dist/template/.pi/skills/core-data-expert/references/saving.md +574 -0
- package/dist/template/.pi/skills/core-data-expert/references/stack-setup.md +625 -0
- package/dist/template/.pi/skills/core-data-expert/references/testing.md +300 -0
- package/dist/template/.pi/skills/core-data-expert/references/threading.md +589 -0
- package/dist/template/.pi/skills/debugging-and-error-recovery/SKILL.md +274 -0
- package/dist/template/.pi/skills/deep-module-design/SKILL.md +218 -0
- package/dist/template/.pi/skills/defense-in-depth/SKILL.md +161 -0
- package/dist/template/.pi/skills/deprecation-and-migration/SKILL.md +186 -0
- package/dist/template/.pi/skills/design-system-audit/SKILL.md +176 -0
- package/dist/template/.pi/skills/design-taste-frontend/SKILL.md +255 -0
- package/dist/template/.pi/skills/development-lifecycle/SKILL.md +285 -0
- package/dist/template/.pi/skills/documentation-and-adrs/SKILL.md +217 -0
- package/dist/template/.pi/skills/doubt-driven-development/SKILL.md +207 -0
- package/dist/template/.pi/skills/fallow/SKILL.md +457 -0
- package/dist/template/.pi/skills/fallow/references/cli-reference.md +1905 -0
- package/dist/template/.pi/skills/fallow/references/gotchas.md +644 -0
- package/dist/template/.pi/skills/fallow/references/patterns.md +791 -0
- package/dist/template/.pi/skills/figma/SKILL.md +241 -0
- package/dist/template/.pi/skills/frontend-design/SKILL.md +262 -0
- package/dist/template/.pi/skills/frontend-design/references/animation/motion-advanced.md +224 -0
- package/dist/template/.pi/skills/frontend-design/references/animation/motion-core.md +181 -0
- package/dist/template/.pi/skills/frontend-design/references/canvas/execution.md +90 -0
- package/dist/template/.pi/skills/frontend-design/references/canvas/philosophy.md +94 -0
- package/dist/template/.pi/skills/frontend-design/references/design/color-system.md +111 -0
- package/dist/template/.pi/skills/frontend-design/references/design/interaction.md +149 -0
- package/dist/template/.pi/skills/frontend-design/references/design/typography-rules.md +106 -0
- package/dist/template/.pi/skills/frontend-design/references/design/ux-writing.md +99 -0
- package/dist/template/.pi/skills/frontend-design/references/shadcn/accessibility.md +132 -0
- package/dist/template/.pi/skills/frontend-design/references/shadcn/core-components.md +153 -0
- package/dist/template/.pi/skills/frontend-design/references/shadcn/form-components.md +158 -0
- package/dist/template/.pi/skills/frontend-design/references/shadcn/setup.md +69 -0
- package/dist/template/.pi/skills/frontend-design/references/shadcn/theming.md +152 -0
- package/dist/template/.pi/skills/frontend-design/references/tailwind/responsive.md +112 -0
- package/dist/template/.pi/skills/frontend-design/references/tailwind/utilities-layout.md +134 -0
- package/dist/template/.pi/skills/frontend-design/references/tailwind/utilities-styling.md +165 -0
- package/dist/template/.pi/skills/frontend-design/references/tailwind/v4-config.md +147 -0
- package/dist/template/.pi/skills/frontend-design/references/tailwind/v4-features.md +128 -0
- package/dist/template/.pi/skills/frontend-ui-engineering/SKILL.md +217 -0
- package/dist/template/.pi/skills/gemini-large-context/SKILL.md +238 -0
- package/dist/template/.pi/skills/git-workflow-and-versioning/SKILL.md +217 -0
- package/dist/template/.pi/skills/grill-me/SKILL.md +162 -0
- package/dist/template/.pi/skills/high-end-visual-design/SKILL.md +128 -0
- package/dist/template/.pi/skills/idea-refine/SKILL.md +195 -0
- package/dist/template/.pi/skills/idea-refine/examples.md +62 -0
- package/dist/template/.pi/skills/idea-refine/frameworks.md +63 -0
- package/dist/template/.pi/skills/idea-refine/refinement-criteria.md +56 -0
- package/dist/template/.pi/skills/incremental-implementation/SKILL.md +190 -0
- package/dist/template/.pi/skills/industrial-brutalist-ui/SKILL.md +131 -0
- package/dist/template/.pi/skills/interview-me/SKILL.md +227 -0
- package/dist/template/.pi/skills/jira/SKILL.md +306 -0
- package/dist/template/.pi/skills/loop-audit/SKILL.md +141 -0
- package/dist/template/.pi/skills/loop-cost/SKILL.md +130 -0
- package/dist/template/.pi/skills/loop-engineering/SKILL.md +175 -0
- package/dist/template/.pi/skills/minimalist-ui/SKILL.md +124 -0
- package/dist/template/.pi/skills/mockup-to-code/SKILL.md +197 -0
- package/dist/template/.pi/skills/observability-and-instrumentation/SKILL.md +202 -0
- package/dist/template/.pi/skills/opensrc/SKILL.md +297 -0
- package/dist/template/.pi/skills/opensrc/references/architecture.md +176 -0
- package/dist/template/.pi/skills/opensrc/references/cli-usage.md +176 -0
- package/dist/template/.pi/skills/opensrc/references/registry-support.md +137 -0
- package/dist/template/.pi/skills/pdf-extract/SKILL.md +461 -0
- package/dist/template/.pi/skills/performance-optimization/SKILL.md +233 -0
- package/dist/template/.pi/skills/performance-optimization/references/performance-checklist.md +85 -0
- package/dist/template/.pi/skills/planning-and-task-breakdown/SKILL.md +204 -0
- package/dist/template/.pi/skills/playwright/SKILL.md +404 -0
- package/dist/template/.pi/skills/playwright/references/agent-browser-cli.md +405 -0
- package/dist/template/.pi/skills/polar/SKILL.md +125 -0
- package/dist/template/.pi/skills/react-best-practices/SKILL.md +156 -0
- package/dist/template/.pi/skills/react-best-practices/rules/_sections.md +46 -0
- package/dist/template/.pi/skills/react-best-practices/rules/_template.md +28 -0
- package/dist/template/.pi/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/template/.pi/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/dist/template/.pi/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/dist/template/.pi/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/dist/template/.pi/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/dist/template/.pi/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/dist/template/.pi/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/template/.pi/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/dist/template/.pi/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/dist/template/.pi/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/dist/template/.pi/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/dist/template/.pi/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/dist/template/.pi/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/dist/template/.pi/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/dist/template/.pi/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/template/.pi/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/template/.pi/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/template/.pi/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/template/.pi/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/template/.pi/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/template/.pi/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/template/.pi/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/template/.pi/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/dist/template/.pi/skills/redesign-existing-projects/SKILL.md +217 -0
- package/dist/template/.pi/skills/resend/SKILL.md +196 -0
- package/dist/template/.pi/skills/resend/references/react-email.md +287 -0
- package/dist/template/.pi/skills/resend/references/receive-email.md +248 -0
- package/dist/template/.pi/skills/resend/references/send-email.md +318 -0
- package/dist/template/.pi/skills/root-cause-tracing/SKILL.md +216 -0
- package/dist/template/.pi/skills/security-and-hardening/SKILL.md +293 -0
- package/dist/template/.pi/skills/security-and-hardening/references/security-checklist.md +105 -0
- package/dist/template/.pi/skills/shipping-and-launch/SKILL.md +101 -0
- package/dist/template/.pi/skills/source-driven-development/SKILL.md +108 -0
- package/dist/template/.pi/skills/spec-driven-development/SKILL.md +177 -0
- package/dist/template/.pi/skills/srcwalk/SKILL.md +182 -0
- package/dist/template/.pi/skills/subagent-driven-development/SKILL.md +253 -0
- package/dist/template/.pi/skills/supabase/SKILL.md +153 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/SKILL.md +88 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/advanced-full-text-search.md +55 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/advanced-jsonb-indexing.md +49 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/conn-idle-timeout.md +46 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/conn-limits.md +44 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/conn-pooling.md +41 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/conn-prepared-statements.md +46 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/data-batch-inserts.md +54 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/data-n-plus-one.md +53 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/data-pagination.md +50 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/data-upsert.md +50 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/lock-advisory.md +56 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/lock-deadlock-prevention.md +68 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/lock-short-transactions.md +50 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/lock-skip-locked.md +54 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/monitor-explain-analyze.md +45 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/monitor-pg-stat-statements.md +55 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/monitor-vacuum-analyze.md +55 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/query-composite-indexes.md +44 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/query-covering-indexes.md +40 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/query-index-types.md +45 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/query-missing-indexes.md +43 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/query-partial-indexes.md +45 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/schema-data-types.md +46 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/schema-foreign-key-indexes.md +59 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/schema-lowercase-identifiers.md +55 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/schema-partitioning.md +55 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/schema-primary-keys.md +61 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/security-privileges.md +54 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/security-rls-basics.md +50 -0
- package/dist/template/.pi/skills/supabase-postgres-best-practices/rules/security-rls-performance.md +57 -0
- package/dist/template/.pi/skills/swift-concurrency/SKILL.md +290 -0
- package/dist/template/.pi/skills/swift-concurrency/references/actors.md +640 -0
- package/dist/template/.pi/skills/swift-concurrency/references/async-algorithms.md +822 -0
- package/dist/template/.pi/skills/swift-concurrency/references/async-await-basics.md +249 -0
- package/dist/template/.pi/skills/swift-concurrency/references/async-sequences.md +670 -0
- package/dist/template/.pi/skills/swift-concurrency/references/core-data.md +533 -0
- package/dist/template/.pi/skills/swift-concurrency/references/glossary.md +128 -0
- package/dist/template/.pi/skills/swift-concurrency/references/linting.md +142 -0
- package/dist/template/.pi/skills/swift-concurrency/references/memory-management.md +542 -0
- package/dist/template/.pi/skills/swift-concurrency/references/migration.md +1076 -0
- package/dist/template/.pi/skills/swift-concurrency/references/performance.md +574 -0
- package/dist/template/.pi/skills/swift-concurrency/references/sendable.md +578 -0
- package/dist/template/.pi/skills/swift-concurrency/references/tasks.md +604 -0
- package/dist/template/.pi/skills/swift-concurrency/references/testing.md +565 -0
- package/dist/template/.pi/skills/swift-concurrency/references/threading.md +452 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/SKILL.md +343 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/animation-advanced.md +351 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/animation-basics.md +284 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/animation-transitions.md +326 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/image-optimization.md +286 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/layout-best-practices.md +312 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/liquid-glass.md +377 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/list-patterns.md +153 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/modern-apis.md +400 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/performance-patterns.md +377 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/scroll-patterns.md +305 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/sheet-navigation-patterns.md +292 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/state-management.md +447 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/text-formatting.md +285 -0
- package/dist/template/.pi/skills/swiftui-expert-skill/references/view-structure.md +276 -0
- package/dist/template/.pi/skills/test-driven-development/SKILL.md +400 -0
- package/dist/template/.pi/skills/test-driven-development/references/testing-patterns.md +155 -0
- package/dist/template/.pi/skills/testing-anti-patterns/SKILL.md +339 -0
- package/dist/template/.pi/skills/using-agent-skills/SKILL.md +371 -0
- package/dist/template/.pi/skills/using-git-worktrees/SKILL.md +275 -0
- package/dist/template/.pi/skills/vercel-deploy-claimable/SKILL.md +144 -0
- package/dist/template/.pi/skills/vercel-deploy-claimable/scripts/deploy.sh +249 -0
- package/dist/template/.pi/skills/verification-before-completion/SKILL.md +348 -0
- package/dist/template/.pi/skills/webclaw/SKILL.md +188 -0
- package/dist/template/.pi/skills/writing-skills/SKILL.md +329 -0
- package/dist/template/.pi/skills/writing-skills/references/anti-patterns.md +25 -0
- package/dist/template/.pi/skills/writing-skills/references/claude-search-optimization.md +140 -0
- package/dist/template/.pi/skills/writing-skills/references/discovery-workflow.md +11 -0
- package/dist/template/.pi/skills/writing-skills/references/file-organization.md +32 -0
- package/dist/template/.pi/skills/writing-skills/references/flowcharts-and-examples.md +57 -0
- package/dist/template/.pi/skills/writing-skills/references/rationalization-hardening.md +75 -0
- package/dist/template/.pi/skills/writing-skills/references/testing-methodology.md +397 -0
- package/dist/template/.pi/skills/writing-skills/references/testing-skill-types.md +52 -0
- package/dist/template/.pi/subagents.json +10 -0
- package/dist/template/.pi/templates/adr.md +47 -0
- package/dist/template/.pi/templates/design.md +61 -0
- package/dist/template/.pi/templates/loop-github-action.yml +162 -0
- package/dist/template/.pi/templates/loop-orchestrator.sh +514 -0
- package/dist/template/.pi/templates/loop-orchestrator.test.ts +332 -0
- package/dist/template/.pi/templates/loop-orchestrator.ts +936 -0
- package/dist/template/.pi/templates/loop-state.json +24 -0
- package/dist/template/.pi/templates/loop-state.md +98 -0
- package/dist/template/.pi/templates/loop-vision.md +110 -0
- package/dist/template/.pi/templates/prd.md +204 -0
- package/dist/template/.pi/templates/progress.md +55 -0
- package/dist/template/.pi/templates/project.md +58 -0
- package/dist/template/.pi/templates/proposal.md +40 -0
- package/dist/template/.pi/templates/review-state.json +20 -0
- package/dist/template/.pi/templates/roadmap.md +93 -0
- package/dist/template/.pi/templates/state.md +97 -0
- package/dist/template/.pi/templates/tasks.md +202 -0
- package/dist/template/.pi/templates/tech-stack.md +85 -0
- package/dist/template/.pi/templates/user.md +26 -0
- package/dist/template/.pi/workflows/INDEX.md +63 -0
- package/dist/template/.pi/workflows/audit-pattern.md +84 -0
- package/dist/template/.pi/workflows/batch-implement.md +121 -0
- package/dist/template/.pi/workflows/deep-research.md +89 -0
- package/dist/template/.pi/workflows/development-lifecycle-workflow.md +175 -0
- package/dist/template/.pi/workflows/garbage-collection.md +144 -0
- package/dist/template/.pi/workflows/quality-loop.md +211 -0
- package/package.json +57 -0
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-before-completion
|
|
3
|
+
description: Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Verification Before Completion
|
|
7
|
+
|
|
8
|
+
## When to Use
|
|
9
|
+
|
|
10
|
+
- Before claiming tests/lint/build pass or a bug is fixed
|
|
11
|
+
- Before committing, opening PRs, or stating completion in a status update
|
|
12
|
+
|
|
13
|
+
## When NOT to Use
|
|
14
|
+
|
|
15
|
+
- While still actively coding without a completion claim
|
|
16
|
+
- When you cannot run verification commands yet (e.g., missing dependencies) — resolve first
|
|
17
|
+
|
|
18
|
+
## Overview
|
|
19
|
+
|
|
20
|
+
Claiming work is complete without verification is dishonesty, not efficiency.
|
|
21
|
+
|
|
22
|
+
**Core principle:** Evidence before claims, always.
|
|
23
|
+
|
|
24
|
+
**Violating the letter of this rule is violating the spirit of this rule.**
|
|
25
|
+
|
|
26
|
+
## The Iron Law
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If you haven't run the verification command in this message, you cannot claim it passes.
|
|
33
|
+
|
|
34
|
+
## The Gate Function
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
BEFORE claiming any status or expressing satisfaction:
|
|
38
|
+
|
|
39
|
+
1. IDENTIFY: What command proves this claim?
|
|
40
|
+
2. RUN: Execute the FULL command (fresh, complete)
|
|
41
|
+
3. READ: Full output, check exit code, count failures
|
|
42
|
+
4. VERIFY: Does output confirm the claim?
|
|
43
|
+
- If NO: State actual status with evidence
|
|
44
|
+
- If YES: State claim WITH evidence
|
|
45
|
+
5. ONLY THEN: Make the claim
|
|
46
|
+
|
|
47
|
+
Skip any step = lying, not verifying
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Verification Checklist
|
|
51
|
+
|
|
52
|
+
- [ ] Identify the exact command that proves the claim
|
|
53
|
+
- [ ] Run the full command (fresh)
|
|
54
|
+
- [ ] Read the full output and exit code
|
|
55
|
+
- [ ] Confirm the output matches the claim
|
|
56
|
+
- [ ] Only then state the completion claim with evidence
|
|
57
|
+
|
|
58
|
+
## Common Failures
|
|
59
|
+
|
|
60
|
+
| Claim | Requires | Not Sufficient |
|
|
61
|
+
| --------------------- | ------------------------------- | ------------------------------ |
|
|
62
|
+
| Tests pass | Test command output: 0 failures | Previous run, "should pass" |
|
|
63
|
+
| Linter clean | Linter output: 0 errors | Partial check, extrapolation |
|
|
64
|
+
| Build succeeds | Build command: exit 0 | Linter passing, logs look good |
|
|
65
|
+
| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
|
|
66
|
+
| Regression test works | Red-green cycle verified | Test passes once |
|
|
67
|
+
| Agent completed | VCS diff shows changes | Agent reports "success" |
|
|
68
|
+
| Requirements met | Line-by-line checklist | Tests passing |
|
|
69
|
+
|
|
70
|
+
## Red Flags - STOP
|
|
71
|
+
|
|
72
|
+
- Using "should", "probably", "seems to"
|
|
73
|
+
- Expressing satisfaction before verification ("Great!", "Perfect!", "Done!", etc.)
|
|
74
|
+
- About to commit/push/PR without verification
|
|
75
|
+
- Trusting agent success reports
|
|
76
|
+
- Relying on partial verification
|
|
77
|
+
- Thinking "just this once"
|
|
78
|
+
- Tired and wanting work over
|
|
79
|
+
- **ANY wording implying success without having run verification**
|
|
80
|
+
|
|
81
|
+
## Rationalization Prevention
|
|
82
|
+
|
|
83
|
+
| Excuse | Reality |
|
|
84
|
+
| --------------------------------------- | ---------------------- |
|
|
85
|
+
| "Should work now" | RUN the verification |
|
|
86
|
+
| "I'm confident" | Confidence ≠ evidence |
|
|
87
|
+
| "Just this once" | No exceptions |
|
|
88
|
+
| "Linter passed" | Linter ≠ compiler |
|
|
89
|
+
| "Agent said success" | Verify independently |
|
|
90
|
+
| "I'm tired" | Exhaustion ≠ excuse |
|
|
91
|
+
| "Partial check is enough" | Partial proves nothing |
|
|
92
|
+
| "Different words so rule doesn't apply" | Spirit over letter |
|
|
93
|
+
|
|
94
|
+
## Diagnostic Failure Phrases
|
|
95
|
+
|
|
96
|
+
These phrases are **automatic re-verification triggers**. If you catch yourself writing any of these (or semantic equivalents), STOP and run the actual verification command before continuing.
|
|
97
|
+
|
|
98
|
+
### Completion Claims Without Evidence
|
|
99
|
+
|
|
100
|
+
- "This should fix it"
|
|
101
|
+
- "That should resolve the issue"
|
|
102
|
+
- "The problem should be gone now"
|
|
103
|
+
- "This will work"
|
|
104
|
+
- "It's fixed"
|
|
105
|
+
- "Everything looks good"
|
|
106
|
+
- "We're all set"
|
|
107
|
+
|
|
108
|
+
### Confidence Substitution
|
|
109
|
+
|
|
110
|
+
- "I'm fairly certain this is correct"
|
|
111
|
+
- "Based on my understanding, this works"
|
|
112
|
+
- "This is straightforward enough"
|
|
113
|
+
- "The logic is sound"
|
|
114
|
+
- "This follows the pattern so it should be fine"
|
|
115
|
+
|
|
116
|
+
### Deflection / Minimization
|
|
117
|
+
|
|
118
|
+
- "It's just a minor change"
|
|
119
|
+
- "Nothing else should be affected"
|
|
120
|
+
- "The rest of the code is unchanged"
|
|
121
|
+
- "This is a safe change"
|
|
122
|
+
- "No side effects expected"
|
|
123
|
+
|
|
124
|
+
### Post-Hoc Rationalization
|
|
125
|
+
|
|
126
|
+
- "The error was probably just [X]"
|
|
127
|
+
- "That failure was likely a fluke"
|
|
128
|
+
- "It probably works in production"
|
|
129
|
+
- "The test environment might be the issue"
|
|
130
|
+
|
|
131
|
+
### False Completion
|
|
132
|
+
|
|
133
|
+
- "All done!" / "Done!" / "Complete!"
|
|
134
|
+
- "That takes care of everything"
|
|
135
|
+
- "Ready for review" (without verification output)
|
|
136
|
+
- "Committing now" (without verification output)
|
|
137
|
+
|
|
138
|
+
**Rule:** If any of these phrases appear in your draft response, delete them and replace with actual verification command output. The phrase IS the signal that you're about to lie.
|
|
139
|
+
|
|
140
|
+
## Key Patterns
|
|
141
|
+
|
|
142
|
+
**Tests:**
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
[x] [Run test command] [See: 34/34 pass] "All tests pass"
|
|
146
|
+
[ ] "Should pass now" / "Looks correct"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Regression tests (TDD Red-Green):**
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
[x] Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)
|
|
153
|
+
[ ] "I've written a regression test" (without red-green verification)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Build:**
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
[x] [Run build] [See: exit 0] "Build passes"
|
|
160
|
+
[ ] "Linter passed" (linter doesn't check compilation)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Requirements:**
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
[x] Re-read plan → Create checklist → Verify each → Report gaps or completion
|
|
167
|
+
[ ] "Tests pass, phase complete"
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Agent delegation:**
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
[x] Agent reports success → Check VCS diff → Verify changes → Report actual state
|
|
174
|
+
[ ] Trust agent report
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Smart Verification
|
|
178
|
+
|
|
179
|
+
The Iron Law demands evidence, but evidence should be gathered efficiently.
|
|
180
|
+
|
|
181
|
+
### Incremental by Default
|
|
182
|
+
|
|
183
|
+
Unless shipping or `--full` is passed, verify only what changed:
|
|
184
|
+
|
|
185
|
+
- **Lint**: lint changed files instead of linting the entire codebase
|
|
186
|
+
- **Test**: run changed test files instead of running all tests
|
|
187
|
+
- **Typecheck**: always full (type errors propagate across files)
|
|
188
|
+
|
|
189
|
+
### Parallel Execution
|
|
190
|
+
|
|
191
|
+
Run independent gates simultaneously to reduce wall-clock time:
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
Parallel: typecheck + lint → both must pass
|
|
195
|
+
Sequential: test → build (ship only)
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Total time = max(typecheck, lint) + test, not typecheck + lint + test.
|
|
199
|
+
|
|
200
|
+
### Verification Cache
|
|
201
|
+
|
|
202
|
+
If you just verified and nothing changed, don't re-verify:
|
|
203
|
+
|
|
204
|
+
1. After gates pass, record a stamp in `.pi/artifacts/verify.log`
|
|
205
|
+
2. Before running gates, compare current state to last stamp
|
|
206
|
+
3. If match → report cached PASS, skip redundant work
|
|
207
|
+
4. Cache is always bypassed for `--full` and ship/release
|
|
208
|
+
|
|
209
|
+
## Enforcement Gates
|
|
210
|
+
|
|
211
|
+
Prompt-level rules get ignored under pressure. These gates are **hard blocks**.
|
|
212
|
+
|
|
213
|
+
### Gate 1: Completion Claims Require verify.log
|
|
214
|
+
|
|
215
|
+
Before ANY completion claim (close plan, PR creation, `/ship`, task completion):
|
|
216
|
+
|
|
217
|
+
1. Check `.pi/artifacts/verify.log` exists and contains a recent `PASS` stamp
|
|
218
|
+
2. If verify.log is missing or stale → **BLOCK** — run verification first
|
|
219
|
+
3. If verify.log shows `FAIL` → **BLOCK** — do not proceed
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
[x] verify.log exists, PASS within last edit window → proceed
|
|
223
|
+
[ ] verify.log missing → STOP: "Run verification first"
|
|
224
|
+
[ ] verify.log shows FAIL → STOP: "Verification failed, fix before claiming complete"
|
|
225
|
+
[ ] verify.log stale (files changed since last PASS) → STOP: "Re-run verification"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Gate 2: Agent Delegation Requires Post-Verification
|
|
229
|
+
|
|
230
|
+
After ANY `subagent` returns with "success", follow the **Worker Distrust Protocol** — read changed files, run verification, check acceptance criteria.
|
|
231
|
+
|
|
232
|
+
### Enforcement Principle
|
|
233
|
+
|
|
234
|
+
> **Prompt rules fail under pressure. Gates fail safe.**
|
|
235
|
+
>
|
|
236
|
+
> When a constraint matters enough to be an iron law, enforce it at the action level:
|
|
237
|
+
> check a file, verify a condition, reject if unmet. Don't rely on the agent
|
|
238
|
+
> "remembering" to follow the rule.
|
|
239
|
+
|
|
240
|
+
## Phantom Completion Detection
|
|
241
|
+
|
|
242
|
+
Tasks can "pass" verification while containing stub implementations. This gate catches completions that are technically correct but substantively empty.
|
|
243
|
+
|
|
244
|
+
### When to Run
|
|
245
|
+
|
|
246
|
+
- After all PRD tasks are marked complete (during `/ship` Phase 4-5)
|
|
247
|
+
- Before closing any task
|
|
248
|
+
- When `--full` verification is requested
|
|
249
|
+
|
|
250
|
+
### Stub Patterns to Detect
|
|
251
|
+
|
|
252
|
+
Scan all files modified in the current task for these phantom indicators:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
git diff --name-only origin/main | grep -E '\.(ts|tsx|js|jsx|py|rs|go|swift|kt|java)$' | xargs grep -nE \
|
|
256
|
+
'return null|return undefined|return \{\}|return \[\]|onClick=\{?\(\) => \{\}\}?|TODO|FIXME|placeholder|stub|not.?implemented|throw new Error\(.Not implemented' \
|
|
257
|
+
2>/dev/null
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
| Pattern | What It Indicates | Severity |
|
|
261
|
+
| -------------------------------------------------------- | ------------------------- | -------- |
|
|
262
|
+
| `return null` / `return undefined` | Empty implementation | HIGH |
|
|
263
|
+
| `return {}` / `return []` | Hollow data | HIGH |
|
|
264
|
+
| `onClick={() => {}}` | No-op handler | HIGH |
|
|
265
|
+
| `<div>Component</div>` / `<div>{/* TODO */}</div>` | Placeholder UI | HIGH |
|
|
266
|
+
| `TODO` / `FIXME` / `HACK` | Acknowledged incomplete | MEDIUM |
|
|
267
|
+
| `placeholder` / `stub` / `not implemented` | Self-documenting stubs | HIGH |
|
|
268
|
+
| `throw new Error("Not implemented")` | Explicit stub | HIGH |
|
|
269
|
+
| `fetch('/api/...')` without `await` or error handling | Disconnected call | MEDIUM |
|
|
270
|
+
| `Response.json({ok: true})` or static hardcoded response | Fake API response | HIGH |
|
|
271
|
+
| `console.log` as only function body | Debug-only implementation | MEDIUM |
|
|
272
|
+
|
|
273
|
+
### Three-Level Artifact Verification
|
|
274
|
+
|
|
275
|
+
For each file listed in PRD `Affected Files`:
|
|
276
|
+
|
|
277
|
+
| Level | Check | How |
|
|
278
|
+
| ------------------ | ---------------------- | -------------------------------------------------------------------------------------------- |
|
|
279
|
+
| **1: Exists** | File is present | `ls path/to/file.ts` |
|
|
280
|
+
| **2: Substantive** | Not a stub/placeholder | `semantic_grep "TODO\|FIXME\|return null\|placeholder" --glob path/to/file.ts` — verify real logic exists |
|
|
281
|
+
| **3: Wired** | Connected and used | `semantic_grep "import.*ExportName" --glob "src/**"` — verify other files import/use it |
|
|
282
|
+
|
|
283
|
+
### Key Link Verification
|
|
284
|
+
|
|
285
|
+
Check that components are actually connected (not just existing side-by-side):
|
|
286
|
+
|
|
287
|
+
| Connection Type | Check Command |
|
|
288
|
+
| --------------- | -------------------------------------------------------------- |
|
|
289
|
+
| Component → API | `grep -E "fetch.*api/\|axios\|useSWR\|useQuery" Component.tsx` |
|
|
290
|
+
| API → Database | `grep -E "prisma\.\|db\.\|sql\|query" route.ts` |
|
|
291
|
+
| Form → Handler | `grep "onSubmit\|handleSubmit" Component.tsx` |
|
|
292
|
+
| State → Render | `grep "{stateVar}" Component.tsx` |
|
|
293
|
+
| Route → Page | Check router config references the page component |
|
|
294
|
+
|
|
295
|
+
### Phantom Score
|
|
296
|
+
|
|
297
|
+
After running all checks, report a phantom score:
|
|
298
|
+
|
|
299
|
+
```
|
|
300
|
+
Phantom Completion Check:
|
|
301
|
+
- Files scanned: [N]
|
|
302
|
+
- Stubs found: [N] (HIGH: [n], MEDIUM: [n])
|
|
303
|
+
- Artifact levels: [N] exist, [M] substantive, [K] wired
|
|
304
|
+
- Key links verified: [N]/[M]
|
|
305
|
+
- Score: [CLEAN | SUSPECT | PHANTOM]
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
| Score | Criteria | Action |
|
|
309
|
+
| ----------- | ---------------------------------------------- | --------------------------------- |
|
|
310
|
+
| **CLEAN** | 0 HIGH stubs, all artifacts Level 3 | Proceed |
|
|
311
|
+
| **SUSPECT** | 1-2 MEDIUM stubs OR 1 artifact not Level 3 | Report, ask user |
|
|
312
|
+
| **PHANTOM** | Any HIGH stubs OR >2 artifacts not substantive | **BLOCK** — fix before completion |
|
|
313
|
+
|
|
314
|
+
## Why This Matters
|
|
315
|
+
|
|
316
|
+
From 24 failure memories:
|
|
317
|
+
|
|
318
|
+
- your human partner said "I don't believe you" - trust broken
|
|
319
|
+
- Undefined functions shipped - would crash
|
|
320
|
+
- Missing requirements shipped - incomplete features
|
|
321
|
+
- Time wasted on false completion → redirect → rework
|
|
322
|
+
- Violates: "Honesty is a core value. If you lie, you'll be replaced."
|
|
323
|
+
|
|
324
|
+
## When To Apply
|
|
325
|
+
|
|
326
|
+
**ALWAYS before:**
|
|
327
|
+
|
|
328
|
+
- ANY variation of success/completion claims
|
|
329
|
+
- ANY expression of satisfaction
|
|
330
|
+
- ANY positive statement about work state
|
|
331
|
+
- Committing, PR creation, task completion
|
|
332
|
+
- Moving to next task
|
|
333
|
+
- Delegating to agents
|
|
334
|
+
|
|
335
|
+
**Rule applies to:**
|
|
336
|
+
|
|
337
|
+
- Exact phrases
|
|
338
|
+
- Paraphrases and synonyms
|
|
339
|
+
- Implications of success
|
|
340
|
+
- ANY communication suggesting completion/correctness
|
|
341
|
+
|
|
342
|
+
## The Bottom Line
|
|
343
|
+
|
|
344
|
+
**No shortcuts for verification.**
|
|
345
|
+
|
|
346
|
+
Run the command. Read the output. THEN claim the result.
|
|
347
|
+
|
|
348
|
+
This is non-negotiable.
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: webclaw
|
|
3
|
+
description: MUST load when webfetch returns 403 or bot protection errors, when crawling documentation sites, batch-extracting pages, or extracting brand identity. Primary web scraping tool — prefer over webfetch for all non-trivial scraping.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Webclaw Skill
|
|
7
|
+
|
|
8
|
+
Fast, local-first web content extraction for LLMs. Rust-based scraper with TLS fingerprinting, 67% token reduction, and native MCP integration.
|
|
9
|
+
|
|
10
|
+
## Prerequisites
|
|
11
|
+
|
|
12
|
+
- `webclaw-mcp` binary installed at `~/.webclaw/webclaw-mcp`
|
|
13
|
+
- Install: `brew tap 0xMassi/webclaw && brew install webclaw`
|
|
14
|
+
- Or: download from https://github.com/0xMassi/webclaw/releases
|
|
15
|
+
- MCP server must be enabled in `.pi/settings.json` or the global pi config
|
|
16
|
+
|
|
17
|
+
## When to Use
|
|
18
|
+
|
|
19
|
+
| Scenario | Tool | Why |
|
|
20
|
+
| ---------------------- | ---------------------- | ------------------------------------------ |
|
|
21
|
+
| `webfetch` got 403 | `scrape` | TLS fingerprinting bypasses bot protection |
|
|
22
|
+
| Research a doc site | `crawl` | BFS recursive extraction, same-origin |
|
|
23
|
+
| Extract multiple URLs | `batch` | Parallel multi-URL, faster than sequential |
|
|
24
|
+
| Discover sitemap URLs | `map` | Find all pages without crawling |
|
|
25
|
+
| Track doc changes | `diff` | Snapshot + compare workflow |
|
|
26
|
+
| Extract brand identity | `brand` | Colors, fonts, logos from any site |
|
|
27
|
+
| LLM-optimized output | `scrape` with `-f llm` | 67% fewer tokens than raw HTML |
|
|
28
|
+
|
|
29
|
+
## When NOT to Use
|
|
30
|
+
|
|
31
|
+
- One-off fetch of a single simple page with no bot protection — `webfetch` is lighter
|
|
32
|
+
- You need to follow JS-rendered SPAs requiring a real browser — use `playwright` / `chrome-devtools` instead
|
|
33
|
+
- The site is behind authentication you don't have credentials for — webclaw can't bypass login walls
|
|
34
|
+
- You only need the page's raw HTML for a quick grep — `web_fetch` or `curl` suffice
|
|
35
|
+
|
|
36
|
+
## MCP Tools (8 local, no API key needed)
|
|
37
|
+
|
|
38
|
+
### scrape
|
|
39
|
+
|
|
40
|
+
Extract clean content from a URL. Returns markdown, text, JSON, or LLM-optimized format.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
scrape(url: "https://example.com", format: "llm")
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Options: `format` (markdown|text|json|llm|html), `include` (CSS selectors), `exclude` (CSS selectors), `only_main_content` (boolean)
|
|
47
|
+
|
|
48
|
+
### crawl
|
|
49
|
+
|
|
50
|
+
Recursive BFS crawl of a site. Same-origin only.
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
crawl(url: "https://docs.example.com", depth: 2, max_pages: 50)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Options: `depth` (1-10), `max_pages`, `sitemap` (seed from sitemap.xml)
|
|
57
|
+
|
|
58
|
+
### map
|
|
59
|
+
|
|
60
|
+
Discover URLs from a site's sitemap without fetching content.
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
map(url: "https://docs.example.com")
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### batch
|
|
67
|
+
|
|
68
|
+
Parallel extraction from multiple URLs.
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
batch(urls: ["https://a.com", "https://b.com"], format: "llm")
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### diff
|
|
75
|
+
|
|
76
|
+
Compare current page content against a previous snapshot.
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
diff(url: "https://example.com", snapshot: previous_json)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### brand
|
|
83
|
+
|
|
84
|
+
Extract visual identity: colors, fonts, logos, OG image.
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
brand(url: "https://stripe.com")
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Returns: `{ name, colors: [{hex, usage}], fonts: [], logos: [{url, kind}] }`
|
|
91
|
+
|
|
92
|
+
### extract (needs Ollama)
|
|
93
|
+
|
|
94
|
+
LLM-powered structured extraction. Requires local Ollama instance.
|
|
95
|
+
|
|
96
|
+
### summarize (needs Ollama)
|
|
97
|
+
|
|
98
|
+
Page summarization via local LLM.
|
|
99
|
+
|
|
100
|
+
## Workflow Patterns
|
|
101
|
+
|
|
102
|
+
### Fallback when webfetch fails
|
|
103
|
+
|
|
104
|
+
1. Try `webfetch` first (built-in, no setup)
|
|
105
|
+
2. If 403 or empty → use `scrape` via webclaw MCP
|
|
106
|
+
3. If JS-rendered SPA → note limitation (webclaw doesn't execute JS without cloud API)
|
|
107
|
+
|
|
108
|
+
### Research a documentation site
|
|
109
|
+
|
|
110
|
+
1. `map(url)` to discover all pages
|
|
111
|
+
2. `crawl(url, depth: 2, max_pages: 50)` to extract content
|
|
112
|
+
3. Feed results to analysis agent
|
|
113
|
+
|
|
114
|
+
### Brand/design audit
|
|
115
|
+
|
|
116
|
+
1. `brand(url)` to extract colors, fonts, logos
|
|
117
|
+
2. Pass to vision agent for design system analysis
|
|
118
|
+
|
|
119
|
+
### Track changes over time
|
|
120
|
+
|
|
121
|
+
1. `scrape(url, format: "json")` → save as snapshot
|
|
122
|
+
2. Later: `diff(url, snapshot: saved)` → see what changed
|
|
123
|
+
|
|
124
|
+
## Installation
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Homebrew (recommended)
|
|
128
|
+
brew tap 0xMassi/webclaw
|
|
129
|
+
brew install webclaw
|
|
130
|
+
|
|
131
|
+
# Prebuilt binary
|
|
132
|
+
# Download from https://github.com/0xMassi/webclaw/releases
|
|
133
|
+
# Place webclaw-mcp in ~/.webclaw/
|
|
134
|
+
|
|
135
|
+
# Verify
|
|
136
|
+
webclaw-mcp --version
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Configuration
|
|
140
|
+
|
|
141
|
+
After install, enable in `.pi/settings.json` or global pi config:
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"mcpServers": {
|
|
146
|
+
"webclaw": {
|
|
147
|
+
"enabled": true
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Optional env vars:
|
|
154
|
+
|
|
155
|
+
- `WEBCLAW_API_KEY` — cloud API for bot-protected sites (optional)
|
|
156
|
+
- `OLLAMA_HOST` — for extract/summarize tools (default: `http://localhost:11434`)
|
|
157
|
+
|
|
158
|
+
## Limitations
|
|
159
|
+
|
|
160
|
+
- **No JS rendering** (local mode) — SPAs that render entirely client-side won't extract fully. Use `--cloud` with API key, or use `playwright` skill instead.
|
|
161
|
+
- **Same-origin crawl only** — won't follow external links during crawl.
|
|
162
|
+
- **Early version** — v0.3.2, MIT license. Report issues to https://github.com/0xMassi/webclaw/issues
|
|
163
|
+
|
|
164
|
+
## Common Rationalizations
|
|
165
|
+
|
|
166
|
+
| Rationalization | Reality |
|
|
167
|
+
|---|---|
|
|
168
|
+
| "webfetch works fine for this site" | Bot protection is the rule, not the exception. Always have webclaw as fallback. |
|
|
169
|
+
| "I'll scrape all pages at once" | Aggressive scraping triggers rate limits. Use polite crawling with delays. |
|
|
170
|
+
| "The page structure won't change" | Websites change without notice. Your scraper will break. Validate selectors regularly. |
|
|
171
|
+
|
|
172
|
+
## Red Flags
|
|
173
|
+
|
|
174
|
+
- Scraping without checking robots.txt
|
|
175
|
+
- No rate limiting between requests
|
|
176
|
+
- Selectors that break on minor DOM changes
|
|
177
|
+
- Content extraction without format validation
|
|
178
|
+
- Batch scrape of 100+ URLs without incremental testing
|
|
179
|
+
|
|
180
|
+
## Verification
|
|
181
|
+
|
|
182
|
+
After web scraping:
|
|
183
|
+
|
|
184
|
+
- [ ] robots.txt was checked before scraping
|
|
185
|
+
- [ ] Rate limiting is implemented between requests
|
|
186
|
+
- [ ] Selectors are validated against current page structure
|
|
187
|
+
- [ ] Extracted content format is validated (not empty, not garbled)
|
|
188
|
+
- [ ] Error handling covers: 403, 429, 500, timeout, bot detection
|