cokit-cli 1.0.4 → 1.0.6

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 (584) hide show
  1. package/.vscode/settings.json +70 -0
  2. package/INIT.md +154 -0
  3. package/agents/git-manager.agent.md +1 -3
  4. package/instructions/ck-development.instructions.md +14 -0
  5. package/package.json +1 -1
  6. package/prompts/ck-bootstrap.prompt.md +8 -8
  7. package/prompts/ck-brainstorm.prompt.md +48 -11
  8. package/prompts/ck-code-auto.prompt.md +5 -4
  9. package/prompts/ck-code-no-test.prompt.md +3 -2
  10. package/prompts/ck-code-parallel.prompt.md +2 -1
  11. package/prompts/ck-code.prompt.md +2 -1
  12. package/prompts/ck-cook-auto-parallel.prompt.md +2 -1
  13. package/prompts/ck-cook-auto.prompt.md +5 -3
  14. package/prompts/ck-cook.prompt.md +7 -6
  15. package/prompts/ck-fix-hard.prompt.md +2 -2
  16. package/prompts/ck-git-merge.prompt.md +1 -1
  17. package/prompts/ck-plan-archive.prompt.md +8 -9
  18. package/prompts/ck-plan-ci.prompt.md +4 -3
  19. package/prompts/ck-plan-fast.prompt.md +38 -2
  20. package/prompts/ck-plan-hard.prompt.md +42 -6
  21. package/prompts/ck-plan-parallel.prompt.md +40 -7
  22. package/prompts/ck-plan-two.prompt.md +40 -5
  23. package/prompts/ck-plan-validate.prompt.md +4 -5
  24. package/prompts/ck-plan.prompt.md +80 -30
  25. package/prompts/ck-skill-add.prompt.md +5 -5
  26. package/prompts/ck-skill-create.prompt.md +5 -5
  27. package/prompts/ck-skill-fix-logs.prompt.md +2 -2
  28. package/prompts/ck-skill-optimize-auto.prompt.md +5 -5
  29. package/prompts/ck-skill-optimize.prompt.md +5 -5
  30. package/prompts/ck-skill-plan.prompt.md +7 -7
  31. package/prompts/ck-test-ui.prompt.md +1 -1
  32. package/prompts/ck-worktree.prompt.md +7 -7
  33. package/skills/ck-chrome-devtools/scripts/README.md +1 -1
  34. package/skills/ck-markdown-novel-viewer/scripts/server.cjs +1 -1
  35. package/skills/ck-payment-integration/README.md +1 -1
  36. package/skills/ck-repomix/references/usage-patterns.md +2 -2
  37. package/skills/ck-shopify/README.md +5 -5
  38. package/skills/ck-skill-creator/SKILL.md +12 -14
  39. package/templates/repo/.github/agents/brainstormer.agent.md +71 -0
  40. package/templates/repo/.github/agents/code-reviewer.agent.md +128 -0
  41. package/templates/repo/.github/agents/database-admin.agent.md +91 -0
  42. package/templates/repo/.github/agents/debugger.agent.md +128 -0
  43. package/templates/repo/.github/agents/docs-manager.agent.md +121 -0
  44. package/templates/repo/.github/agents/fullstack-developer.agent.md +96 -0
  45. package/templates/repo/.github/agents/git-manager.agent.md +390 -0
  46. package/templates/repo/.github/agents/mcp-manager.agent.md +93 -0
  47. package/templates/repo/.github/agents/planner.agent.md +94 -0
  48. package/templates/repo/.github/agents/project-manager.agent.md +124 -0
  49. package/templates/repo/.github/agents/researcher.agent.md +32 -0
  50. package/templates/repo/.github/agents/scout-external.agent.md +141 -0
  51. package/templates/repo/.github/agents/scout.agent.md +107 -0
  52. package/templates/repo/.github/agents/tester.agent.md +106 -0
  53. package/templates/repo/.github/agents/ui-ux-designer.agent.md +225 -0
  54. package/templates/repo/.github/collections/ck-core.collection.yml +30 -0
  55. package/templates/repo/.github/collections/ck-development-rules.collection.yml +18 -0
  56. package/templates/repo/.github/collections/ck-documentation.collection.yml +18 -0
  57. package/templates/repo/.github/collections/ck-git-workflow.collection.yml +18 -0
  58. package/templates/repo/.github/collections/ck-orchestration.collection.yml +22 -0
  59. package/templates/repo/.github/collections/ck-ui-design.collection.yml +18 -0
  60. package/templates/repo/.github/instructions/ck-backend.instructions.md +28 -15
  61. package/templates/repo/.github/instructions/ck-development.instructions.md +29 -0
  62. package/templates/repo/.github/instructions/ck-frontend-design-pro.instructions.md +58 -0
  63. package/templates/repo/.github/instructions/ck-frontend.instructions.md +20 -7
  64. package/templates/repo/.github/instructions/ck-google-adk-python.instructions.md +242 -0
  65. package/templates/repo/.github/instructions/ck-research.instructions.md +167 -0
  66. package/templates/repo/.github/instructions/ck-testing.instructions.md +18 -13
  67. package/templates/repo/.github/prompts/ck-ask.prompt.md +57 -0
  68. package/templates/repo/.github/prompts/ck-bootstrap-auto-fast.prompt.md +108 -0
  69. package/templates/repo/.github/prompts/ck-bootstrap-auto-parallel.prompt.md +66 -0
  70. package/templates/repo/.github/prompts/ck-bootstrap-auto.prompt.md +114 -0
  71. package/templates/repo/.github/prompts/ck-bootstrap.prompt.md +136 -0
  72. package/templates/repo/.github/prompts/ck-brainstorm.prompt.md +105 -0
  73. package/templates/repo/.github/prompts/ck-ck-help.prompt.md +114 -0
  74. package/templates/repo/.github/prompts/ck-code-auto.prompt.md +172 -0
  75. package/templates/repo/.github/prompts/ck-code-no-test.prompt.md +160 -0
  76. package/templates/repo/.github/prompts/ck-code-parallel.prompt.md +57 -0
  77. package/templates/repo/.github/prompts/ck-code.prompt.md +168 -18
  78. package/templates/repo/.github/prompts/ck-coding-level.prompt.md +54 -0
  79. package/templates/repo/.github/prompts/ck-cook-auto-fast.prompt.md +26 -0
  80. package/templates/repo/.github/prompts/ck-cook-auto-parallel.prompt.md +50 -0
  81. package/templates/repo/.github/prompts/ck-cook-auto.prompt.md +17 -0
  82. package/templates/repo/.github/prompts/ck-cook.prompt.md +97 -0
  83. package/templates/repo/.github/prompts/ck-debug.prompt.md +14 -0
  84. package/templates/repo/.github/prompts/ck-design-3d.prompt.md +84 -0
  85. package/templates/repo/.github/prompts/ck-design-describe.prompt.md +24 -0
  86. package/templates/repo/.github/prompts/ck-design-fast.prompt.md +32 -0
  87. package/templates/repo/.github/prompts/ck-design-good.prompt.md +36 -0
  88. package/templates/repo/.github/prompts/ck-design-screenshot.prompt.md +35 -0
  89. package/templates/repo/.github/prompts/ck-design-video.prompt.md +35 -0
  90. package/templates/repo/.github/prompts/ck-docs-init.prompt.md +27 -0
  91. package/templates/repo/.github/prompts/ck-docs-summarize.prompt.md +23 -0
  92. package/templates/repo/.github/prompts/ck-docs-update.prompt.md +36 -0
  93. package/templates/repo/.github/prompts/ck-fix-ci.prompt.md +18 -0
  94. package/templates/repo/.github/prompts/ck-fix-fast.prompt.md +18 -0
  95. package/templates/repo/.github/prompts/ck-fix-hard.prompt.md +36 -0
  96. package/templates/repo/.github/prompts/ck-fix-logs.prompt.md +27 -0
  97. package/templates/repo/.github/prompts/ck-fix-parallel.prompt.md +54 -0
  98. package/templates/repo/.github/prompts/ck-fix-test.prompt.md +19 -0
  99. package/templates/repo/.github/prompts/ck-fix-types.prompt.md +11 -0
  100. package/templates/repo/.github/prompts/ck-fix-ui.prompt.md +49 -0
  101. package/templates/repo/.github/prompts/ck-fix.prompt.md +36 -16
  102. package/templates/repo/.github/prompts/ck-git-cm.prompt.md +8 -0
  103. package/templates/repo/.github/prompts/ck-git-cp.prompt.md +7 -0
  104. package/templates/repo/.github/prompts/ck-git-merge.prompt.md +41 -0
  105. package/templates/repo/.github/prompts/ck-git-pr.prompt.md +49 -0
  106. package/templates/repo/.github/prompts/ck-kanban.prompt.md +77 -0
  107. package/templates/repo/.github/prompts/ck-plan-archive.prompt.md +57 -0
  108. package/templates/repo/.github/prompts/ck-plan-ci.prompt.md +35 -0
  109. package/templates/repo/.github/prompts/ck-plan-cro.prompt.md +66 -0
  110. package/templates/repo/.github/prompts/ck-plan-fast.prompt.md +103 -0
  111. package/templates/repo/.github/prompts/ck-plan-hard.prompt.md +125 -0
  112. package/templates/repo/.github/prompts/ck-plan-parallel.prompt.md +159 -0
  113. package/templates/repo/.github/prompts/ck-plan-two.prompt.md +78 -0
  114. package/templates/repo/.github/prompts/ck-plan-validate.prompt.md +117 -0
  115. package/templates/repo/.github/prompts/ck-plan.prompt.md +72 -16
  116. package/templates/repo/.github/prompts/ck-preview.prompt.md +65 -0
  117. package/templates/repo/.github/prompts/ck-review-codebase.prompt.md +44 -0
  118. package/templates/repo/.github/prompts/ck-scout-ext.prompt.md +35 -0
  119. package/templates/repo/.github/prompts/ck-scout.prompt.md +25 -0
  120. package/templates/repo/.github/prompts/ck-skill-add.prompt.md +36 -0
  121. package/templates/repo/.github/prompts/ck-skill-create.prompt.md +29 -0
  122. package/templates/repo/.github/prompts/ck-skill-fix-logs.prompt.md +22 -0
  123. package/templates/repo/.github/prompts/ck-skill-optimize-auto.prompt.md +25 -0
  124. package/templates/repo/.github/prompts/ck-skill-optimize.prompt.md +34 -0
  125. package/templates/repo/.github/prompts/ck-skill-plan.prompt.md +46 -0
  126. package/templates/repo/.github/prompts/ck-test-ui.prompt.md +92 -0
  127. package/templates/repo/.github/prompts/ck-test.prompt.md +6 -19
  128. package/templates/repo/.github/prompts/ck-use-mcp.prompt.md +27 -0
  129. package/templates/repo/.github/prompts/ck-watzup.prompt.md +11 -0
  130. package/templates/repo/.github/prompts/ck-worktree.prompt.md +127 -0
  131. package/templates/repo/.github/skills/ck-ai-artist/SKILL.md +73 -0
  132. package/templates/repo/.github/skills/ck-ai-artist/references/advanced-techniques.md +184 -0
  133. package/templates/repo/.github/skills/ck-ai-artist/references/domain-code.md +66 -0
  134. package/templates/repo/.github/skills/ck-ai-artist/references/domain-data.md +72 -0
  135. package/templates/repo/.github/skills/ck-ai-artist/references/domain-marketing.md +66 -0
  136. package/templates/repo/.github/skills/ck-ai-artist/references/domain-patterns.md +33 -0
  137. package/templates/repo/.github/skills/ck-ai-artist/references/domain-writing.md +68 -0
  138. package/templates/repo/.github/skills/ck-ai-artist/references/image-prompting.md +141 -0
  139. package/templates/repo/.github/skills/ck-ai-artist/references/llm-prompting.md +165 -0
  140. package/templates/repo/.github/skills/ck-ai-artist/references/nano-banana.md +59 -0
  141. package/templates/repo/.github/skills/ck-ai-artist/references/reasoning-techniques.md +201 -0
  142. package/templates/repo/.github/skills/ck-backend-development/SKILL.md +93 -0
  143. package/templates/repo/.github/skills/ck-backend-development/references/backend-api-design.md +495 -0
  144. package/templates/repo/.github/skills/ck-backend-development/references/backend-architecture.md +454 -0
  145. package/templates/repo/.github/skills/ck-backend-development/references/backend-authentication.md +338 -0
  146. package/templates/repo/.github/skills/ck-backend-development/references/backend-code-quality.md +659 -0
  147. package/templates/repo/.github/skills/ck-backend-development/references/backend-debugging.md +904 -0
  148. package/templates/repo/.github/skills/ck-backend-development/references/backend-devops.md +494 -0
  149. package/templates/repo/.github/skills/ck-backend-development/references/backend-mindset.md +387 -0
  150. package/templates/repo/.github/skills/ck-backend-development/references/backend-performance.md +397 -0
  151. package/templates/repo/.github/skills/ck-backend-development/references/backend-security.md +290 -0
  152. package/templates/repo/.github/skills/ck-backend-development/references/backend-technologies.md +256 -0
  153. package/templates/repo/.github/skills/ck-backend-development/references/backend-testing.md +429 -0
  154. package/templates/repo/.github/skills/ck-better-auth/SKILL.md +202 -0
  155. package/templates/repo/.github/skills/ck-better-auth/references/advanced-features.md +553 -0
  156. package/templates/repo/.github/skills/ck-better-auth/references/database-integration.md +577 -0
  157. package/templates/repo/.github/skills/ck-better-auth/references/email-password-auth.md +416 -0
  158. package/templates/repo/.github/skills/ck-better-auth/references/oauth-providers.md +430 -0
  159. package/templates/repo/.github/skills/ck-better-auth/scripts/.coverage +0 -0
  160. package/templates/repo/.github/skills/ck-better-auth/scripts/better_auth_init.py +521 -0
  161. package/templates/repo/.github/skills/ck-better-auth/scripts/requirements.txt +15 -0
  162. package/templates/repo/.github/skills/ck-better-auth/scripts/tests/.coverage +0 -0
  163. package/templates/repo/.github/skills/ck-better-auth/scripts/tests/test_better_auth_init.py +421 -0
  164. package/templates/repo/.github/skills/ck-chrome-devtools/SKILL.md +470 -0
  165. package/templates/repo/.github/skills/ck-chrome-devtools/references/cdp-domains.md +694 -0
  166. package/templates/repo/.github/skills/ck-chrome-devtools/references/performance-guide.md +940 -0
  167. package/templates/repo/.github/skills/ck-chrome-devtools/references/puppeteer-reference.md +953 -0
  168. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/README.md +272 -0
  169. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/__tests__/selector.test.js +210 -0
  170. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/aria-snapshot.js +362 -0
  171. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/click.js +83 -0
  172. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/console.js +79 -0
  173. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/evaluate.js +53 -0
  174. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/fill.js +76 -0
  175. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/inject-auth.js +229 -0
  176. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/install-deps.sh +181 -0
  177. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/install.sh +83 -0
  178. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/lib/browser.js +318 -0
  179. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/lib/selector.js +178 -0
  180. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/navigate.js +54 -0
  181. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/network.js +106 -0
  182. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/package-lock.json +1589 -0
  183. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/package.json +16 -0
  184. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/performance.js +149 -0
  185. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/screenshot.js +198 -0
  186. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/select-ref.js +131 -0
  187. package/templates/repo/.github/skills/ck-chrome-devtools/scripts/snapshot.js +135 -0
  188. package/templates/repo/.github/skills/ck-code-review/SKILL.md +130 -33
  189. package/templates/repo/.github/skills/ck-code-review/references/code-review-reception.md +209 -0
  190. package/templates/repo/.github/skills/ck-code-review/references/requesting-code-review.md +105 -0
  191. package/templates/repo/.github/skills/ck-code-review/references/verification-before-completion.md +139 -0
  192. package/templates/repo/.github/skills/ck-databases/SKILL.md +231 -0
  193. package/templates/repo/.github/skills/ck-databases/references/mongodb-aggregation.md +447 -0
  194. package/templates/repo/.github/skills/ck-databases/references/mongodb-atlas.md +465 -0
  195. package/templates/repo/.github/skills/ck-databases/references/mongodb-crud.md +408 -0
  196. package/templates/repo/.github/skills/ck-databases/references/mongodb-indexing.md +442 -0
  197. package/templates/repo/.github/skills/ck-databases/references/postgresql-administration.md +594 -0
  198. package/templates/repo/.github/skills/ck-databases/references/postgresql-performance.md +527 -0
  199. package/templates/repo/.github/skills/ck-databases/references/postgresql-psql-cli.md +467 -0
  200. package/templates/repo/.github/skills/ck-databases/references/postgresql-queries.md +475 -0
  201. package/templates/repo/.github/skills/ck-databases/scripts/.coverage +0 -0
  202. package/templates/repo/.github/skills/ck-databases/scripts/db_backup.py +502 -0
  203. package/templates/repo/.github/skills/ck-databases/scripts/db_migrate.py +425 -0
  204. package/templates/repo/.github/skills/ck-databases/scripts/db_performance_check.py +456 -0
  205. package/templates/repo/.github/skills/ck-databases/scripts/requirements.txt +20 -0
  206. package/templates/repo/.github/skills/ck-databases/scripts/tests/coverage-db.json +1 -0
  207. package/templates/repo/.github/skills/ck-databases/scripts/tests/requirements.txt +4 -0
  208. package/templates/repo/.github/skills/ck-databases/scripts/tests/test_db_backup.py +340 -0
  209. package/templates/repo/.github/skills/ck-databases/scripts/tests/test_db_migrate.py +277 -0
  210. package/templates/repo/.github/skills/ck-databases/scripts/tests/test_db_performance_check.py +370 -0
  211. package/templates/repo/.github/skills/ck-debugging/SKILL.md +70 -22
  212. package/templates/repo/.github/skills/ck-debugging/references/defense-in-depth.md +124 -0
  213. package/templates/repo/.github/skills/ck-debugging/references/root-cause-tracing.md +122 -0
  214. package/templates/repo/.github/skills/ck-debugging/references/systematic-debugging.md +102 -0
  215. package/templates/repo/.github/skills/ck-debugging/references/verification.md +123 -0
  216. package/templates/repo/.github/skills/ck-debugging/scripts/find-polluter.sh +63 -0
  217. package/templates/repo/.github/skills/ck-debugging/scripts/find-polluter.test.md +102 -0
  218. package/templates/repo/.github/skills/ck-devops/.env.example +76 -0
  219. package/templates/repo/.github/skills/ck-devops/SKILL.md +283 -0
  220. package/templates/repo/.github/skills/ck-devops/references/browser-rendering.md +305 -0
  221. package/templates/repo/.github/skills/ck-devops/references/cloudflare-d1-kv.md +123 -0
  222. package/templates/repo/.github/skills/ck-devops/references/cloudflare-platform.md +271 -0
  223. package/templates/repo/.github/skills/ck-devops/references/cloudflare-r2-storage.md +280 -0
  224. package/templates/repo/.github/skills/ck-devops/references/cloudflare-workers-advanced.md +312 -0
  225. package/templates/repo/.github/skills/ck-devops/references/cloudflare-workers-apis.md +309 -0
  226. package/templates/repo/.github/skills/ck-devops/references/cloudflare-workers-basics.md +418 -0
  227. package/templates/repo/.github/skills/ck-devops/references/docker-basics.md +297 -0
  228. package/templates/repo/.github/skills/ck-devops/references/docker-compose.md +292 -0
  229. package/templates/repo/.github/skills/ck-devops/references/gcloud-platform.md +297 -0
  230. package/templates/repo/.github/skills/ck-devops/references/gcloud-services.md +304 -0
  231. package/templates/repo/.github/skills/ck-devops/scripts/cloudflare_deploy.py +269 -0
  232. package/templates/repo/.github/skills/ck-devops/scripts/docker_optimize.py +331 -0
  233. package/templates/repo/.github/skills/ck-devops/scripts/requirements.txt +20 -0
  234. package/templates/repo/.github/skills/ck-devops/scripts/tests/requirements.txt +3 -0
  235. package/templates/repo/.github/skills/ck-devops/scripts/tests/test_cloudflare_deploy.py +285 -0
  236. package/templates/repo/.github/skills/ck-devops/scripts/tests/test_docker_optimize.py +436 -0
  237. package/templates/repo/.github/skills/ck-docs-seeker/.env.example +15 -0
  238. package/templates/repo/.github/skills/ck-docs-seeker/SKILL.md +96 -0
  239. package/templates/repo/.github/skills/ck-docs-seeker/package.json +25 -0
  240. package/templates/repo/.github/skills/ck-docs-seeker/references/advanced.md +79 -0
  241. package/templates/repo/.github/skills/ck-docs-seeker/references/context7-patterns.md +68 -0
  242. package/templates/repo/.github/skills/ck-docs-seeker/references/errors.md +68 -0
  243. package/templates/repo/.github/skills/ck-docs-seeker/references/search-patterns.md +93 -0
  244. package/templates/repo/.github/skills/ck-docs-seeker/references/source-evaluation.md +77 -0
  245. package/templates/repo/.github/skills/ck-docs-seeker/scripts/analyze-llms-txt.js +211 -0
  246. package/templates/repo/.github/skills/ck-docs-seeker/scripts/detect-topic.js +172 -0
  247. package/templates/repo/.github/skills/ck-docs-seeker/scripts/fetch-docs.js +213 -0
  248. package/templates/repo/.github/skills/ck-docs-seeker/scripts/tests/run-tests.js +72 -0
  249. package/templates/repo/.github/skills/ck-docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
  250. package/templates/repo/.github/skills/ck-docs-seeker/scripts/tests/test-detect-topic.js +112 -0
  251. package/templates/repo/.github/skills/ck-docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
  252. package/templates/repo/.github/skills/ck-docs-seeker/scripts/utils/env-loader.js +94 -0
  253. package/templates/repo/.github/skills/ck-docs-seeker/workflows/library-search.md +87 -0
  254. package/templates/repo/.github/skills/ck-docs-seeker/workflows/repo-analysis.md +91 -0
  255. package/templates/repo/.github/skills/ck-docs-seeker/workflows/topic-search.md +77 -0
  256. package/templates/repo/.github/skills/ck-frontend-design/SKILL.md +79 -0
  257. package/templates/repo/.github/skills/ck-frontend-design/references/analysis-best-practices.md +80 -0
  258. package/templates/repo/.github/skills/ck-frontend-design/references/analysis-prompts.md +141 -0
  259. package/templates/repo/.github/skills/ck-frontend-design/references/analysis-techniques.md +118 -0
  260. package/templates/repo/.github/skills/ck-frontend-design/references/animejs.md +396 -0
  261. package/templates/repo/.github/skills/ck-frontend-design/references/design-extraction-overview.md +71 -0
  262. package/templates/repo/.github/skills/ck-frontend-design/references/extraction-best-practices.md +141 -0
  263. package/templates/repo/.github/skills/ck-frontend-design/references/extraction-output-templates.md +162 -0
  264. package/templates/repo/.github/skills/ck-frontend-design/references/extraction-prompts.md +127 -0
  265. package/templates/repo/.github/skills/ck-frontend-design/references/technical-accessibility.md +119 -0
  266. package/templates/repo/.github/skills/ck-frontend-design/references/technical-best-practices.md +97 -0
  267. package/templates/repo/.github/skills/ck-frontend-design/references/technical-optimization.md +44 -0
  268. package/templates/repo/.github/skills/ck-frontend-design/references/technical-overview.md +90 -0
  269. package/templates/repo/.github/skills/ck-frontend-design/references/technical-workflows.md +150 -0
  270. package/templates/repo/.github/skills/ck-frontend-design/references/visual-analysis-overview.md +95 -0
  271. package/templates/repo/.github/skills/ck-frontend-development/SKILL.md +399 -0
  272. package/templates/repo/.github/skills/ck-frontend-development/resources/common-patterns.md +331 -0
  273. package/templates/repo/.github/skills/ck-frontend-development/resources/complete-examples.md +872 -0
  274. package/templates/repo/.github/skills/ck-frontend-development/resources/component-patterns.md +502 -0
  275. package/templates/repo/.github/skills/ck-frontend-development/resources/data-fetching.md +767 -0
  276. package/templates/repo/.github/skills/ck-frontend-development/resources/file-organization.md +502 -0
  277. package/templates/repo/.github/skills/ck-frontend-development/resources/loading-and-error-states.md +501 -0
  278. package/templates/repo/.github/skills/ck-frontend-development/resources/performance.md +406 -0
  279. package/templates/repo/.github/skills/ck-frontend-development/resources/routing-guide.md +364 -0
  280. package/templates/repo/.github/skills/ck-frontend-development/resources/styling-guide.md +428 -0
  281. package/templates/repo/.github/skills/ck-frontend-development/resources/typescript-standards.md +418 -0
  282. package/templates/repo/.github/skills/ck-markdown-novel-viewer/SKILL.md +190 -0
  283. package/templates/repo/.github/skills/ck-markdown-novel-viewer/assets/directory-browser.css +215 -0
  284. package/templates/repo/.github/skills/ck-markdown-novel-viewer/assets/favicon.png +0 -0
  285. package/templates/repo/.github/skills/ck-markdown-novel-viewer/assets/novel-theme.css +818 -0
  286. package/templates/repo/.github/skills/ck-markdown-novel-viewer/assets/reader.js +262 -0
  287. package/templates/repo/.github/skills/ck-markdown-novel-viewer/assets/template.html +80 -0
  288. package/templates/repo/.github/skills/ck-markdown-novel-viewer/package.json +15 -0
  289. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
  290. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +272 -0
  291. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/lib/plan-navigator.cjs +509 -0
  292. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
  293. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
  294. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/server.cjs +411 -0
  295. package/templates/repo/.github/skills/ck-markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
  296. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
  297. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
  298. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/http-server.test.cjs +271 -0
  299. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/run-tests.cjs +51 -0
  300. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/test-framework.cjs +154 -0
  301. package/templates/repo/.github/skills/ck-markdown-novel-viewer/tests/verify-xss.cjs +90 -0
  302. package/templates/repo/.github/skills/ck-mcp-builder/LICENSE.txt +202 -0
  303. package/templates/repo/.github/skills/ck-mcp-builder/SKILL.md +327 -0
  304. package/templates/repo/.github/skills/ck-mcp-builder/reference/evaluation.md +602 -0
  305. package/templates/repo/.github/skills/ck-mcp-builder/reference/mcp_best_practices.md +915 -0
  306. package/templates/repo/.github/skills/ck-mcp-builder/reference/node_mcp_server.md +916 -0
  307. package/templates/repo/.github/skills/ck-mcp-builder/reference/python_mcp_server.md +752 -0
  308. package/templates/repo/.github/skills/ck-mcp-builder/scripts/connections.py +151 -0
  309. package/templates/repo/.github/skills/ck-mcp-builder/scripts/evaluation.py +373 -0
  310. package/templates/repo/.github/skills/ck-mcp-builder/scripts/example_evaluation.xml +22 -0
  311. package/templates/repo/.github/skills/ck-mcp-builder/scripts/requirements.txt +2 -0
  312. package/templates/repo/.github/skills/ck-mcp-management/README.md +219 -0
  313. package/templates/repo/.github/skills/ck-mcp-management/SKILL.md +209 -0
  314. package/templates/repo/.github/skills/ck-mcp-management/assets/tools.json +3146 -0
  315. package/templates/repo/.github/skills/ck-mcp-management/references/configuration.md +114 -0
  316. package/templates/repo/.github/skills/ck-mcp-management/references/gemini-cli-integration.md +215 -0
  317. package/templates/repo/.github/skills/ck-mcp-management/references/mcp-protocol.md +116 -0
  318. package/templates/repo/.github/skills/ck-mcp-management/scripts/.env.example +10 -0
  319. package/templates/repo/.github/skills/ck-mcp-management/scripts/cli.ts +195 -0
  320. package/templates/repo/.github/skills/ck-mcp-management/scripts/dist/analyze-tools.js +70 -0
  321. package/templates/repo/.github/skills/ck-mcp-management/scripts/dist/cli.js +160 -0
  322. package/templates/repo/.github/skills/ck-mcp-management/scripts/dist/mcp-client.js +183 -0
  323. package/templates/repo/.github/skills/ck-mcp-management/scripts/mcp-client.ts +230 -0
  324. package/templates/repo/.github/skills/ck-mcp-management/scripts/package.json +20 -0
  325. package/templates/repo/.github/skills/ck-mcp-management/scripts/tsconfig.json +15 -0
  326. package/templates/repo/.github/skills/ck-media-processing/SKILL.md +90 -0
  327. package/templates/repo/.github/skills/ck-media-processing/references/common-workflows.md +132 -0
  328. package/templates/repo/.github/skills/ck-media-processing/references/ffmpeg-encoding.md +358 -0
  329. package/templates/repo/.github/skills/ck-media-processing/references/ffmpeg-filters.md +503 -0
  330. package/templates/repo/.github/skills/ck-media-processing/references/ffmpeg-streaming.md +403 -0
  331. package/templates/repo/.github/skills/ck-media-processing/references/format-compatibility.md +375 -0
  332. package/templates/repo/.github/skills/ck-media-processing/references/imagemagick-batch.md +612 -0
  333. package/templates/repo/.github/skills/ck-media-processing/references/imagemagick-editing.md +623 -0
  334. package/templates/repo/.github/skills/ck-media-processing/references/rmbg-background-removal.md +66 -0
  335. package/templates/repo/.github/skills/ck-media-processing/references/troubleshooting.md +109 -0
  336. package/templates/repo/.github/skills/ck-media-processing/scripts/README.md +111 -0
  337. package/templates/repo/.github/skills/ck-media-processing/scripts/batch-remove-background.sh +124 -0
  338. package/templates/repo/.github/skills/ck-media-processing/scripts/batch_resize.py +342 -0
  339. package/templates/repo/.github/skills/ck-media-processing/scripts/media_convert.py +311 -0
  340. package/templates/repo/.github/skills/ck-media-processing/scripts/remove-background.sh +96 -0
  341. package/templates/repo/.github/skills/ck-media-processing/scripts/remove-bg-node.js +158 -0
  342. package/templates/repo/.github/skills/ck-media-processing/scripts/requirements.txt +24 -0
  343. package/templates/repo/.github/skills/ck-media-processing/scripts/tests/.coverage +0 -0
  344. package/templates/repo/.github/skills/ck-media-processing/scripts/tests/requirements.txt +2 -0
  345. package/templates/repo/.github/skills/ck-media-processing/scripts/tests/test_batch_resize.py +372 -0
  346. package/templates/repo/.github/skills/ck-media-processing/scripts/tests/test_media_convert.py +259 -0
  347. package/templates/repo/.github/skills/ck-media-processing/scripts/tests/test_video_optimize.py +397 -0
  348. package/templates/repo/.github/skills/ck-media-processing/scripts/video_optimize.py +414 -0
  349. package/templates/repo/.github/skills/ck-mobile-development/SKILL.md +210 -0
  350. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-android.md +604 -0
  351. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-best-practices.md +545 -0
  352. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-debugging.md +1089 -0
  353. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-frameworks.md +465 -0
  354. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-ios.md +496 -0
  355. package/templates/repo/.github/skills/ck-mobile-development/references/mobile-mindset.md +544 -0
  356. package/templates/repo/.github/skills/ck-payment-integration/README.md +185 -0
  357. package/templates/repo/.github/skills/ck-payment-integration/SKILL.md +116 -0
  358. package/templates/repo/.github/skills/ck-payment-integration/references/polar/benefits.md +396 -0
  359. package/templates/repo/.github/skills/ck-payment-integration/references/polar/best-practices.md +482 -0
  360. package/templates/repo/.github/skills/ck-payment-integration/references/polar/checkouts.md +266 -0
  361. package/templates/repo/.github/skills/ck-payment-integration/references/polar/overview.md +184 -0
  362. package/templates/repo/.github/skills/ck-payment-integration/references/polar/products.md +244 -0
  363. package/templates/repo/.github/skills/ck-payment-integration/references/polar/sdk.md +436 -0
  364. package/templates/repo/.github/skills/ck-payment-integration/references/polar/subscriptions.md +340 -0
  365. package/templates/repo/.github/skills/ck-payment-integration/references/polar/webhooks.md +405 -0
  366. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/api.md +140 -0
  367. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/best-practices.md +337 -0
  368. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/overview.md +138 -0
  369. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/qr-codes.md +228 -0
  370. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/sdk.md +213 -0
  371. package/templates/repo/.github/skills/ck-payment-integration/references/sepay/webhooks.md +208 -0
  372. package/templates/repo/.github/skills/ck-payment-integration/scripts/.env.example +20 -0
  373. package/templates/repo/.github/skills/ck-payment-integration/scripts/checkout-helper.js +244 -0
  374. package/templates/repo/.github/skills/ck-payment-integration/scripts/package.json +17 -0
  375. package/templates/repo/.github/skills/ck-payment-integration/scripts/polar-webhook-verify.js +202 -0
  376. package/templates/repo/.github/skills/ck-payment-integration/scripts/sepay-webhook-verify.js +193 -0
  377. package/templates/repo/.github/skills/ck-payment-integration/scripts/test-scripts.js +237 -0
  378. package/templates/repo/.github/skills/ck-planning/SKILL.md +112 -0
  379. package/templates/repo/.github/skills/ck-planning/references/codebase-understanding.md +62 -0
  380. package/templates/repo/.github/skills/ck-planning/references/output-standards.md +127 -0
  381. package/templates/repo/.github/skills/ck-planning/references/plan-organization.md +150 -0
  382. package/templates/repo/.github/skills/ck-planning/references/research-phase.md +49 -0
  383. package/templates/repo/.github/skills/ck-planning/references/solution-design.md +63 -0
  384. package/templates/repo/.github/skills/ck-problem-solving/SKILL.md +95 -0
  385. package/templates/repo/.github/skills/ck-problem-solving/references/attribution.md +69 -0
  386. package/templates/repo/.github/skills/ck-problem-solving/references/collision-zone-thinking.md +79 -0
  387. package/templates/repo/.github/skills/ck-problem-solving/references/inversion-exercise.md +91 -0
  388. package/templates/repo/.github/skills/ck-problem-solving/references/meta-pattern-recognition.md +87 -0
  389. package/templates/repo/.github/skills/ck-problem-solving/references/scale-game.md +95 -0
  390. package/templates/repo/.github/skills/ck-problem-solving/references/simplification-cascades.md +80 -0
  391. package/templates/repo/.github/skills/ck-problem-solving/references/when-stuck.md +72 -0
  392. package/templates/repo/.github/skills/ck-repomix/SKILL.md +247 -0
  393. package/templates/repo/.github/skills/ck-repomix/references/configuration.md +211 -0
  394. package/templates/repo/.github/skills/ck-repomix/references/usage-patterns.md +232 -0
  395. package/templates/repo/.github/skills/ck-repomix/scripts/.coverage +0 -0
  396. package/templates/repo/.github/skills/ck-repomix/scripts/README.md +179 -0
  397. package/templates/repo/.github/skills/ck-repomix/scripts/repomix_batch.py +455 -0
  398. package/templates/repo/.github/skills/ck-repomix/scripts/repos.example.json +15 -0
  399. package/templates/repo/.github/skills/ck-repomix/scripts/requirements.txt +15 -0
  400. package/templates/repo/.github/skills/ck-repomix/scripts/tests/test_repomix_batch.py +531 -0
  401. package/templates/repo/.github/skills/ck-sequential-thinking/.env.example +8 -0
  402. package/templates/repo/.github/skills/ck-sequential-thinking/README.md +183 -0
  403. package/templates/repo/.github/skills/ck-sequential-thinking/SKILL.md +92 -0
  404. package/templates/repo/.github/skills/ck-sequential-thinking/package.json +31 -0
  405. package/templates/repo/.github/skills/ck-sequential-thinking/references/advanced-strategies.md +79 -0
  406. package/templates/repo/.github/skills/ck-sequential-thinking/references/advanced-techniques.md +76 -0
  407. package/templates/repo/.github/skills/ck-sequential-thinking/references/core-patterns.md +95 -0
  408. package/templates/repo/.github/skills/ck-sequential-thinking/references/examples-api.md +88 -0
  409. package/templates/repo/.github/skills/ck-sequential-thinking/references/examples-architecture.md +94 -0
  410. package/templates/repo/.github/skills/ck-sequential-thinking/references/examples-debug.md +90 -0
  411. package/templates/repo/.github/skills/ck-sequential-thinking/scripts/format-thought.js +159 -0
  412. package/templates/repo/.github/skills/ck-sequential-thinking/scripts/process-thought.js +236 -0
  413. package/templates/repo/.github/skills/ck-sequential-thinking/tests/format-thought.test.js +133 -0
  414. package/templates/repo/.github/skills/ck-sequential-thinking/tests/process-thought.test.js +215 -0
  415. package/templates/repo/.github/skills/ck-shopify/README.md +66 -0
  416. package/templates/repo/.github/skills/ck-shopify/SKILL.md +319 -0
  417. package/templates/repo/.github/skills/ck-shopify/references/app-development.md +470 -0
  418. package/templates/repo/.github/skills/ck-shopify/references/extensions.md +493 -0
  419. package/templates/repo/.github/skills/ck-shopify/references/themes.md +498 -0
  420. package/templates/repo/.github/skills/ck-shopify/scripts/.coverage +0 -0
  421. package/templates/repo/.github/skills/ck-shopify/scripts/requirements.txt +19 -0
  422. package/templates/repo/.github/skills/ck-shopify/scripts/shopify_init.py +423 -0
  423. package/templates/repo/.github/skills/ck-shopify/scripts/tests/.coverage +0 -0
  424. package/templates/repo/.github/skills/ck-shopify/scripts/tests/test_shopify_init.py +385 -0
  425. package/templates/repo/.github/skills/ck-skill-creator/LICENSE.txt +202 -0
  426. package/templates/repo/.github/skills/ck-skill-creator/SKILL.md +263 -0
  427. package/templates/repo/.github/skills/ck-skill-creator/scripts/init_skill.py +303 -0
  428. package/templates/repo/.github/skills/ck-skill-creator/scripts/package_skill.py +110 -0
  429. package/templates/repo/.github/skills/ck-skill-creator/scripts/quick_validate.py +65 -0
  430. package/templates/repo/.github/skills/ck-threejs/SKILL.md +87 -0
  431. package/templates/repo/.github/skills/ck-threejs/references/01-getting-started.md +177 -0
  432. package/templates/repo/.github/skills/ck-threejs/references/02-loaders.md +169 -0
  433. package/templates/repo/.github/skills/ck-threejs/references/03-textures.md +170 -0
  434. package/templates/repo/.github/skills/ck-threejs/references/04-cameras.md +195 -0
  435. package/templates/repo/.github/skills/ck-threejs/references/05-lights.md +183 -0
  436. package/templates/repo/.github/skills/ck-threejs/references/06-animations.md +214 -0
  437. package/templates/repo/.github/skills/ck-threejs/references/07-math.md +260 -0
  438. package/templates/repo/.github/skills/ck-threejs/references/08-interaction.md +267 -0
  439. package/templates/repo/.github/skills/ck-threejs/references/09-postprocessing.md +240 -0
  440. package/templates/repo/.github/skills/ck-threejs/references/10-controls.md +259 -0
  441. package/templates/repo/.github/skills/ck-threejs/references/11-materials-advanced.md +270 -0
  442. package/templates/repo/.github/skills/ck-threejs/references/12-performance.md +269 -0
  443. package/templates/repo/.github/skills/ck-threejs/references/13-node-materials.md +298 -0
  444. package/templates/repo/.github/skills/ck-threejs/references/14-physics-vr.md +304 -0
  445. package/templates/repo/.github/skills/ck-threejs/references/15-specialized-loaders.md +333 -0
  446. package/templates/repo/.github/skills/ck-threejs/references/16-webgpu.md +302 -0
  447. package/templates/repo/.github/skills/ck-ui-styling/LICENSE.txt +202 -0
  448. package/templates/repo/.github/skills/ck-ui-styling/SKILL.md +319 -0
  449. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  450. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  451. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  452. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  453. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  454. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  455. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  456. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  457. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  458. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  459. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  460. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  461. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  462. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  463. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  464. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  465. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  466. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  467. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  468. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  469. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  470. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  471. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  472. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  473. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  474. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  475. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  476. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  477. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  478. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  479. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  480. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  481. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  482. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  483. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  484. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  485. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  486. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  487. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  488. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  489. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  490. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  491. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  492. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  493. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  494. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  495. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  496. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  497. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  498. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  499. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  500. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  501. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  502. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  503. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  504. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  505. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  506. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  507. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  508. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  509. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  510. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  511. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  512. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  513. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  514. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  515. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  516. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  517. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  518. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  519. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  520. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  521. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  522. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  523. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  524. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  525. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  526. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  527. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  528. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  529. package/templates/repo/.github/skills/ck-ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  530. package/templates/repo/.github/skills/ck-ui-styling/references/canvas-design-system.md +320 -0
  531. package/templates/repo/.github/skills/ck-ui-styling/references/shadcn-accessibility.md +471 -0
  532. package/templates/repo/.github/skills/ck-ui-styling/references/shadcn-components.md +424 -0
  533. package/templates/repo/.github/skills/ck-ui-styling/references/shadcn-theming.md +373 -0
  534. package/templates/repo/.github/skills/ck-ui-styling/references/tailwind-customization.md +483 -0
  535. package/templates/repo/.github/skills/ck-ui-styling/references/tailwind-responsive.md +382 -0
  536. package/templates/repo/.github/skills/ck-ui-styling/references/tailwind-utilities.md +455 -0
  537. package/templates/repo/.github/skills/ck-ui-styling/scripts/.coverage +0 -0
  538. package/templates/repo/.github/skills/ck-ui-styling/scripts/requirements.txt +17 -0
  539. package/templates/repo/.github/skills/ck-ui-styling/scripts/shadcn_add.py +292 -0
  540. package/templates/repo/.github/skills/ck-ui-styling/scripts/tailwind_config_gen.py +456 -0
  541. package/templates/repo/.github/skills/ck-ui-styling/scripts/tests/coverage-ui.json +1 -0
  542. package/templates/repo/.github/skills/ck-ui-styling/scripts/tests/requirements.txt +3 -0
  543. package/templates/repo/.github/skills/ck-ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  544. package/templates/repo/.github/skills/ck-ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  545. package/templates/repo/.github/skills/ck-ui-ux-pro-max/SKILL.md +227 -0
  546. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/charts.csv +26 -0
  547. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/colors.csv +97 -0
  548. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/landing.csv +31 -0
  549. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/products.csv +97 -0
  550. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/prompts.csv +24 -0
  551. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  552. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
  553. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  554. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  555. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/react.csv +54 -0
  556. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  557. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  558. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/stacks/vue.csv +50 -0
  559. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/styles.csv +59 -0
  560. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/typography.csv +58 -0
  561. package/templates/repo/.github/skills/ck-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  562. package/templates/repo/.github/skills/ck-ui-ux-pro-max/scripts/core.py +236 -0
  563. package/templates/repo/.github/skills/ck-ui-ux-pro-max/scripts/search.py +76 -0
  564. package/templates/repo/.github/skills/ck-web-frameworks/SKILL.md +322 -0
  565. package/templates/repo/.github/skills/ck-web-frameworks/references/nextjs-app-router.md +465 -0
  566. package/templates/repo/.github/skills/ck-web-frameworks/references/nextjs-data-fetching.md +459 -0
  567. package/templates/repo/.github/skills/ck-web-frameworks/references/nextjs-optimization.md +511 -0
  568. package/templates/repo/.github/skills/ck-web-frameworks/references/nextjs-server-components.md +495 -0
  569. package/templates/repo/.github/skills/ck-web-frameworks/references/remix-icon-integration.md +603 -0
  570. package/templates/repo/.github/skills/ck-web-frameworks/references/turborepo-caching.md +551 -0
  571. package/templates/repo/.github/skills/ck-web-frameworks/references/turborepo-pipelines.md +517 -0
  572. package/templates/repo/.github/skills/ck-web-frameworks/references/turborepo-setup.md +542 -0
  573. package/templates/repo/.github/skills/ck-web-frameworks/scripts/.coverage +0 -0
  574. package/templates/repo/.github/skills/ck-web-frameworks/scripts/__init__.py +0 -0
  575. package/templates/repo/.github/skills/ck-web-frameworks/scripts/nextjs_init.py +547 -0
  576. package/templates/repo/.github/skills/ck-web-frameworks/scripts/requirements.txt +16 -0
  577. package/templates/repo/.github/skills/ck-web-frameworks/scripts/tests/coverage-web.json +1 -0
  578. package/templates/repo/.github/skills/ck-web-frameworks/scripts/tests/requirements.txt +3 -0
  579. package/templates/repo/.github/skills/ck-web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
  580. package/templates/repo/.github/skills/ck-web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
  581. package/templates/repo/.github/skills/ck-web-frameworks/scripts/turborepo_migrate.py +394 -0
  582. package/templates/repo/.vscode/settings.json +66 -2
  583. package/templates/repo/.github/prompts/ck-docs.prompt.md +0 -23
  584. package/templates/repo/.github/prompts/ck-review.prompt.md +0 -24
@@ -0,0 +1,318 @@
1
+ /**
2
+ * Shared browser utilities for Chrome DevTools scripts
3
+ * Supports persistent browser sessions via WebSocket endpoint file
4
+ */
5
+ import puppeteer from 'puppeteer';
6
+ import debug from 'debug';
7
+ import fs from 'fs';
8
+ import path from 'path';
9
+ import { fileURLToPath } from 'url';
10
+
11
+ const log = debug('chrome-devtools:browser');
12
+
13
+ // Session file stores WebSocket endpoint for browser reuse across processes
14
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
15
+ const SESSION_FILE = path.join(__dirname, '..', '.browser-session.json');
16
+ const AUTH_SESSION_FILE = path.join(__dirname, '..', '.auth-session.json');
17
+
18
+ let browserInstance = null;
19
+ let pageInstance = null;
20
+
21
+ /**
22
+ * Read session info from file
23
+ */
24
+ function readSession() {
25
+ try {
26
+ if (fs.existsSync(SESSION_FILE)) {
27
+ const data = JSON.parse(fs.readFileSync(SESSION_FILE, 'utf8'));
28
+ // Check if session is not too old (max 1 hour)
29
+ if (Date.now() - data.timestamp < 3600000) {
30
+ return data;
31
+ }
32
+ }
33
+ } catch (e) {
34
+ log('Failed to read session:', e.message);
35
+ }
36
+ return null;
37
+ }
38
+
39
+ /**
40
+ * Write session info to file
41
+ */
42
+ function writeSession(wsEndpoint) {
43
+ try {
44
+ fs.writeFileSync(SESSION_FILE, JSON.stringify({
45
+ wsEndpoint,
46
+ timestamp: Date.now()
47
+ }));
48
+ } catch (e) {
49
+ log('Failed to write session:', e.message);
50
+ }
51
+ }
52
+
53
+ /**
54
+ * Clear session file
55
+ */
56
+ function clearSession() {
57
+ try {
58
+ if (fs.existsSync(SESSION_FILE)) {
59
+ fs.unlinkSync(SESSION_FILE);
60
+ }
61
+ } catch (e) {
62
+ log('Failed to clear session:', e.message);
63
+ }
64
+ }
65
+
66
+ /**
67
+ * Save auth session (cookies, storage) for persistence
68
+ * @param {Object} authData - Auth data to save
69
+ */
70
+ export function saveAuthSession(authData) {
71
+ try {
72
+ const existing = readAuthSession() || {};
73
+ const merged = { ...existing, ...authData, timestamp: Date.now() };
74
+ fs.writeFileSync(AUTH_SESSION_FILE, JSON.stringify(merged, null, 2));
75
+ log('Auth session saved');
76
+ } catch (e) {
77
+ log('Failed to save auth session:', e.message);
78
+ }
79
+ }
80
+
81
+ /**
82
+ * Read auth session from file
83
+ * @returns {Object|null} - Auth session data or null
84
+ */
85
+ export function readAuthSession() {
86
+ try {
87
+ if (fs.existsSync(AUTH_SESSION_FILE)) {
88
+ const data = JSON.parse(fs.readFileSync(AUTH_SESSION_FILE, 'utf8'));
89
+ // Auth sessions valid for 24 hours
90
+ if (Date.now() - data.timestamp < 86400000) {
91
+ return data;
92
+ }
93
+ }
94
+ } catch (e) {
95
+ log('Failed to read auth session:', e.message);
96
+ }
97
+ return null;
98
+ }
99
+
100
+ /**
101
+ * Clear auth session file
102
+ */
103
+ export function clearAuthSession() {
104
+ try {
105
+ if (fs.existsSync(AUTH_SESSION_FILE)) {
106
+ fs.unlinkSync(AUTH_SESSION_FILE);
107
+ log('Auth session cleared');
108
+ }
109
+ } catch (e) {
110
+ log('Failed to clear auth session:', e.message);
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Apply saved auth session to page
116
+ * @param {Object} page - Puppeteer page instance
117
+ * @param {string} url - Target URL for domain context
118
+ */
119
+ export async function applyAuthSession(page, url) {
120
+ const authData = readAuthSession();
121
+ if (!authData) {
122
+ log('No auth session found');
123
+ return false;
124
+ }
125
+
126
+ try {
127
+ // Apply cookies
128
+ if (authData.cookies && authData.cookies.length > 0) {
129
+ await page.setCookie(...authData.cookies);
130
+ log(`Applied ${authData.cookies.length} cookies`);
131
+ }
132
+
133
+ // Apply localStorage (requires navigation first)
134
+ if (authData.localStorage && Object.keys(authData.localStorage).length > 0) {
135
+ await page.evaluate((data) => {
136
+ Object.entries(data).forEach(([key, value]) => {
137
+ localStorage.setItem(key, typeof value === 'string' ? value : JSON.stringify(value));
138
+ });
139
+ }, authData.localStorage);
140
+ log('Applied localStorage data');
141
+ }
142
+
143
+ // Apply sessionStorage
144
+ if (authData.sessionStorage && Object.keys(authData.sessionStorage).length > 0) {
145
+ await page.evaluate((data) => {
146
+ Object.entries(data).forEach(([key, value]) => {
147
+ sessionStorage.setItem(key, typeof value === 'string' ? value : JSON.stringify(value));
148
+ });
149
+ }, authData.sessionStorage);
150
+ log('Applied sessionStorage data');
151
+ }
152
+
153
+ // Apply extra headers
154
+ if (authData.headers) {
155
+ await page.setExtraHTTPHeaders(authData.headers);
156
+ log('Applied HTTP headers');
157
+ }
158
+
159
+ return true;
160
+ } catch (e) {
161
+ log('Failed to apply auth session:', e.message);
162
+ return false;
163
+ }
164
+ }
165
+
166
+ /**
167
+ * Launch or connect to browser
168
+ * If a session file exists with valid wsEndpoint, connects to existing browser
169
+ * Otherwise launches new browser and saves wsEndpoint for future connections
170
+ */
171
+ export async function getBrowser(options = {}) {
172
+ // If we already have a connected browser in this process, reuse it
173
+ if (browserInstance && browserInstance.isConnected()) {
174
+ log('Reusing existing browser instance from process');
175
+ return browserInstance;
176
+ }
177
+
178
+ // Try to connect to existing browser from session file
179
+ const session = readSession();
180
+ if (session && session.wsEndpoint) {
181
+ try {
182
+ log('Attempting to connect to existing browser session');
183
+ browserInstance = await puppeteer.connect({
184
+ browserWSEndpoint: session.wsEndpoint
185
+ });
186
+ log('Connected to existing browser');
187
+ return browserInstance;
188
+ } catch (e) {
189
+ log('Failed to connect to existing browser:', e.message);
190
+ clearSession();
191
+ }
192
+ }
193
+
194
+ // Connect via provided wsEndpoint or browserUrl
195
+ if (options.wsEndpoint || options.browserUrl) {
196
+ log('Connecting to browser via provided endpoint');
197
+ browserInstance = await puppeteer.connect({
198
+ browserWSEndpoint: options.wsEndpoint,
199
+ browserURL: options.browserUrl
200
+ });
201
+ return browserInstance;
202
+ }
203
+
204
+ // Launch new browser
205
+ const launchOptions = {
206
+ headless: options.headless !== false,
207
+ args: [
208
+ '--no-sandbox',
209
+ '--disable-setuid-sandbox',
210
+ '--disable-dev-shm-usage',
211
+ ...(options.args || [])
212
+ ],
213
+ defaultViewport: options.viewport || {
214
+ width: 1920,
215
+ height: 1080
216
+ },
217
+ ...options
218
+ };
219
+
220
+ log('Launching new browser');
221
+ browserInstance = await puppeteer.launch(launchOptions);
222
+
223
+ // Save wsEndpoint for future connections
224
+ const wsEndpoint = browserInstance.wsEndpoint();
225
+ writeSession(wsEndpoint);
226
+ log('Browser launched, session saved');
227
+
228
+ return browserInstance;
229
+ }
230
+
231
+ /**
232
+ * Get current page or create new one
233
+ */
234
+ export async function getPage(browser) {
235
+ if (pageInstance && !pageInstance.isClosed()) {
236
+ log('Reusing existing page');
237
+ return pageInstance;
238
+ }
239
+
240
+ const pages = await browser.pages();
241
+ if (pages.length > 0) {
242
+ pageInstance = pages[0];
243
+ } else {
244
+ pageInstance = await browser.newPage();
245
+ }
246
+
247
+ return pageInstance;
248
+ }
249
+
250
+ /**
251
+ * Close browser and clear session
252
+ */
253
+ export async function closeBrowser() {
254
+ if (browserInstance) {
255
+ await browserInstance.close();
256
+ browserInstance = null;
257
+ pageInstance = null;
258
+ clearSession();
259
+ log('Browser closed, session cleared');
260
+ }
261
+ }
262
+
263
+ /**
264
+ * Disconnect from browser without closing it
265
+ * Use this to keep browser running for future script executions
266
+ */
267
+ export async function disconnectBrowser() {
268
+ if (browserInstance) {
269
+ browserInstance.disconnect();
270
+ browserInstance = null;
271
+ pageInstance = null;
272
+ log('Disconnected from browser (browser still running)');
273
+ }
274
+ }
275
+
276
+ /**
277
+ * Parse command line arguments
278
+ */
279
+ export function parseArgs(argv, options = {}) {
280
+ const args = {};
281
+
282
+ for (let i = 0; i < argv.length; i++) {
283
+ const arg = argv[i];
284
+
285
+ if (arg.startsWith('--')) {
286
+ const key = arg.slice(2);
287
+ const nextArg = argv[i + 1];
288
+
289
+ if (nextArg && !nextArg.startsWith('--')) {
290
+ args[key] = nextArg;
291
+ i++;
292
+ } else {
293
+ args[key] = true;
294
+ }
295
+ }
296
+ }
297
+
298
+ return args;
299
+ }
300
+
301
+ /**
302
+ * Output JSON result
303
+ */
304
+ export function outputJSON(data) {
305
+ console.log(JSON.stringify(data, null, 2));
306
+ }
307
+
308
+ /**
309
+ * Output error
310
+ */
311
+ export function outputError(error) {
312
+ console.error(JSON.stringify({
313
+ success: false,
314
+ error: error.message,
315
+ stack: error.stack
316
+ }, null, 2));
317
+ process.exit(1);
318
+ }
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Shared selector parsing and validation library
3
+ * Supports CSS and XPath selectors with security validation
4
+ */
5
+
6
+ /**
7
+ * Parse and validate selector
8
+ * @param {string} selector - CSS or XPath selector
9
+ * @returns {{type: 'css'|'xpath', selector: string}}
10
+ * @throws {Error} If XPath contains injection patterns
11
+ */
12
+ export function parseSelector(selector) {
13
+ if (!selector || typeof selector !== 'string') {
14
+ throw new Error('Selector must be a non-empty string');
15
+ }
16
+
17
+ // Detect XPath selectors
18
+ if (selector.startsWith('/') || selector.startsWith('(//')) {
19
+ // XPath injection prevention
20
+ validateXPath(selector);
21
+ return { type: 'xpath', selector };
22
+ }
23
+
24
+ // CSS selector
25
+ return { type: 'css', selector };
26
+ }
27
+
28
+ /**
29
+ * Validate XPath selector for security
30
+ * @param {string} xpath - XPath expression to validate
31
+ * @throws {Error} If XPath contains dangerous patterns
32
+ */
33
+ function validateXPath(xpath) {
34
+ const dangerous = [
35
+ 'javascript:',
36
+ '<script',
37
+ 'onerror=',
38
+ 'onload=',
39
+ 'onclick=',
40
+ 'onmouseover=',
41
+ 'eval(',
42
+ 'Function(',
43
+ 'constructor(',
44
+ ];
45
+
46
+ const lower = xpath.toLowerCase();
47
+ for (const pattern of dangerous) {
48
+ if (lower.includes(pattern.toLowerCase())) {
49
+ throw new Error(`Potential XPath injection detected: ${pattern}`);
50
+ }
51
+ }
52
+
53
+ // Additional validation: check for extremely long selectors (potential DoS)
54
+ if (xpath.length > 1000) {
55
+ throw new Error('XPath selector too long (max 1000 characters)');
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Wait for element based on selector type
61
+ * @param {Object} page - Puppeteer page instance
62
+ * @param {{type: string, selector: string}} parsed - Parsed selector
63
+ * @param {Object} options - Wait options (visible, timeout)
64
+ * @returns {Promise<void>}
65
+ */
66
+ export async function waitForElement(page, parsed, options = {}) {
67
+ const defaultOptions = {
68
+ visible: true,
69
+ timeout: 5000,
70
+ ...options
71
+ };
72
+
73
+ if (parsed.type === 'xpath') {
74
+ // Use locator API for XPath (Puppeteer v24+)
75
+ const locator = page.locator(`::-p-xpath(${parsed.selector})`);
76
+ // setVisibility and setTimeout are the locator options
77
+ await locator
78
+ .setVisibility(defaultOptions.visible ? 'visible' : null)
79
+ .setTimeout(defaultOptions.timeout)
80
+ .wait();
81
+ } else {
82
+ await page.waitForSelector(parsed.selector, defaultOptions);
83
+ }
84
+ }
85
+
86
+ /**
87
+ * Click element based on selector type
88
+ * @param {Object} page - Puppeteer page instance
89
+ * @param {{type: string, selector: string}} parsed - Parsed selector
90
+ * @returns {Promise<void>}
91
+ */
92
+ export async function clickElement(page, parsed) {
93
+ if (parsed.type === 'xpath') {
94
+ // Use locator API for XPath (Puppeteer v24+)
95
+ const locator = page.locator(`::-p-xpath(${parsed.selector})`);
96
+ await locator.click();
97
+ } else {
98
+ await page.click(parsed.selector);
99
+ }
100
+ }
101
+
102
+ /**
103
+ * Type into element based on selector type
104
+ * @param {Object} page - Puppeteer page instance
105
+ * @param {{type: string, selector: string}} parsed - Parsed selector
106
+ * @param {string} value - Text to type
107
+ * @param {Object} options - Type options (delay, clear)
108
+ * @returns {Promise<void>}
109
+ */
110
+ export async function typeIntoElement(page, parsed, value, options = {}) {
111
+ if (parsed.type === 'xpath') {
112
+ // Use locator API for XPath (Puppeteer v24+)
113
+ const locator = page.locator(`::-p-xpath(${parsed.selector})`);
114
+
115
+ // Clear if requested
116
+ if (options.clear) {
117
+ await locator.fill('');
118
+ }
119
+
120
+ await locator.fill(value);
121
+ } else {
122
+ // CSS selector
123
+ if (options.clear) {
124
+ await page.$eval(parsed.selector, el => el.value = '');
125
+ }
126
+
127
+ await page.type(parsed.selector, value, { delay: options.delay || 0 });
128
+ }
129
+ }
130
+
131
+ /**
132
+ * Get element handle based on selector type
133
+ * @param {Object} page - Puppeteer page instance
134
+ * @param {{type: string, selector: string}} parsed - Parsed selector
135
+ * @returns {Promise<ElementHandle|null>}
136
+ */
137
+ export async function getElement(page, parsed) {
138
+ if (parsed.type === 'xpath') {
139
+ // For XPath, use page.evaluate with XPath evaluation
140
+ // This returns the first matching element
141
+ const element = await page.evaluateHandle((xpath) => {
142
+ const result = document.evaluate(
143
+ xpath,
144
+ document,
145
+ null,
146
+ XPathResult.FIRST_ORDERED_NODE_TYPE,
147
+ null
148
+ );
149
+ return result.singleNodeValue;
150
+ }, parsed.selector);
151
+
152
+ // Convert JSHandle to ElementHandle
153
+ const elementHandle = element.asElement();
154
+ return elementHandle;
155
+ } else {
156
+ return await page.$(parsed.selector);
157
+ }
158
+ }
159
+
160
+ /**
161
+ * Get enhanced error message for selector failures
162
+ * @param {Error} error - Original error
163
+ * @param {string} selector - Selector that failed
164
+ * @returns {Error} Enhanced error with troubleshooting tips
165
+ */
166
+ export function enhanceError(error, selector) {
167
+ if (error.message.includes('waiting for selector') ||
168
+ error.message.includes('waiting for XPath') ||
169
+ error.message.includes('No node found')) {
170
+ error.message += '\n\nTroubleshooting:\n' +
171
+ '1. Use snapshot.js to find correct selector: node snapshot.js --url <url>\n' +
172
+ '2. Try XPath selector: //button[text()="Click"] or //button[contains(text(),"Click")]\n' +
173
+ '3. Check element is visible on page (not display:none or hidden)\n' +
174
+ '4. Increase --timeout value: --timeout 10000\n' +
175
+ '5. Change wait strategy: --wait-until load or --wait-until domcontentloaded';
176
+ }
177
+ return error;
178
+ }
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Navigate to a URL
4
+ * Usage: node navigate.js --url https://example.com [--wait-until networkidle2] [--timeout 30000]
5
+ *
6
+ * Session behavior:
7
+ * --close false : Keep browser running, disconnect from it (default for chaining)
8
+ * --close true : Close browser completely and clear session
9
+ */
10
+ import { getBrowser, getPage, closeBrowser, disconnectBrowser, parseArgs, outputJSON, outputError } from './lib/browser.js';
11
+
12
+ async function navigate() {
13
+ const args = parseArgs(process.argv.slice(2));
14
+
15
+ if (!args.url) {
16
+ outputError(new Error('--url is required'));
17
+ return;
18
+ }
19
+
20
+ try {
21
+ const browser = await getBrowser({
22
+ headless: args.headless !== 'false'
23
+ });
24
+
25
+ const page = await getPage(browser);
26
+
27
+ const options = {
28
+ waitUntil: args['wait-until'] || 'networkidle2',
29
+ timeout: parseInt(args.timeout || '30000')
30
+ };
31
+
32
+ await page.goto(args.url, options);
33
+
34
+ const result = {
35
+ success: true,
36
+ url: page.url(),
37
+ title: await page.title()
38
+ };
39
+
40
+ outputJSON(result);
41
+
42
+ // Default: disconnect to keep browser running for session persistence
43
+ // Use --close true to fully close browser
44
+ if (args.close === 'true') {
45
+ await closeBrowser();
46
+ } else {
47
+ await disconnectBrowser();
48
+ }
49
+ } catch (error) {
50
+ outputError(error);
51
+ }
52
+ }
53
+
54
+ navigate();
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Monitor network requests
4
+ * Usage: node network.js --url https://example.com [--types xhr,fetch] [--output requests.json]
5
+ */
6
+ import { getBrowser, getPage, closeBrowser, disconnectBrowser, parseArgs, outputJSON, outputError } from './lib/browser.js';
7
+ import fs from 'fs/promises';
8
+
9
+ async function monitorNetwork() {
10
+ const args = parseArgs(process.argv.slice(2));
11
+
12
+ if (!args.url) {
13
+ outputError(new Error('--url is required'));
14
+ return;
15
+ }
16
+
17
+ try {
18
+ const browser = await getBrowser({
19
+ headless: args.headless !== 'false'
20
+ });
21
+
22
+ const page = await getPage(browser);
23
+
24
+ const requests = [];
25
+ const filterTypes = args.types ? args.types.split(',').map(t => t.toLowerCase()) : null;
26
+
27
+ // Monitor requests
28
+ page.on('request', (request) => {
29
+ const resourceType = request.resourceType().toLowerCase();
30
+
31
+ if (!filterTypes || filterTypes.includes(resourceType)) {
32
+ requests.push({
33
+ id: request._requestId || requests.length,
34
+ url: request.url(),
35
+ method: request.method(),
36
+ resourceType: resourceType,
37
+ headers: request.headers(),
38
+ postData: request.postData(),
39
+ timestamp: Date.now()
40
+ });
41
+ }
42
+ });
43
+
44
+ // Monitor responses
45
+ const responses = new Map();
46
+ page.on('response', async (response) => {
47
+ const request = response.request();
48
+ const resourceType = request.resourceType().toLowerCase();
49
+
50
+ if (!filterTypes || filterTypes.includes(resourceType)) {
51
+ try {
52
+ responses.set(request._requestId || request.url(), {
53
+ status: response.status(),
54
+ statusText: response.statusText(),
55
+ headers: response.headers(),
56
+ fromCache: response.fromCache(),
57
+ timing: response.timing()
58
+ });
59
+ } catch (e) {
60
+ // Ignore errors for some response types
61
+ }
62
+ }
63
+ });
64
+
65
+ // Navigate
66
+ await page.goto(args.url, {
67
+ waitUntil: args['wait-until'] || 'networkidle2'
68
+ });
69
+
70
+ // Merge requests with responses
71
+ const combined = requests.map(req => ({
72
+ ...req,
73
+ response: responses.get(req.id) || responses.get(req.url) || null
74
+ }));
75
+
76
+ const result = {
77
+ success: true,
78
+ url: page.url(),
79
+ requestCount: combined.length,
80
+ requests: combined
81
+ };
82
+
83
+ if (args.output) {
84
+ await fs.writeFile(args.output, JSON.stringify(result, null, 2));
85
+ outputJSON({
86
+ success: true,
87
+ output: args.output,
88
+ requestCount: combined.length
89
+ });
90
+ } else {
91
+ outputJSON(result);
92
+ }
93
+
94
+ // Default: disconnect to keep browser running for session persistence
95
+ // Use --close true to fully close browser
96
+ if (args.close === 'true') {
97
+ await closeBrowser();
98
+ } else {
99
+ await disconnectBrowser();
100
+ }
101
+ } catch (error) {
102
+ outputError(error);
103
+ }
104
+ }
105
+
106
+ monitorNetwork();