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