claudeinone-cli 1.0.2 → 1.0.3

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 (428) hide show
  1. package/kit/.claude/.ck.json +9 -0
  2. package/kit/.claude/.ckignore +12 -0
  3. package/kit/.claude/agents/accessibility-auditor.md +46 -0
  4. package/kit/.claude/agents/api-designer.md +43 -0
  5. package/kit/.claude/agents/backend-developer.md +54 -0
  6. package/kit/.claude/agents/brainstormer.md +33 -0
  7. package/kit/.claude/agents/campaign-manager.md +36 -0
  8. package/kit/.claude/agents/code-reviewer.md +39 -0
  9. package/kit/.claude/agents/content-creator.md +38 -0
  10. package/kit/.claude/agents/copywriter.md +42 -0
  11. package/kit/.claude/agents/database-admin.md +37 -0
  12. package/kit/.claude/agents/debugger.md +46 -0
  13. package/kit/.claude/agents/devops-engineer.md +41 -0
  14. package/kit/.claude/agents/docs-manager.md +33 -0
  15. package/kit/.claude/agents/email-wizard.md +40 -0
  16. package/kit/.claude/agents/frontend-developer.md +52 -0
  17. package/kit/.claude/agents/fullstack-developer.md +55 -0
  18. package/kit/.claude/agents/git-manager.md +40 -0
  19. package/kit/.claude/agents/i18n-specialist.md +46 -0
  20. package/kit/.claude/agents/integration-specialist.md +48 -0
  21. package/kit/.claude/agents/journal-writer.md +39 -0
  22. package/kit/.claude/agents/mcp-manager.md +57 -0
  23. package/kit/.claude/agents/mobile-developer.md +38 -0
  24. package/kit/.claude/agents/performance-optimizer.md +38 -0
  25. package/kit/.claude/agents/planner.md +56 -0
  26. package/kit/.claude/agents/project-manager.md +34 -0
  27. package/kit/.claude/agents/refactorer.md +43 -0
  28. package/kit/.claude/agents/researcher.md +45 -0
  29. package/kit/.claude/agents/risk-analyst.md +33 -0
  30. package/kit/.claude/agents/scalability-consultant.md +39 -0
  31. package/kit/.claude/agents/scout.md +25 -0
  32. package/kit/.claude/agents/security-auditor.md +42 -0
  33. package/kit/.claude/agents/seo-specialist.md +44 -0
  34. package/kit/.claude/agents/skill-creator.md +64 -0
  35. package/kit/.claude/agents/social-media-manager.md +35 -0
  36. package/kit/.claude/agents/systems-designer.md +35 -0
  37. package/kit/.claude/agents/technology-strategist.md +43 -0
  38. package/kit/.claude/agents/tester.md +40 -0
  39. package/kit/.claude/agents/ui-ux-designer.md +40 -0
  40. package/kit/.claude/commands/co/ask.md +29 -0
  41. package/kit/.claude/commands/co/bootstrap-auto-fast.md +28 -0
  42. package/kit/.claude/commands/co/bootstrap-auto-parallel.md +29 -0
  43. package/kit/.claude/commands/co/bootstrap-auto.md +30 -0
  44. package/kit/.claude/commands/co/bootstrap.md +31 -0
  45. package/kit/.claude/commands/co/brainstorm.md +27 -0
  46. package/kit/.claude/commands/co/campaign.md +28 -0
  47. package/kit/.claude/commands/co/changelog.md +25 -0
  48. package/kit/.claude/commands/co/checkpoint.md +25 -0
  49. package/kit/.claude/commands/co/ci.md +26 -0
  50. package/kit/.claude/commands/co/ck-help.md +24 -0
  51. package/kit/.claude/commands/co/coding-level.md +24 -0
  52. package/kit/.claude/commands/co/content-cro.md +26 -0
  53. package/kit/.claude/commands/co/content-enhance.md +26 -0
  54. package/kit/.claude/commands/co/content-fast.md +24 -0
  55. package/kit/.claude/commands/co/content-good.md +26 -0
  56. package/kit/.claude/commands/co/cook.md +33 -0
  57. package/kit/.claude/commands/co/debug.md +26 -0
  58. package/kit/.claude/commands/co/deploy.md +25 -0
  59. package/kit/.claude/commands/co/design-3d.md +27 -0
  60. package/kit/.claude/commands/co/design-describe.md +25 -0
  61. package/kit/.claude/commands/co/design-fast.md +25 -0
  62. package/kit/.claude/commands/co/design-good.md +28 -0
  63. package/kit/.claude/commands/co/design-screenshot.md +26 -0
  64. package/kit/.claude/commands/co/design-video.md +26 -0
  65. package/kit/.claude/commands/co/docker.md +24 -0
  66. package/kit/.claude/commands/co/docs-api.md +25 -0
  67. package/kit/.claude/commands/co/docs-init.md +26 -0
  68. package/kit/.claude/commands/co/docs-readme.md +24 -0
  69. package/kit/.claude/commands/co/docs-summarize.md +25 -0
  70. package/kit/.claude/commands/co/docs-update.md +25 -0
  71. package/kit/.claude/commands/co/env-check.md +25 -0
  72. package/kit/.claude/commands/co/fix-ci.md +29 -0
  73. package/kit/.claude/commands/co/fix-fast.md +28 -0
  74. package/kit/.claude/commands/co/fix-hard.md +33 -0
  75. package/kit/.claude/commands/co/fix-logs.md +28 -0
  76. package/kit/.claude/commands/co/fix-types.md +28 -0
  77. package/kit/.claude/commands/co/fix-ui.md +28 -0
  78. package/kit/.claude/commands/co/fix.md +27 -0
  79. package/kit/.claude/commands/co/git-cm.md +26 -0
  80. package/kit/.claude/commands/co/git-cp.md +26 -0
  81. package/kit/.claude/commands/co/git-pr.md +26 -0
  82. package/kit/.claude/commands/co/index.md +24 -0
  83. package/kit/.claude/commands/co/integrate-polar.md +29 -0
  84. package/kit/.claude/commands/co/integrate-sepay.md +29 -0
  85. package/kit/.claude/commands/co/journal.md +27 -0
  86. package/kit/.claude/commands/co/k8s.md +24 -0
  87. package/kit/.claude/commands/co/kanban.md +25 -0
  88. package/kit/.claude/commands/co/lint-fix.md +24 -0
  89. package/kit/.claude/commands/co/load.md +25 -0
  90. package/kit/.claude/commands/co/migrate.md +28 -0
  91. package/kit/.claude/commands/co/mock.md +26 -0
  92. package/kit/.claude/commands/co/mode.md +24 -0
  93. package/kit/.claude/commands/co/monitor.md +25 -0
  94. package/kit/.claude/commands/co/new-feature.md +27 -0
  95. package/kit/.claude/commands/co/optimize.md +26 -0
  96. package/kit/.claude/commands/co/plan-archive.md +24 -0
  97. package/kit/.claude/commands/co/plan-ci.md +28 -0
  98. package/kit/.claude/commands/co/plan-cro.md +27 -0
  99. package/kit/.claude/commands/co/plan-fast.md +24 -0
  100. package/kit/.claude/commands/co/plan-hard.md +27 -0
  101. package/kit/.claude/commands/co/plan-parallel.md +25 -0
  102. package/kit/.claude/commands/co/plan-two.md +29 -0
  103. package/kit/.claude/commands/co/plan-validate.md +27 -0
  104. package/kit/.claude/commands/co/plan.md +27 -0
  105. package/kit/.claude/commands/co/pr.md +25 -0
  106. package/kit/.claude/commands/co/preview.md +26 -0
  107. package/kit/.claude/commands/co/refactor.md +25 -0
  108. package/kit/.claude/commands/co/release.md +25 -0
  109. package/kit/.claude/commands/co/review-a11y.md +24 -0
  110. package/kit/.claude/commands/co/review-codebase-parallel.md +27 -0
  111. package/kit/.claude/commands/co/review-codebase.md +27 -0
  112. package/kit/.claude/commands/co/review-perf.md +24 -0
  113. package/kit/.claude/commands/co/review-security.md +25 -0
  114. package/kit/.claude/commands/co/scaffold.md +25 -0
  115. package/kit/.claude/commands/co/scout.md +26 -0
  116. package/kit/.claude/commands/co/secure.md +26 -0
  117. package/kit/.claude/commands/co/seed.md +25 -0
  118. package/kit/.claude/commands/co/seo-audit.md +24 -0
  119. package/kit/.claude/commands/co/seo-keywords.md +25 -0
  120. package/kit/.claude/commands/co/skill-create.md +29 -0
  121. package/kit/.claude/commands/co/skill-fix-logs.md +28 -0
  122. package/kit/.claude/commands/co/slide-create.md +24 -0
  123. package/kit/.claude/commands/co/spawn.md +24 -0
  124. package/kit/.claude/commands/co/terraform.md +24 -0
  125. package/kit/.claude/commands/co/test-gen.md +24 -0
  126. package/kit/.claude/commands/co/test-ui.md +27 -0
  127. package/kit/.claude/commands/co/test.md +26 -0
  128. package/kit/.claude/commands/co/use-mcp.md +25 -0
  129. package/kit/.claude/commands/co/video-script.md +25 -0
  130. package/kit/.claude/commands/co/watzup.md +25 -0
  131. package/kit/.claude/commands/co/worktree.md +25 -0
  132. package/kit/.claude/commands/co/write-blog.md +25 -0
  133. package/kit/.claude/commands/co/write-copy.md +24 -0
  134. package/kit/.claude/commands/co/write-email.md +25 -0
  135. package/kit/.claude/commands/content/content-cro.md +26 -0
  136. package/kit/.claude/commands/content/content-enhance.md +26 -0
  137. package/kit/.claude/commands/content/content-fast.md +24 -0
  138. package/kit/.claude/commands/content/content-good.md +26 -0
  139. package/kit/.claude/commands/content/enhance.md +26 -0
  140. package/kit/.claude/commands/content/good.md +26 -0
  141. package/kit/.claude/commands/core/ask.md +29 -0
  142. package/kit/.claude/commands/core/bootstrap-auto-fast.md +28 -0
  143. package/kit/.claude/commands/core/bootstrap-auto-parallel.md +29 -0
  144. package/kit/.claude/commands/core/bootstrap-auto.md +30 -0
  145. package/kit/.claude/commands/core/bootstrap.md +31 -0
  146. package/kit/.claude/commands/core/ck-help.md +24 -0
  147. package/kit/.claude/commands/core/coding-level.md +24 -0
  148. package/kit/.claude/commands/core/cook.md +33 -0
  149. package/kit/.claude/commands/core/debug.md +26 -0
  150. package/kit/.claude/commands/core/journal.md +27 -0
  151. package/kit/.claude/commands/core/kanban.md +25 -0
  152. package/kit/.claude/commands/core/preview.md +26 -0
  153. package/kit/.claude/commands/core/scout.md +26 -0
  154. package/kit/.claude/commands/core/test-ui.md +27 -0
  155. package/kit/.claude/commands/core/test.md +26 -0
  156. package/kit/.claude/commands/core/use-mcp.md +25 -0
  157. package/kit/.claude/commands/core/watzup.md +25 -0
  158. package/kit/.claude/commands/core/worktree.md +25 -0
  159. package/kit/.claude/commands/design/3d.md +27 -0
  160. package/kit/.claude/commands/design/design-3d.md +27 -0
  161. package/kit/.claude/commands/design/design-describe.md +25 -0
  162. package/kit/.claude/commands/design/design-fast.md +25 -0
  163. package/kit/.claude/commands/design/design-good.md +28 -0
  164. package/kit/.claude/commands/design/design-screenshot.md +26 -0
  165. package/kit/.claude/commands/design/design-video.md +26 -0
  166. package/kit/.claude/commands/design/good.md +28 -0
  167. package/kit/.claude/commands/design/video.md +26 -0
  168. package/kit/.claude/commands/docs/docs-init.md +26 -0
  169. package/kit/.claude/commands/docs/docs-summarize.md +25 -0
  170. package/kit/.claude/commands/docs/docs-update.md +25 -0
  171. package/kit/.claude/commands/docs/init.md +26 -0
  172. package/kit/.claude/commands/docs/summarize.md +25 -0
  173. package/kit/.claude/commands/fix/ci.md +29 -0
  174. package/kit/.claude/commands/fix/fast.md +28 -0
  175. package/kit/.claude/commands/fix/fix-ci.md +29 -0
  176. package/kit/.claude/commands/fix/fix-fast.md +28 -0
  177. package/kit/.claude/commands/fix/fix-hard.md +33 -0
  178. package/kit/.claude/commands/fix/fix-logs.md +28 -0
  179. package/kit/.claude/commands/fix/fix-types.md +28 -0
  180. package/kit/.claude/commands/fix/fix-ui.md +28 -0
  181. package/kit/.claude/commands/fix/hard.md +33 -0
  182. package/kit/.claude/commands/fix/logs.md +28 -0
  183. package/kit/.claude/commands/fix/types.md +28 -0
  184. package/kit/.claude/commands/fix/ui.md +28 -0
  185. package/kit/.claude/commands/git/cp.md +26 -0
  186. package/kit/.claude/commands/git/git-cm.md +26 -0
  187. package/kit/.claude/commands/git/git-cp.md +26 -0
  188. package/kit/.claude/commands/git/git-pr.md +26 -0
  189. package/kit/.claude/commands/integrate/integrate-polar.md +29 -0
  190. package/kit/.claude/commands/integrate/integrate-sepay.md +29 -0
  191. package/kit/.claude/commands/integrate/sepay.md +29 -0
  192. package/kit/.claude/commands/plan/ci.md +28 -0
  193. package/kit/.claude/commands/plan/cro.md +27 -0
  194. package/kit/.claude/commands/plan/hard.md +27 -0
  195. package/kit/.claude/commands/plan/plan-archive.md +24 -0
  196. package/kit/.claude/commands/plan/plan-ci.md +28 -0
  197. package/kit/.claude/commands/plan/plan-cro.md +27 -0
  198. package/kit/.claude/commands/plan/plan-fast.md +24 -0
  199. package/kit/.claude/commands/plan/plan-hard.md +27 -0
  200. package/kit/.claude/commands/plan/plan-parallel.md +25 -0
  201. package/kit/.claude/commands/plan/plan-two.md +29 -0
  202. package/kit/.claude/commands/plan/plan-validate.md +27 -0
  203. package/kit/.claude/commands/plan/plan.md +27 -0
  204. package/kit/.claude/commands/plan/validate.md +27 -0
  205. package/kit/.claude/commands/skill/fix-logs.md +28 -0
  206. package/kit/.claude/commands/skill/skill-create.md +29 -0
  207. package/kit/.claude/commands/skill/skill-fix-logs.md +28 -0
  208. package/kit/.claude/settings.json +16 -0
  209. package/kit/.claude/skills/ai-anthropic.md +100 -0
  210. package/kit/.claude/skills/ai-context-engineering.md +113 -0
  211. package/kit/.claude/skills/ai-gemini.md +152 -0
  212. package/kit/.claude/skills/ai-langchain.md +93 -0
  213. package/kit/.claude/skills/ai-llamaindex.md +179 -0
  214. package/kit/.claude/skills/ai-mcp-builder.md +101 -0
  215. package/kit/.claude/skills/ai-openai.md +250 -0
  216. package/kit/.claude/skills/ai-prompt-engineering.md +173 -0
  217. package/kit/.claude/skills/ai-rag.md +91 -0
  218. package/kit/.claude/skills/ai-vectordb.md +215 -0
  219. package/kit/.claude/skills/analytics-segment.md +161 -0
  220. package/kit/.claude/skills/api-caching.md +103 -0
  221. package/kit/.claude/skills/api-documentation.md +50 -0
  222. package/kit/.claude/skills/api-graphql.md +234 -0
  223. package/kit/.claude/skills/api-openapi.md +116 -0
  224. package/kit/.claude/skills/api-pagination-filtering.md +239 -0
  225. package/kit/.claude/skills/api-rate-limiting.md +179 -0
  226. package/kit/.claude/skills/api-rest-advanced.md +50 -0
  227. package/kit/.claude/skills/api-rest.md +217 -0
  228. package/kit/.claude/skills/api-trpc.md +173 -0
  229. package/kit/.claude/skills/api-versioning.md +70 -0
  230. package/kit/.claude/skills/api-webhooks.md +226 -0
  231. package/kit/.claude/skills/arch-clean-code.md +226 -0
  232. package/kit/.claude/skills/arch-clean.md +91 -0
  233. package/kit/.claude/skills/arch-cqrs.md +229 -0
  234. package/kit/.claude/skills/arch-ddd.md +85 -0
  235. package/kit/.claude/skills/arch-event-driven.md +189 -0
  236. package/kit/.claude/skills/arch-microservices.md +80 -0
  237. package/kit/.claude/skills/arch-monorepo.md +87 -0
  238. package/kit/.claude/skills/arch-multi-tenant.md +81 -0
  239. package/kit/.claude/skills/arch-serverless.md +86 -0
  240. package/kit/.claude/skills/auth-clerk.md +97 -0
  241. package/kit/.claude/skills/auth-jwt.md +143 -0
  242. package/kit/.claude/skills/auth-lucia.md +93 -0
  243. package/kit/.claude/skills/auth-nextauth.md +446 -0
  244. package/kit/.claude/skills/auth-oauth.md +208 -0
  245. package/kit/.claude/skills/auth-oauth2.md +110 -0
  246. package/kit/.claude/skills/auth-passkeys.md +109 -0
  247. package/kit/.claude/skills/auth-session.md +88 -0
  248. package/kit/.claude/skills/backend-dotnet.md +414 -0
  249. package/kit/.claude/skills/backend-express.md +129 -0
  250. package/kit/.claude/skills/backend-fastify.md +104 -0
  251. package/kit/.claude/skills/backend-go.md +205 -0
  252. package/kit/.claude/skills/backend-graphql.md +149 -0
  253. package/kit/.claude/skills/backend-grpc.md +382 -0
  254. package/kit/.claude/skills/backend-hono.md +95 -0
  255. package/kit/.claude/skills/backend-java-spring.md +198 -0
  256. package/kit/.claude/skills/backend-nodejs-express.md +165 -0
  257. package/kit/.claude/skills/backend-nodejs.md +143 -0
  258. package/kit/.claude/skills/backend-php-laravel.md +156 -0
  259. package/kit/.claude/skills/backend-python-django.md +200 -0
  260. package/kit/.claude/skills/backend-python-fastapi.md +169 -0
  261. package/kit/.claude/skills/backend-ruby-rails.md +190 -0
  262. package/kit/.claude/skills/backend-rust.md +182 -0
  263. package/kit/.claude/skills/backend-websockets.md +392 -0
  264. package/kit/.claude/skills/cache-redis.md +195 -0
  265. package/kit/.claude/skills/caching-strategies.md +100 -0
  266. package/kit/.claude/skills/cloud-aws.md +165 -0
  267. package/kit/.claude/skills/cloud-azure.md +187 -0
  268. package/kit/.claude/skills/cloud-cloudflare.md +74 -0
  269. package/kit/.claude/skills/cloud-fly.md +94 -0
  270. package/kit/.claude/skills/cloud-gcp.md +160 -0
  271. package/kit/.claude/skills/cloud-railway.md +92 -0
  272. package/kit/.claude/skills/cloud-render.md +70 -0
  273. package/kit/.claude/skills/cloud-serverless.md +68 -0
  274. package/kit/.claude/skills/cloud-vercel.md +76 -0
  275. package/kit/.claude/skills/component-patterns.md +50 -0
  276. package/kit/.claude/skills/content-management.md +197 -0
  277. package/kit/.claude/skills/cors-security.md +50 -0
  278. package/kit/.claude/skills/data-csv-excel.md +210 -0
  279. package/kit/.claude/skills/database-optimization.md +196 -0
  280. package/kit/.claude/skills/databases-transactions.md +68 -0
  281. package/kit/.claude/skills/db-cassandra.md +89 -0
  282. package/kit/.claude/skills/db-drizzle.md +363 -0
  283. package/kit/.claude/skills/db-dynamodb.md +83 -0
  284. package/kit/.claude/skills/db-elasticsearch.md +105 -0
  285. package/kit/.claude/skills/db-firebase-firestore.md +191 -0
  286. package/kit/.claude/skills/db-mongodb.md +198 -0
  287. package/kit/.claude/skills/db-mysql.md +50 -0
  288. package/kit/.claude/skills/db-neon.md +72 -0
  289. package/kit/.claude/skills/db-planetscale.md +76 -0
  290. package/kit/.claude/skills/db-postgresql.md +50 -0
  291. package/kit/.claude/skills/db-prisma.md +414 -0
  292. package/kit/.claude/skills/db-redis.md +50 -0
  293. package/kit/.claude/skills/db-sqlite.md +149 -0
  294. package/kit/.claude/skills/db-supabase.md +445 -0
  295. package/kit/.claude/skills/devops-ci-cd.md +271 -0
  296. package/kit/.claude/skills/devops-database-backup.md +77 -0
  297. package/kit/.claude/skills/devops-docker.md +93 -0
  298. package/kit/.claude/skills/devops-github-actions.md +82 -0
  299. package/kit/.claude/skills/devops-health-checks.md +50 -0
  300. package/kit/.claude/skills/devops-kubernetes.md +109 -0
  301. package/kit/.claude/skills/devops-logging.md +163 -0
  302. package/kit/.claude/skills/devops-monitoring.md +203 -0
  303. package/kit/.claude/skills/devops-pulumi.md +94 -0
  304. package/kit/.claude/skills/devops-secrets.md +166 -0
  305. package/kit/.claude/skills/devops-terraform.md +226 -0
  306. package/kit/.claude/skills/error-boundaries.md +84 -0
  307. package/kit/.claude/skills/file-storage.md +50 -0
  308. package/kit/.claude/skills/frontend-angular.md +104 -0
  309. package/kit/.claude/skills/frontend-astro.md +94 -0
  310. package/kit/.claude/skills/frontend-bundle-analysis.md +147 -0
  311. package/kit/.claude/skills/frontend-forms.md +134 -0
  312. package/kit/.claude/skills/frontend-htmx.md +86 -0
  313. package/kit/.claude/skills/frontend-nextjs.md +188 -0
  314. package/kit/.claude/skills/frontend-pwa.md +105 -0
  315. package/kit/.claude/skills/frontend-react-hooks.md +238 -0
  316. package/kit/.claude/skills/frontend-react.md +129 -0
  317. package/kit/.claude/skills/frontend-remix-advanced.md +106 -0
  318. package/kit/.claude/skills/frontend-remix.md +101 -0
  319. package/kit/.claude/skills/frontend-solid.md +99 -0
  320. package/kit/.claude/skills/frontend-state-management.md +134 -0
  321. package/kit/.claude/skills/frontend-state.md +106 -0
  322. package/kit/.claude/skills/frontend-svelte.md +121 -0
  323. package/kit/.claude/skills/frontend-testing.md +100 -0
  324. package/kit/.claude/skills/frontend-vite.md +94 -0
  325. package/kit/.claude/skills/frontend-vue.md +133 -0
  326. package/kit/.claude/skills/frontend-webpack.md +93 -0
  327. package/kit/.claude/skills/functional-programming.md +50 -0
  328. package/kit/.claude/skills/hooks-custom.md +50 -0
  329. package/kit/.claude/skills/http-server.md +50 -0
  330. package/kit/.claude/skills/i18n-general.md +89 -0
  331. package/kit/.claude/skills/i18n-localization.md +191 -0
  332. package/kit/.claude/skills/i18n-nextjs.md +127 -0
  333. package/kit/.claude/skills/infrastructure-docker-compose.md +77 -0
  334. package/kit/.claude/skills/infrastructure-serverless.md +177 -0
  335. package/kit/.claude/skills/jwt-tokens.md +50 -0
  336. package/kit/.claude/skills/logging-winston.md +106 -0
  337. package/kit/.claude/skills/messaging-kafka.md +102 -0
  338. package/kit/.claude/skills/messaging-rabbitmq.md +50 -0
  339. package/kit/.claude/skills/mobile-capacitor.md +109 -0
  340. package/kit/.claude/skills/mobile-expo.md +101 -0
  341. package/kit/.claude/skills/mobile-flutter.md +259 -0
  342. package/kit/.claude/skills/mobile-react-native.md +238 -0
  343. package/kit/.claude/skills/monitoring-apm.md +50 -0
  344. package/kit/.claude/skills/monitoring-error-tracking.md +217 -0
  345. package/kit/.claude/skills/nodejs-streams.md +168 -0
  346. package/kit/.claude/skills/oauth-integration.md +50 -0
  347. package/kit/.claude/skills/patterns-dependency-injection.md +218 -0
  348. package/kit/.claude/skills/patterns-factory-singleton.md +209 -0
  349. package/kit/.claude/skills/patterns-observer-pubsub.md +210 -0
  350. package/kit/.claude/skills/payment-lemonsqueezy.md +101 -0
  351. package/kit/.claude/skills/payment-square.md +178 -0
  352. package/kit/.claude/skills/payment-stripe.md +206 -0
  353. package/kit/.claude/skills/perf-bundle.md +100 -0
  354. package/kit/.claude/skills/perf-web-vitals.md +102 -0
  355. package/kit/.claude/skills/performance-database-connection-pooling.md +67 -0
  356. package/kit/.claude/skills/performance-metrics.md +73 -0
  357. package/kit/.claude/skills/performance-optimization.md +208 -0
  358. package/kit/.claude/skills/performance-web-vitals.md +169 -0
  359. package/kit/.claude/skills/rate-limiting.md +77 -0
  360. package/kit/.claude/skills/reactive-programming.md +50 -0
  361. package/kit/.claude/skills/realtime-database.md +50 -0
  362. package/kit/.claude/skills/realtime-subscriptions.md +218 -0
  363. package/kit/.claude/skills/saas-ab-testing.md +90 -0
  364. package/kit/.claude/skills/saas-analytics.md +113 -0
  365. package/kit/.claude/skills/saas-billing.md +106 -0
  366. package/kit/.claude/skills/saas-email.md +88 -0
  367. package/kit/.claude/skills/saas-feature-flags.md +83 -0
  368. package/kit/.claude/skills/saas-onboarding.md +96 -0
  369. package/kit/.claude/skills/saas-user-onboarding.md +207 -0
  370. package/kit/.claude/skills/security-encryption.md +216 -0
  371. package/kit/.claude/skills/security-owasp.md +212 -0
  372. package/kit/.claude/skills/security-secrets-rotation.md +64 -0
  373. package/kit/.claude/skills/seo-content.md +94 -0
  374. package/kit/.claude/skills/seo-technical.md +101 -0
  375. package/kit/.claude/skills/serverless-framework.md +151 -0
  376. package/kit/.claude/skills/sharding-scaling.md +50 -0
  377. package/kit/.claude/skills/styling-css-modules.md +219 -0
  378. package/kit/.claude/skills/styling-styled-components.md +206 -0
  379. package/kit/.claude/skills/styling-tailwind.md +206 -0
  380. package/kit/.claude/skills/test-e2e.md +86 -0
  381. package/kit/.claude/skills/test-integration.md +216 -0
  382. package/kit/.claude/skills/test-performance.md +162 -0
  383. package/kit/.claude/skills/test-tdd.md +170 -0
  384. package/kit/.claude/skills/test-unit.md +301 -0
  385. package/kit/.claude/skills/testing-accessibility.md +117 -0
  386. package/kit/.claude/skills/testing-contract.md +75 -0
  387. package/kit/.claude/skills/testing-e2e-advanced.md +50 -0
  388. package/kit/.claude/skills/testing-load-stress.md +79 -0
  389. package/kit/.claude/skills/testing-mutation.md +92 -0
  390. package/kit/.claude/skills/testing-snapshot.md +50 -0
  391. package/kit/.claude/skills/testing-vitest.md +172 -0
  392. package/kit/.claude/skills/tooling-biome.md +91 -0
  393. package/kit/.claude/skills/tooling-build-tools.md +166 -0
  394. package/kit/.claude/skills/tooling-bun.md +94 -0
  395. package/kit/.claude/skills/tooling-eslint.md +103 -0
  396. package/kit/.claude/skills/tooling-git.md +79 -0
  397. package/kit/.claude/skills/tooling-monorepo.md +162 -0
  398. package/kit/.claude/skills/tooling-testing-frameworks.md +207 -0
  399. package/kit/.claude/skills/tooling-typescript.md +156 -0
  400. package/kit/.claude/skills/ui-a11y.md +106 -0
  401. package/kit/.claude/skills/ui-framer.md +106 -0
  402. package/kit/.claude/skills/ui-gsap.md +102 -0
  403. package/kit/.claude/skills/ui-radix.md +82 -0
  404. package/kit/.claude/skills/ui-shadcn.md +463 -0
  405. package/kit/.claude/skills/ui-tailwind.md +98 -0
  406. package/kit/.claude/skills/ui-threejs.md +110 -0
  407. package/kit/.claude/skills/ui-tokens.md +97 -0
  408. package/kit/.claude/skills/utilities-date-time.md +170 -0
  409. package/kit/.claude/skills/validation-schemas.md +110 -0
  410. package/kit/.claude/skills/version-control-git.md +144 -0
  411. package/kit/.claude/skills/web-accessibility-wcag.md +102 -0
  412. package/kit/.claude/skills/web-astro.md +197 -0
  413. package/kit/.claude/skills/web-html-css.md +224 -0
  414. package/kit/.claude/skills/web-htmx.md +99 -0
  415. package/kit/.claude/skills/web-nextjs-advanced.md +202 -0
  416. package/kit/.claude/skills/web-remix.md +194 -0
  417. package/kit/.claude/skills/web-seo.md +99 -0
  418. package/kit/.claude/skills/web-svelte.md +234 -0
  419. package/kit/.claude/skills/websocket-server.md +50 -0
  420. package/kit/.claude/skills/writing-marketing.md +89 -0
  421. package/kit/.claude/skills/writing-technical.md +119 -0
  422. package/kit/CLAUDE.md +206 -0
  423. package/kit/README.md +150 -0
  424. package/kit/SKILLS_INDEX.md +188 -0
  425. package/kit/docs/README.md +3 -0
  426. package/kit/journals/README.md +3 -0
  427. package/kit/plans/README.md +3 -0
  428. package/package.json +3 -1
@@ -0,0 +1,219 @@
1
+ # CSS Modules
2
+
3
+ Scoped CSS with automatic naming and no conflicts.
4
+
5
+ ## Basic Usage
6
+
7
+ ```module.css
8
+ /* Button.module.css */
9
+ .button {
10
+ display: inline-block;
11
+ padding: 10px 20px;
12
+ background-color: #007bff;
13
+ color: white;
14
+ border: none;
15
+ border-radius: 4px;
16
+ cursor: pointer;
17
+ font-weight: 600;
18
+ transition: background-color 0.3s;
19
+ }
20
+
21
+ .button:hover {
22
+ background-color: #0056b3;
23
+ }
24
+
25
+ .button.primary {
26
+ background-color: #28a745;
27
+ }
28
+
29
+ .button.primary:hover {
30
+ background-color: #218838;
31
+ }
32
+
33
+ .button:disabled {
34
+ opacity: 0.6;
35
+ cursor: not-allowed;
36
+ }
37
+ ```
38
+
39
+ ```jsx
40
+ // Button.jsx
41
+ import styles from './Button.module.css';
42
+
43
+ export function Button({ variant = 'primary', disabled = false, children }) {
44
+ return (
45
+ <button
46
+ className={`${styles.button} ${styles[variant]}`}
47
+ disabled={disabled}
48
+ >
49
+ {children}
50
+ </button>
51
+ );
52
+ }
53
+ ```
54
+
55
+ ## Composition
56
+
57
+ ```module.css
58
+ /* Form.module.css */
59
+ .form {
60
+ max-width: 500px;
61
+ margin: 0 auto;
62
+ padding: 20px;
63
+ background-color: #f9f9f9;
64
+ border-radius: 8px;
65
+ }
66
+
67
+ .group {
68
+ margin-bottom: 20px;
69
+ }
70
+
71
+ .label {
72
+ display: block;
73
+ margin-bottom: 8px;
74
+ font-weight: 600;
75
+ color: #333;
76
+ }
77
+
78
+ .input {
79
+ width: 100%;
80
+ padding: 10px;
81
+ border: 1px solid #ddd;
82
+ border-radius: 4px;
83
+ font-size: 16px;
84
+ }
85
+
86
+ .input:focus {
87
+ outline: none;
88
+ border-color: #007bff;
89
+ box-shadow: 0 0 5px rgba(0, 123, 255, 0.5);
90
+ }
91
+
92
+ .error {
93
+ composes: input;
94
+ border-color: #dc3545;
95
+ }
96
+
97
+ .error:focus {
98
+ box-shadow: 0 0 5px rgba(220, 53, 69, 0.5);
99
+ }
100
+ ```
101
+
102
+ ```jsx
103
+ // LoginForm.jsx
104
+ import styles from './Form.module.css';
105
+
106
+ export function LoginForm() {
107
+ const [email, setEmail] = useState('');
108
+ const [error, setError] = useState('');
109
+
110
+ return (
111
+ <form className={styles.form}>
112
+ <div className={styles.group}>
113
+ <label className={styles.label}>Email</label>
114
+ <input
115
+ className={error ? styles.error : styles.input}
116
+ type="email"
117
+ value={email}
118
+ onChange={(e) => setEmail(e.target.value)}
119
+ />
120
+ </div>
121
+ </form>
122
+ );
123
+ }
124
+ ```
125
+
126
+ ## TypeScript Support
127
+
128
+ ```typescript
129
+ // Button.module.css
130
+ export const button: string;
131
+ export const primary: string;
132
+ export const disabled: string;
133
+ ```
134
+
135
+ ```typescript
136
+ // Button.tsx
137
+ import styles from './Button.module.css';
138
+
139
+ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
140
+ variant?: 'primary' | 'secondary';
141
+ }
142
+
143
+ export const Button: React.FC<ButtonProps> = ({
144
+ variant = 'primary',
145
+ className,
146
+ ...props
147
+ }) => {
148
+ return (
149
+ <button
150
+ className={`${styles.button} ${styles[variant]} ${className || ''}`}
151
+ {...props}
152
+ />
153
+ );
154
+ };
155
+ ```
156
+
157
+ ## Mixins with PostCSS
158
+
159
+ ```module.css
160
+ /* mixins.css */
161
+ @define-mixin flex-center {
162
+ display: flex;
163
+ justify-content: center;
164
+ align-items: center;
165
+ }
166
+
167
+ @define-mixin button-base {
168
+ padding: 10px 20px;
169
+ border: none;
170
+ border-radius: 4px;
171
+ cursor: pointer;
172
+ font-weight: 600;
173
+ transition: all 0.3s;
174
+ }
175
+
176
+ /* Component.module.css */
177
+ .container {
178
+ @mixin flex-center;
179
+ height: 100vh;
180
+ }
181
+
182
+ .button {
183
+ @mixin button-base;
184
+ background-color: #007bff;
185
+ color: white;
186
+ }
187
+ ```
188
+
189
+ ## Organization Pattern
190
+
191
+ ```
192
+ src/
193
+ ├── components/
194
+ │ ├── Button/
195
+ │ │ ├── Button.tsx
196
+ │ │ └── Button.module.css
197
+ │ ├── Card/
198
+ │ │ ├── Card.tsx
199
+ │ │ └── Card.module.css
200
+ │ └── Form/
201
+ │ ├── Form.tsx
202
+ │ └── Form.module.css
203
+ └── styles/
204
+ ├── globals.css
205
+ └── variables.css
206
+ ```
207
+
208
+ ## Best Practices
209
+
210
+ ✅ **Namespace by component** - One module per component
211
+ ✅ **Avoid nesting** - Keep selectors simple
212
+ ✅ **Composition** - Use composes for DRY styles
213
+ ✅ **TypeScript** - Get type safety for classes
214
+ ✅ **Global styles** - Use separate global file
215
+
216
+ ## Resources
217
+
218
+ - [CSS Modules Spec](https://github.com/css-modules/css-modules)
219
+ - [PostCSS Documentation](https://postcss.org/)
@@ -0,0 +1,206 @@
1
+ # styled-components
2
+
3
+ CSS-in-JS library for component-scoped styling with full JavaScript support.
4
+
5
+ ## Setup
6
+
7
+ ```bash
8
+ npm install styled-components
9
+ npm install -D @types/styled-components
10
+ ```
11
+
12
+ ## Basic Usage
13
+
14
+ ```typescript
15
+ import styled from 'styled-components';
16
+
17
+ const StyledButton = styled.button`
18
+ display: inline-block;
19
+ padding: 10px 20px;
20
+ background-color: #007bff;
21
+ color: white;
22
+ border: none;
23
+ border-radius: 4px;
24
+ cursor: pointer;
25
+ font-weight: 600;
26
+ transition: background-color 0.3s;
27
+
28
+ &:hover {
29
+ background-color: #0056b3;
30
+ }
31
+
32
+ &:disabled {
33
+ opacity: 0.6;
34
+ cursor: not-allowed;
35
+ }
36
+ `;
37
+
38
+ export function Button({ children, ...props }) {
39
+ return <StyledButton {...props}>{children}</StyledButton>;
40
+ }
41
+ ```
42
+
43
+ ## Props & Theming
44
+
45
+ ```typescript
46
+ const StyledInput = styled.input<{ hasError: boolean }>`
47
+ width: 100%;
48
+ padding: 10px;
49
+ border: 2px solid ${props => props.hasError ? '#dc3545' : '#ddd'};
50
+ border-radius: 4px;
51
+ font-size: 16px;
52
+
53
+ &:focus {
54
+ outline: none;
55
+ border-color: ${props => props.hasError ? '#dc3545' : '#007bff'};
56
+ box-shadow: 0 0 5px ${props => props.hasError ? 'rgba(220, 53, 69, 0.5)' : 'rgba(0, 123, 255, 0.5)'};
57
+ }
58
+ `;
59
+
60
+ export function FormInput({ error, ...props }) {
61
+ return <StyledInput hasError={!!error} {...props} />;
62
+ }
63
+ ```
64
+
65
+ ## Global Styles
66
+
67
+ ```typescript
68
+ import { createGlobalStyle } from 'styled-components';
69
+
70
+ const GlobalStyles = createGlobalStyle`
71
+ * {
72
+ margin: 0;
73
+ padding: 0;
74
+ box-sizing: border-box;
75
+ }
76
+
77
+ body {
78
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
79
+ background-color: #f5f5f5;
80
+ color: #333;
81
+ }
82
+
83
+ button {
84
+ font-family: inherit;
85
+ }
86
+ `;
87
+
88
+ export function App() {
89
+ return (
90
+ <>
91
+ <GlobalStyles />
92
+ <MyComponent />
93
+ </>
94
+ );
95
+ }
96
+ ```
97
+
98
+ ## Theme Provider
99
+
100
+ ```typescript
101
+ import { ThemeProvider } from 'styled-components';
102
+
103
+ const lightTheme = {
104
+ colors: {
105
+ primary: '#007bff',
106
+ secondary: '#6c757d',
107
+ danger: '#dc3545',
108
+ background: '#ffffff',
109
+ text: '#333333'
110
+ }
111
+ };
112
+
113
+ const darkTheme = {
114
+ colors: {
115
+ primary: '#0d6efd',
116
+ secondary: '#6c757d',
117
+ danger: '#dc3545',
118
+ background: '#1a1a1a',
119
+ text: '#ffffff'
120
+ }
121
+ };
122
+
123
+ export function App() {
124
+ const [isDark, setIsDark] = useState(false);
125
+
126
+ return (
127
+ <ThemeProvider theme={isDark ? darkTheme : lightTheme}>
128
+ <GlobalStyles />
129
+ <MyComponent onToggleTheme={() => setIsDark(!isDark)} />
130
+ </ThemeProvider>
131
+ );
132
+ }
133
+ ```
134
+
135
+ ## Complex Components
136
+
137
+ ```typescript
138
+ const Card = styled.div`
139
+ background-color: ${props => props.theme.colors.background};
140
+ border-radius: 8px;
141
+ padding: 20px;
142
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
143
+ `;
144
+
145
+ const CardTitle = styled.h2`
146
+ color: ${props => props.theme.colors.primary};
147
+ margin-bottom: 10px;
148
+ `;
149
+
150
+ const CardContent = styled.p`
151
+ color: ${props => props.theme.colors.text};
152
+ line-height: 1.6;
153
+ `;
154
+
155
+ export function UserCard({ user }) {
156
+ return (
157
+ <Card>
158
+ <CardTitle>{user.name}</CardTitle>
159
+ <CardContent>{user.bio}</CardContent>
160
+ </Card>
161
+ );
162
+ }
163
+ ```
164
+
165
+ ## Extending Styles
166
+
167
+ ```typescript
168
+ const BaseButton = styled.button`
169
+ padding: 10px 20px;
170
+ border: none;
171
+ border-radius: 4px;
172
+ cursor: pointer;
173
+ font-weight: 600;
174
+ `;
175
+
176
+ const PrimaryButton = styled(BaseButton)`
177
+ background-color: #007bff;
178
+ color: white;
179
+
180
+ &:hover {
181
+ background-color: #0056b3;
182
+ }
183
+ `;
184
+
185
+ const DangerButton = styled(BaseButton)`
186
+ background-color: #dc3545;
187
+ color: white;
188
+
189
+ &:hover {
190
+ background-color: #c82333;
191
+ }
192
+ `;
193
+ ```
194
+
195
+ ## Best Practices
196
+
197
+ ✅ **Theme Provider** - Centralize color/style values
198
+ ✅ **Extend components** - Reuse styles
199
+ ✅ **Component API** - Pass props for customization
200
+ ✅ **Performance** - Use React.memo for styled components
201
+ ✅ **TypeScript** - Strong typing for props
202
+
203
+ ## Resources
204
+
205
+ - [styled-components Docs](https://styled-components.com/)
206
+ - [Emotion (alternative)](https://emotion.sh/)
@@ -0,0 +1,206 @@
1
+ # Tailwind CSS v4
2
+
3
+ Utility-first CSS framework with rapid styling capabilities.
4
+
5
+ ## Setup (Next.js)
6
+
7
+ ```bash
8
+ npm install -D tailwindcss postcss autoprefixer
9
+ npx tailwindcss init -p
10
+ ```
11
+
12
+ ## Configuration
13
+
14
+ ```typescript
15
+ // tailwind.config.ts
16
+ import type { Config } from 'tailwindcss'
17
+
18
+ export default {
19
+ content: [
20
+ './src/**/*.{js,ts,jsx,tsx}',
21
+ './pages/**/*.{js,ts,jsx,tsx}'
22
+ ],
23
+ theme: {
24
+ extend: {
25
+ colors: {
26
+ primary: '#3B82F6',
27
+ secondary: '#10B981'
28
+ },
29
+ spacing: {
30
+ '128': '32rem'
31
+ }
32
+ }
33
+ },
34
+ plugins: [require('@tailwindcss/forms')]
35
+ } satisfies Config
36
+ ```
37
+
38
+ ## Utility Classes
39
+
40
+ ```jsx
41
+ export function Button({ variant = 'primary', size = 'md', ...props }) {
42
+ const baseClasses = 'font-semibold rounded-lg transition-colors';
43
+
44
+ const variants = {
45
+ primary: 'bg-blue-500 text-white hover:bg-blue-600',
46
+ secondary: 'bg-gray-200 text-gray-900 hover:bg-gray-300',
47
+ danger: 'bg-red-500 text-white hover:bg-red-600'
48
+ };
49
+
50
+ const sizes = {
51
+ sm: 'px-3 py-1 text-sm',
52
+ md: 'px-4 py-2 text-base',
53
+ lg: 'px-6 py-3 text-lg'
54
+ };
55
+
56
+ return (
57
+ <button
58
+ className={`${baseClasses} ${variants[variant]} ${sizes[size]}`}
59
+ {...props}
60
+ />
61
+ );
62
+ }
63
+ ```
64
+
65
+ ## Responsive Design
66
+
67
+ ```jsx
68
+ export function Grid() {
69
+ return (
70
+ <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
71
+ {items.map(item => (
72
+ <div key={item.id} className="bg-white p-4 rounded-lg shadow">
73
+ <h3 className="text-lg font-bold">{item.title}</h3>
74
+ <p className="text-gray-600 mt-2">{item.description}</p>
75
+ </div>
76
+ ))}
77
+ </div>
78
+ );
79
+ }
80
+ ```
81
+
82
+ ## Dark Mode
83
+
84
+ ```jsx
85
+ // tailwind.config.ts with darkMode: 'class'
86
+
87
+ export function ThemeToggle() {
88
+ const [isDark, setIsDark] = useState(false);
89
+
90
+ useEffect(() => {
91
+ if (isDark) {
92
+ document.documentElement.classList.add('dark');
93
+ } else {
94
+ document.documentElement.classList.remove('dark');
95
+ }
96
+ }, [isDark]);
97
+
98
+ return (
99
+ <>
100
+ <div className="bg-white dark:bg-slate-900 text-black dark:text-white">
101
+ Content
102
+ </div>
103
+ <button onClick={() => setIsDark(!isDark)}>
104
+ Toggle Dark Mode
105
+ </button>
106
+ </>
107
+ );
108
+ }
109
+ ```
110
+
111
+ ## Custom CSS with Tailwind
112
+
113
+ ```css
114
+ /* globals.css */
115
+ @import "tailwindcss";
116
+
117
+ @layer components {
118
+ .btn-primary {
119
+ @apply px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600;
120
+ }
121
+
122
+ .input-base {
123
+ @apply px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2;
124
+ }
125
+ }
126
+
127
+ @layer utilities {
128
+ .text-balance {
129
+ text-wrap: balance;
130
+ }
131
+
132
+ .truncate-2 {
133
+ display: -webkit-box;
134
+ -webkit-line-clamp: 2;
135
+ -webkit-box-orient: vertical;
136
+ overflow: hidden;
137
+ }
138
+ }
139
+ ```
140
+
141
+ ## Forms
142
+
143
+ ```jsx
144
+ export function LoginForm() {
145
+ return (
146
+ <form className="space-y-4">
147
+ <div>
148
+ <label className="block text-sm font-medium text-gray-700">
149
+ Email
150
+ </label>
151
+ <input
152
+ type="email"
153
+ className="mt-1 w-full rounded-lg border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500"
154
+ placeholder="you@example.com"
155
+ />
156
+ </div>
157
+
158
+ <div>
159
+ <label className="block text-sm font-medium text-gray-700">
160
+ Password
161
+ </label>
162
+ <input
163
+ type="password"
164
+ className="mt-1 w-full rounded-lg border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500"
165
+ />
166
+ </div>
167
+
168
+ <button className="w-full bg-blue-500 text-white py-2 rounded-lg hover:bg-blue-600">
169
+ Sign In
170
+ </button>
171
+ </form>
172
+ );
173
+ }
174
+ ```
175
+
176
+ ## Performance
177
+
178
+ ```jsx
179
+ // Use clsx for conditional classes (lighter than classnames)
180
+ import clsx from 'clsx';
181
+
182
+ export function Card({ highlighted }) {
183
+ return (
184
+ <div className={clsx(
185
+ 'p-4 rounded-lg border',
186
+ highlighted && 'border-blue-500 bg-blue-50'
187
+ )}>
188
+ Content
189
+ </div>
190
+ );
191
+ }
192
+ ```
193
+
194
+ ## Best Practices
195
+
196
+ ✅ **Use @layer** - Organize custom utilities
197
+ ✅ **Extract components** - DRY up repeated patterns
198
+ ✅ **Responsive-first** - Mobile first approach
199
+ ✅ **Plugins** - Leverage community plugins
200
+ ✅ **PurgeCSS** - Automatic unused CSS removal
201
+
202
+ ## Resources
203
+
204
+ - [Tailwind CSS Documentation](https://tailwindcss.com/docs)
205
+ - [Tailwind UI](https://tailwindui.com/)
206
+ - [Headless UI](https://headlessui.com/)
@@ -0,0 +1,86 @@
1
+ # End-to-End Testing
2
+
3
+ Full-stack testing using Playwright or Cypress to test complete user workflows.
4
+
5
+ ## Playwright Setup
6
+
7
+ ```bash
8
+ npm install -D @playwright/test
9
+ ```
10
+
11
+ ## Basic Test
12
+
13
+ ```typescript
14
+ import { test, expect } from '@playwright/test';
15
+
16
+ test('user can login and view dashboard', async ({ page }) => {
17
+ // Navigate
18
+ await page.goto('http://localhost:3000/login');
19
+
20
+ // Fill form
21
+ await page.fill('input[name="email"]', 'user@example.com');
22
+ await page.fill('input[name="password"]', 'password123');
23
+
24
+ // Click button
25
+ await page.click('button:has-text("Sign In")');
26
+
27
+ // Wait for navigation
28
+ await page.waitForURL('http://localhost:3000/dashboard');
29
+
30
+ // Verify content
31
+ expect(await page.locator('h1').textContent()).toBe('Dashboard');
32
+ });
33
+ ```
34
+
35
+ ## Assertions
36
+
37
+ ```typescript
38
+ // Wait for element
39
+ await expect(page.locator('.success-message')).toBeVisible();
40
+
41
+ // Check URL
42
+ await expect(page).toHaveURL('/dashboard');
43
+
44
+ // Check text
45
+ await expect(page.locator('h1')).toHaveText('Welcome');
46
+
47
+ // Count elements
48
+ await expect(page.locator('.item')).toHaveCount(5);
49
+ ```
50
+
51
+ ## Page Objects
52
+
53
+ ```typescript
54
+ class LoginPage {
55
+ constructor(private page: Page) {}
56
+
57
+ async goto() {
58
+ await this.page.goto('http://localhost:3000/login');
59
+ }
60
+
61
+ async login(email: string, password: string) {
62
+ await this.page.fill('input[name="email"]', email);
63
+ await this.page.fill('input[name="password"]', password);
64
+ await this.page.click('button:has-text("Sign In")');
65
+ await this.page.waitForURL('/dashboard');
66
+ }
67
+ }
68
+
69
+ // Usage
70
+ const loginPage = new LoginPage(page);
71
+ await loginPage.goto();
72
+ await loginPage.login('user@example.com', 'password123');
73
+ ```
74
+
75
+ ## Best Practices
76
+
77
+ ✅ **Use Page Objects** - Maintainable test code
78
+ ✅ **Wait for elements** - Don't hardcode waits
79
+ ✅ **Test critical flows** - Focus on user journeys
80
+ ✅ **Run in CI/CD** - Automate testing
81
+ ✅ **Use test data** - Reset state between tests
82
+
83
+ ## Resources
84
+
85
+ - [Playwright Docs](https://playwright.dev/)
86
+ - [Cypress Docs](https://cypress.io/)