@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,85 @@
|
|
|
1
|
+
# Performance Checklist
|
|
2
|
+
|
|
3
|
+
Quick reference for web application performance. Use alongside the `performance-optimization` skill.
|
|
4
|
+
|
|
5
|
+
## Core Web Vitals Targets
|
|
6
|
+
|
|
7
|
+
| Metric | Good | Needs Work | Poor |
|
|
8
|
+
|--------|------|------------|------|
|
|
9
|
+
| LCP (Largest Contentful Paint) | ≤ 2.5s | ≤ 4.0s | > 4.0s |
|
|
10
|
+
| INP (Interaction to Next Paint) | ≤ 200ms | ≤ 500ms | > 500ms |
|
|
11
|
+
| CLS (Cumulative Layout Shift) | ≤ 0.1 | ≤ 0.25 | > 0.25 |
|
|
12
|
+
|
|
13
|
+
## Frontend Checklist
|
|
14
|
+
|
|
15
|
+
### Images
|
|
16
|
+
- [ ] Modern formats (WebP, AVIF)
|
|
17
|
+
- [ ] Responsively sized (`srcset` and `sizes`)
|
|
18
|
+
- [ ] Explicit `width` and `height` (prevents CLS)
|
|
19
|
+
- [ ] Below-the-fold images: `loading="lazy"`, `decoding="async"`
|
|
20
|
+
- [ ] Hero/LCP images: `fetchpriority="high"`, no lazy loading
|
|
21
|
+
|
|
22
|
+
### JavaScript
|
|
23
|
+
- [ ] Bundle size under 200KB gzipped (initial load)
|
|
24
|
+
- [ ] Code splitting with dynamic `import()`
|
|
25
|
+
- [ ] Tree shaking enabled
|
|
26
|
+
- [ ] No blocking JavaScript in `<head>` (use `defer` or `async`)
|
|
27
|
+
- [ ] Heavy computation offloaded to Web Workers
|
|
28
|
+
- [ ] Long tasks (> 50ms) broken up (`scheduler.yield()`, `requestIdleCallback`)
|
|
29
|
+
|
|
30
|
+
### CSS
|
|
31
|
+
- [ ] Critical CSS inlined or preloaded
|
|
32
|
+
- [ ] No render-blocking CSS for non-critical styles
|
|
33
|
+
- [ ] No CSS-in-JS runtime cost in production (use extraction)
|
|
34
|
+
|
|
35
|
+
### Fonts
|
|
36
|
+
- [ ] Limited to 2–3 font families, 2–3 weights each
|
|
37
|
+
- [ ] WOFF2 format only
|
|
38
|
+
- [ ] Self-hosted when possible
|
|
39
|
+
- [ ] `font-display: swap` (or `optional` for non-critical)
|
|
40
|
+
- [ ] Subsetted via `unicode-range`
|
|
41
|
+
- [ ] System font stack considered before any custom font
|
|
42
|
+
|
|
43
|
+
### Network
|
|
44
|
+
- [ ] Static assets cached with long `max-age` + content hashing
|
|
45
|
+
- [ ] API responses cached where appropriate
|
|
46
|
+
- [ ] HTTP/2 or HTTP/3 enabled
|
|
47
|
+
- [ ] Resources preconnected for known origins
|
|
48
|
+
- [ ] `fetchpriority` used on critical resources
|
|
49
|
+
|
|
50
|
+
## Backend Checklist
|
|
51
|
+
|
|
52
|
+
- [ ] Database queries have appropriate indexes
|
|
53
|
+
- [ ] N+1 queries eliminated
|
|
54
|
+
- [ ] Expensive operations cached (Redis, in-memory)
|
|
55
|
+
- [ ] Pagination on list endpoints
|
|
56
|
+
- [ ] Response payloads trimmed to needed fields
|
|
57
|
+
- [ ] Compression enabled (gzip, brotli)
|
|
58
|
+
- [ ] Connection pooling configured
|
|
59
|
+
|
|
60
|
+
## Measurement Commands
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Lighthouse CLI
|
|
64
|
+
npx lighthouse https://example.com --view
|
|
65
|
+
|
|
66
|
+
# Web Vitals in browser
|
|
67
|
+
# Chrome DevTools → Performance tab → Record
|
|
68
|
+
|
|
69
|
+
# Bundle analysis
|
|
70
|
+
npx webpack-bundle-analyzer stats.json
|
|
71
|
+
|
|
72
|
+
# TTFB diagnosis in DevTools Network waterfall
|
|
73
|
+
# Check: DNS → TCP/TLS → Server processing
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Common Anti-Patterns
|
|
77
|
+
|
|
78
|
+
| Anti-Pattern | Problem | Fix |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| Loading all JS upfront | Slow FCP/TTI | Code split by route |
|
|
81
|
+
| Unoptimized images | High LCP | Compress, modern formats, responsive sizes |
|
|
82
|
+
| No caching headers | Repeat downloads | `Cache-Control` with content hashing |
|
|
83
|
+
| Client-side rendering everything | Slow FCP, bad SEO | Server components, SSG where possible |
|
|
84
|
+
| Third-party scripts in `<head>` | Blocks rendering | `async`/`defer`, audit, facade pattern |
|
|
85
|
+
| Missing width/height on images | Layout shift (CLS) | Explicit dimensions or aspect-ratio |
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: planning-and-task-breakdown
|
|
3
|
+
description: Decomposes a spec into small verifiable tasks with dependencies and acceptance checks. Use when a feature/change has a spec or clear goal and needs an executable implementation plan.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Planning & Task Breakdown
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
A good plan creates leverage for builders. It says what must become true, where to work, what not to touch, and how to prove success.
|
|
11
|
+
|
|
12
|
+
Core principle: plan backward from observable truths into artifacts, wiring, tasks, dependencies, and verification.
|
|
13
|
+
|
|
14
|
+
Decompose work into small, verifiable tasks with explicit acceptance criteria. Good task breakdown is the difference between an agent that completes work reliably and one that produces a tangled mess. This skill is the canonical active planning skill. It absorbs PRD-to-plan and writing-plans responsibilities.
|
|
15
|
+
|
|
16
|
+
## When to Use
|
|
17
|
+
|
|
18
|
+
- A spec or clear goal exists and implementation is non-trivial.
|
|
19
|
+
- Work spans multiple files, phases, or agents.
|
|
20
|
+
- Tasks need dependency ordering or parallelization decisions.
|
|
21
|
+
- You need a handoff artifact for worker agents.
|
|
22
|
+
- Multiple acceptance criteria or subsystems are involved.
|
|
23
|
+
- The work may span sessions and needs a durable record.
|
|
24
|
+
|
|
25
|
+
## When NOT to Use
|
|
26
|
+
|
|
27
|
+
- Single-file fixes that can be implemented directly.
|
|
28
|
+
- Requirements are still unclear; use `spec-driven-development` first.
|
|
29
|
+
- You are debugging an active failure; use `debugging-and-error-recovery`.
|
|
30
|
+
- The user only asked for a quick estimate or feasibility check.
|
|
31
|
+
|
|
32
|
+
## The Planning Process
|
|
33
|
+
|
|
34
|
+
### Step 1: Enter Plan Mode — Read-only
|
|
35
|
+
|
|
36
|
+
Read the spec, inspect the codebase, identify existing patterns, and map dependencies. Do NOT write implementation code. Read before you plan. Capture assumptions, unknowns, and constraints that could change the shape of the work.
|
|
37
|
+
|
|
38
|
+
### Step 2: Identify the Dependency Graph
|
|
39
|
+
|
|
40
|
+
Map what depends on what. Build foundations before features that rest on them. Mark risky unknowns and integration seams. Order matters. A dependency graph prevents you from discovering a blocker halfway through implementation.
|
|
41
|
+
|
|
42
|
+
### Step 3: Slice Vertically
|
|
43
|
+
|
|
44
|
+
Instead of building all DB, then all API, then all UI, build one complete feature path at a time. A vertical slice delivers a thin, working thread through the system — for example, creating one record end-to-end from UI through service to storage. Vertical slices produce end-to-end behavior and surface broken wiring early. Horizontal slices delay integration and hide problems until the end.
|
|
45
|
+
|
|
46
|
+
### Step 4: Write Tasks
|
|
47
|
+
|
|
48
|
+
Each task must include:
|
|
49
|
+
|
|
50
|
+
- **Description:** one-sentence goal.
|
|
51
|
+
- **Acceptance Criteria:** what must be true when done.
|
|
52
|
+
- **Verification:** command, test, or check that proves it.
|
|
53
|
+
- **Dependencies:** tasks that must finish first.
|
|
54
|
+
- **Files Likely Touched:** paths or search targets when known.
|
|
55
|
+
- **Estimated Scope:** XS / S / M / L / XL.
|
|
56
|
+
|
|
57
|
+
Be specific. "Update backend" is not a task; "Add `createUser` mutation resolver with input validation" is.
|
|
58
|
+
|
|
59
|
+
### Step 5: Order and Checkpoint
|
|
60
|
+
|
|
61
|
+
Arrange tasks so dependencies are satisfied. Every checkpoint should leave a working state. Insert checkpoints every 2-3 tasks or at phase boundaries. A checkpoint means the code passes tests and can be reviewed as a coherent unit.
|
|
62
|
+
|
|
63
|
+
## Workflow
|
|
64
|
+
|
|
65
|
+
1. Restate the goal and constraints.
|
|
66
|
+
2. Convert observable truths into required artifacts.
|
|
67
|
+
3. Identify required wiring between artifacts.
|
|
68
|
+
4. Mark key links most likely to break.
|
|
69
|
+
5. Decompose into vertical slices, not horizontal layers.
|
|
70
|
+
6. Limit each task to a small scope with exact files when known.
|
|
71
|
+
7. Add acceptance checks and verification commands to every task.
|
|
72
|
+
8. Build a dependency graph and execution order.
|
|
73
|
+
9. Create tracked tasks or write a plan artifact.
|
|
74
|
+
|
|
75
|
+
## Task Sizing Guidelines
|
|
76
|
+
|
|
77
|
+
| Size | Files | Example |
|
|
78
|
+
|------|-------|---------|
|
|
79
|
+
| XS | 1 | Add a validation rule |
|
|
80
|
+
| S | 1-2 | Add a new API endpoint |
|
|
81
|
+
| M | 3-5 | One feature slice |
|
|
82
|
+
| L | 5-8 | Multi-component feature |
|
|
83
|
+
| XL | 8+ | Too large — break it down |
|
|
84
|
+
|
|
85
|
+
Break down a task when any of the following is true:
|
|
86
|
+
|
|
87
|
+
- It will take more than one session.
|
|
88
|
+
- It has more than three acceptance criteria.
|
|
89
|
+
- It touches two or more independent subsystems.
|
|
90
|
+
- It likely touches more than five files.
|
|
91
|
+
- It mixes refactoring with behavior changes.
|
|
92
|
+
|
|
93
|
+
When in doubt, err toward smaller tasks. Small tasks are easier to verify, review, and recover from if they fail.
|
|
94
|
+
|
|
95
|
+
## Plan Document Template
|
|
96
|
+
|
|
97
|
+
A complete plan document should contain:
|
|
98
|
+
|
|
99
|
+
1. **Overview** — what the plan achieves and why.
|
|
100
|
+
2. **Architecture Decisions** — key choices and their rationale.
|
|
101
|
+
3. **Task List** — ordered tasks grouped into phases with checkpoints.
|
|
102
|
+
4. **Risks and Mitigations** — what could go wrong and how to handle it.
|
|
103
|
+
5. **Open Questions** — anything that must be resolved before implementation.
|
|
104
|
+
|
|
105
|
+
Keep the document focused. It is a contract for execution, not a design diary. Each phase should have a clear entry condition and exit criteria.
|
|
106
|
+
|
|
107
|
+
## Task Packet Template
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
## Task N: [Name]
|
|
111
|
+
|
|
112
|
+
Goal: [one sentence]
|
|
113
|
+
Files in scope:
|
|
114
|
+
- [path]
|
|
115
|
+
Acceptance checks:
|
|
116
|
+
- [behavior] -> verify with [command/check]
|
|
117
|
+
Non-goals:
|
|
118
|
+
- [explicit exclusion]
|
|
119
|
+
Dependencies:
|
|
120
|
+
- [task id/name or none]
|
|
121
|
+
Review depth: targeted|standard|full
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Use the packet template when handing work to a worker agent or when tracking tasks in a plan document.
|
|
125
|
+
|
|
126
|
+
## Slicing Rules
|
|
127
|
+
|
|
128
|
+
- Prefer vertical slices that produce end-to-end behavior.
|
|
129
|
+
- Put risky unknowns first.
|
|
130
|
+
- Do not mix refactors with feature behavior unless the refactor is required.
|
|
131
|
+
- If one task touches more than five files, split it.
|
|
132
|
+
- If a task needs architectural judgment, route to `planner`, not `worker`.
|
|
133
|
+
- Keep each task scoped to one coherent change.
|
|
134
|
+
|
|
135
|
+
## Parallelization Opportunities
|
|
136
|
+
|
|
137
|
+
| Type | Guidance |
|
|
138
|
+
|------|----------|
|
|
139
|
+
| Safe | Independent feature slices, tests, docs |
|
|
140
|
+
| Must be sequential | Migrations, shared state, dependency chains |
|
|
141
|
+
| Needs coordination | Shared API contracts (define the contract first) |
|
|
142
|
+
|
|
143
|
+
When parallelizing, document file ownership and integration points. Multiple agents assigned to overlapping files without sequencing is a red flag. Parallel work still needs a single source of truth for ordering.
|
|
144
|
+
|
|
145
|
+
## Common Rationalizations
|
|
146
|
+
|
|
147
|
+
| Rationalization | Reality |
|
|
148
|
+
|---|---|
|
|
149
|
+
| "I'll figure it out as I go" | 10 minutes of planning saves hours of rework. |
|
|
150
|
+
| "The tasks are obvious" | Write them down anyway. Explicit tasks surface hidden dependencies. |
|
|
151
|
+
| "Planning is overhead" | Planning is the task. Implementation without a plan is just typing. |
|
|
152
|
+
| "I can hold it all in my head" | Context windows are finite. Written plans survive session boundaries. |
|
|
153
|
+
| "I'll make tasks as I go" | Hidden dependencies appear too late. Plan the graph first. |
|
|
154
|
+
| "Layer-by-layer is cleaner" | Horizontal layers delay integration and hide broken wiring. |
|
|
155
|
+
| "Acceptance criteria are obvious" | Workers need objective checks, not intent. |
|
|
156
|
+
| "One big task is simpler" | Big tasks are hard to review, rollback, and verify. |
|
|
157
|
+
|
|
158
|
+
## Red Flags
|
|
159
|
+
|
|
160
|
+
- Starting implementation without a written task list.
|
|
161
|
+
- Tasks named after vague activities like "update backend".
|
|
162
|
+
- Tasks that say "implement the feature" without acceptance criteria.
|
|
163
|
+
- No verification command or check per task.
|
|
164
|
+
- UI, API, and data work split so nothing works until the end.
|
|
165
|
+
- Multiple agents assigned to overlapping files without sequencing.
|
|
166
|
+
- Plan omits non-goals or rollback considerations.
|
|
167
|
+
- All tasks are XL-sized.
|
|
168
|
+
- The first task requires further planning to begin.
|
|
169
|
+
|
|
170
|
+
## Verification Checklist
|
|
171
|
+
|
|
172
|
+
- [ ] Every task has acceptance criteria.
|
|
173
|
+
- [ ] Every task has a verification step.
|
|
174
|
+
- [ ] Task dependencies are identified and ordered correctly.
|
|
175
|
+
- [ ] No task touches more than ~5 files.
|
|
176
|
+
- [ ] Checkpoints exist between major phases.
|
|
177
|
+
- [ ] The first task can be implemented without further planning.
|
|
178
|
+
- [ ] Key links are identified for reviewer verification.
|
|
179
|
+
- [ ] The human has reviewed and approved the plan.
|
|
180
|
+
|
|
181
|
+
## Skill Result Contract
|
|
182
|
+
|
|
183
|
+
```xml
|
|
184
|
+
<skill_result>
|
|
185
|
+
<skill>planning-and-task-breakdown</skill>
|
|
186
|
+
<status>success|partial|blocked|failure</status>
|
|
187
|
+
<evidence>Plan/task packets include scope, dependencies, and verification</evidence>
|
|
188
|
+
<artifacts>Task ids or plan file path</artifacts>
|
|
189
|
+
<risks>Large tasks, unresolved dependencies, or none</risks>
|
|
190
|
+
</skill_result>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Consolidated Planning Workflow
|
|
194
|
+
|
|
195
|
+
This is the canonical active planning skill. It absorbs PRD-to-plan and writing-plans responsibilities. Use `spec-driven-development` first when requirements are still unclear.
|
|
196
|
+
|
|
197
|
+
Plans should include:
|
|
198
|
+
|
|
199
|
+
- scope and non-goals;
|
|
200
|
+
- ordered tasks with dependencies;
|
|
201
|
+
- exact files or search targets when known;
|
|
202
|
+
- acceptance checks per task;
|
|
203
|
+
- review and verification gates;
|
|
204
|
+
- handoff details for subagents with zero assumed context.
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: playwright
|
|
3
|
+
description: Use when running automated browser tests, taking screenshots, validating forms, or verifying UX flows. Playwright CLI for token efficiency with MCP fallback for complex exploration. Also covers agent-browser CLI alternative. MUST load before any automated browser testing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Playwright Browser Automation
|
|
7
|
+
|
|
8
|
+
## When to Use
|
|
9
|
+
|
|
10
|
+
- When you need automated browser testing, screenshots, or form workflows via Playwright CLI/MCP.
|
|
11
|
+
|
|
12
|
+
## When NOT to Use
|
|
13
|
+
|
|
14
|
+
- When you specifically need to control your existing Chrome session (use playwriter instead).
|
|
15
|
+
|
|
16
|
+
## Quick Decision
|
|
17
|
+
|
|
18
|
+
| Scenario | Use |
|
|
19
|
+
| ---------------------------------------------------------------- | ----------------------------------- |
|
|
20
|
+
| Quick screenshots, simple forms, token efficiency | **Playwright CLI** |
|
|
21
|
+
| Native binary speed + persistent isolated daemon-backed sessions | **agent-browser CLI** (alternative) |
|
|
22
|
+
| Complex exploratory testing, self-healing workflows | **MCP** |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## CLI Mode (Recommended)
|
|
27
|
+
|
|
28
|
+
The CLI approach is **token-efficient** - no large schemas or verbose accessibility trees in context. Best for most automation tasks.
|
|
29
|
+
|
|
30
|
+
### Alternative: agent-browser CLI
|
|
31
|
+
|
|
32
|
+
- `agent-browser` is a Playwright-based automation stack with a **Rust binary** front-end and a **Node.js daemon** back-end.
|
|
33
|
+
- Commands execute through the native CLI while the daemon keeps browser state warm between calls.
|
|
34
|
+
- Uses the same snapshot-ref interaction pattern (`snapshot` → `@eN` refs → `click/fill/...`) as Playwright workflows.
|
|
35
|
+
- Prefer this alternative when you want native binary command performance on repeated operations.
|
|
36
|
+
- Prefer this alternative when you need explicitly isolated named sessions backed by persistent daemons.
|
|
37
|
+
- Good fit for multi-session parallel workflows where each session keeps independent browser/auth/storage state.
|
|
38
|
+
- Keep defaulting to `playwright-cli` for broad compatibility and token-efficient standard flows.
|
|
39
|
+
- Use MCP mode when you need richer introspection or complex exploratory automation.
|
|
40
|
+
- Full command and options reference lives at: `./references/agent-browser-cli.md`.
|
|
41
|
+
|
|
42
|
+
### Installation
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npm install -g @playwright/cli@latest
|
|
46
|
+
playwright-cli install --skills # Optional: install for Claude/Copilot
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Core Workflow
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
# 1. Open browser and navigate
|
|
53
|
+
bash({ command: "playwright-cli open https://example.com" })
|
|
54
|
+
|
|
55
|
+
# 2. Get element refs (snapshot)
|
|
56
|
+
bash({ command: "playwright-cli snapshot" })
|
|
57
|
+
|
|
58
|
+
# 3. Interact using refs
|
|
59
|
+
bash({ command: "playwright-cli fill e12 'test@example.com'" })
|
|
60
|
+
bash({ command: "playwright-cli click e34" })
|
|
61
|
+
|
|
62
|
+
# 4. Screenshot
|
|
63
|
+
bash({ command: "playwright-cli screenshot --filename=/tmp/result.png" })
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Commands Reference
|
|
67
|
+
|
|
68
|
+
#### Navigation
|
|
69
|
+
|
|
70
|
+
| Command | Description |
|
|
71
|
+
| ------------ | ---------------------------------------- |
|
|
72
|
+
| `open [url]` | Open browser, optionally navigate to URL |
|
|
73
|
+
| `goto <url>` | Navigate to URL |
|
|
74
|
+
| `close` | Close the page/browser |
|
|
75
|
+
| `go-back` | Go back to previous page |
|
|
76
|
+
| `go-forward` | Go forward to next page |
|
|
77
|
+
| `reload` | Reload current page |
|
|
78
|
+
|
|
79
|
+
#### Interaction
|
|
80
|
+
|
|
81
|
+
| Command | Description |
|
|
82
|
+
| -------------------------- | ----------------------------------------- |
|
|
83
|
+
| `snapshot` | Capture page snapshot to get element refs |
|
|
84
|
+
| `type <text>` | Type text into focused element |
|
|
85
|
+
| `fill <ref> <text>` | Fill text into specific element |
|
|
86
|
+
| `click <ref> [button]` | Click element (left/right/middle) |
|
|
87
|
+
| `dblclick <ref>` | Double-click element |
|
|
88
|
+
| `hover <ref>` | Hover over element |
|
|
89
|
+
| `drag <startRef> <endRef>` | Drag and drop |
|
|
90
|
+
| `select <ref> <value>` | Select dropdown option |
|
|
91
|
+
| `check <ref>` | Check checkbox/radio |
|
|
92
|
+
| `uncheck <ref>` | Uncheck checkbox |
|
|
93
|
+
| `upload <file>` | Upload file(s) |
|
|
94
|
+
|
|
95
|
+
#### Keyboard
|
|
96
|
+
|
|
97
|
+
| Command | Description |
|
|
98
|
+
| --------------- | -------------------------------------- |
|
|
99
|
+
| `press <key>` | Press key (e.g., `Enter`, `ArrowLeft`) |
|
|
100
|
+
| `keydown <key>` | Hold key down |
|
|
101
|
+
| `keyup <key>` | Release key |
|
|
102
|
+
|
|
103
|
+
#### Screenshots & PDF
|
|
104
|
+
|
|
105
|
+
| Command | Description |
|
|
106
|
+
| ------------------------------------ | -------------------------- |
|
|
107
|
+
| `screenshot [ref]` | Screenshot page or element |
|
|
108
|
+
| `screenshot --filename=/tmp/out.png` | Save to specific path |
|
|
109
|
+
| `pdf` | Save page as PDF |
|
|
110
|
+
| `pdf --filename=page.pdf` | Save PDF to specific path |
|
|
111
|
+
|
|
112
|
+
#### Tabs
|
|
113
|
+
|
|
114
|
+
| Command | Description |
|
|
115
|
+
| -------------------- | -------------- |
|
|
116
|
+
| `tab-list` | List all tabs |
|
|
117
|
+
| `tab-new [url]` | Create new tab |
|
|
118
|
+
| `tab-close [index]` | Close tab |
|
|
119
|
+
| `tab-select <index>` | Switch to tab |
|
|
120
|
+
|
|
121
|
+
#### Storage
|
|
122
|
+
|
|
123
|
+
| Command | Description |
|
|
124
|
+
| -------------------------------- | ------------------------------- |
|
|
125
|
+
| `cookie-list` | List cookies |
|
|
126
|
+
| `cookie-get <name>` | Get cookie value |
|
|
127
|
+
| `cookie-set <name> <value>` | Set cookie |
|
|
128
|
+
| `cookie-delete <name>` | Delete cookie |
|
|
129
|
+
| `cookie-clear` | Clear all cookies |
|
|
130
|
+
| `localstorage-list` | List localStorage |
|
|
131
|
+
| `localstorage-get <key>` | Get localStorage value |
|
|
132
|
+
| `localstorage-set <key> <value>` | Set localStorage |
|
|
133
|
+
| `sessionstorage-*` | Same pattern for sessionStorage |
|
|
134
|
+
|
|
135
|
+
#### Network
|
|
136
|
+
|
|
137
|
+
| Command | Description |
|
|
138
|
+
| ------------------- | --------------------- |
|
|
139
|
+
| `route <pattern>` | Mock network requests |
|
|
140
|
+
| `route-list` | List active routes |
|
|
141
|
+
| `unroute [pattern]` | Remove route(s) |
|
|
142
|
+
|
|
143
|
+
#### DevTools
|
|
144
|
+
|
|
145
|
+
| Command | Description |
|
|
146
|
+
| ----------------------- | ----------------------------------- |
|
|
147
|
+
| `console [min-level]` | List console messages |
|
|
148
|
+
| `network` | List network requests |
|
|
149
|
+
| `eval <func> [ref]` | Evaluate JavaScript on page/element |
|
|
150
|
+
| `run-code <code>` | Run Playwright code snippet |
|
|
151
|
+
| `tracing-start` | Start trace recording |
|
|
152
|
+
| `tracing-stop` | Stop trace recording |
|
|
153
|
+
| `video-start` | Start video recording |
|
|
154
|
+
| `video-stop [filename]` | Stop video recording |
|
|
155
|
+
|
|
156
|
+
### CLI Options
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# Headless mode
|
|
160
|
+
playwright-cli open https://example.com --headless
|
|
161
|
+
|
|
162
|
+
# Choose browser
|
|
163
|
+
playwright-cli open https://example.com --browser=firefox
|
|
164
|
+
|
|
165
|
+
# Emulate device
|
|
166
|
+
playwright-cli open https://example.com --device="iPhone 14"
|
|
167
|
+
|
|
168
|
+
# Named session (isolated browser)
|
|
169
|
+
playwright-cli -s=project1 open https://example.com
|
|
170
|
+
|
|
171
|
+
# See all options
|
|
172
|
+
playwright-cli --help
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### CLI Examples
|
|
176
|
+
|
|
177
|
+
#### Test Responsive Design
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
// Desktop
|
|
181
|
+
bash({ command: "playwright-cli open http://localhost:3000" });
|
|
182
|
+
bash({ command: "playwright-cli resize 1920 1080" });
|
|
183
|
+
bash({ command: "playwright-cli screenshot --filename=/tmp/desktop.png" });
|
|
184
|
+
|
|
185
|
+
// Mobile
|
|
186
|
+
bash({ command: "playwright-cli resize 390 844" }); // iPhone 14
|
|
187
|
+
bash({ command: "playwright-cli screenshot --filename=/tmp/mobile.png" });
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
#### Fill a Form
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
bash({ command: "playwright-cli open http://localhost:3000/contact" });
|
|
194
|
+
|
|
195
|
+
// Get snapshot to see element refs
|
|
196
|
+
bash({ command: "playwright-cli snapshot" });
|
|
197
|
+
|
|
198
|
+
// Fill using refs from snapshot output
|
|
199
|
+
bash({ command: "playwright-cli fill e12 'John Doe'" });
|
|
200
|
+
bash({ command: "playwright-cli fill e34 'john@example.com'" });
|
|
201
|
+
bash({ command: "playwright-cli click e56" }); // Submit button
|
|
202
|
+
|
|
203
|
+
// Wait for confirmation
|
|
204
|
+
bash({ command: "playwright-cli eval 'document.body.innerText.includes(\"Thank you\")'" });
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
#### Multi-Step Login Flow
|
|
208
|
+
|
|
209
|
+
```typescript
|
|
210
|
+
bash({ command: "playwright-cli open https://app.example.com/login" });
|
|
211
|
+
bash({ command: "playwright-cli snapshot" });
|
|
212
|
+
|
|
213
|
+
bash({ command: "playwright-cli fill e10 'username'" });
|
|
214
|
+
bash({ command: "playwright-cli fill e12 'password'" });
|
|
215
|
+
bash({ command: "playwright-cli click e15" });
|
|
216
|
+
|
|
217
|
+
// Verify logged in
|
|
218
|
+
bash({ command: "playwright-cli eval 'document.querySelector(\".dashboard\") !== null'" });
|
|
219
|
+
bash({ command: "playwright-cli screenshot --filename=/tmp/logged-in.png" });
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
#### Session Management
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
// List all browser sessions
|
|
226
|
+
bash({ command: "playwright-cli list" });
|
|
227
|
+
|
|
228
|
+
// Use named session
|
|
229
|
+
bash({ command: "playwright-cli -s=project1 open https://example.com" });
|
|
230
|
+
|
|
231
|
+
// Close specific session
|
|
232
|
+
bash({ command: "playwright-cli -s=project1 close" });
|
|
233
|
+
|
|
234
|
+
// Close all browsers
|
|
235
|
+
bash({ command: "playwright-cli close-all" });
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## MCP Mode (Fallback)
|
|
241
|
+
|
|
242
|
+
Use MCP for complex exploratory workflows or when you need persistent browser state with rich introspection.
|
|
243
|
+
|
|
244
|
+
### Tools (8 Essential)
|
|
245
|
+
|
|
246
|
+
- `browser_navigate` - Navigate to URL
|
|
247
|
+
- `browser_snapshot` - Get accessibility snapshot with element refs
|
|
248
|
+
- `browser_take_screenshot` - Capture screenshot
|
|
249
|
+
- `browser_click` - Click element by ref
|
|
250
|
+
- `browser_type` - Type text (appends)
|
|
251
|
+
- `browser_fill` - Fill input (clears first, then types)
|
|
252
|
+
- `browser_wait_for` - Wait for text or selector
|
|
253
|
+
- `browser_resize` - Resize viewport or emulate device
|
|
254
|
+
|
|
255
|
+
### MCP Workflow
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
// Navigate
|
|
259
|
+
skill_mcp(
|
|
260
|
+
(skill_name = "playwright"),
|
|
261
|
+
(tool_name = "browser_navigate"),
|
|
262
|
+
(arguments = '{"url": "https://example.com"}'),
|
|
263
|
+
);
|
|
264
|
+
|
|
265
|
+
// Get element refs
|
|
266
|
+
skill_mcp((skill_name = "playwright"), (tool_name = "browser_snapshot"));
|
|
267
|
+
|
|
268
|
+
// Interact
|
|
269
|
+
skill_mcp(
|
|
270
|
+
(skill_name = "playwright"),
|
|
271
|
+
(tool_name = "browser_click"),
|
|
272
|
+
(arguments = '{"element": "Submit", "ref": "e12"}'),
|
|
273
|
+
);
|
|
274
|
+
|
|
275
|
+
// Screenshot
|
|
276
|
+
skill_mcp(
|
|
277
|
+
(skill_name = "playwright"),
|
|
278
|
+
(tool_name = "browser_take_screenshot"),
|
|
279
|
+
(arguments = '{"filename": "/tmp/result.png"}'),
|
|
280
|
+
);
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### MCP Configuration
|
|
284
|
+
|
|
285
|
+
```json
|
|
286
|
+
{
|
|
287
|
+
"playwright": {
|
|
288
|
+
"command": "npx",
|
|
289
|
+
"args": ["@playwright/mcp@latest"],
|
|
290
|
+
"includeTools": [
|
|
291
|
+
"browser_navigate",
|
|
292
|
+
"browser_snapshot",
|
|
293
|
+
"browser_take_screenshot",
|
|
294
|
+
"browser_click",
|
|
295
|
+
"browser_type",
|
|
296
|
+
"browser_fill",
|
|
297
|
+
"browser_wait_for",
|
|
298
|
+
"browser_resize"
|
|
299
|
+
]
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## Token Discipline (Snapshots / Console / Network)
|
|
307
|
+
|
|
308
|
+
Browser introspection tools return huge payloads. A single `browser_snapshot` of a real app is routinely **50K–150K tokens**. A single full `browser_console_messages` or `browser_network_requests` can be similar. Pulling that raw into context wrecks the session.
|
|
309
|
+
|
|
310
|
+
**Rule**: when an MCP browser tool supports a `filename` parameter, **always save to a file first, then read selectively**. Reserve direct (no-`filename`) calls for tiny pages or when you genuinely need the whole tree in context.
|
|
311
|
+
|
|
312
|
+
### Tools that MUST use `filename` for non-trivial pages
|
|
313
|
+
|
|
314
|
+
| Tool | When to use `filename` |
|
|
315
|
+
| -------------------------- | --------------------------------------------------------- |
|
|
316
|
+
| `browser_snapshot` | Always on real apps — accessibility trees explode in size |
|
|
317
|
+
| `browser_take_screenshot` | Always — never inline binary data |
|
|
318
|
+
| `browser_console_messages` | When you expect >20 lines or you don't know the volume |
|
|
319
|
+
| `browser_network_requests` | When you expect >20 requests or full bodies |
|
|
320
|
+
| `browser_pdf_save` | Always |
|
|
321
|
+
|
|
322
|
+
### Pattern
|
|
323
|
+
|
|
324
|
+
```typescript
|
|
325
|
+
// 1. Save the heavy artifact to a file
|
|
326
|
+
skill_mcp(
|
|
327
|
+
(skill_name = "playwright"),
|
|
328
|
+
(tool_name = "browser_snapshot"),
|
|
329
|
+
(arguments = '{"filename": "/tmp/snapshot.yaml"}'),
|
|
330
|
+
);
|
|
331
|
+
|
|
332
|
+
// 2. Search the file for what you actually need
|
|
333
|
+
bash({ command: "grep -n -E 'role=button|role=textbox' /tmp/snapshot.yaml | head -40" });
|
|
334
|
+
|
|
335
|
+
// 3. Read just the relevant slice
|
|
336
|
+
read({ filePath: "/tmp/snapshot.yaml", offset: 120, limit: 40 });
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
CLI mode has the same discipline — `playwright-cli snapshot > /tmp/snap.yaml` then `grep`/`head`, never paste the whole snapshot into the conversation.
|
|
340
|
+
|
|
341
|
+
### Anti-Patterns
|
|
342
|
+
|
|
343
|
+
| Anti-Pattern | Cost | Fix |
|
|
344
|
+
| ------------------------------------------------------------- | ----------------------------- | --------------------------------------------------- |
|
|
345
|
+
| `browser_snapshot` with no `filename` on a real app | 50K–150K tokens in one shot | Add `filename`, then `grep` / `read` slice |
|
|
346
|
+
| `browser_console_messages` with no `filename` on a noisy page | Floods context with logs | Add `filename`, `grep ERROR` after |
|
|
347
|
+
| `browser_network_requests` with no `filename` | Hundreds of requests + bodies | Add `filename`, then filter by URL/status |
|
|
348
|
+
| Pasting full snapshot YAML into a follow-up prompt | Re-bills the same tokens | Reference the file path; re-read only what's needed |
|
|
349
|
+
|
|
350
|
+
Adapted from the **context saving** discipline in [context-mode](https://github.com/mksglu/context-mode); their measurements show ~99% reduction (135K → ~250 bytes per snapshot) when using `filename` + selective reads.
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## Best Practices
|
|
355
|
+
|
|
356
|
+
1. **Default to CLI** for token efficiency
|
|
357
|
+
2. **Snapshot before interact** - always get element refs first
|
|
358
|
+
3. **Use named sessions** (`-s=`) for isolated browser contexts
|
|
359
|
+
4. **Save outputs to /tmp** for easy access and cleanup
|
|
360
|
+
5. **Use `filename` on heavy MCP tools** — see Token Discipline above
|
|
361
|
+
6. **Check console/network** for debugging: `playwright-cli console error`
|
|
362
|
+
7. **Use eval for custom checks** when built-in commands aren't enough
|
|
363
|
+
|
|
364
|
+
## Troubleshooting
|
|
365
|
+
|
|
366
|
+
| Issue | Solution |
|
|
367
|
+
| ------------------- | ------------------------------------------------ |
|
|
368
|
+
| Element not found | Re-run snapshot to get fresh refs |
|
|
369
|
+
| Page not loading | Check network with `playwright-cli network` |
|
|
370
|
+
| Timing issues | Use `eval` to check conditions before proceeding |
|
|
371
|
+
| Session conflicts | Use named sessions (`-s=project1`) |
|
|
372
|
+
| Browser won't close | `playwright-cli kill-all` as last resort |
|
|
373
|
+
|
|
374
|
+
## References
|
|
375
|
+
|
|
376
|
+
- [Playwright CLI GitHub](https://github.com/microsoft/playwright-cli)
|
|
377
|
+
- [Playwright MCP GitHub](https://github.com/microsoft/playwright-mcp)
|
|
378
|
+
- [Playwright Docs](https://playwright.dev)
|
|
379
|
+
|
|
380
|
+
## Common Rationalizations
|
|
381
|
+
|
|
382
|
+
| Rationalization | Reality |
|
|
383
|
+
|---|---|
|
|
384
|
+
| "The UI test is flaky, I'll skip it" | Flaky tests mask real bugs. Fix the flakiness, don't skip the test. |
|
|
385
|
+
| "Visual testing is optional" | Visual regressions are the most common production bugs. Screenshot comparisons catch them. |
|
|
386
|
+
| "I'll write E2E tests after the feature" | E2E tests written later are tests never written. Write alongside the feature. |
|
|
387
|
+
|
|
388
|
+
## Red Flags
|
|
389
|
+
|
|
390
|
+
- Tests that pass locally but fail in CI
|
|
391
|
+
- Selectors using fragile CSS classes or XPaths
|
|
392
|
+
- No wait strategies — relying on arbitrary timeouts
|
|
393
|
+
- Tests without assertions (navigation only)
|
|
394
|
+
- Screenshot comparisons without threshold tolerance
|
|
395
|
+
|
|
396
|
+
## Verification
|
|
397
|
+
|
|
398
|
+
After writing Playwright tests:
|
|
399
|
+
|
|
400
|
+
- [ ] Tests pass consistently (not flaky) — run 3x to confirm
|
|
401
|
+
- [ ] Selectors use data-testid or role-based queries (not fragile CSS classes)
|
|
402
|
+
- [ ] Explicit wait strategies avoid arbitrary timeouts
|
|
403
|
+
- [ ] Every test has at least one meaningful assertion
|
|
404
|
+
- [ ] Visual regression tests have appropriate tolerance thresholds
|