@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,293 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-and-hardening
|
|
3
|
+
description: Use when auditing for security vulnerabilities, implementing auth/authz, handling secrets, or hardening against OWASP Top 10 — covers input validation, authentication, dependency auditing, and secure defaults
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Security & Hardening
|
|
7
|
+
|
|
8
|
+
> **Replaces** "we'll add security later" with security-by-default patterns applied from the start
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- Implementing authentication or authorization
|
|
13
|
+
- Handling user input that touches databases, file systems, or external services
|
|
14
|
+
- Reviewing code for security vulnerabilities
|
|
15
|
+
- Running dependency audits or responding to CVE alerts
|
|
16
|
+
- Deploying to production for the first time
|
|
17
|
+
|
|
18
|
+
## When NOT to Use
|
|
19
|
+
|
|
20
|
+
- Local-only developer tools with no network exposure
|
|
21
|
+
- Throwaway prototypes that will never see user data
|
|
22
|
+
- Performance optimization (that's a different skill)
|
|
23
|
+
|
|
24
|
+
## Overview
|
|
25
|
+
|
|
26
|
+
Security is a constraint, not a feature. It should be present by default and requires explicit justification to relax.
|
|
27
|
+
|
|
28
|
+
**Core principle:** Validate all input. Authenticate all access. Encrypt all secrets. Audit all dependencies. Trust nothing from outside your process boundary.
|
|
29
|
+
|
|
30
|
+
## Security Boundaries
|
|
31
|
+
|
|
32
|
+
### Always
|
|
33
|
+
|
|
34
|
+
- Validate and sanitize all user input at the boundary
|
|
35
|
+
- Use parameterized queries (never string interpolation for SQL)
|
|
36
|
+
- Hash passwords with bcrypt/scrypt/argon2 (never MD5/SHA for passwords)
|
|
37
|
+
- Use HTTPS for all external communication
|
|
38
|
+
- Store secrets in environment variables, never in code
|
|
39
|
+
- Set secure defaults (CORS restrictive, CSP strict, cookies httpOnly+secure)
|
|
40
|
+
|
|
41
|
+
### Ask First
|
|
42
|
+
|
|
43
|
+
- Changing authentication mechanism or session handling
|
|
44
|
+
- Adding new API endpoints that accept user data
|
|
45
|
+
- Modifying CORS policy or CSP headers
|
|
46
|
+
- Adding new third-party dependencies with network access
|
|
47
|
+
- Storing new types of PII or sensitive data
|
|
48
|
+
|
|
49
|
+
### Never
|
|
50
|
+
|
|
51
|
+
- Commit secrets, API keys, or credentials to git
|
|
52
|
+
- Disable CSRF protection
|
|
53
|
+
- Use `eval()` or `Function()` with user input
|
|
54
|
+
- Trust client-side validation as the only validation
|
|
55
|
+
- Log sensitive data (passwords, tokens, PII)
|
|
56
|
+
|
|
57
|
+
## OWASP Top 10 Patterns
|
|
58
|
+
|
|
59
|
+
### 1. Injection (SQL, NoSQL, Command)
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
// [ ] SQL Injection
|
|
63
|
+
const user = await db.query(`SELECT * FROM users WHERE id = '${userId}'`);
|
|
64
|
+
|
|
65
|
+
// [x] Parameterized query
|
|
66
|
+
const user = await db.query("SELECT * FROM users WHERE id = $1", [userId]);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
// [ ] Command injection
|
|
71
|
+
exec(`convert ${filename} output.png`);
|
|
72
|
+
|
|
73
|
+
// [x] Safe argument passing
|
|
74
|
+
execFile("convert", [filename, "output.png"]);
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 2. Broken Authentication
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
// [x] Password hashing
|
|
81
|
+
import bcrypt from "bcrypt";
|
|
82
|
+
const hash = await bcrypt.hash(password, 12); // cost factor 12
|
|
83
|
+
const valid = await bcrypt.compare(input, hash);
|
|
84
|
+
|
|
85
|
+
// [x] Session management
|
|
86
|
+
const session = {
|
|
87
|
+
httpOnly: true, // No JS access
|
|
88
|
+
secure: true, // HTTPS only
|
|
89
|
+
sameSite: "lax", // CSRF protection
|
|
90
|
+
maxAge: 3600, // 1 hour expiry
|
|
91
|
+
};
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 3. Sensitive Data Exposure
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
// [ ] Logging sensitive data
|
|
98
|
+
console.log("User login:", { email, password });
|
|
99
|
+
|
|
100
|
+
// [x] Redact sensitive fields
|
|
101
|
+
console.log("User login:", { email, password: "[REDACTED]" });
|
|
102
|
+
|
|
103
|
+
// [x] API response excludes internal fields
|
|
104
|
+
function toPublicUser(user: DbUser): PublicUser {
|
|
105
|
+
const { passwordHash, internalId, ...publicFields } = user;
|
|
106
|
+
return publicFields;
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 4. Broken Access Control
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
// [ ] No authorization check
|
|
114
|
+
app.get("/api/users/:id", async (req, res) => {
|
|
115
|
+
const user = await getUser(req.params.id);
|
|
116
|
+
res.json(user); // Any authenticated user can access any profile
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// [x] Authorization check
|
|
120
|
+
app.get("/api/users/:id", async (req, res) => {
|
|
121
|
+
const user = await getUser(req.params.id);
|
|
122
|
+
if (user.id !== req.auth.userId && !req.auth.isAdmin) {
|
|
123
|
+
return res.status(403).json({ error: "Forbidden" });
|
|
124
|
+
}
|
|
125
|
+
res.json(user);
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 5. Security Misconfiguration
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
// [x] Secure headers (use helmet for Express)
|
|
133
|
+
import helmet from "helmet";
|
|
134
|
+
app.use(helmet());
|
|
135
|
+
|
|
136
|
+
// [x] CORS — restrictive by default
|
|
137
|
+
app.use(
|
|
138
|
+
cors({
|
|
139
|
+
origin: ["https://myapp.com"], // Not '*'
|
|
140
|
+
methods: ["GET", "POST"],
|
|
141
|
+
credentials: true,
|
|
142
|
+
}),
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
// [x] CSP
|
|
146
|
+
app.use(
|
|
147
|
+
helmet.contentSecurityPolicy({
|
|
148
|
+
directives: {
|
|
149
|
+
defaultSrc: ["'self'"],
|
|
150
|
+
scriptSrc: ["'self'"], // No 'unsafe-inline'
|
|
151
|
+
styleSrc: ["'self'", "'unsafe-inline'"], // Only if needed
|
|
152
|
+
},
|
|
153
|
+
}),
|
|
154
|
+
);
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Input Validation Patterns
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
import { z } from "zod";
|
|
161
|
+
|
|
162
|
+
// [x] Validate at the boundary
|
|
163
|
+
const createUserSchema = z.object({
|
|
164
|
+
name: z.string().min(1).max(100).trim(),
|
|
165
|
+
email: z.string().email().max(254),
|
|
166
|
+
age: z.number().int().min(0).max(150).optional(),
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
// [x] Reject unknown fields
|
|
170
|
+
const input = createUserSchema.strict().parse(req.body);
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
| Input Type | Validation |
|
|
174
|
+
| ----------- | -------------------------------------------- |
|
|
175
|
+
| String | Min/max length, regex pattern, trim |
|
|
176
|
+
| Number | Min/max range, integer check |
|
|
177
|
+
| Email | Format validation, max 254 chars |
|
|
178
|
+
| URL | Protocol whitelist (https only) |
|
|
179
|
+
| File upload | Type whitelist, max size, content validation |
|
|
180
|
+
| Array | Max length, item validation |
|
|
181
|
+
|
|
182
|
+
## Dependency Audit
|
|
183
|
+
|
|
184
|
+
### npm Audit Triage
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Run audit
|
|
188
|
+
npm audit
|
|
189
|
+
|
|
190
|
+
# Decision tree per vulnerability:
|
|
191
|
+
# 1. Is it in production dependencies? (devDeps are lower priority)
|
|
192
|
+
# 2. Is the vulnerability reachable in our usage?
|
|
193
|
+
# 3. Is a patch available? → Update
|
|
194
|
+
# 4. No patch? → Find alternative or add compensating control
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
| Severity | Action | Timeline |
|
|
198
|
+
| -------- | --------------------- | ---------------------- |
|
|
199
|
+
| Critical | Fix immediately | Same day |
|
|
200
|
+
| High | Fix in current sprint | Within 1 week |
|
|
201
|
+
| Medium | Plan fix | Within 1 month |
|
|
202
|
+
| Low | Track and monitor | Next convenient update |
|
|
203
|
+
|
|
204
|
+
### Supply Chain Security
|
|
205
|
+
|
|
206
|
+
- [ ] Use lockfile (`package-lock.json` / `pnpm-lock.yaml`) — commit it
|
|
207
|
+
- [ ] Pin major versions in production dependencies
|
|
208
|
+
- [ ] Review new dependencies before adding (check maintainers, download count, last update)
|
|
209
|
+
- [ ] Enable Dependabot or Renovate for automated updates
|
|
210
|
+
- [ ] Use `npm audit` or `pnpm audit` in CI pipeline
|
|
211
|
+
|
|
212
|
+
## Secrets Management
|
|
213
|
+
|
|
214
|
+
| Rule | Implementation |
|
|
215
|
+
| ------------------------- | ------------------------------------------------ |
|
|
216
|
+
| Never in code | Use `.env` files (gitignored) or secret managers |
|
|
217
|
+
| Never in logs | Redact before logging |
|
|
218
|
+
| Never in URLs | Use headers or body for tokens |
|
|
219
|
+
| Rotate on exposure | Immediate rotation + audit trail |
|
|
220
|
+
| Different per environment | Staging keys ≠ production keys |
|
|
221
|
+
| Least privilege | Each secret grants minimum required access |
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
# [x] .gitignore
|
|
225
|
+
.env
|
|
226
|
+
.env.local
|
|
227
|
+
.env.*.local
|
|
228
|
+
*.key
|
|
229
|
+
*.pem
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Rate Limiting
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
// [x] Basic rate limiting
|
|
236
|
+
import rateLimit from "express-rate-limit";
|
|
237
|
+
|
|
238
|
+
const limiter = rateLimit({
|
|
239
|
+
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
240
|
+
max: 100, // 100 requests per window
|
|
241
|
+
standardHeaders: true,
|
|
242
|
+
legacyHeaders: false,
|
|
243
|
+
message: { error: "Too many requests, try again later" },
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
app.use("/api/", limiter);
|
|
247
|
+
|
|
248
|
+
// [x] Stricter limit for auth endpoints
|
|
249
|
+
const authLimiter = rateLimit({
|
|
250
|
+
windowMs: 15 * 60 * 1000,
|
|
251
|
+
max: 5, // 5 login attempts per 15 minutes
|
|
252
|
+
});
|
|
253
|
+
app.use("/api/auth/", authLimiter);
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
## Common Rationalizations
|
|
257
|
+
|
|
258
|
+
| Excuse | Rebuttal |
|
|
259
|
+
| ---------------------------------- | ----------------------------------------------------------------------------- |
|
|
260
|
+
| "It's an internal app" | Internal apps get compromised too. Validate all input regardless. |
|
|
261
|
+
| "We'll add security before launch" | Security retrofit is 10x harder than building it in. Start now. |
|
|
262
|
+
| "Nobody will find this endpoint" | Security through obscurity isn't security. Assume everything is discoverable. |
|
|
263
|
+
| "The framework handles it" | Frameworks have defaults, not guarantees. Verify your specific configuration. |
|
|
264
|
+
| "This is just a prototype" | Prototypes become production. Build secure habits from day one. |
|
|
265
|
+
| "The audit has too many warnings" | Triage by severity. Critical/High first, Low can wait. |
|
|
266
|
+
|
|
267
|
+
## Red Flags — STOP
|
|
268
|
+
|
|
269
|
+
- String concatenation in SQL queries
|
|
270
|
+
- Passwords stored in plaintext or MD5/SHA
|
|
271
|
+
- API keys or secrets in source code
|
|
272
|
+
- CORS set to `*` in production
|
|
273
|
+
- No rate limiting on authentication endpoints
|
|
274
|
+
- User input passed directly to `exec()`, `eval()`, or file system operations
|
|
275
|
+
- Dependencies with known critical CVEs
|
|
276
|
+
- No input validation at API boundaries
|
|
277
|
+
|
|
278
|
+
## Verification
|
|
279
|
+
|
|
280
|
+
- [ ] All user input validated with schemas at API boundaries
|
|
281
|
+
- [ ] SQL queries use parameterized statements
|
|
282
|
+
- [ ] Passwords hashed with bcrypt/scrypt/argon2 (cost ≥ 12)
|
|
283
|
+
- [ ] No secrets in source code or logs
|
|
284
|
+
- [ ] CORS, CSP, and security headers configured
|
|
285
|
+
- [ ] `npm audit` shows no critical/high vulnerabilities
|
|
286
|
+
- [ ] Rate limiting on authentication and sensitive endpoints
|
|
287
|
+
- [ ] Authorization checks on all protected resources
|
|
288
|
+
|
|
289
|
+
## See Also
|
|
290
|
+
|
|
291
|
+
- **defense-in-depth** — Validation at every layer, not just the boundary
|
|
292
|
+
- **api-and-interface-design** — Error responses that don't leak internals
|
|
293
|
+
- **ci-cd-and-automation** — Running security checks in CI pipeline
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Security Checklist
|
|
2
|
+
|
|
3
|
+
Quick reference for web application security. Use alongside the `security-and-hardening` skill.
|
|
4
|
+
|
|
5
|
+
## Threat Modeling (Start Here)
|
|
6
|
+
|
|
7
|
+
Before reaching for controls, spend five minutes thinking like an attacker:
|
|
8
|
+
|
|
9
|
+
- [ ] Trust boundaries mapped (requests, uploads, webhooks, third-party APIs, LLM output)
|
|
10
|
+
- [ ] Assets named (credentials, PII, payment data, admin actions, money movement)
|
|
11
|
+
- [ ] STRIDE run per boundary (Spoofing, Tampering, Repudiation, Info disclosure, DoS, Elevation)
|
|
12
|
+
- [ ] Abuse cases written next to use cases ("how would I misuse this?")
|
|
13
|
+
|
|
14
|
+
## Pre-Commit Checks
|
|
15
|
+
|
|
16
|
+
- [ ] No secrets in code (`git diff --cached | grep -i "password\|secret\|api_key\|token"`)
|
|
17
|
+
- [ ] `.gitignore` covers: `.env`, `.env.local`, `*.pem`, `*.key`
|
|
18
|
+
- [ ] `.env.example` uses placeholder values (not real secrets)
|
|
19
|
+
|
|
20
|
+
## Authentication
|
|
21
|
+
|
|
22
|
+
- [ ] Passwords hashed with bcrypt (≥12 rounds), scrypt, or argon2
|
|
23
|
+
- [ ] Session cookies: `httpOnly`, `secure`, `sameSite: 'lax'`
|
|
24
|
+
- [ ] Session expiration configured
|
|
25
|
+
- [ ] Rate limiting on login endpoint (≤10 attempts per 15 minutes)
|
|
26
|
+
- [ ] Password reset tokens: time-limited (≤1 hour), single-use
|
|
27
|
+
- [ ] Account lockout after repeated failures (optional, with notification)
|
|
28
|
+
- [ ] MFA supported for sensitive operations
|
|
29
|
+
|
|
30
|
+
## Authorization
|
|
31
|
+
|
|
32
|
+
- [ ] Every protected endpoint checks authentication
|
|
33
|
+
- [ ] Every resource access checks ownership/role (prevents IDOR)
|
|
34
|
+
- [ ] Admin endpoints require admin role verification
|
|
35
|
+
- [ ] API keys scoped to minimum necessary permissions
|
|
36
|
+
- [ ] JWT tokens validated (signature, expiration, issuer)
|
|
37
|
+
|
|
38
|
+
## Input Validation
|
|
39
|
+
|
|
40
|
+
- [ ] All user input validated at system boundaries
|
|
41
|
+
- [ ] Validation uses allowlists (not denylists)
|
|
42
|
+
- [ ] String lengths constrained, numeric ranges validated
|
|
43
|
+
- [ ] File uploads: type restricted, size limited, content verified
|
|
44
|
+
- [ ] SQL queries parameterized (no string concatenation)
|
|
45
|
+
- [ ] HTML output encoded (use framework auto-escaping)
|
|
46
|
+
- [ ] URLs validated before redirect (prevent open redirect)
|
|
47
|
+
- [ ] Server-side URL fetches allowlisted; private/reserved IPs blocked (prevent SSRF)
|
|
48
|
+
|
|
49
|
+
## Security Headers
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
Content-Security-Policy: default-src 'self'; script-src 'self'
|
|
53
|
+
Strict-Transport-Security: max-age=31536000; includeSubDomains
|
|
54
|
+
X-Content-Type-Options: nosniff
|
|
55
|
+
X-Frame-Options: DENY
|
|
56
|
+
Referrer-Policy: strict-origin-when-cross-origin
|
|
57
|
+
Permissions-Policy: camera=(), microphone=(), geolocation=()
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## CORS Configuration
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
cors({
|
|
64
|
+
origin: ['https://yourdomain.com'],
|
|
65
|
+
credentials: true,
|
|
66
|
+
methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
|
|
67
|
+
allowedHeaders: ['Content-Type', 'Authorization'],
|
|
68
|
+
})
|
|
69
|
+
// NEVER: cors({ origin: '*' })
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## AI / LLM Security
|
|
73
|
+
|
|
74
|
+
- [ ] Model output treated as untrusted — never into `eval`/SQL/shell/`innerHTML`/file paths
|
|
75
|
+
- [ ] Prompt injection assumed; permissions enforced in code, not in the system prompt
|
|
76
|
+
- [ ] Secrets, cross-tenant data, and full system prompts kept out of context window
|
|
77
|
+
- [ ] Tool/agent permissions scoped; destructive actions require confirmation
|
|
78
|
+
- [ ] Token, rate, and recursion/loop limits set
|
|
79
|
+
|
|
80
|
+
## OWASP Top 10 Quick Reference
|
|
81
|
+
|
|
82
|
+
| # | Vulnerability | Prevention |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| 1 | Broken Access Control | Auth checks on every endpoint, ownership verification |
|
|
85
|
+
| 2 | Cryptographic Failures | HTTPS, strong hashing, no secrets in code |
|
|
86
|
+
| 3 | Injection | Parameterized queries, input validation |
|
|
87
|
+
| 4 | Insecure Design | Threat modeling, spec-driven development |
|
|
88
|
+
| 5 | Security Misconfiguration | Security headers, minimal permissions, audit deps |
|
|
89
|
+
| 6 | Vulnerable Components | `npm audit`, keep deps updated |
|
|
90
|
+
| 7 | Auth Failures | Strong passwords, rate limiting, session management |
|
|
91
|
+
| 8 | Data Integrity Failures | Verify updates/dependencies, signed artifacts |
|
|
92
|
+
| 9 | Logging Failures | Log security events, don't log secrets |
|
|
93
|
+
| 10 | SSRF | Validate/allowlist URLs, restrict outbound requests |
|
|
94
|
+
|
|
95
|
+
## OWASP Top 10 for LLMs
|
|
96
|
+
|
|
97
|
+
| ID | Risk | Prevention |
|
|
98
|
+
|---|---|---|
|
|
99
|
+
| LLM01 | Prompt Injection | Enforce permissions in code, not system prompt |
|
|
100
|
+
| LLM02 | Sensitive Info Disclosure | Keep secrets/PII out of prompts; filter outputs |
|
|
101
|
+
| LLM03 | Supply Chain | Vet models, datasets, and plugins |
|
|
102
|
+
| LLM05 | Improper Output Handling | Treat model output as untrusted |
|
|
103
|
+
| LLM06 | Excessive Agency | Scope tool permissions; confirm destructive actions |
|
|
104
|
+
| LLM07 | System Prompt Leakage | Assume prompt can leak; put no secrets in it |
|
|
105
|
+
| LLM10 | Unbounded Consumption | Cap tokens, request rate, and loop depth |
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: shipping-and-launch
|
|
3
|
+
description: Guides final readiness checks, rollback planning, documentation, and release handoff. Use when preparing to merge, deploy, release, or declare a development branch complete.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Shipping & Launch
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Shipping should be boring because risk was removed earlier. The ship phase verifies readiness, documents what changed, and makes rollback possible.
|
|
11
|
+
|
|
12
|
+
Core principle: do not ship work that cannot be verified, explained, or rolled back.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- User says ship, merge, deploy, release, or finish.
|
|
17
|
+
- Before closing tracked work as complete.
|
|
18
|
+
- Before creating a PR or release notes.
|
|
19
|
+
- After build/review/QA phases pass.
|
|
20
|
+
|
|
21
|
+
## When NOT to Use
|
|
22
|
+
|
|
23
|
+
- Work is still being implemented.
|
|
24
|
+
- Critical review findings are open.
|
|
25
|
+
- Verification cannot run and no user-approved exception exists.
|
|
26
|
+
|
|
27
|
+
## Workflow
|
|
28
|
+
|
|
29
|
+
1. Check worktree state and identify intended changes.
|
|
30
|
+
2. Confirm spec/plan acceptance criteria are met.
|
|
31
|
+
3. Run required verification or use a fresh valid verification stamp.
|
|
32
|
+
4. Run phantom completion checks for stubs, placeholders, and disconnected wiring.
|
|
33
|
+
5. Review security/secrets/configuration risk in the diff.
|
|
34
|
+
6. Confirm docs/ADRs/changelog updates are sufficient.
|
|
35
|
+
7. Define rollback path: revert commit, feature flag, migration rollback, or manual procedure.
|
|
36
|
+
8. Present ship options when action is irreversible: PR, merge, deploy, hold.
|
|
37
|
+
9. Record handoff/memory when useful.
|
|
38
|
+
|
|
39
|
+
## Pre-Ship Checklist
|
|
40
|
+
|
|
41
|
+
- Tests relevant to changed behavior pass.
|
|
42
|
+
- Build/typecheck/lint pass or exceptions are documented.
|
|
43
|
+
- No high-severity review findings remain.
|
|
44
|
+
- No secrets or local-only paths in diff.
|
|
45
|
+
- User-facing/API behavior is documented.
|
|
46
|
+
- Rollback path is clear.
|
|
47
|
+
- User approval exists for irreversible actions.
|
|
48
|
+
|
|
49
|
+
## Common Rationalizations
|
|
50
|
+
|
|
51
|
+
| Rationalization | Rebuttal |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| "Tests passed earlier" | Fresh changes require fresh evidence or a valid unchanged-state stamp. |
|
|
54
|
+
| "Rollback is just git revert" | Migrations, flags, queues, and external state may need more. |
|
|
55
|
+
| "Docs can wait" | Shipped behavior without docs becomes support debt. |
|
|
56
|
+
| "Small release, no checklist" | Small releases still leak secrets and break config. |
|
|
57
|
+
|
|
58
|
+
## Red Flags
|
|
59
|
+
|
|
60
|
+
- Completion claim without verification evidence.
|
|
61
|
+
- Unresolved P0/P1 findings.
|
|
62
|
+
- No rollback plan for data or API changes.
|
|
63
|
+
- Changelog omits user-visible behavior changes.
|
|
64
|
+
- Deployment/merge attempted without explicit user approval.
|
|
65
|
+
- Placeholder/stub patterns remain in modified code.
|
|
66
|
+
|
|
67
|
+
## Verification
|
|
68
|
+
|
|
69
|
+
- Verification commands and outputs are recorded.
|
|
70
|
+
- Acceptance criteria are checked line-by-line.
|
|
71
|
+
- Phantom completion scan is clean or exceptions are explained.
|
|
72
|
+
- Rollback plan is documented.
|
|
73
|
+
- Final action is approved when irreversible.
|
|
74
|
+
|
|
75
|
+
## Skill Result Contract
|
|
76
|
+
|
|
77
|
+
```xml
|
|
78
|
+
<skill_result>
|
|
79
|
+
<skill>shipping-and-launch</skill>
|
|
80
|
+
<status>success|partial|blocked|failure</status>
|
|
81
|
+
<evidence>Verification commands, acceptance audit, review status, rollback plan</evidence>
|
|
82
|
+
<artifacts>Changelog, PR, release notes, handoff, or none</artifacts>
|
|
83
|
+
<risks>Open findings, skipped checks, deployment risk, or none</risks>
|
|
84
|
+
</skill_result>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
## Consolidated Branch Completion
|
|
89
|
+
|
|
90
|
+
`finishing-a-development-branch` was removed as a separate optional skill. Keep merge/PR/cleanup choices, release handoff, rollback planning, and completion evidence in this canonical shipping workflow.
|
|
91
|
+
|
|
92
|
+
## Verification
|
|
93
|
+
|
|
94
|
+
Before shipping:
|
|
95
|
+
|
|
96
|
+
- [ ] Rollback procedure is documented and tested
|
|
97
|
+
- [ ] Feature flags have kill switches configured
|
|
98
|
+
- [ ] Monitoring dashboards show real-time data
|
|
99
|
+
- [ ] Launch checklist items all have verification evidence
|
|
100
|
+
- [ ] On-call team is briefed on the deployment
|
|
101
|
+
- [ ] Staged rollout plan is documented (percentage, duration, abort criteria)
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: source-driven-development
|
|
3
|
+
description: Grounds implementation decisions in official docs, source code, and cited references. Use when using unfamiliar libraries, external APIs, framework behavior, or current ecosystem guidance.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Source-Driven Development
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Framework guesses become bugs. Source-driven work verifies behavior against authoritative references before implementation.
|
|
11
|
+
|
|
12
|
+
Core principle: cite the source for non-trivial external API decisions, or mark the decision as unverified.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- New or unfamiliar library/framework/API.
|
|
17
|
+
- Version-specific behavior matters.
|
|
18
|
+
- Choosing between packages or integration patterns.
|
|
19
|
+
- Error suggests external API misuse.
|
|
20
|
+
- User asks to research current best practice.
|
|
21
|
+
|
|
22
|
+
## When NOT to Use
|
|
23
|
+
|
|
24
|
+
- Pure local codebase questions; use code search/explore.
|
|
25
|
+
- Stable project conventions already cover the behavior.
|
|
26
|
+
- Trivial syntax you can verify from existing code.
|
|
27
|
+
|
|
28
|
+
## Source Hierarchy
|
|
29
|
+
|
|
30
|
+
1. Official docs, specs, release notes.
|
|
31
|
+
2. Maintained source code and examples.
|
|
32
|
+
3. Maintainer-authored articles.
|
|
33
|
+
4. Community posts only when higher sources are absent.
|
|
34
|
+
|
|
35
|
+
Higher-ranked sources win on conflicts.
|
|
36
|
+
|
|
37
|
+
## Workflow
|
|
38
|
+
|
|
39
|
+
1. State the question precisely.
|
|
40
|
+
2. Check memory/local docs for prior decisions.
|
|
41
|
+
3. Retrieve authoritative sources.
|
|
42
|
+
4. Verify version compatibility with the project.
|
|
43
|
+
5. Compare sources if guidance conflicts.
|
|
44
|
+
6. Extract only the implementation-relevant facts.
|
|
45
|
+
7. Cite URLs or source refs in the recommendation.
|
|
46
|
+
8. Mark unresolved uncertainty explicitly.
|
|
47
|
+
|
|
48
|
+
## Common Rationalizations
|
|
49
|
+
|
|
50
|
+
| Rationalization | Rebuttal |
|
|
51
|
+
| --- | --- |
|
|
52
|
+
| "I know this API" | APIs change; verify version-specific behavior. |
|
|
53
|
+
| "A blog said so" | Blogs lose to official docs/source. |
|
|
54
|
+
| "The package name is obvious" | Similar packages differ in security and maintenance. |
|
|
55
|
+
| "Citations slow us down" | A bad integration costs more than a source check. |
|
|
56
|
+
|
|
57
|
+
## Red Flags
|
|
58
|
+
|
|
59
|
+
- Unfamiliar API used without citation or local precedent.
|
|
60
|
+
- Community answer conflicts with official docs.
|
|
61
|
+
- Version in docs differs from package version.
|
|
62
|
+
- Agent invents options, flags, or imports.
|
|
63
|
+
- Research dump has no recommendation.
|
|
64
|
+
|
|
65
|
+
## Verification
|
|
66
|
+
|
|
67
|
+
- Key claims cite authoritative sources.
|
|
68
|
+
- Project/library versions are considered.
|
|
69
|
+
- Implementation recommendation is specific.
|
|
70
|
+
- Unverified assumptions are labeled.
|
|
71
|
+
|
|
72
|
+
## Skill Result Contract
|
|
73
|
+
|
|
74
|
+
```xml
|
|
75
|
+
<skill_result>
|
|
76
|
+
<skill>source-driven-development</skill>
|
|
77
|
+
<status>success|partial|blocked|failure</status>
|
|
78
|
+
<evidence>Sources consulted and version checks</evidence>
|
|
79
|
+
<artifacts>Research notes, citations, implementation recommendation</artifacts>
|
|
80
|
+
<risks>Unverified claims, stale docs, conflicting sources, or none</risks>
|
|
81
|
+
</skill_result>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
## Consolidated Research Workflow
|
|
86
|
+
|
|
87
|
+
This is the canonical active source-grounding skill. It absorbs deep-research and source-code-research for normal work. Use opensrc, webclaw, context7, grepsearch, or gemini-large-context as tool-specific companions only when the source demands them.
|
|
88
|
+
|
|
89
|
+
Evidence hierarchy:
|
|
90
|
+
1. local code and tests;
|
|
91
|
+
2. official docs and source;
|
|
92
|
+
3. maintained examples from reputable repos;
|
|
93
|
+
4. blog posts or issues with dates and caveats.
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## Removed Optional Companion
|
|
97
|
+
|
|
98
|
+
`v1-run` was removed as an optional package-health skill. Use source-grounded package evaluation, official advisories, lockfile inspection, and package-manager audit commands instead.
|
|
99
|
+
|
|
100
|
+
## Verification
|
|
101
|
+
|
|
102
|
+
After source-driven implementation:
|
|
103
|
+
|
|
104
|
+
- [ ] Every framework API usage is verified against the installed version's docs
|
|
105
|
+
- [ ] Documentation links are included in code comments for non-obvious patterns
|
|
106
|
+
- [ ] Any unverified assumptions are explicitly flagged in the output
|
|
107
|
+
- [ ] Third-party code (SO, LLM-generated) is cross-referenced with official docs
|
|
108
|
+
- [ ] Version-specific behavior is noted (e.g., "Added in React 18.2")
|