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