@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,165 @@
|
|
|
1
|
+
# Tailwind Styling Utilities
|
|
2
|
+
|
|
3
|
+
Spacing, typography, colors, borders, shadows, transforms.
|
|
4
|
+
|
|
5
|
+
## Spacing
|
|
6
|
+
|
|
7
|
+
### Padding
|
|
8
|
+
```html
|
|
9
|
+
<div class="p-4">All</div>
|
|
10
|
+
<div class="px-6">X axis</div>
|
|
11
|
+
<div class="py-3">Y axis</div>
|
|
12
|
+
<div class="pt-8 pr-4 pb-2 pl-6">Individual</div>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Margin
|
|
16
|
+
```html
|
|
17
|
+
<div class="m-4">All</div>
|
|
18
|
+
<div class="mx-auto">Center</div>
|
|
19
|
+
<div class="my-6">Y axis</div>
|
|
20
|
+
<div class="-mt-4">Negative</div>
|
|
21
|
+
<div class="ml-auto">Push right</div>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Scale
|
|
25
|
+
```
|
|
26
|
+
0=0px, px=1px, 0.5=2px, 1=4px, 2=8px, 3=12px, 4=16px
|
|
27
|
+
6=24px, 8=32px, 12=48px, 16=64px, 24=96px
|
|
28
|
+
v4: Any value: mt-17, px-29
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Typography
|
|
32
|
+
|
|
33
|
+
```html
|
|
34
|
+
<!-- Size -->
|
|
35
|
+
<p class="text-xs">12px</p>
|
|
36
|
+
<p class="text-sm">14px</p>
|
|
37
|
+
<p class="text-base">16px</p>
|
|
38
|
+
<p class="text-lg">18px</p>
|
|
39
|
+
<p class="text-xl">20px</p>
|
|
40
|
+
<p class="text-2xl">24px</p>
|
|
41
|
+
<p class="text-4xl">36px</p>
|
|
42
|
+
|
|
43
|
+
<!-- Weight -->
|
|
44
|
+
<p class="font-light">300</p>
|
|
45
|
+
<p class="font-normal">400</p>
|
|
46
|
+
<p class="font-medium">500</p>
|
|
47
|
+
<p class="font-semibold">600</p>
|
|
48
|
+
<p class="font-bold">700</p>
|
|
49
|
+
|
|
50
|
+
<!-- Line height -->
|
|
51
|
+
<p class="leading-tight">1.25</p>
|
|
52
|
+
<p class="leading-normal">1.5</p>
|
|
53
|
+
<h1 class="text-4xl/tight">Combined</h1>
|
|
54
|
+
|
|
55
|
+
<!-- Transform -->
|
|
56
|
+
<p class="uppercase">UPPER</p>
|
|
57
|
+
<p class="lowercase">lower</p>
|
|
58
|
+
<p class="capitalize">Cap</p>
|
|
59
|
+
|
|
60
|
+
<!-- Decoration -->
|
|
61
|
+
<p class="underline">Underline</p>
|
|
62
|
+
<p class="line-through">Strike</p>
|
|
63
|
+
|
|
64
|
+
<!-- Overflow -->
|
|
65
|
+
<p class="truncate">Truncate...</p>
|
|
66
|
+
<p class="line-clamp-3">Clamp 3</p>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Colors
|
|
70
|
+
|
|
71
|
+
```html
|
|
72
|
+
<!-- Text -->
|
|
73
|
+
<p class="text-black">Black</p>
|
|
74
|
+
<p class="text-gray-500">Gray</p>
|
|
75
|
+
<p class="text-primary">CSS var</p>
|
|
76
|
+
<p class="text-muted-foreground">Muted</p>
|
|
77
|
+
|
|
78
|
+
<!-- Background -->
|
|
79
|
+
<div class="bg-white">White</div>
|
|
80
|
+
<div class="bg-blue-500">Blue</div>
|
|
81
|
+
<div class="bg-background">CSS var</div>
|
|
82
|
+
|
|
83
|
+
<!-- Opacity modifier -->
|
|
84
|
+
<div class="bg-black/75">75%</div>
|
|
85
|
+
<div class="text-blue-500/50">50%</div>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Gradients
|
|
89
|
+
|
|
90
|
+
```html
|
|
91
|
+
<div class="bg-linear-to-r from-blue-500 to-purple-600">Linear</div>
|
|
92
|
+
<div class="bg-linear-45 from-pink-500 to-yellow-500">Angle (v4)</div>
|
|
93
|
+
<div class="bg-linear-to-br from-pink-500 via-red-500 to-yellow-500">Via</div>
|
|
94
|
+
<div class="bg-linear-to-r/oklch from-indigo-500 to-teal-400">OKLCH (v4)</div>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Borders
|
|
98
|
+
|
|
99
|
+
```html
|
|
100
|
+
<!-- Width -->
|
|
101
|
+
<div class="border">1px all</div>
|
|
102
|
+
<div class="border-2">2px all</div>
|
|
103
|
+
<div class="border-t">Top only</div>
|
|
104
|
+
|
|
105
|
+
<!-- Color -->
|
|
106
|
+
<div class="border border-gray-300">Gray</div>
|
|
107
|
+
<div class="border border-border">CSS var</div>
|
|
108
|
+
|
|
109
|
+
<!-- Radius -->
|
|
110
|
+
<div class="rounded">0.25rem</div>
|
|
111
|
+
<div class="rounded-lg">0.5rem</div>
|
|
112
|
+
<div class="rounded-full">Pill</div>
|
|
113
|
+
<div class="rounded-t-lg">Top only</div>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Shadows
|
|
117
|
+
|
|
118
|
+
```html
|
|
119
|
+
<div class="shadow-sm">Small</div>
|
|
120
|
+
<div class="shadow">Default</div>
|
|
121
|
+
<div class="shadow-lg">Large</div>
|
|
122
|
+
<div class="shadow-xl">XL</div>
|
|
123
|
+
<div class="shadow-lg shadow-blue-500/50">Colored</div>
|
|
124
|
+
<div class="inset-shadow-sm">Inset (v4)</div>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Transforms
|
|
128
|
+
|
|
129
|
+
```html
|
|
130
|
+
<div class="scale-105">Scale</div>
|
|
131
|
+
<div class="rotate-45">Rotate</div>
|
|
132
|
+
<div class="translate-x-4">Move</div>
|
|
133
|
+
|
|
134
|
+
<!-- 3D (v4) -->
|
|
135
|
+
<div class="rotate-x-45">X</div>
|
|
136
|
+
<div class="rotate-y-30">Y</div>
|
|
137
|
+
<div class="perspective-distant">Perspective</div>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Transitions
|
|
141
|
+
|
|
142
|
+
```html
|
|
143
|
+
<div class="transition-all">All</div>
|
|
144
|
+
<div class="transition-colors">Colors</div>
|
|
145
|
+
<div class="transition-transform">Transform</div>
|
|
146
|
+
<div class="duration-300">300ms</div>
|
|
147
|
+
<div class="ease-in-out">Easing</div>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Other
|
|
151
|
+
|
|
152
|
+
```html
|
|
153
|
+
<div class="opacity-50">50%</div>
|
|
154
|
+
<div class="cursor-pointer">Pointer</div>
|
|
155
|
+
<div class="select-none">No select</div>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Arbitrary Values
|
|
159
|
+
|
|
160
|
+
```html
|
|
161
|
+
<div class="p-[17px]">Custom</div>
|
|
162
|
+
<div class="bg-[#bada55]">Hex</div>
|
|
163
|
+
<div class="w-[calc(100%-2rem)]">Calc</div>
|
|
164
|
+
<div class="grid-cols-[1fr_500px_2fr]">Grid</div>
|
|
165
|
+
```
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Tailwind CSS v4 Configuration
|
|
2
|
+
|
|
3
|
+
v4.1.x (current: v4.1.18) - CSS-first config, no tailwind.config.js needed.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### Vite (Recommended)
|
|
8
|
+
```bash
|
|
9
|
+
npm i tailwindcss @tailwindcss/vite
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
// vite.config.ts
|
|
14
|
+
import tailwindcss from "@tailwindcss/vite"
|
|
15
|
+
export default { plugins: [tailwindcss()] }
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
```css
|
|
19
|
+
/* src/index.css */
|
|
20
|
+
@import "tailwindcss";
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### PostCSS
|
|
24
|
+
```bash
|
|
25
|
+
npm i tailwindcss @tailwindcss/postcss
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
// postcss.config.js
|
|
30
|
+
export default { plugins: ["@tailwindcss/postcss"] }
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## CSS-First Configuration
|
|
34
|
+
|
|
35
|
+
Configure in CSS with `@theme`:
|
|
36
|
+
|
|
37
|
+
```css
|
|
38
|
+
@import "tailwindcss";
|
|
39
|
+
|
|
40
|
+
@theme {
|
|
41
|
+
/* OKLCH colors for vivid, wide-gamut */
|
|
42
|
+
--color-brand-50: oklch(0.97 0.02 264);
|
|
43
|
+
--color-brand-500: oklch(0.55 0.22 264);
|
|
44
|
+
--color-brand-900: oklch(0.25 0.15 264);
|
|
45
|
+
|
|
46
|
+
/* Fonts */
|
|
47
|
+
--font-display: "Satoshi", sans-serif;
|
|
48
|
+
--font-body: "Inter", system-ui, sans-serif;
|
|
49
|
+
|
|
50
|
+
/* Spacing, breakpoints, easing */
|
|
51
|
+
--spacing-18: calc(var(--spacing) * 18);
|
|
52
|
+
--breakpoint-3xl: 1920px;
|
|
53
|
+
--ease-fluid: cubic-bezier(0.3, 0, 0, 1);
|
|
54
|
+
|
|
55
|
+
/* Shadows */
|
|
56
|
+
--shadow-glow: 0 0 20px oklch(0.55 0.22 264 / 0.3);
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Usage: `<div class="bg-brand-500 font-display shadow-glow">`
|
|
61
|
+
|
|
62
|
+
## Key v4 Changes from v3
|
|
63
|
+
|
|
64
|
+
| v3 | v4 |
|
|
65
|
+
|----|-----|
|
|
66
|
+
| `@tailwind base/components/utilities` | `@import "tailwindcss"` |
|
|
67
|
+
| `tailwind.config.js` | `@theme` directive |
|
|
68
|
+
| `content: [...]` array | Automatic detection |
|
|
69
|
+
| sRGB colors | OKLCH/P3 colors |
|
|
70
|
+
| `bg-opacity-50` | `bg-black/50` modifier |
|
|
71
|
+
| Plugin for container queries | Built-in `@container` |
|
|
72
|
+
|
|
73
|
+
## Automatic Content Detection
|
|
74
|
+
|
|
75
|
+
No `content` array. Auto-ignores `.gitignore` and binary files.
|
|
76
|
+
|
|
77
|
+
Add sources manually if needed:
|
|
78
|
+
```css
|
|
79
|
+
@source "../node_modules/@my-company/ui-lib";
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Dynamic Values
|
|
83
|
+
|
|
84
|
+
Any value works without config:
|
|
85
|
+
```html
|
|
86
|
+
<div class="grid grid-cols-15">
|
|
87
|
+
<div class="mt-17 px-29">
|
|
88
|
+
<div data-active class="data-active:bg-blue-500">
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## OKLCH Colors
|
|
92
|
+
|
|
93
|
+
Wider gamut, more vivid:
|
|
94
|
+
```css
|
|
95
|
+
@theme {
|
|
96
|
+
--color-primary-50: oklch(0.98 0.02 250);
|
|
97
|
+
--color-primary-500: oklch(0.65 0.22 250);
|
|
98
|
+
--color-primary-900: oklch(0.25 0.15 250);
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Opacity modifier: `<div class="bg-primary-500/50">`
|
|
103
|
+
|
|
104
|
+
## Custom Utilities & Variants
|
|
105
|
+
|
|
106
|
+
```css
|
|
107
|
+
@utility glass {
|
|
108
|
+
background: oklch(1 0 0 / 0.1);
|
|
109
|
+
backdrop-filter: blur(10px);
|
|
110
|
+
border: 1px solid oklch(1 0 0 / 0.2);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@custom-variant theme-dark (&:where([data-theme="dark"] *));
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Layer Organization
|
|
117
|
+
|
|
118
|
+
```css
|
|
119
|
+
@layer base { h1 { @apply text-4xl font-bold; } }
|
|
120
|
+
@layer components { .btn { @apply px-4 py-2 rounded-lg; } }
|
|
121
|
+
@layer utilities { .text-balance { text-wrap: balance; } }
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Dark Mode
|
|
125
|
+
|
|
126
|
+
Class strategy by default:
|
|
127
|
+
```html
|
|
128
|
+
<html class="dark">
|
|
129
|
+
<div class="bg-white dark:bg-zinc-900">
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Migration from v3
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npx @tailwindcss/upgrade
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- Move `tailwind.config.js` to `@theme`
|
|
139
|
+
- Replace `@tailwind` with `@import "tailwindcss"`
|
|
140
|
+
- Remove `content` array
|
|
141
|
+
- Replace `bg-opacity-*` with `/opacity` modifier
|
|
142
|
+
|
|
143
|
+
## Performance
|
|
144
|
+
|
|
145
|
+
- Full builds: 3.5x+ faster
|
|
146
|
+
- Incremental: 8x+ faster
|
|
147
|
+
- No-new-CSS: 100x+ faster (microseconds)
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Tailwind CSS v4 New Features
|
|
2
|
+
|
|
3
|
+
v4/v4.1 additions: gradients, 3D transforms, masks, text shadows, new variants.
|
|
4
|
+
|
|
5
|
+
## Container Queries (Built-in)
|
|
6
|
+
|
|
7
|
+
No plugin needed:
|
|
8
|
+
```html
|
|
9
|
+
<div class="@container">
|
|
10
|
+
<div class="grid grid-cols-1 @sm:grid-cols-2 @lg:grid-cols-4">
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<!-- Max-width -->
|
|
14
|
+
<div class="grid-cols-3 @max-md:grid-cols-1">
|
|
15
|
+
|
|
16
|
+
<!-- Range -->
|
|
17
|
+
<div class="@min-md:@max-xl:hidden">
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Gradients
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<!-- Angle-based -->
|
|
24
|
+
<div class="bg-linear-45 from-indigo-500 to-pink-500">
|
|
25
|
+
|
|
26
|
+
<!-- OKLCH interpolation -->
|
|
27
|
+
<div class="bg-linear-to-r/oklch from-indigo-500 to-teal-400">
|
|
28
|
+
|
|
29
|
+
<!-- Conic and radial -->
|
|
30
|
+
<div class="bg-conic from-red-500 to-red-500">
|
|
31
|
+
<div class="bg-radial from-white to-zinc-900">
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 3D Transforms
|
|
35
|
+
|
|
36
|
+
```html
|
|
37
|
+
<div class="perspective-distant">
|
|
38
|
+
<div class="rotate-x-45 rotate-z-30 transform-3d">
|
|
39
|
+
</div>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## @starting-style (Enter Transitions)
|
|
43
|
+
|
|
44
|
+
```html
|
|
45
|
+
<div popover class="transition-all starting:open:opacity-0 starting:open:scale-95">
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## not-* Variant
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<div class="not-hover:opacity-75">
|
|
52
|
+
<div class="not-supports-backdrop-blur:bg-white">
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Text Shadows (v4.1)
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<p class="text-shadow-sm">Small</p>
|
|
59
|
+
<p class="text-shadow-lg">Large</p>
|
|
60
|
+
<p class="text-shadow-lg text-shadow-blue-500/50">Colored</p>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Masks (v4.1)
|
|
64
|
+
|
|
65
|
+
```html
|
|
66
|
+
<div class="mask-t-from-50%">Fade from top</div>
|
|
67
|
+
<div class="mask-b-from-20% mask-b-to-80%">Bottom fade</div>
|
|
68
|
+
<div class="mask-radial-from-70%">Radial</div>
|
|
69
|
+
<div class="mask-b-from-50% mask-radial-from-80%">Combined</div>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Other v4.1 Utilities
|
|
73
|
+
|
|
74
|
+
```html
|
|
75
|
+
<!-- Colored drop shadows -->
|
|
76
|
+
<svg class="drop-shadow-xl drop-shadow-cyan-500/50">
|
|
77
|
+
|
|
78
|
+
<!-- Overflow wrap -->
|
|
79
|
+
<p class="wrap-break-word">Break words</p>
|
|
80
|
+
<p class="wrap-anywhere">Break anywhere</p>
|
|
81
|
+
|
|
82
|
+
<!-- Safe alignment -->
|
|
83
|
+
<div class="flex justify-center-safe">
|
|
84
|
+
|
|
85
|
+
<!-- Baseline alignment -->
|
|
86
|
+
<div class="items-baseline-last">
|
|
87
|
+
|
|
88
|
+
<!-- Color scheme -->
|
|
89
|
+
<html class="color-scheme-dark">
|
|
90
|
+
|
|
91
|
+
<!-- Field sizing -->
|
|
92
|
+
<textarea class="field-sizing-content">
|
|
93
|
+
|
|
94
|
+
<!-- Inert styling -->
|
|
95
|
+
<div class="inert:opacity-50" inert>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## New v4.1 Variants
|
|
99
|
+
|
|
100
|
+
```html
|
|
101
|
+
<!-- Pointer device -->
|
|
102
|
+
<div class="pointer-fine:p-2 pointer-coarse:p-4">
|
|
103
|
+
|
|
104
|
+
<!-- Form validation (after interaction) -->
|
|
105
|
+
<input class="user-valid:border-green-500 user-invalid:border-red-500">
|
|
106
|
+
|
|
107
|
+
<!-- Details content -->
|
|
108
|
+
<details class="details-content:mt-3">
|
|
109
|
+
|
|
110
|
+
<!-- Inverted colors -->
|
|
111
|
+
<div class="inverted-colors:shadow-none">
|
|
112
|
+
|
|
113
|
+
<!-- Noscript -->
|
|
114
|
+
<div class="noscript:block hidden">Enable JS</div>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Source Directives (v4.1)
|
|
118
|
+
|
|
119
|
+
```css
|
|
120
|
+
/* Ignore paths */
|
|
121
|
+
@source not "./src/legacy";
|
|
122
|
+
|
|
123
|
+
/* Safelist utilities */
|
|
124
|
+
@source inline("underline");
|
|
125
|
+
|
|
126
|
+
/* Brace expansion */
|
|
127
|
+
@source inline("{hover:,}bg-red-{100..900..100}");
|
|
128
|
+
```
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frontend-ui-engineering
|
|
3
|
+
description: "Builds production-quality UIs. Auto-load when editing *.tsx,*.jsx,*.css,*.scss. Use when building or modifying user-facing interfaces, creating components, implementing layouts, managing state, or when output needs to look production-quality rather than AI-generated. Risk: Medium."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Frontend UI Engineering
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Build production-quality user interfaces that are accessible, performant, and visually polished. The goal is UI that looks like it was built by a design-aware engineer at a top company — not like it was generated by an AI. This means real design system adherence, proper accessibility, thoughtful interaction patterns, and no generic "AI aesthetic."
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- Building new UI components or pages
|
|
15
|
+
- Modifying existing user-facing interfaces
|
|
16
|
+
- Implementing responsive layouts
|
|
17
|
+
- Adding interactivity or state management
|
|
18
|
+
- Fixing visual or UX issues
|
|
19
|
+
|
|
20
|
+
## When NOT to Use
|
|
21
|
+
|
|
22
|
+
- Backend/logic-only work with no user-facing surface — use `incremental-implementation` or domain skills
|
|
23
|
+
- Pure design-system/token work without implementation — use `design-system-audit` / `frontend-design`
|
|
24
|
+
- Throwaway prototypes where production quality doesn't matter
|
|
25
|
+
- The UI is already polished and the task is a non-visual change
|
|
26
|
+
|
|
27
|
+
## Related Skills
|
|
28
|
+
|
|
29
|
+
This skill composes with others for a complete frontend quality pipeline:
|
|
30
|
+
|
|
31
|
+
| Skill | Relationship | When to combine |
|
|
32
|
+
|-------|-------------|-----------------|
|
|
33
|
+
| `frontend-design` | Sibling | `frontend-design` covers general UI patterns with React. `frontend-ui-engineering` adds production-quality standards (accessibility, AI-aesthetic avoidance). Load both for serious UI work. |
|
|
34
|
+
| `design-taste-frontend` | Upstream | Apply design-taste rules FIRST to establish the aesthetic baseline. Then use `frontend-ui-engineering` for implementation quality. |
|
|
35
|
+
| `react-best-practices` | Complement | Load when building React/Next.js components — covers performance-specific patterns (memo, useMemo, server components). |
|
|
36
|
+
| `accessibility-audit` | Gate | After building UI, run `accessibility-audit` to verify WCAG 2.1 AA compliance. |
|
|
37
|
+
| `performance-optimization` | Gate | After UI is working, profile with `performance-optimization` for Core Web Vitals. |
|
|
38
|
+
| `mockup-to-code` | Upstream | If converting from Figma/mockup, run `mockup-to-code` first, then refine with `frontend-ui-engineering`. |
|
|
39
|
+
|
|
40
|
+
**Pipeline:** `design-taste-frontend` → `frontend-ui-engineering` → `accessibility-audit` + `performance-optimization`
|
|
41
|
+
|
|
42
|
+
## Component Architecture
|
|
43
|
+
|
|
44
|
+
### File Structure
|
|
45
|
+
|
|
46
|
+
Colocate everything related to a component:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
src/components/
|
|
50
|
+
TaskList/
|
|
51
|
+
TaskList.tsx # Component implementation
|
|
52
|
+
TaskList.test.tsx # Tests
|
|
53
|
+
TaskList.stories.tsx # Storybook stories (if using)
|
|
54
|
+
use-task-list.ts # Custom hook (if complex state)
|
|
55
|
+
types.ts # Component-specific types (if needed)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Component Patterns
|
|
59
|
+
|
|
60
|
+
**Prefer composition over configuration:**
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
// Good: Composable
|
|
64
|
+
<Card>
|
|
65
|
+
<CardHeader>
|
|
66
|
+
<CardTitle>Tasks</CardTitle>
|
|
67
|
+
</CardHeader>
|
|
68
|
+
<CardBody>
|
|
69
|
+
<TaskList tasks={tasks} />
|
|
70
|
+
</CardBody>
|
|
71
|
+
</Card>
|
|
72
|
+
|
|
73
|
+
// Avoid: Over-configured
|
|
74
|
+
<Card
|
|
75
|
+
title="Tasks"
|
|
76
|
+
headerVariant="large"
|
|
77
|
+
bodyPadding="md"
|
|
78
|
+
content={<TaskList tasks={tasks} />}
|
|
79
|
+
/>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Keep components focused — one responsibility per component.**
|
|
83
|
+
|
|
84
|
+
**Separate data fetching from presentation:**
|
|
85
|
+
- Container components handle data (loading, error, empty states)
|
|
86
|
+
- Presentation components handle rendering
|
|
87
|
+
|
|
88
|
+
## State Management
|
|
89
|
+
|
|
90
|
+
Choose the simplest approach that works:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Local state (useState) → Component-specific UI state
|
|
94
|
+
Lifted state → Shared between 2-3 sibling components
|
|
95
|
+
Context → Theme, auth, locale (read-heavy, write-rare)
|
|
96
|
+
URL state (searchParams) → Filters, pagination, shareable UI state
|
|
97
|
+
Server state (React Query, SWR) → Remote data with caching
|
|
98
|
+
Global store (Zustand, Redux) → Complex client state shared app-wide
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Avoid prop drilling deeper than 3 levels.** Use context or restructure.
|
|
102
|
+
|
|
103
|
+
## Design System Adherence
|
|
104
|
+
|
|
105
|
+
### Avoid the AI Aesthetic
|
|
106
|
+
|
|
107
|
+
AI-generated UI has recognizable patterns. Avoid all of them:
|
|
108
|
+
|
|
109
|
+
| AI Default | Production Quality |
|
|
110
|
+
|---|---|
|
|
111
|
+
| Purple/indigo everything | Use the project's actual color palette |
|
|
112
|
+
| Excessive gradients | Flat or subtle gradients matching the design system |
|
|
113
|
+
| Rounded everything (rounded-2xl) | Consistent border-radius from the design system |
|
|
114
|
+
| Generic hero sections | Content-first layouts |
|
|
115
|
+
| Lorem ipsum-style copy | Realistic placeholder content |
|
|
116
|
+
| Oversized padding everywhere | Consistent spacing scale |
|
|
117
|
+
| Stock card grids | Purpose-driven layouts |
|
|
118
|
+
| Shadow-heavy design | Subtle or no shadows unless design system specifies |
|
|
119
|
+
|
|
120
|
+
### Spacing and Layout
|
|
121
|
+
|
|
122
|
+
Use a consistent spacing scale. Don't invent values:
|
|
123
|
+
|
|
124
|
+
```css
|
|
125
|
+
/* Use the scale: 0.25rem increments */
|
|
126
|
+
/* Good */ padding: 1rem; /* 16px */
|
|
127
|
+
/* Good */ gap: 0.75rem; /* 12px */
|
|
128
|
+
/* Bad */ padding: 13px; /* Not on any scale */
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Typography
|
|
132
|
+
|
|
133
|
+
Respect type hierarchy: h1 (one per page) → h2 → h3 → body → small. Don't skip heading levels.
|
|
134
|
+
|
|
135
|
+
### Color
|
|
136
|
+
|
|
137
|
+
- Use semantic color tokens (`text-primary`, `bg-surface`) — not raw hex values
|
|
138
|
+
- Ensure sufficient contrast (4.5:1 normal text, 3:1 large text)
|
|
139
|
+
- Don't rely solely on color for information (add icons, text, or patterns)
|
|
140
|
+
|
|
141
|
+
## Accessibility (WCAG 2.1 AA)
|
|
142
|
+
|
|
143
|
+
### Keyboard Navigation
|
|
144
|
+
|
|
145
|
+
Every interactive element must be keyboard accessible. Use native `<button>` and `<a>` — not `<div onClick>`.
|
|
146
|
+
|
|
147
|
+
### ARIA Labels
|
|
148
|
+
|
|
149
|
+
```tsx
|
|
150
|
+
// Icon-only buttons need aria-label
|
|
151
|
+
<button aria-label="Close dialog"><XIcon /></button>
|
|
152
|
+
|
|
153
|
+
// Form inputs need labels
|
|
154
|
+
<label htmlFor="email">Email</label>
|
|
155
|
+
<input id="email" type="email" />
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Focus Management
|
|
159
|
+
|
|
160
|
+
Trap focus inside modals while open, return focus on close. Move focus when content changes significantly.
|
|
161
|
+
|
|
162
|
+
### Meaningful Empty and Error States
|
|
163
|
+
|
|
164
|
+
Never show blank screens. Every component must handle: loading state, empty state, error state, and the normal data state.
|
|
165
|
+
|
|
166
|
+
## Responsive Design
|
|
167
|
+
|
|
168
|
+
Design for mobile first, then expand:
|
|
169
|
+
|
|
170
|
+
```tsx
|
|
171
|
+
<div className="
|
|
172
|
+
grid grid-cols-1 /* Mobile: single column */
|
|
173
|
+
sm:grid-cols-2 /* Small: 2 columns */
|
|
174
|
+
lg:grid-cols-3 /* Large: 3 columns */
|
|
175
|
+
gap-4
|
|
176
|
+
">
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Test at: 320px, 768px, 1024px, 1440px.
|
|
180
|
+
|
|
181
|
+
## Loading and Transitions
|
|
182
|
+
|
|
183
|
+
- Use skeleton loading for content (not spinners)
|
|
184
|
+
- Use optimistic updates for perceived speed
|
|
185
|
+
- `aria-busy="true"` on loading regions
|
|
186
|
+
- Avoid layout shifts during loading (reserve space)
|
|
187
|
+
|
|
188
|
+
## Common Rationalizations
|
|
189
|
+
|
|
190
|
+
| Rationalization | Reality |
|
|
191
|
+
|---|---|
|
|
192
|
+
| "Accessibility is a nice-to-have" | It's a legal requirement in many jurisdictions and an engineering quality standard. |
|
|
193
|
+
| "We'll make it responsive later" | Retrofitting responsive design is 3x harder than building it from the start. |
|
|
194
|
+
| "The design isn't final, so I'll skip styling" | Use the design system defaults. Unstyled UI creates a broken first impression. |
|
|
195
|
+
| "This is just a prototype" | Prototypes become production code. Build the foundation right. |
|
|
196
|
+
| "The AI aesthetic is fine for now" | It signals low quality. Use the project's actual design system from the start. |
|
|
197
|
+
|
|
198
|
+
## Red Flags
|
|
199
|
+
|
|
200
|
+
- Components with more than 200 lines (split them)
|
|
201
|
+
- Inline styles or arbitrary pixel values
|
|
202
|
+
- Missing error states, loading states, or empty states
|
|
203
|
+
- No keyboard navigation testing
|
|
204
|
+
- Color as the sole indicator of state (red/green without text or icons)
|
|
205
|
+
- Generic "AI look" (purple gradients, oversized cards, stock layouts)
|
|
206
|
+
|
|
207
|
+
## Verification
|
|
208
|
+
|
|
209
|
+
After building UI:
|
|
210
|
+
|
|
211
|
+
- [ ] Component renders without console errors
|
|
212
|
+
- [ ] All interactive elements are keyboard accessible (Tab through the page)
|
|
213
|
+
- [ ] Screen reader can convey the page's content and structure
|
|
214
|
+
- [ ] Responsive: works at 320px, 768px, 1024px, 1440px
|
|
215
|
+
- [ ] Loading, error, and empty states all handled
|
|
216
|
+
- [ ] Follows the project's design system (spacing, colors, typography)
|
|
217
|
+
- [ ] No accessibility warnings in dev tools or axe-core
|