@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,360 @@
|
|
|
1
|
+
# Cloudflare Zaraz Skill
|
|
2
|
+
|
|
3
|
+
Expert guidance for Cloudflare Zaraz - server-side tag manager for loading third-party tools at the edge.
|
|
4
|
+
|
|
5
|
+
## What is Zaraz?
|
|
6
|
+
|
|
7
|
+
Zaraz offloads third-party scripts (analytics, ads, chat, marketing) to Cloudflare's edge, improving site speed, privacy, and security. Zero client-side performance impact.
|
|
8
|
+
|
|
9
|
+
## Core Concepts
|
|
10
|
+
|
|
11
|
+
- **Server-side execution** - Scripts run on Cloudflare, not user's browser
|
|
12
|
+
- **Single HTTP request** - All tools loaded via one endpoint
|
|
13
|
+
- **Privacy-first** - Control data sent to third parties
|
|
14
|
+
- **No client-side JS** - Minimal browser overhead
|
|
15
|
+
|
|
16
|
+
## Zaraz Dashboard Setup
|
|
17
|
+
|
|
18
|
+
1. Navigate to domain > Zaraz
|
|
19
|
+
2. Click "Start setup"
|
|
20
|
+
3. Add tools (Google Analytics, Facebook Pixel, etc.)
|
|
21
|
+
4. Configure triggers and actions
|
|
22
|
+
|
|
23
|
+
## Web API
|
|
24
|
+
|
|
25
|
+
Zaraz provides `zaraz` object in browser:
|
|
26
|
+
|
|
27
|
+
### Track Events
|
|
28
|
+
|
|
29
|
+
```javascript
|
|
30
|
+
// Basic event
|
|
31
|
+
zaraz.track('button_click');
|
|
32
|
+
|
|
33
|
+
// Event with properties
|
|
34
|
+
zaraz.track('purchase', {
|
|
35
|
+
value: 99.99,
|
|
36
|
+
currency: 'USD',
|
|
37
|
+
item_id: '12345'
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// E-commerce events
|
|
41
|
+
zaraz.track('add_to_cart', {
|
|
42
|
+
product_name: 'Widget',
|
|
43
|
+
price: 29.99,
|
|
44
|
+
quantity: 1
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Set User Properties
|
|
49
|
+
|
|
50
|
+
```javascript
|
|
51
|
+
zaraz.set('userId', 'user_12345');
|
|
52
|
+
zaraz.set('plan', 'premium');
|
|
53
|
+
zaraz.set({
|
|
54
|
+
email: '[email protected]',
|
|
55
|
+
country: 'US',
|
|
56
|
+
age: 30
|
|
57
|
+
});
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### E-commerce Tracking
|
|
61
|
+
|
|
62
|
+
```javascript
|
|
63
|
+
// Product view
|
|
64
|
+
zaraz.ecommerce('Product Viewed', {
|
|
65
|
+
product_id: 'SKU123',
|
|
66
|
+
name: 'Blue Widget',
|
|
67
|
+
price: 49.99,
|
|
68
|
+
currency: 'USD'
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// Add to cart
|
|
72
|
+
zaraz.ecommerce('Product Added', {
|
|
73
|
+
product_id: 'SKU123',
|
|
74
|
+
quantity: 2,
|
|
75
|
+
price: 49.99
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Purchase
|
|
79
|
+
zaraz.ecommerce('Order Completed', {
|
|
80
|
+
order_id: 'ORD-789',
|
|
81
|
+
total: 149.98,
|
|
82
|
+
revenue: 149.98,
|
|
83
|
+
shipping: 10.00,
|
|
84
|
+
tax: 12.50,
|
|
85
|
+
currency: 'USD',
|
|
86
|
+
products: [
|
|
87
|
+
{ product_id: 'SKU123', quantity: 2, price: 49.99 }
|
|
88
|
+
]
|
|
89
|
+
});
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Consent Management
|
|
93
|
+
|
|
94
|
+
```javascript
|
|
95
|
+
// Check consent status
|
|
96
|
+
if (zaraz.consent.getAll().analytics) {
|
|
97
|
+
zaraz.track('page_view');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Request consent
|
|
101
|
+
zaraz.consent.modal = true; // Show consent modal
|
|
102
|
+
|
|
103
|
+
// Set consent programmatically
|
|
104
|
+
zaraz.consent.setAll({
|
|
105
|
+
analytics: true,
|
|
106
|
+
marketing: false,
|
|
107
|
+
preferences: true
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// Listen for consent changes
|
|
111
|
+
zaraz.consent.addEventListener('consentChanged', () => {
|
|
112
|
+
console.log('Consent updated:', zaraz.consent.getAll());
|
|
113
|
+
});
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Workers Integration
|
|
117
|
+
|
|
118
|
+
Access Zaraz data in Workers:
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
export default {
|
|
122
|
+
async fetch(req: Request): Promise<Response> {
|
|
123
|
+
const url = new URL(req.url);
|
|
124
|
+
|
|
125
|
+
// Inject Zaraz tracking
|
|
126
|
+
if (url.pathname === '/checkout') {
|
|
127
|
+
const response = await fetch(req);
|
|
128
|
+
const html = await response.text();
|
|
129
|
+
|
|
130
|
+
const tracking = `
|
|
131
|
+
<script>
|
|
132
|
+
zaraz.track('checkout_started', {
|
|
133
|
+
cart_value: 99.99
|
|
134
|
+
});
|
|
135
|
+
</script>
|
|
136
|
+
`;
|
|
137
|
+
|
|
138
|
+
const modified = html.replace('</body>', tracking + '</body>');
|
|
139
|
+
return new Response(modified, response);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return fetch(req);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Triggers
|
|
148
|
+
|
|
149
|
+
Configure when tools fire:
|
|
150
|
+
|
|
151
|
+
### Page Rules
|
|
152
|
+
|
|
153
|
+
- **Pageview** - On every page load
|
|
154
|
+
- **DOM Ready** - When DOM is ready
|
|
155
|
+
- **Click** - Element clicks (CSS selector)
|
|
156
|
+
- **Form submission** - Form submits
|
|
157
|
+
- **Scroll depth** - User scrolls percentage
|
|
158
|
+
- **Timer** - After time elapsed
|
|
159
|
+
- **Variable match** - Custom conditions
|
|
160
|
+
|
|
161
|
+
### Example Trigger
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
Trigger: Button Click
|
|
165
|
+
Match rule: CSS Selector = .buy-button
|
|
166
|
+
Action: Track event "purchase_intent"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Common Tools
|
|
170
|
+
|
|
171
|
+
### Google Analytics 4
|
|
172
|
+
|
|
173
|
+
```javascript
|
|
174
|
+
// Track page view (automatic)
|
|
175
|
+
zaraz.track('pageview');
|
|
176
|
+
|
|
177
|
+
// Custom event
|
|
178
|
+
zaraz.track('sign_up', {
|
|
179
|
+
method: 'email'
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Facebook Pixel
|
|
184
|
+
|
|
185
|
+
```javascript
|
|
186
|
+
zaraz.track('PageView');
|
|
187
|
+
zaraz.track('Purchase', {
|
|
188
|
+
value: 99.99,
|
|
189
|
+
currency: 'USD'
|
|
190
|
+
});
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Google Ads Conversion
|
|
194
|
+
|
|
195
|
+
```javascript
|
|
196
|
+
zaraz.track('conversion', {
|
|
197
|
+
send_to: 'AW-XXXXXXXXX/YYYYYY',
|
|
198
|
+
value: 1.00,
|
|
199
|
+
currency: 'USD'
|
|
200
|
+
});
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Custom Managed Components
|
|
204
|
+
|
|
205
|
+
Build custom tools:
|
|
206
|
+
|
|
207
|
+
```javascript
|
|
208
|
+
// Example: Custom analytics tool
|
|
209
|
+
export default class CustomAnalytics {
|
|
210
|
+
async handleEvent(event) {
|
|
211
|
+
const { type, payload } = event;
|
|
212
|
+
|
|
213
|
+
await fetch('https://analytics.example.com/track', {
|
|
214
|
+
method: 'POST',
|
|
215
|
+
body: JSON.stringify({
|
|
216
|
+
event: type,
|
|
217
|
+
properties: payload,
|
|
218
|
+
timestamp: Date.now()
|
|
219
|
+
})
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## Data Layer
|
|
226
|
+
|
|
227
|
+
Use `zaraz.dataLayer` for structured data:
|
|
228
|
+
|
|
229
|
+
```javascript
|
|
230
|
+
// Set data layer
|
|
231
|
+
window.zaraz.dataLayer = {
|
|
232
|
+
user_id: '12345',
|
|
233
|
+
page_type: 'product',
|
|
234
|
+
category: 'electronics'
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
// Access in triggers
|
|
238
|
+
// Variable: {{client.__zarazTrack.page_type}}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
## Server-Side Configuration
|
|
242
|
+
|
|
243
|
+
### zaraz.toml
|
|
244
|
+
|
|
245
|
+
```toml
|
|
246
|
+
[settings]
|
|
247
|
+
auto_inject = true
|
|
248
|
+
debug_mode = false
|
|
249
|
+
|
|
250
|
+
[[tools]]
|
|
251
|
+
type = "google-analytics"
|
|
252
|
+
id = "G-XXXXXXXXXX"
|
|
253
|
+
|
|
254
|
+
[[tools.triggers]]
|
|
255
|
+
match_rule = "Pageview"
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Privacy Features
|
|
259
|
+
|
|
260
|
+
1. **IP anonymization** - Automatic
|
|
261
|
+
2. **Cookie control** - Consent-based
|
|
262
|
+
3. **Data minimization** - Send only necessary data
|
|
263
|
+
4. **Regional compliance** - GDPR, CCPA support
|
|
264
|
+
|
|
265
|
+
## Performance
|
|
266
|
+
|
|
267
|
+
```javascript
|
|
268
|
+
// Zaraz automatically:
|
|
269
|
+
// - Batches requests
|
|
270
|
+
// - Defers non-critical scripts
|
|
271
|
+
// - Proxies third-party requests
|
|
272
|
+
// - Caches tool configurations
|
|
273
|
+
|
|
274
|
+
// Result: ~0ms client-side overhead
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Debugging
|
|
278
|
+
|
|
279
|
+
```javascript
|
|
280
|
+
// Enable debug mode in dashboard, then:
|
|
281
|
+
zaraz.debug = true;
|
|
282
|
+
|
|
283
|
+
// View events in console
|
|
284
|
+
zaraz.track('test_event', { debug: true });
|
|
285
|
+
|
|
286
|
+
// Check loaded tools
|
|
287
|
+
console.log(zaraz.tools);
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Best Practices
|
|
291
|
+
|
|
292
|
+
1. **Use triggers** instead of inline `zaraz.track()` when possible
|
|
293
|
+
2. **Batch events** for related actions
|
|
294
|
+
3. **Test with debug mode** before production
|
|
295
|
+
4. **Implement consent** for GDPR compliance
|
|
296
|
+
5. **Monitor performance** in dashboard analytics
|
|
297
|
+
6. **Use data layer** for structured data
|
|
298
|
+
|
|
299
|
+
## Common Patterns
|
|
300
|
+
|
|
301
|
+
### SPA Tracking
|
|
302
|
+
|
|
303
|
+
```javascript
|
|
304
|
+
// On route change
|
|
305
|
+
router.afterEach((to, from) => {
|
|
306
|
+
zaraz.track('pageview', {
|
|
307
|
+
page_path: to.path,
|
|
308
|
+
page_title: to.meta.title
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### User Identification
|
|
314
|
+
|
|
315
|
+
```javascript
|
|
316
|
+
// On login
|
|
317
|
+
zaraz.set('user_id', user.id);
|
|
318
|
+
zaraz.set('user_email', user.email);
|
|
319
|
+
zaraz.track('login', { method: 'password' });
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### A/B Testing
|
|
323
|
+
|
|
324
|
+
```javascript
|
|
325
|
+
const variant = Math.random() < 0.5 ? 'A' : 'B';
|
|
326
|
+
zaraz.set('ab_test_variant', variant);
|
|
327
|
+
zaraz.track('ab_test_view', { variant });
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
## Limits
|
|
331
|
+
|
|
332
|
+
- **Tools**: Unlimited
|
|
333
|
+
- **Events**: Unlimited
|
|
334
|
+
- **Data retention**: Per tool's policy
|
|
335
|
+
- **Request size**: 100KB per request
|
|
336
|
+
|
|
337
|
+
## Troubleshooting
|
|
338
|
+
|
|
339
|
+
### Events not firing
|
|
340
|
+
|
|
341
|
+
- Check trigger conditions in dashboard
|
|
342
|
+
- Verify tool is enabled
|
|
343
|
+
- Enable debug mode
|
|
344
|
+
- Check browser console for errors
|
|
345
|
+
|
|
346
|
+
### Consent issues
|
|
347
|
+
|
|
348
|
+
- Verify consent modal configuration
|
|
349
|
+
- Check `zaraz.consent.getAll()` status
|
|
350
|
+
- Ensure tools respect consent settings
|
|
351
|
+
|
|
352
|
+
## Reference
|
|
353
|
+
|
|
354
|
+
- [Zaraz Docs](https://developers.cloudflare.com/zaraz/)
|
|
355
|
+
- [Web API](https://developers.cloudflare.com/zaraz/web-api/)
|
|
356
|
+
- [Managed Components](https://developers.cloudflare.com/zaraz/advanced/load-custom-managed-component/)
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
This skill focuses exclusively on Zaraz. For Workers development, see `cloudflare-workers` skill.
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-cleanup
|
|
3
|
+
description: Use after behavior is working but the diff is noisy, repetitive, over-complicated, or obviously AI-shaped - lock behavior first, then simplify the changed code and re-verify without expanding scope
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Code Cleanup
|
|
7
|
+
|
|
8
|
+
## When to Use
|
|
9
|
+
|
|
10
|
+
- Tests/build/typecheck already pass, but the changed code is clumsy
|
|
11
|
+
- A feature works, but the diff contains duplication, over-nesting, dead code, or awkward naming
|
|
12
|
+
- You want a final simplification pass before review or merge
|
|
13
|
+
- You encountered a "broken window" (messy code, bad pattern, dead comment) that needs boarding up
|
|
14
|
+
|
|
15
|
+
## When NOT to Use
|
|
16
|
+
|
|
17
|
+
- Behavior is still broken or unverified
|
|
18
|
+
- You are tempted to redesign architecture under the cover of "cleanup"
|
|
19
|
+
- The cleanup would spread into unrelated files
|
|
20
|
+
- You have not yet established how to prove nothing broke
|
|
21
|
+
|
|
22
|
+
## Core Principle
|
|
23
|
+
|
|
24
|
+
**Lock behavior first. Then simplify. Then re-verify.**
|
|
25
|
+
|
|
26
|
+
No cleanup claim counts unless the same verification still passes after the cleanup edits.
|
|
27
|
+
|
|
28
|
+
## Why Cleanup Matters: Software Entropy
|
|
29
|
+
|
|
30
|
+
Left unrepaired, every messy piece of code gives permission for the next one. This is the "broken windows" theory from *The Pragmatic Programmer*: a bad design, wrong decision, or poor code left in place signals that quality doesn't matter — and more broken windows follow.
|
|
31
|
+
|
|
32
|
+
AI agents accelerate this. A messy module invites the next AI to add more mess. A clean module with clear patterns invites the next AI to follow those patterns. Cleanup is not cosmetic — it's **entropy containment**. It's the difference between a codebase that decays with each AI pass and one that stabilizes.
|
|
33
|
+
|
|
34
|
+
**When full cleanup is impossible, board it up.** Add a comment marking the issue, stub out the dead path, isolate the bad code behind a clear boundary. The goal is to contain the damage so it doesn't spread, even if you can't fix it right now.
|
|
35
|
+
|
|
36
|
+
## Five Principles of Simplification
|
|
37
|
+
|
|
38
|
+
1. **Preserve Behavior** — The code must do exactly the same thing after cleanup. No semantic drift, no "while I'm here" fixes, no opportunistic refactors.
|
|
39
|
+
2. **Follow Conventions** — Match the existing style, naming, file organization, and patterns of the codebase. Consistency reduces cognitive load.
|
|
40
|
+
3. **Clarity Over Cleverness** — Prefer the readable, obvious solution. Remove one-liners that require a注释 to understand.
|
|
41
|
+
4. **Maintain Balance** — Do not chase purity into abstraction hell. Simpler is better, but over-abstracting is just a different kind of mess.
|
|
42
|
+
5. **Scope to What Changed** — Cleanup only the files and behavior directly touched by the current work. Adjacent code that happens to smell is someone else's change.
|
|
43
|
+
|
|
44
|
+
## Chesterton's Fence
|
|
45
|
+
|
|
46
|
+
Before removing or changing code, understand why it is there. A fence was put up for a reason; you may tear it down only when you know that reason. Search git history, ask in comments, read tests, or inspect callers. If the reason is unknowable, leave it alone or board it up with a clear marker — do not silently delete it.
|
|
47
|
+
|
|
48
|
+
## Cleanup Targets
|
|
49
|
+
|
|
50
|
+
Prefer cleanup that removes friction without changing behavior:
|
|
51
|
+
|
|
52
|
+
- delete dead branches, unused variables, stale comments
|
|
53
|
+
- collapse repeated logic when the abstraction is already obvious
|
|
54
|
+
- simplify conditionals and nesting
|
|
55
|
+
- improve names where the blast radius is small and verified
|
|
56
|
+
- remove AI-ish filler comments, duplicated guards, or ceremony
|
|
57
|
+
- **fix broken windows**: inconsistent patterns, dead TODOs, misnamed functions, formatting rot
|
|
58
|
+
|
|
59
|
+
Avoid:
|
|
60
|
+
|
|
61
|
+
- cross-system rewrites
|
|
62
|
+
- new abstractions with speculative value
|
|
63
|
+
- changing public APIs unless explicitly requested
|
|
64
|
+
- moving many files just because structure feels imperfect
|
|
65
|
+
|
|
66
|
+
## The Simplification Process
|
|
67
|
+
|
|
68
|
+
### 1. Understand Before Touching
|
|
69
|
+
|
|
70
|
+
Read the code until you can explain what it does and why. Identify inputs, outputs, side effects, tests, and callers. If the purpose is unclear, stop — cleanup is unsafe.
|
|
71
|
+
|
|
72
|
+
### 2. Identify Opportunities
|
|
73
|
+
|
|
74
|
+
Compare the code against the cleanup targets and simplification patterns below. Make a short, explicit list. Estimate the risk and blast radius of each change.
|
|
75
|
+
|
|
76
|
+
### 3. Apply Incrementally
|
|
77
|
+
|
|
78
|
+
Change one thing at a time. Run the smallest relevant verification after each change. If verification fails, revert immediately and reassess.
|
|
79
|
+
|
|
80
|
+
### 4. Verify
|
|
81
|
+
|
|
82
|
+
Re-run the exact verification suite that locked behavior. Cleanup is only complete when that suite passes unchanged.
|
|
83
|
+
|
|
84
|
+
## Process
|
|
85
|
+
|
|
86
|
+
### Phase 1: Lock Behavior
|
|
87
|
+
|
|
88
|
+
1. Identify the verification commands that prove the current behavior
|
|
89
|
+
2. Run them and save the baseline result
|
|
90
|
+
3. List the exact files that are eligible for cleanup
|
|
91
|
+
|
|
92
|
+
### Phase 2: Create a Cleanup Plan
|
|
93
|
+
|
|
94
|
+
Use a small table before editing:
|
|
95
|
+
|
|
96
|
+
| File | Smell | Planned simplification | Risk |
|
|
97
|
+
| ---- | ----- | ---------------------- | ---- |
|
|
98
|
+
| ... | ... | ... | ... |
|
|
99
|
+
|
|
100
|
+
Rules:
|
|
101
|
+
|
|
102
|
+
- Prefer deletion over abstraction
|
|
103
|
+
- Prefer local simplification over shared utilities
|
|
104
|
+
- If risk is medium or higher, make smaller passes
|
|
105
|
+
|
|
106
|
+
### Phase 3: Simplify
|
|
107
|
+
|
|
108
|
+
Apply cleanup in small, reviewable edits:
|
|
109
|
+
|
|
110
|
+
1. Make one simplification
|
|
111
|
+
2. Re-run the relevant verification
|
|
112
|
+
3. Continue only if behavior remains locked
|
|
113
|
+
|
|
114
|
+
### Phase 4: Re-verify
|
|
115
|
+
|
|
116
|
+
Re-run the same commands used to lock behavior.
|
|
117
|
+
|
|
118
|
+
Minimum acceptable output:
|
|
119
|
+
|
|
120
|
+
- what was simplified
|
|
121
|
+
- what was deleted
|
|
122
|
+
- what verification was rerun
|
|
123
|
+
- any remaining ugly areas intentionally left alone
|
|
124
|
+
|
|
125
|
+
## Simplification Patterns
|
|
126
|
+
|
|
127
|
+
### Structural Complexity
|
|
128
|
+
|
|
129
|
+
| Smell | Safer simplification |
|
|
130
|
+
| ----- | -------------------- |
|
|
131
|
+
| Deep nesting | Early returns, guard clauses, or extraction |
|
|
132
|
+
| Long function doing many things | Extract well-named helpers, but only inside the changed file |
|
|
133
|
+
| Switch/if-ladder | Lookup table or polymorphism when existing patterns support it |
|
|
134
|
+
| Magic numbers/strings | Named constants that already exist in the file/module |
|
|
135
|
+
| Excessive defensive checks | Remove checks that are already guaranteed by callers or types |
|
|
136
|
+
|
|
137
|
+
### Naming
|
|
138
|
+
|
|
139
|
+
| Smell | Safer simplification |
|
|
140
|
+
| ----- | -------------------- |
|
|
141
|
+
| Single-letter variables outside loops | Descriptive names |
|
|
142
|
+
| `data`, `info`, `utils` | Names that reveal intent |
|
|
143
|
+
| Functions named after how they do it | Names that state what they return/do |
|
|
144
|
+
| Inconsistent terminology | Match the dominant vocabulary of the file |
|
|
145
|
+
|
|
146
|
+
### Redundancy
|
|
147
|
+
|
|
148
|
+
| Smell | Safer simplification |
|
|
149
|
+
| ----- | -------------------- |
|
|
150
|
+
| Copy-pasted blocks | Extract only if the abstraction is obvious and local |
|
|
151
|
+
| Duplicated guards | Centralize at the boundary or remove unreachable ones |
|
|
152
|
+
| Comments restating the code | Delete; keep comments that explain *why* |
|
|
153
|
+
| Dead imports, variables, branches | Delete after confirming with the compiler/linter |
|
|
154
|
+
| AI-ish filler (`// do something`, `// end of function`) | Delete |
|
|
155
|
+
|
|
156
|
+
## Rule of 500
|
|
157
|
+
|
|
158
|
+
A function, method, or component that exceeds roughly 500 logical characters (or 40–50 lines) deserves scrutiny. It is not an automatic crime, but it is a signal: the unit may be doing too much. Before splitting, prove you understand the behavior and that the split improves clarity without creating indirection.
|
|
159
|
+
|
|
160
|
+
## Language-Specific Guidance
|
|
161
|
+
|
|
162
|
+
### TypeScript
|
|
163
|
+
|
|
164
|
+
- Prefer `const` and literal union types over strings where appropriate.
|
|
165
|
+
- Remove redundant type annotations that the compiler already infers.
|
|
166
|
+
- Delete unused generic parameters and empty interfaces.
|
|
167
|
+
- Simplify `Promise.resolve` chains and `async` wrappers that add no value.
|
|
168
|
+
- Avoid `any` leaks; narrow types instead of broadening them during cleanup.
|
|
169
|
+
|
|
170
|
+
### Python
|
|
171
|
+
|
|
172
|
+
- Replace manual loops with comprehensions only when readability improves.
|
|
173
|
+
- Use dataclasses or named tuples for simple data carriers.
|
|
174
|
+
- Remove redundant `if x == True` and explicit `return None` at the end of functions.
|
|
175
|
+
- Prefer built-ins (`enumerate`, `zip`, `contextlib`) over custom machinery.
|
|
176
|
+
|
|
177
|
+
### React
|
|
178
|
+
|
|
179
|
+
- Split oversized components only when the split maps to a real UI boundary.
|
|
180
|
+
- Remove `useEffect`, `useMemo`, or `useCallback` that have no dependency-driven reason to exist.
|
|
181
|
+
- Inline trivial single-use helpers unless reuse is already present.
|
|
182
|
+
- Keep JSX flat; avoid nested ternary monsters — prefer early returns or helper components.
|
|
183
|
+
|
|
184
|
+
## Common Rationalizations
|
|
185
|
+
|
|
186
|
+
| Rationalization | Why it is wrong |
|
|
187
|
+
| --------------- | --------------- |
|
|
188
|
+
| "I'll just clean this up quickly while I'm here" | Expands scope and couples unrelated changes to the feature under test. |
|
|
189
|
+
| "It's only a rename" | Renames change call sites, imports, tests, and sometimes public APIs. Verify first. |
|
|
190
|
+
| "The tests don't cover this" | Then you cannot prove behavior was preserved. Add coverage or leave it. |
|
|
191
|
+
| "It's obviously dead code" | Prove it with compiler, linter, and runtime callers. Chesterton's Fence applies. |
|
|
192
|
+
| "This makes it more elegant" | Elegance is subjective. Clarity and passing tests are objective. |
|
|
193
|
+
| "I'll revert if it breaks" | Cleanup mixed with feature work is hard to revert cleanly. Do cleanup after the feature is locked. |
|
|
194
|
+
|
|
195
|
+
## Red Flags
|
|
196
|
+
|
|
197
|
+
Stop and escalate if any of these appear during cleanup:
|
|
198
|
+
|
|
199
|
+
- The change requires updating tests because the tests were testing the old shape rather than behavior
|
|
200
|
+
- You find yourself rewriting public types, contracts, or APIs
|
|
201
|
+
- Cleanup is touching more than twice as many files as the original change
|
|
202
|
+
- You cannot name the exact verification command that proves nothing broke
|
|
203
|
+
- You are adding new dependencies, configuration, or build steps
|
|
204
|
+
- The code you are cleaning has no tests and no obvious callers
|
|
205
|
+
|
|
206
|
+
## Verification Checklist
|
|
207
|
+
|
|
208
|
+
Before claiming cleanup is complete, confirm:
|
|
209
|
+
|
|
210
|
+
- [ ] Baseline verification captured before cleanup
|
|
211
|
+
- [ ] Same verification rerun after every meaningful simplification
|
|
212
|
+
- [ ] All changed behavior is preserved; no functional changes introduced
|
|
213
|
+
- [ ] No new warnings, lint errors, or type errors introduced
|
|
214
|
+
- [ ] Public APIs and external contracts unchanged
|
|
215
|
+
- [ ] Diff is smaller or at least no larger in complexity
|
|
216
|
+
- [ ] Any untouched ugly areas are explicitly noted with a reason
|
|
217
|
+
|
|
218
|
+
## Output Checklist
|
|
219
|
+
|
|
220
|
+
- [ ] Baseline verification captured before cleanup
|
|
221
|
+
- [ ] Only changed files or directly adjacent support files touched
|
|
222
|
+
- [ ] Same verification rerun after cleanup
|
|
223
|
+
- [ ] Simplifications reported concretely
|
|
224
|
+
- [ ] No hidden architecture drift
|
|
225
|
+
|
|
226
|
+
## Consolidated Simplification Workflow
|
|
227
|
+
|
|
228
|
+
This is the canonical active simplification skill. It absorbs code-simplification. Only simplify after behavior is protected by tests or explicit verification. Avoid broad refactors bundled with feature work.
|
|
229
|
+
|
|
230
|
+
## Agent-Skills Compatibility
|
|
231
|
+
|
|
232
|
+
This skill is Pi's canonical equivalent of `code-simplification`: simplify working code while preserving exact behavior, respecting Chesterton's Fence, and re-verifying after cleanup.
|