cokit-cli 1.0.9 → 1.2.2

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 (888) hide show
  1. package/LICENSE +32 -32
  2. package/README.FLOW.md +237 -237
  3. package/README.md +142 -92
  4. package/agents/brainstormer.agent.md +71 -71
  5. package/agents/code-reviewer.agent.md +136 -136
  6. package/agents/code-simplifier.agent.md +43 -0
  7. package/agents/debugger.agent.md +128 -128
  8. package/agents/docs-manager.agent.md +121 -121
  9. package/agents/fullstack-developer.agent.md +52 -0
  10. package/agents/git-manager.agent.md +390 -390
  11. package/agents/planner.agent.md +94 -94
  12. package/agents/researcher.agent.md +31 -32
  13. package/agents/scout.agent.md +107 -107
  14. package/agents/tester.agent.md +117 -117
  15. package/agents/ui-ux-designer.agent.md +57 -0
  16. package/bin/cokit.js +4 -4
  17. package/collections/ck-core.collection.yml +28 -28
  18. package/collections/ck-development-rules.collection.yml +18 -18
  19. package/collections/ck-documentation.collection.yml +14 -14
  20. package/collections/ck-git-workflow.collection.yml +12 -12
  21. package/collections/ck-orchestration.collection.yml +16 -16
  22. package/docs/README.md +75 -108
  23. package/docs/code-standards.md +68 -0
  24. package/docs/codebase-summary.md +263 -0
  25. package/docs/cokit-commands-usage-guide.md +138 -0
  26. package/docs/cokit-comprehensive-mapping-guide.md +361 -374
  27. package/docs/cokit-slides.md +212 -222
  28. package/docs/cokit-sync-and-maintenance-guide.md +414 -0
  29. package/docs/cokit-team-presentation.md +356 -378
  30. package/docs/copilot-processing-flow.md +215 -212
  31. package/docs/guide-next-steps-speckit-cokit-implementation.md +187 -0
  32. package/docs/migration-guide.md +133 -133
  33. package/docs/project-overview-pdr.md +45 -0
  34. package/docs/project-roadmap.md +308 -280
  35. package/docs/system-architecture.md +81 -0
  36. package/instructions/ck-backend.instructions.md +48 -48
  37. package/instructions/ck-development.instructions.md +54 -54
  38. package/instructions/ck-frontend.instructions.md +44 -44
  39. package/instructions/ck-research.instructions.md +167 -167
  40. package/instructions/ck-testing.instructions.md +36 -36
  41. package/package.json +71 -42
  42. package/prompts/ck-ask.prompt.md +67 -57
  43. package/prompts/ck-bootstrap.prompt.md +141 -136
  44. package/prompts/ck-brainstorm.prompt.md +87 -105
  45. package/prompts/ck-cook.prompt.md +96 -97
  46. package/prompts/ck-debug.prompt.md +115 -14
  47. package/prompts/ck-docs.prompt.md +102 -51
  48. package/prompts/ck-fix-ci.prompt.md +46 -0
  49. package/prompts/ck-fix-fast.prompt.md +44 -0
  50. package/prompts/ck-fix-hard.prompt.md +60 -0
  51. package/prompts/ck-fix-logs.prompt.md +53 -0
  52. package/prompts/ck-fix-test.prompt.md +47 -0
  53. package/prompts/ck-fix-types.prompt.md +29 -0
  54. package/prompts/ck-fix-ui.prompt.md +50 -0
  55. package/prompts/ck-fix.prompt.md +50 -44
  56. package/prompts/ck-git.prompt.md +104 -79
  57. package/{templates/repo/.github/prompts/ck-ck-help.prompt.md → prompts/ck-help.prompt.md} +142 -112
  58. package/prompts/ck-journal.prompt.md +19 -0
  59. package/prompts/ck-plan-fast.prompt.md +106 -0
  60. package/prompts/ck-plan-hard.prompt.md +133 -0
  61. package/prompts/ck-plan-validate.prompt.md +209 -0
  62. package/prompts/ck-plan.prompt.md +75 -80
  63. package/prompts/ck-preview.prompt.md +77 -0
  64. package/{templates/repo/.github/prompts/ck-review-codebase.prompt.md → prompts/ck-review.prompt.md} +58 -44
  65. package/prompts/ck-scout.prompt.md +85 -25
  66. package/prompts/ck-simplify.prompt.md +46 -0
  67. package/prompts/ck-spec-analyze.prompt.md +201 -0
  68. package/prompts/ck-spec-checklist.prompt.md +308 -0
  69. package/prompts/ck-spec-clarify.prompt.md +190 -0
  70. package/prompts/ck-spec-constitution.prompt.md +92 -0
  71. package/prompts/ck-spec-implement.prompt.md +157 -0
  72. package/prompts/ck-spec-plan.prompt.md +95 -0
  73. package/prompts/ck-spec-specify.prompt.md +260 -0
  74. package/prompts/ck-spec-tasks.prompt.md +181 -0
  75. package/prompts/ck-test.prompt.md +21 -10
  76. package/prompts/ck-watzup.prompt.md +21 -0
  77. package/skills/INSTALLATION.md +311 -0
  78. package/skills/README.md +112 -0
  79. package/skills/THIRD_PARTY_NOTICES.md +405 -0
  80. package/skills/agent-browser/SKILL.md +291 -0
  81. package/skills/agent-browser/references/.gitkeep +0 -0
  82. package/skills/agent-browser/references/browserbase-cloud-setup.md +161 -0
  83. package/skills/agent_skills_spec.md +55 -0
  84. package/skills/{ck-backend-development → backend-development}/SKILL.md +94 -96
  85. package/skills/{ck-backend-development → backend-development}/references/backend-api-design.md +697 -495
  86. package/{templates/repo/.github/skills/ck-backend-development → skills/backend-development}/references/backend-architecture.md +454 -454
  87. package/skills/{ck-backend-development → backend-development}/references/backend-authentication.md +433 -338
  88. package/skills/{ck-backend-development → backend-development}/references/backend-code-quality.md +659 -659
  89. package/{templates/repo/.github/skills/ck-backend-development → skills/backend-development}/references/backend-debugging.md +904 -904
  90. package/{templates/repo/.github/skills/ck-backend-development → skills/backend-development}/references/backend-devops.md +494 -494
  91. package/{templates/repo/.github/skills/ck-backend-development → skills/backend-development}/references/backend-mindset.md +387 -387
  92. package/skills/{ck-backend-development → backend-development}/references/backend-performance.md +397 -397
  93. package/{templates/repo/.github/skills/ck-backend-development → skills/backend-development}/references/backend-security.md +340 -290
  94. package/{templates/repo/.github/skills/ck-backend-development → skills/backend-development}/references/backend-technologies.md +300 -290
  95. package/{templates/repo/.github/skills/ck-backend-development → skills/backend-development}/references/backend-testing.md +484 -561
  96. package/skills/brainstorm/SKILL.md +74 -0
  97. package/skills/{ck-code-review → code-review}/SKILL.md +143 -143
  98. package/skills/{ck-code-review → code-review}/references/code-review-reception.md +1 -1
  99. package/skills/{ck-code-review → code-review}/references/requesting-code-review.md +7 -7
  100. package/skills/common/README.md +120 -0
  101. package/skills/common/api_key_helper.py +411 -0
  102. package/skills/common/api_key_rotator.py +248 -0
  103. package/skills/context-engineering/SKILL.md +106 -0
  104. package/skills/context-engineering/references/context-compression.md +84 -0
  105. package/skills/context-engineering/references/context-degradation.md +93 -0
  106. package/skills/context-engineering/references/context-fundamentals.md +75 -0
  107. package/skills/context-engineering/references/context-optimization.md +82 -0
  108. package/skills/context-engineering/references/evaluation.md +89 -0
  109. package/skills/context-engineering/references/memory-systems.md +88 -0
  110. package/skills/context-engineering/references/multi-agent-patterns.md +90 -0
  111. package/skills/context-engineering/references/project-development.md +97 -0
  112. package/skills/context-engineering/references/runtime-awareness.md +202 -0
  113. package/skills/context-engineering/references/tool-design.md +86 -0
  114. package/skills/context-engineering/scripts/compression_evaluator.py +349 -0
  115. package/skills/context-engineering/scripts/context_analyzer.py +317 -0
  116. package/skills/cook/README.md +86 -0
  117. package/skills/cook/SKILL.md +93 -0
  118. package/skills/cook/references/agent-patterns.md +75 -0
  119. package/skills/cook/references/intent-detection.md +101 -0
  120. package/skills/cook/references/review-cycle.md +75 -0
  121. package/skills/cook/references/workflow-steps.md +140 -0
  122. package/skills/databases/SKILL.md +111 -0
  123. package/skills/databases/analytics.md +198 -0
  124. package/skills/databases/db-design.md +188 -0
  125. package/skills/databases/incremental-etl.md +213 -0
  126. package/skills/databases/references/mongodb-aggregation.md +447 -0
  127. package/skills/databases/references/mongodb-atlas.md +465 -0
  128. package/skills/databases/references/mongodb-crud.md +408 -0
  129. package/skills/databases/references/mongodb-indexing.md +442 -0
  130. package/skills/databases/references/postgresql-administration.md +594 -0
  131. package/skills/databases/references/postgresql-performance.md +527 -0
  132. package/skills/databases/references/postgresql-psql-cli.md +467 -0
  133. package/skills/databases/references/postgresql-queries.md +475 -0
  134. package/skills/databases/scripts/db_backup.py +502 -0
  135. package/skills/databases/scripts/db_migrate.py +426 -0
  136. package/skills/databases/scripts/db_performance_check.py +457 -0
  137. package/skills/databases/scripts/requirements.txt +20 -0
  138. package/skills/databases/stacks/bigquery.md +231 -0
  139. package/skills/databases/stacks/d1_cloudflare.md +137 -0
  140. package/skills/databases/stacks/mysql.md +216 -0
  141. package/skills/databases/stacks/postgres.md +235 -0
  142. package/skills/databases/stacks/sqlite.md +244 -0
  143. package/skills/databases/transactional.md +176 -0
  144. package/{templates/repo/.github/skills/ck-debugging → skills/debug}/SKILL.md +83 -82
  145. package/{templates/repo/.github/skills/ck-debugging → skills/debug}/references/defense-in-depth.md +124 -124
  146. package/skills/{ck-debugging → debug}/references/root-cause-tracing.md +122 -122
  147. package/{templates/repo/.github/skills/ck-debugging → skills/debug}/references/systematic-debugging.md +102 -102
  148. package/skills/{ck-debugging → debug}/references/verification.md +123 -123
  149. package/{templates/repo/.github/skills/ck-debugging → skills/debug}/scripts/find-polluter.sh +63 -63
  150. package/{templates/repo/.github/skills/ck-debugging → skills/debug}/scripts/find-polluter.test.md +102 -102
  151. package/skills/devops/.env.example +76 -0
  152. package/skills/devops/SKILL.md +102 -0
  153. package/skills/devops/references/browser-rendering.md +305 -0
  154. package/skills/devops/references/cloudflare-d1-kv.md +123 -0
  155. package/skills/devops/references/cloudflare-platform.md +271 -0
  156. package/skills/devops/references/cloudflare-r2-storage.md +280 -0
  157. package/skills/devops/references/cloudflare-workers-advanced.md +312 -0
  158. package/skills/devops/references/cloudflare-workers-apis.md +309 -0
  159. package/skills/devops/references/cloudflare-workers-basics.md +418 -0
  160. package/skills/devops/references/docker-basics.md +297 -0
  161. package/skills/devops/references/docker-compose.md +292 -0
  162. package/skills/devops/references/gcloud-platform.md +297 -0
  163. package/skills/devops/references/gcloud-services.md +304 -0
  164. package/skills/devops/references/kubernetes-basics.md +99 -0
  165. package/skills/devops/references/kubernetes-helm-advanced.md +75 -0
  166. package/skills/devops/references/kubernetes-helm.md +81 -0
  167. package/skills/devops/references/kubernetes-kubectl.md +74 -0
  168. package/skills/devops/references/kubernetes-security-advanced.md +98 -0
  169. package/skills/devops/references/kubernetes-security.md +95 -0
  170. package/skills/devops/references/kubernetes-troubleshooting-advanced.md +74 -0
  171. package/skills/devops/references/kubernetes-troubleshooting.md +49 -0
  172. package/skills/devops/references/kubernetes-workflows-advanced.md +75 -0
  173. package/skills/devops/references/kubernetes-workflows.md +78 -0
  174. package/skills/devops/scripts/cloudflare_deploy.py +269 -0
  175. package/skills/devops/scripts/docker_optimize.py +332 -0
  176. package/skills/devops/scripts/requirements.txt +20 -0
  177. package/skills/docs-seeker/.env.example +15 -0
  178. package/skills/docs-seeker/SKILL.md +96 -0
  179. package/skills/docs-seeker/package.json +25 -0
  180. package/skills/docs-seeker/references/advanced.md +79 -0
  181. package/skills/docs-seeker/references/context7-patterns.md +64 -0
  182. package/skills/docs-seeker/references/errors.md +68 -0
  183. package/skills/docs-seeker/scripts/analyze-llms-txt.js +211 -0
  184. package/skills/docs-seeker/scripts/detect-topic.js +172 -0
  185. package/skills/docs-seeker/scripts/fetch-docs.js +214 -0
  186. package/skills/docs-seeker/scripts/utils/env-loader.js +94 -0
  187. package/skills/docs-seeker/workflows/library-search.md +86 -0
  188. package/skills/docs-seeker/workflows/repo-analysis.md +91 -0
  189. package/skills/docs-seeker/workflows/topic-search.md +77 -0
  190. package/skills/fix/SKILL.md +100 -0
  191. package/skills/fix/references/complexity-assessment.md +61 -0
  192. package/skills/fix/references/mode-selection.md +30 -0
  193. package/skills/fix/references/parallel-exploration.md +77 -0
  194. package/skills/fix/references/review-cycle.md +77 -0
  195. package/skills/fix/references/skill-activation-matrix.md +65 -0
  196. package/skills/fix/references/workflow-ci.md +28 -0
  197. package/skills/fix/references/workflow-deep.md +91 -0
  198. package/skills/fix/references/workflow-logs.md +36 -0
  199. package/skills/fix/references/workflow-quick.md +59 -0
  200. package/skills/fix/references/workflow-standard.md +86 -0
  201. package/skills/fix/references/workflow-test.md +36 -0
  202. package/skills/fix/references/workflow-types.md +33 -0
  203. package/skills/fix/references/workflow-ui.md +34 -0
  204. package/skills/frontend-design/SKILL.md +74 -0
  205. package/skills/frontend-design/references/analysis-best-practices.md +80 -0
  206. package/skills/frontend-design/references/analysis-prompts.md +141 -0
  207. package/skills/frontend-design/references/analysis-techniques.md +118 -0
  208. package/skills/frontend-design/references/animejs.md +396 -0
  209. package/skills/frontend-design/references/asset-generation.md +161 -0
  210. package/skills/frontend-design/references/design-extraction-overview.md +71 -0
  211. package/skills/frontend-design/references/extraction-best-practices.md +141 -0
  212. package/skills/frontend-design/references/extraction-output-templates.md +162 -0
  213. package/skills/frontend-design/references/extraction-prompts.md +127 -0
  214. package/skills/frontend-design/references/technical-accessibility.md +119 -0
  215. package/skills/frontend-design/references/technical-best-practices.md +97 -0
  216. package/skills/frontend-design/references/technical-optimization.md +44 -0
  217. package/skills/frontend-design/references/technical-overview.md +90 -0
  218. package/skills/frontend-design/references/technical-workflows.md +150 -0
  219. package/skills/frontend-design/references/visual-analysis-overview.md +95 -0
  220. package/skills/frontend-design/references/workflow-describe.md +86 -0
  221. package/skills/frontend-design/references/workflow-quick.md +54 -0
  222. package/skills/frontend-design/references/workflow-screenshot.md +62 -0
  223. package/skills/git/SKILL.md +99 -0
  224. package/skills/git/references/branch-management.md +88 -0
  225. package/skills/git/references/commit-standards.md +46 -0
  226. package/skills/git/references/gh-cli-guide.md +109 -0
  227. package/skills/git/references/safety-protocols.md +69 -0
  228. package/skills/git/references/workflow-commit.md +58 -0
  229. package/skills/git/references/workflow-merge.md +48 -0
  230. package/skills/git/references/workflow-pr.md +58 -0
  231. package/skills/git/references/workflow-push.md +52 -0
  232. package/skills/install.ps1 +1247 -0
  233. package/skills/install.sh +1300 -0
  234. package/skills/mcp-management/README.md +219 -0
  235. package/skills/mcp-management/SKILL.md +209 -0
  236. package/skills/mcp-management/assets/tools.json +3146 -0
  237. package/skills/mcp-management/references/configuration.md +114 -0
  238. package/skills/mcp-management/references/gemini-cli-integration.md +221 -0
  239. package/skills/mcp-management/references/mcp-protocol.md +116 -0
  240. package/skills/mcp-management/scripts/.env.example +10 -0
  241. package/skills/mcp-management/scripts/cli.ts +195 -0
  242. package/skills/mcp-management/scripts/dist/analyze-tools.js +70 -0
  243. package/skills/mcp-management/scripts/dist/cli.js +160 -0
  244. package/skills/mcp-management/scripts/dist/mcp-client.js +183 -0
  245. package/skills/mcp-management/scripts/mcp-client.ts +230 -0
  246. package/skills/mcp-management/scripts/package.json +20 -0
  247. package/skills/mcp-management/scripts/tsconfig.json +15 -0
  248. package/skills/mermaidjs-v11/SKILL.md +115 -0
  249. package/skills/mermaidjs-v11/references/cli-usage.md +228 -0
  250. package/skills/mermaidjs-v11/references/configuration.md +232 -0
  251. package/skills/mermaidjs-v11/references/diagram-types.md +315 -0
  252. package/skills/mermaidjs-v11/references/examples.md +344 -0
  253. package/skills/mermaidjs-v11/references/integration.md +310 -0
  254. package/skills/{ck-planning → planning}/SKILL.md +131 -112
  255. package/{templates/repo/.github/skills/ck-planning → skills/planning}/references/codebase-understanding.md +62 -62
  256. package/skills/{ck-planning → planning}/references/output-standards.md +141 -127
  257. package/{templates/repo/.github/skills/ck-planning → skills/planning}/references/plan-organization.md +160 -150
  258. package/skills/{ck-planning → planning}/references/research-phase.md +49 -49
  259. package/{templates/repo/.github/skills/ck-planning → skills/planning}/references/solution-design.md +63 -63
  260. package/skills/{ck-problem-solving → problem-solving}/SKILL.md +95 -95
  261. package/{templates/repo/.github/skills/ck-problem-solving → skills/problem-solving}/references/attribution.md +69 -69
  262. package/skills/{ck-problem-solving → problem-solving}/references/collision-zone-thinking.md +79 -79
  263. package/{templates/repo/.github/skills/ck-problem-solving → skills/problem-solving}/references/inversion-exercise.md +91 -91
  264. package/skills/{ck-problem-solving → problem-solving}/references/meta-pattern-recognition.md +87 -87
  265. package/skills/{ck-problem-solving → problem-solving}/references/scale-game.md +95 -95
  266. package/skills/{ck-problem-solving → problem-solving}/references/simplification-cascades.md +80 -80
  267. package/{templates/repo/.github/skills/ck-problem-solving → skills/problem-solving}/references/when-stuck.md +72 -72
  268. package/skills/repomix/SKILL.md +247 -0
  269. package/skills/repomix/references/configuration.md +211 -0
  270. package/skills/repomix/references/usage-patterns.md +232 -0
  271. package/skills/repomix/scripts/README.md +179 -0
  272. package/skills/repomix/scripts/repomix_batch.py +455 -0
  273. package/skills/repomix/scripts/repos.example.json +15 -0
  274. package/skills/repomix/scripts/requirements.txt +15 -0
  275. package/skills/research/SKILL.md +169 -0
  276. package/skills/scout/SKILL.md +78 -0
  277. package/skills/scout/references/external-scouting.md +140 -0
  278. package/skills/scout/references/internal-scouting.md +119 -0
  279. package/skills/{ck-sequential-thinking → sequential-thinking}/.env.example +8 -8
  280. package/skills/{ck-sequential-thinking → sequential-thinking}/README.md +183 -183
  281. package/{templates/repo/.github/skills/ck-sequential-thinking → skills/sequential-thinking}/SKILL.md +92 -92
  282. package/skills/{ck-sequential-thinking → sequential-thinking}/package.json +31 -31
  283. package/{templates/repo/.github/skills/ck-sequential-thinking → skills/sequential-thinking}/references/advanced-strategies.md +79 -79
  284. package/{templates/repo/.github/skills/ck-sequential-thinking → skills/sequential-thinking}/references/advanced-techniques.md +76 -76
  285. package/{templates/repo/.github/skills/ck-sequential-thinking → skills/sequential-thinking}/references/core-patterns.md +95 -95
  286. package/skills/{ck-sequential-thinking → sequential-thinking}/references/examples-api.md +88 -88
  287. package/skills/{ck-sequential-thinking → sequential-thinking}/references/examples-architecture.md +94 -94
  288. package/skills/{ck-sequential-thinking → sequential-thinking}/references/examples-debug.md +90 -90
  289. package/skills/{ck-sequential-thinking → sequential-thinking}/scripts/format-thought.js +159 -159
  290. package/{templates/repo/.github/skills/ck-sequential-thinking → skills/sequential-thinking}/scripts/process-thought.js +236 -236
  291. package/skills/ui-styling/LICENSE.txt +202 -0
  292. package/skills/ui-styling/SKILL.md +319 -0
  293. package/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  294. package/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  295. package/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  296. package/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  297. package/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  298. package/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  299. package/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  300. package/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  301. package/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  302. package/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  303. package/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  304. package/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  305. package/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  306. package/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  307. package/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  308. package/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  309. package/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  310. package/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  311. package/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  312. package/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  313. package/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  314. package/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  315. package/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  316. package/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  317. package/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  318. package/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  319. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  320. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  321. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  322. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  323. package/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  324. package/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  325. package/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  326. package/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  327. package/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  328. package/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  329. package/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  330. package/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  331. package/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  332. package/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  333. package/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  334. package/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  335. package/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  336. package/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  337. package/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  338. package/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  339. package/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  340. package/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  341. package/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  342. package/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  343. package/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  344. package/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  345. package/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  346. package/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  347. package/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  348. package/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  349. package/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  350. package/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  351. package/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  352. package/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  353. package/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  354. package/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  355. package/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  356. package/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  357. package/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  358. package/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  359. package/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  360. package/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  361. package/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  362. package/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  363. package/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  364. package/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  365. package/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  366. package/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  367. package/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  368. package/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  369. package/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  370. package/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  371. package/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  372. package/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  373. package/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  374. package/skills/ui-styling/references/canvas-design-system.md +320 -0
  375. package/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  376. package/skills/ui-styling/references/shadcn-components.md +424 -0
  377. package/skills/ui-styling/references/shadcn-theming.md +373 -0
  378. package/skills/ui-styling/references/tailwind-customization.md +483 -0
  379. package/skills/ui-styling/references/tailwind-responsive.md +382 -0
  380. package/skills/ui-styling/references/tailwind-utilities.md +455 -0
  381. package/skills/ui-styling/scripts/requirements.txt +17 -0
  382. package/skills/ui-styling/scripts/shadcn_add.py +292 -0
  383. package/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
  384. package/skills/web-testing/SKILL.md +94 -0
  385. package/skills/web-testing/references/accessibility-testing.md +84 -0
  386. package/skills/web-testing/references/api-testing.md +78 -0
  387. package/skills/web-testing/references/ci-cd-testing-workflows.md +121 -0
  388. package/skills/web-testing/references/component-testing.md +94 -0
  389. package/skills/web-testing/references/contract-testing.md +146 -0
  390. package/skills/web-testing/references/cross-browser-checklist.md +72 -0
  391. package/skills/web-testing/references/database-testing.md +139 -0
  392. package/skills/web-testing/references/e2e-testing-playwright.md +119 -0
  393. package/skills/web-testing/references/functional-testing-checklist.md +88 -0
  394. package/skills/web-testing/references/interactive-testing-patterns.md +89 -0
  395. package/skills/web-testing/references/load-testing-k6.md +93 -0
  396. package/skills/web-testing/references/mobile-gesture-testing.md +85 -0
  397. package/skills/web-testing/references/performance-core-web-vitals.md +124 -0
  398. package/skills/web-testing/references/playwright-component-testing.md +115 -0
  399. package/skills/web-testing/references/pre-release-checklist.md +75 -0
  400. package/skills/web-testing/references/security-checklists.md +81 -0
  401. package/skills/web-testing/references/security-testing-overview.md +92 -0
  402. package/skills/web-testing/references/shadow-dom-testing.md +70 -0
  403. package/skills/web-testing/references/test-data-management.md +131 -0
  404. package/skills/web-testing/references/test-flakiness-mitigation.md +86 -0
  405. package/skills/web-testing/references/testing-pyramid-strategy.md +76 -0
  406. package/skills/web-testing/references/unit-integration-testing.md +138 -0
  407. package/skills/web-testing/references/visual-regression.md +92 -0
  408. package/skills/web-testing/references/vulnerability-payloads.md +93 -0
  409. package/skills/web-testing/scripts/analyze-test-results.js +280 -0
  410. package/skills/web-testing/scripts/init-playwright.js +233 -0
  411. package/src/commands/add.js +93 -93
  412. package/src/commands/doctor.js +117 -117
  413. package/src/commands/init.js +183 -183
  414. package/src/commands/list.js +91 -91
  415. package/src/commands/update.js +22 -22
  416. package/src/index.js +35 -35
  417. package/src/utils/colors.js +14 -14
  418. package/src/utils/copy.js +122 -122
  419. package/src/utils/paths.js +66 -66
  420. package/src/utils/update-checker.js +126 -126
  421. package/templates/repo/.github/AGENTS.md +103 -55
  422. package/templates/repo/.github/agents/brainstormer.agent.md +71 -71
  423. package/templates/repo/.github/agents/code-reviewer.agent.md +136 -136
  424. package/templates/repo/.github/agents/code-simplifier.agent.md +43 -0
  425. package/templates/repo/.github/agents/debugger.agent.md +128 -128
  426. package/templates/repo/.github/agents/docs-manager.agent.md +121 -121
  427. package/templates/repo/.github/agents/fullstack-developer.agent.md +52 -0
  428. package/templates/repo/.github/agents/git-manager.agent.md +390 -390
  429. package/templates/repo/.github/agents/planner.agent.md +94 -94
  430. package/templates/repo/.github/agents/researcher.agent.md +31 -32
  431. package/templates/repo/.github/agents/scout.agent.md +107 -107
  432. package/templates/repo/.github/agents/tester.agent.md +117 -117
  433. package/templates/repo/.github/agents/ui-ux-designer.agent.md +57 -0
  434. package/templates/repo/.github/collections/ck-core.collection.yml +28 -28
  435. package/templates/repo/.github/collections/ck-development-rules.collection.yml +18 -18
  436. package/templates/repo/.github/collections/ck-documentation.collection.yml +14 -14
  437. package/templates/repo/.github/collections/ck-git-workflow.collection.yml +12 -12
  438. package/templates/repo/.github/collections/ck-orchestration.collection.yml +16 -16
  439. package/templates/repo/.github/instructions/ck-backend.instructions.md +48 -48
  440. package/templates/repo/.github/instructions/ck-development.instructions.md +54 -54
  441. package/templates/repo/.github/instructions/ck-frontend.instructions.md +44 -44
  442. package/templates/repo/.github/instructions/ck-research.instructions.md +167 -167
  443. package/templates/repo/.github/instructions/ck-testing.instructions.md +36 -36
  444. package/templates/repo/.github/prompts/ck-ask.prompt.md +67 -57
  445. package/templates/repo/.github/prompts/ck-bootstrap.prompt.md +141 -136
  446. package/templates/repo/.github/prompts/ck-brainstorm.prompt.md +87 -105
  447. package/templates/repo/.github/prompts/ck-cook.prompt.md +96 -97
  448. package/templates/repo/.github/prompts/ck-debug.prompt.md +115 -14
  449. package/templates/repo/.github/prompts/ck-docs.prompt.md +102 -51
  450. package/templates/repo/.github/prompts/ck-fix-ci.prompt.md +46 -0
  451. package/templates/repo/.github/prompts/ck-fix-fast.prompt.md +44 -0
  452. package/templates/repo/.github/prompts/ck-fix-hard.prompt.md +60 -0
  453. package/templates/repo/.github/prompts/ck-fix-logs.prompt.md +53 -0
  454. package/templates/repo/.github/prompts/ck-fix-test.prompt.md +47 -0
  455. package/templates/repo/.github/prompts/ck-fix-types.prompt.md +29 -0
  456. package/templates/repo/.github/prompts/ck-fix-ui.prompt.md +50 -0
  457. package/templates/repo/.github/prompts/ck-fix.prompt.md +50 -44
  458. package/templates/repo/.github/prompts/ck-git.prompt.md +104 -79
  459. package/{prompts/ck-ck-help.prompt.md → templates/repo/.github/prompts/ck-help.prompt.md} +142 -112
  460. package/templates/repo/.github/prompts/ck-journal.prompt.md +19 -0
  461. package/templates/repo/.github/prompts/ck-plan-fast.prompt.md +106 -0
  462. package/templates/repo/.github/prompts/ck-plan-hard.prompt.md +133 -0
  463. package/templates/repo/.github/prompts/ck-plan-validate.prompt.md +209 -0
  464. package/templates/repo/.github/prompts/ck-plan.prompt.md +75 -80
  465. package/templates/repo/.github/prompts/ck-preview.prompt.md +77 -0
  466. package/{prompts/ck-review-codebase.prompt.md → templates/repo/.github/prompts/ck-review.prompt.md} +58 -44
  467. package/templates/repo/.github/prompts/ck-scout.prompt.md +85 -25
  468. package/templates/repo/.github/prompts/ck-simplify.prompt.md +46 -0
  469. package/templates/repo/.github/prompts/ck-spec-analyze.prompt.md +201 -0
  470. package/templates/repo/.github/prompts/ck-spec-checklist.prompt.md +308 -0
  471. package/templates/repo/.github/prompts/ck-spec-clarify.prompt.md +190 -0
  472. package/templates/repo/.github/prompts/ck-spec-constitution.prompt.md +92 -0
  473. package/templates/repo/.github/prompts/ck-spec-implement.prompt.md +157 -0
  474. package/templates/repo/.github/prompts/ck-spec-plan.prompt.md +95 -0
  475. package/templates/repo/.github/prompts/ck-spec-specify.prompt.md +260 -0
  476. package/templates/repo/.github/prompts/ck-spec-tasks.prompt.md +181 -0
  477. package/templates/repo/.github/prompts/ck-test.prompt.md +21 -10
  478. package/templates/repo/.github/prompts/ck-watzup.prompt.md +21 -0
  479. package/templates/repo/.github/skills/INSTALLATION.md +311 -0
  480. package/templates/repo/.github/skills/README.md +112 -0
  481. package/templates/repo/.github/skills/THIRD_PARTY_NOTICES.md +405 -0
  482. package/templates/repo/.github/skills/agent-browser/SKILL.md +291 -0
  483. package/templates/repo/.github/skills/agent-browser/references/.gitkeep +0 -0
  484. package/templates/repo/.github/skills/agent-browser/references/browserbase-cloud-setup.md +161 -0
  485. package/templates/repo/.github/skills/agent_skills_spec.md +55 -0
  486. package/templates/repo/.github/skills/{ck-backend-development → backend-development}/SKILL.md +94 -96
  487. package/templates/repo/.github/skills/{ck-backend-development → backend-development}/references/backend-api-design.md +697 -495
  488. package/{skills/ck-backend-development → templates/repo/.github/skills/backend-development}/references/backend-architecture.md +454 -454
  489. package/templates/repo/.github/skills/{ck-backend-development → backend-development}/references/backend-authentication.md +433 -338
  490. package/templates/repo/.github/skills/{ck-backend-development → backend-development}/references/backend-code-quality.md +659 -659
  491. package/{skills/ck-backend-development → templates/repo/.github/skills/backend-development}/references/backend-debugging.md +904 -904
  492. package/{skills/ck-backend-development → templates/repo/.github/skills/backend-development}/references/backend-devops.md +494 -494
  493. package/{skills/ck-backend-development → templates/repo/.github/skills/backend-development}/references/backend-mindset.md +387 -387
  494. package/templates/repo/.github/skills/{ck-backend-development → backend-development}/references/backend-performance.md +397 -397
  495. package/{skills/ck-backend-development → templates/repo/.github/skills/backend-development}/references/backend-security.md +340 -290
  496. package/{skills/ck-backend-development → templates/repo/.github/skills/backend-development}/references/backend-technologies.md +300 -290
  497. package/{skills/ck-backend-development → templates/repo/.github/skills/backend-development}/references/backend-testing.md +484 -561
  498. package/templates/repo/.github/skills/brainstorm/SKILL.md +74 -0
  499. package/templates/repo/.github/skills/{ck-code-review → code-review}/SKILL.md +143 -143
  500. package/templates/repo/.github/skills/{ck-code-review → code-review}/references/code-review-reception.md +208 -208
  501. package/templates/repo/.github/skills/{ck-code-review → code-review}/references/requesting-code-review.md +104 -104
  502. package/templates/repo/.github/skills/{ck-code-review → code-review}/references/verification-before-completion.md +138 -138
  503. package/templates/repo/.github/skills/common/README.md +120 -0
  504. package/templates/repo/.github/skills/common/api_key_helper.py +411 -0
  505. package/templates/repo/.github/skills/common/api_key_rotator.py +248 -0
  506. package/templates/repo/.github/skills/context-engineering/SKILL.md +106 -0
  507. package/templates/repo/.github/skills/context-engineering/references/context-compression.md +84 -0
  508. package/templates/repo/.github/skills/context-engineering/references/context-degradation.md +93 -0
  509. package/templates/repo/.github/skills/context-engineering/references/context-fundamentals.md +75 -0
  510. package/templates/repo/.github/skills/context-engineering/references/context-optimization.md +82 -0
  511. package/templates/repo/.github/skills/context-engineering/references/evaluation.md +89 -0
  512. package/templates/repo/.github/skills/context-engineering/references/memory-systems.md +88 -0
  513. package/templates/repo/.github/skills/context-engineering/references/multi-agent-patterns.md +90 -0
  514. package/templates/repo/.github/skills/context-engineering/references/project-development.md +97 -0
  515. package/templates/repo/.github/skills/context-engineering/references/runtime-awareness.md +202 -0
  516. package/templates/repo/.github/skills/context-engineering/references/tool-design.md +86 -0
  517. package/templates/repo/.github/skills/context-engineering/scripts/compression_evaluator.py +349 -0
  518. package/templates/repo/.github/skills/context-engineering/scripts/context_analyzer.py +317 -0
  519. package/templates/repo/.github/skills/cook/README.md +86 -0
  520. package/templates/repo/.github/skills/cook/SKILL.md +93 -0
  521. package/templates/repo/.github/skills/cook/references/agent-patterns.md +75 -0
  522. package/templates/repo/.github/skills/cook/references/intent-detection.md +101 -0
  523. package/templates/repo/.github/skills/cook/references/review-cycle.md +75 -0
  524. package/templates/repo/.github/skills/cook/references/workflow-steps.md +140 -0
  525. package/templates/repo/.github/skills/databases/SKILL.md +111 -0
  526. package/templates/repo/.github/skills/databases/analytics.md +198 -0
  527. package/templates/repo/.github/skills/databases/db-design.md +188 -0
  528. package/templates/repo/.github/skills/databases/incremental-etl.md +213 -0
  529. package/templates/repo/.github/skills/databases/references/mongodb-aggregation.md +447 -0
  530. package/templates/repo/.github/skills/databases/references/mongodb-atlas.md +465 -0
  531. package/templates/repo/.github/skills/databases/references/mongodb-crud.md +408 -0
  532. package/templates/repo/.github/skills/databases/references/mongodb-indexing.md +442 -0
  533. package/templates/repo/.github/skills/databases/references/postgresql-administration.md +594 -0
  534. package/templates/repo/.github/skills/databases/references/postgresql-performance.md +527 -0
  535. package/templates/repo/.github/skills/databases/references/postgresql-psql-cli.md +467 -0
  536. package/templates/repo/.github/skills/databases/references/postgresql-queries.md +475 -0
  537. package/templates/repo/.github/skills/databases/scripts/db_backup.py +502 -0
  538. package/templates/repo/.github/skills/databases/scripts/db_migrate.py +426 -0
  539. package/templates/repo/.github/skills/databases/scripts/db_performance_check.py +457 -0
  540. package/templates/repo/.github/skills/databases/scripts/requirements.txt +20 -0
  541. package/templates/repo/.github/skills/databases/stacks/bigquery.md +231 -0
  542. package/templates/repo/.github/skills/databases/stacks/d1_cloudflare.md +137 -0
  543. package/templates/repo/.github/skills/databases/stacks/mysql.md +216 -0
  544. package/templates/repo/.github/skills/databases/stacks/postgres.md +235 -0
  545. package/templates/repo/.github/skills/databases/stacks/sqlite.md +244 -0
  546. package/templates/repo/.github/skills/databases/transactional.md +176 -0
  547. package/{skills/ck-debugging → templates/repo/.github/skills/debug}/SKILL.md +83 -82
  548. package/{skills/ck-debugging → templates/repo/.github/skills/debug}/references/defense-in-depth.md +124 -124
  549. package/templates/repo/.github/skills/{ck-debugging → debug}/references/root-cause-tracing.md +122 -122
  550. package/{skills/ck-debugging → templates/repo/.github/skills/debug}/references/systematic-debugging.md +102 -102
  551. package/templates/repo/.github/skills/{ck-debugging → debug}/references/verification.md +123 -123
  552. package/{skills/ck-debugging → templates/repo/.github/skills/debug}/scripts/find-polluter.sh +63 -63
  553. package/{skills/ck-debugging → templates/repo/.github/skills/debug}/scripts/find-polluter.test.md +102 -102
  554. package/templates/repo/.github/skills/devops/.env.example +76 -0
  555. package/templates/repo/.github/skills/devops/SKILL.md +102 -0
  556. package/templates/repo/.github/skills/devops/references/browser-rendering.md +305 -0
  557. package/templates/repo/.github/skills/devops/references/cloudflare-d1-kv.md +123 -0
  558. package/templates/repo/.github/skills/devops/references/cloudflare-platform.md +271 -0
  559. package/templates/repo/.github/skills/devops/references/cloudflare-r2-storage.md +280 -0
  560. package/templates/repo/.github/skills/devops/references/cloudflare-workers-advanced.md +312 -0
  561. package/templates/repo/.github/skills/devops/references/cloudflare-workers-apis.md +309 -0
  562. package/templates/repo/.github/skills/devops/references/cloudflare-workers-basics.md +418 -0
  563. package/templates/repo/.github/skills/devops/references/docker-basics.md +297 -0
  564. package/templates/repo/.github/skills/devops/references/docker-compose.md +292 -0
  565. package/templates/repo/.github/skills/devops/references/gcloud-platform.md +297 -0
  566. package/templates/repo/.github/skills/devops/references/gcloud-services.md +304 -0
  567. package/templates/repo/.github/skills/devops/references/kubernetes-basics.md +99 -0
  568. package/templates/repo/.github/skills/devops/references/kubernetes-helm-advanced.md +75 -0
  569. package/templates/repo/.github/skills/devops/references/kubernetes-helm.md +81 -0
  570. package/templates/repo/.github/skills/devops/references/kubernetes-kubectl.md +74 -0
  571. package/templates/repo/.github/skills/devops/references/kubernetes-security-advanced.md +98 -0
  572. package/templates/repo/.github/skills/devops/references/kubernetes-security.md +95 -0
  573. package/templates/repo/.github/skills/devops/references/kubernetes-troubleshooting-advanced.md +74 -0
  574. package/templates/repo/.github/skills/devops/references/kubernetes-troubleshooting.md +49 -0
  575. package/templates/repo/.github/skills/devops/references/kubernetes-workflows-advanced.md +75 -0
  576. package/templates/repo/.github/skills/devops/references/kubernetes-workflows.md +78 -0
  577. package/templates/repo/.github/skills/devops/scripts/cloudflare_deploy.py +269 -0
  578. package/templates/repo/.github/skills/devops/scripts/docker_optimize.py +332 -0
  579. package/templates/repo/.github/skills/devops/scripts/requirements.txt +20 -0
  580. package/templates/repo/.github/skills/docs-seeker/.env.example +15 -0
  581. package/templates/repo/.github/skills/docs-seeker/SKILL.md +96 -0
  582. package/templates/repo/.github/skills/docs-seeker/package.json +25 -0
  583. package/templates/repo/.github/skills/docs-seeker/references/advanced.md +79 -0
  584. package/templates/repo/.github/skills/docs-seeker/references/context7-patterns.md +64 -0
  585. package/templates/repo/.github/skills/docs-seeker/references/errors.md +68 -0
  586. package/templates/repo/.github/skills/docs-seeker/scripts/analyze-llms-txt.js +211 -0
  587. package/templates/repo/.github/skills/docs-seeker/scripts/detect-topic.js +172 -0
  588. package/templates/repo/.github/skills/docs-seeker/scripts/fetch-docs.js +214 -0
  589. package/templates/repo/.github/skills/docs-seeker/scripts/utils/env-loader.js +94 -0
  590. package/templates/repo/.github/skills/docs-seeker/workflows/library-search.md +86 -0
  591. package/templates/repo/.github/skills/docs-seeker/workflows/repo-analysis.md +91 -0
  592. package/templates/repo/.github/skills/docs-seeker/workflows/topic-search.md +77 -0
  593. package/templates/repo/.github/skills/fix/SKILL.md +100 -0
  594. package/templates/repo/.github/skills/fix/references/complexity-assessment.md +61 -0
  595. package/templates/repo/.github/skills/fix/references/mode-selection.md +30 -0
  596. package/templates/repo/.github/skills/fix/references/parallel-exploration.md +77 -0
  597. package/templates/repo/.github/skills/fix/references/review-cycle.md +77 -0
  598. package/templates/repo/.github/skills/fix/references/skill-activation-matrix.md +65 -0
  599. package/templates/repo/.github/skills/fix/references/workflow-ci.md +28 -0
  600. package/templates/repo/.github/skills/fix/references/workflow-deep.md +91 -0
  601. package/templates/repo/.github/skills/fix/references/workflow-logs.md +36 -0
  602. package/templates/repo/.github/skills/fix/references/workflow-quick.md +59 -0
  603. package/templates/repo/.github/skills/fix/references/workflow-standard.md +86 -0
  604. package/templates/repo/.github/skills/fix/references/workflow-test.md +36 -0
  605. package/templates/repo/.github/skills/fix/references/workflow-types.md +33 -0
  606. package/templates/repo/.github/skills/fix/references/workflow-ui.md +34 -0
  607. package/templates/repo/.github/skills/frontend-design/SKILL.md +74 -0
  608. package/templates/repo/.github/skills/frontend-design/references/analysis-best-practices.md +80 -0
  609. package/templates/repo/.github/skills/frontend-design/references/analysis-prompts.md +141 -0
  610. package/templates/repo/.github/skills/frontend-design/references/analysis-techniques.md +118 -0
  611. package/templates/repo/.github/skills/frontend-design/references/animejs.md +396 -0
  612. package/templates/repo/.github/skills/frontend-design/references/asset-generation.md +161 -0
  613. package/templates/repo/.github/skills/frontend-design/references/design-extraction-overview.md +71 -0
  614. package/templates/repo/.github/skills/frontend-design/references/extraction-best-practices.md +141 -0
  615. package/templates/repo/.github/skills/frontend-design/references/extraction-output-templates.md +162 -0
  616. package/templates/repo/.github/skills/frontend-design/references/extraction-prompts.md +127 -0
  617. package/templates/repo/.github/skills/frontend-design/references/technical-accessibility.md +119 -0
  618. package/templates/repo/.github/skills/frontend-design/references/technical-best-practices.md +97 -0
  619. package/templates/repo/.github/skills/frontend-design/references/technical-optimization.md +44 -0
  620. package/templates/repo/.github/skills/frontend-design/references/technical-overview.md +90 -0
  621. package/templates/repo/.github/skills/frontend-design/references/technical-workflows.md +150 -0
  622. package/templates/repo/.github/skills/frontend-design/references/visual-analysis-overview.md +95 -0
  623. package/templates/repo/.github/skills/frontend-design/references/workflow-describe.md +86 -0
  624. package/templates/repo/.github/skills/frontend-design/references/workflow-quick.md +54 -0
  625. package/templates/repo/.github/skills/frontend-design/references/workflow-screenshot.md +62 -0
  626. package/templates/repo/.github/skills/git/SKILL.md +99 -0
  627. package/templates/repo/.github/skills/git/references/branch-management.md +88 -0
  628. package/templates/repo/.github/skills/git/references/commit-standards.md +46 -0
  629. package/templates/repo/.github/skills/git/references/gh-cli-guide.md +109 -0
  630. package/templates/repo/.github/skills/git/references/safety-protocols.md +69 -0
  631. package/templates/repo/.github/skills/git/references/workflow-commit.md +58 -0
  632. package/templates/repo/.github/skills/git/references/workflow-merge.md +48 -0
  633. package/templates/repo/.github/skills/git/references/workflow-pr.md +58 -0
  634. package/templates/repo/.github/skills/git/references/workflow-push.md +52 -0
  635. package/templates/repo/.github/skills/install.ps1 +1247 -0
  636. package/templates/repo/.github/skills/install.sh +1300 -0
  637. package/templates/repo/.github/skills/mcp-management/README.md +219 -0
  638. package/templates/repo/.github/skills/mcp-management/SKILL.md +209 -0
  639. package/templates/repo/.github/skills/mcp-management/assets/tools.json +3146 -0
  640. package/templates/repo/.github/skills/mcp-management/references/configuration.md +114 -0
  641. package/templates/repo/.github/skills/mcp-management/references/gemini-cli-integration.md +221 -0
  642. package/templates/repo/.github/skills/mcp-management/references/mcp-protocol.md +116 -0
  643. package/templates/repo/.github/skills/mcp-management/scripts/.env.example +10 -0
  644. package/templates/repo/.github/skills/mcp-management/scripts/cli.ts +195 -0
  645. package/templates/repo/.github/skills/mcp-management/scripts/dist/analyze-tools.js +70 -0
  646. package/templates/repo/.github/skills/mcp-management/scripts/dist/cli.js +160 -0
  647. package/templates/repo/.github/skills/mcp-management/scripts/dist/mcp-client.js +183 -0
  648. package/templates/repo/.github/skills/mcp-management/scripts/mcp-client.ts +230 -0
  649. package/templates/repo/.github/skills/mcp-management/scripts/package.json +20 -0
  650. package/templates/repo/.github/skills/mcp-management/scripts/tsconfig.json +15 -0
  651. package/templates/repo/.github/skills/mermaidjs-v11/SKILL.md +115 -0
  652. package/templates/repo/.github/skills/mermaidjs-v11/references/cli-usage.md +228 -0
  653. package/templates/repo/.github/skills/mermaidjs-v11/references/configuration.md +232 -0
  654. package/templates/repo/.github/skills/mermaidjs-v11/references/diagram-types.md +315 -0
  655. package/templates/repo/.github/skills/mermaidjs-v11/references/examples.md +344 -0
  656. package/templates/repo/.github/skills/mermaidjs-v11/references/integration.md +310 -0
  657. package/templates/repo/.github/skills/{ck-planning → planning}/SKILL.md +131 -112
  658. package/{skills/ck-planning → templates/repo/.github/skills/planning}/references/codebase-understanding.md +62 -62
  659. package/templates/repo/.github/skills/{ck-planning → planning}/references/output-standards.md +141 -127
  660. package/{skills/ck-planning → templates/repo/.github/skills/planning}/references/plan-organization.md +160 -150
  661. package/templates/repo/.github/skills/{ck-planning → planning}/references/research-phase.md +49 -49
  662. package/{skills/ck-planning → templates/repo/.github/skills/planning}/references/solution-design.md +63 -63
  663. package/templates/repo/.github/skills/{ck-problem-solving → problem-solving}/SKILL.md +95 -95
  664. package/{skills/ck-problem-solving → templates/repo/.github/skills/problem-solving}/references/attribution.md +69 -69
  665. package/templates/repo/.github/skills/{ck-problem-solving → problem-solving}/references/collision-zone-thinking.md +79 -79
  666. package/{skills/ck-problem-solving → templates/repo/.github/skills/problem-solving}/references/inversion-exercise.md +91 -91
  667. package/templates/repo/.github/skills/{ck-problem-solving → problem-solving}/references/meta-pattern-recognition.md +87 -87
  668. package/templates/repo/.github/skills/{ck-problem-solving → problem-solving}/references/scale-game.md +95 -95
  669. package/templates/repo/.github/skills/{ck-problem-solving → problem-solving}/references/simplification-cascades.md +80 -80
  670. package/{skills/ck-problem-solving → templates/repo/.github/skills/problem-solving}/references/when-stuck.md +72 -72
  671. package/templates/repo/.github/skills/repomix/SKILL.md +247 -0
  672. package/templates/repo/.github/skills/repomix/references/configuration.md +211 -0
  673. package/templates/repo/.github/skills/repomix/references/usage-patterns.md +232 -0
  674. package/templates/repo/.github/skills/repomix/scripts/README.md +179 -0
  675. package/templates/repo/.github/skills/repomix/scripts/repomix_batch.py +455 -0
  676. package/templates/repo/.github/skills/repomix/scripts/repos.example.json +15 -0
  677. package/templates/repo/.github/skills/repomix/scripts/requirements.txt +15 -0
  678. package/templates/repo/.github/skills/research/SKILL.md +169 -0
  679. package/templates/repo/.github/skills/scout/SKILL.md +78 -0
  680. package/templates/repo/.github/skills/scout/references/external-scouting.md +140 -0
  681. package/templates/repo/.github/skills/scout/references/internal-scouting.md +119 -0
  682. package/templates/repo/.github/skills/{ck-sequential-thinking → sequential-thinking}/.env.example +8 -8
  683. package/templates/repo/.github/skills/{ck-sequential-thinking → sequential-thinking}/README.md +183 -183
  684. package/{skills/ck-sequential-thinking → templates/repo/.github/skills/sequential-thinking}/SKILL.md +92 -92
  685. package/templates/repo/.github/skills/{ck-sequential-thinking → sequential-thinking}/package.json +31 -31
  686. package/{skills/ck-sequential-thinking → templates/repo/.github/skills/sequential-thinking}/references/advanced-strategies.md +79 -79
  687. package/{skills/ck-sequential-thinking → templates/repo/.github/skills/sequential-thinking}/references/advanced-techniques.md +76 -76
  688. package/{skills/ck-sequential-thinking → templates/repo/.github/skills/sequential-thinking}/references/core-patterns.md +95 -95
  689. package/templates/repo/.github/skills/{ck-sequential-thinking → sequential-thinking}/references/examples-api.md +88 -88
  690. package/templates/repo/.github/skills/{ck-sequential-thinking → sequential-thinking}/references/examples-architecture.md +94 -94
  691. package/templates/repo/.github/skills/{ck-sequential-thinking → sequential-thinking}/references/examples-debug.md +90 -90
  692. package/templates/repo/.github/skills/{ck-sequential-thinking → sequential-thinking}/scripts/format-thought.js +159 -159
  693. package/{skills/ck-sequential-thinking → templates/repo/.github/skills/sequential-thinking}/scripts/process-thought.js +236 -236
  694. package/templates/repo/.github/skills/ui-styling/LICENSE.txt +202 -0
  695. package/templates/repo/.github/skills/ui-styling/SKILL.md +319 -0
  696. package/templates/repo/.github/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  697. package/templates/repo/.github/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  698. package/templates/repo/.github/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  699. package/templates/repo/.github/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  700. package/templates/repo/.github/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  701. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  702. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  703. package/templates/repo/.github/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  704. package/templates/repo/.github/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  705. package/templates/repo/.github/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  706. package/templates/repo/.github/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  707. package/templates/repo/.github/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  708. package/templates/repo/.github/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  709. package/templates/repo/.github/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  710. package/templates/repo/.github/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  711. package/templates/repo/.github/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  712. package/templates/repo/.github/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  713. package/templates/repo/.github/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  714. package/templates/repo/.github/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  715. package/templates/repo/.github/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  716. package/templates/repo/.github/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  717. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  718. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  719. package/templates/repo/.github/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  720. package/templates/repo/.github/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  721. package/templates/repo/.github/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  722. package/templates/repo/.github/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  723. package/templates/repo/.github/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  724. package/templates/repo/.github/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  725. package/templates/repo/.github/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  726. package/templates/repo/.github/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  727. package/templates/repo/.github/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  728. package/templates/repo/.github/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  729. package/templates/repo/.github/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  730. package/templates/repo/.github/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  731. package/templates/repo/.github/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  732. package/templates/repo/.github/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  733. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  734. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  735. package/templates/repo/.github/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  736. package/templates/repo/.github/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  737. package/templates/repo/.github/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  738. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  739. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  740. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  741. package/templates/repo/.github/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  742. package/templates/repo/.github/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  743. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  744. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  745. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  746. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  747. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  748. package/templates/repo/.github/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  749. package/templates/repo/.github/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  750. package/templates/repo/.github/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  751. package/templates/repo/.github/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  752. package/templates/repo/.github/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  753. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  754. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  755. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  756. package/templates/repo/.github/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  757. package/templates/repo/.github/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  758. package/templates/repo/.github/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  759. package/templates/repo/.github/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  760. package/templates/repo/.github/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  761. package/templates/repo/.github/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  762. package/templates/repo/.github/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  763. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  764. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  765. package/templates/repo/.github/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  766. package/templates/repo/.github/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  767. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  768. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  769. package/templates/repo/.github/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  770. package/templates/repo/.github/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  771. package/templates/repo/.github/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  772. package/templates/repo/.github/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  773. package/templates/repo/.github/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  774. package/templates/repo/.github/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  775. package/templates/repo/.github/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  776. package/templates/repo/.github/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  777. package/templates/repo/.github/skills/ui-styling/references/canvas-design-system.md +320 -0
  778. package/templates/repo/.github/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  779. package/templates/repo/.github/skills/ui-styling/references/shadcn-components.md +424 -0
  780. package/templates/repo/.github/skills/ui-styling/references/shadcn-theming.md +373 -0
  781. package/templates/repo/.github/skills/ui-styling/references/tailwind-customization.md +483 -0
  782. package/templates/repo/.github/skills/ui-styling/references/tailwind-responsive.md +382 -0
  783. package/templates/repo/.github/skills/ui-styling/references/tailwind-utilities.md +455 -0
  784. package/templates/repo/.github/skills/ui-styling/scripts/requirements.txt +17 -0
  785. package/templates/repo/.github/skills/ui-styling/scripts/shadcn_add.py +292 -0
  786. package/templates/repo/.github/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
  787. package/templates/repo/.github/skills/web-testing/SKILL.md +94 -0
  788. package/templates/repo/.github/skills/web-testing/references/accessibility-testing.md +84 -0
  789. package/templates/repo/.github/skills/web-testing/references/api-testing.md +78 -0
  790. package/templates/repo/.github/skills/web-testing/references/ci-cd-testing-workflows.md +121 -0
  791. package/templates/repo/.github/skills/web-testing/references/component-testing.md +94 -0
  792. package/templates/repo/.github/skills/web-testing/references/contract-testing.md +146 -0
  793. package/templates/repo/.github/skills/web-testing/references/cross-browser-checklist.md +72 -0
  794. package/templates/repo/.github/skills/web-testing/references/database-testing.md +139 -0
  795. package/templates/repo/.github/skills/web-testing/references/e2e-testing-playwright.md +119 -0
  796. package/templates/repo/.github/skills/web-testing/references/functional-testing-checklist.md +88 -0
  797. package/templates/repo/.github/skills/web-testing/references/interactive-testing-patterns.md +89 -0
  798. package/templates/repo/.github/skills/web-testing/references/load-testing-k6.md +93 -0
  799. package/templates/repo/.github/skills/web-testing/references/mobile-gesture-testing.md +85 -0
  800. package/templates/repo/.github/skills/web-testing/references/performance-core-web-vitals.md +124 -0
  801. package/templates/repo/.github/skills/web-testing/references/playwright-component-testing.md +115 -0
  802. package/templates/repo/.github/skills/web-testing/references/pre-release-checklist.md +75 -0
  803. package/templates/repo/.github/skills/web-testing/references/security-checklists.md +81 -0
  804. package/templates/repo/.github/skills/web-testing/references/security-testing-overview.md +92 -0
  805. package/templates/repo/.github/skills/web-testing/references/shadow-dom-testing.md +70 -0
  806. package/templates/repo/.github/skills/web-testing/references/test-data-management.md +131 -0
  807. package/templates/repo/.github/skills/web-testing/references/test-flakiness-mitigation.md +86 -0
  808. package/templates/repo/.github/skills/web-testing/references/testing-pyramid-strategy.md +76 -0
  809. package/templates/repo/.github/skills/web-testing/references/unit-integration-testing.md +138 -0
  810. package/templates/repo/.github/skills/web-testing/references/visual-regression.md +92 -0
  811. package/templates/repo/.github/skills/web-testing/references/vulnerability-payloads.md +93 -0
  812. package/templates/repo/.github/skills/web-testing/scripts/analyze-test-results.js +280 -0
  813. package/templates/repo/.github/skills/web-testing/scripts/init-playwright.js +233 -0
  814. package/templates/repo/.github/spec-kit/memory/constitution.md +50 -0
  815. package/templates/repo/.github/spec-kit/scripts/bash/check-prerequisites.sh +166 -0
  816. package/templates/repo/.github/spec-kit/scripts/bash/common.sh +156 -0
  817. package/templates/repo/.github/spec-kit/scripts/bash/create-new-feature.sh +297 -0
  818. package/templates/repo/.github/spec-kit/scripts/bash/setup-plan.sh +61 -0
  819. package/templates/repo/.github/spec-kit/scripts/bash/update-agent-context.sh +799 -0
  820. package/templates/repo/.github/spec-kit/scripts/powershell/check-prerequisites.ps1 +148 -0
  821. package/templates/repo/.github/spec-kit/scripts/powershell/common.ps1 +137 -0
  822. package/templates/repo/.github/spec-kit/scripts/powershell/create-new-feature.ps1 +283 -0
  823. package/templates/repo/.github/spec-kit/scripts/powershell/setup-plan.ps1 +61 -0
  824. package/templates/repo/.github/spec-kit/scripts/powershell/update-agent-context.ps1 +448 -0
  825. package/templates/repo/.github/spec-kit/templates/agent-file-template.md +28 -0
  826. package/templates/repo/.github/spec-kit/templates/checklist-template.md +40 -0
  827. package/templates/repo/.github/spec-kit/templates/commands/analyze.md +187 -0
  828. package/templates/repo/.github/spec-kit/templates/commands/checklist.md +297 -0
  829. package/templates/repo/.github/spec-kit/templates/commands/clarify.md +184 -0
  830. package/templates/repo/.github/spec-kit/templates/commands/constitution.md +82 -0
  831. package/templates/repo/.github/spec-kit/templates/commands/implement.md +138 -0
  832. package/templates/repo/.github/spec-kit/templates/commands/plan.md +95 -0
  833. package/templates/repo/.github/spec-kit/templates/commands/specify.md +261 -0
  834. package/templates/repo/.github/spec-kit/templates/commands/tasks.md +140 -0
  835. package/templates/repo/.github/spec-kit/templates/commands/taskstoissues.md +33 -0
  836. package/templates/repo/.github/spec-kit/templates/plan-template.md +104 -0
  837. package/templates/repo/.github/spec-kit/templates/spec-template.md +115 -0
  838. package/templates/repo/.github/spec-kit/templates/tasks-phase-template.md +42 -0
  839. package/templates/repo/.github/spec-kit/templates/tasks-template.md +268 -0
  840. package/templates/repo/.github/spec-kit/templates/vscode-settings.json +14 -0
  841. package/templates/repo/.vscode/settings.json +70 -70
  842. package/.vscode/settings.json +0 -70
  843. package/AGENTS.md +0 -103
  844. package/FAQ.md +0 -101
  845. package/INIT.md +0 -154
  846. package/QUICK-START.md +0 -37
  847. package/changelogs/1.0.8.md +0 -77
  848. package/changelogs/1.0.9.md +0 -173
  849. package/plans/reports/docs-manager-260120-0854-documentation-update.md +0 -323
  850. package/prompts/ck-code.prompt.md +0 -178
  851. package/repomix-output.xml +0 -40725
  852. package/rules/README.agents.md +0 -55
  853. package/rules/README.collections.md +0 -78
  854. package/rules/README.copilot-instructions.md +0 -66
  855. package/rules/README.instructions.md +0 -73
  856. package/rules/README.md +0 -39
  857. package/rules/README.prompts.md +0 -76
  858. package/rules/README.skills.md +0 -71
  859. package/skills/ck-frontend-development/SKILL.md +0 -399
  860. package/skills/ck-frontend-development/resources/common-patterns.md +0 -331
  861. package/skills/ck-frontend-development/resources/complete-examples.md +0 -872
  862. package/skills/ck-frontend-development/resources/component-patterns.md +0 -502
  863. package/skills/ck-frontend-development/resources/data-fetching.md +0 -767
  864. package/skills/ck-frontend-development/resources/file-organization.md +0 -502
  865. package/skills/ck-frontend-development/resources/loading-and-error-states.md +0 -501
  866. package/skills/ck-frontend-development/resources/performance.md +0 -406
  867. package/skills/ck-frontend-development/resources/routing-guide.md +0 -364
  868. package/skills/ck-frontend-development/resources/styling-guide.md +0 -428
  869. package/skills/ck-frontend-development/resources/typescript-standards.md +0 -418
  870. package/skills/ck-sequential-thinking/tests/format-thought.test.js +0 -133
  871. package/skills/ck-sequential-thinking/tests/process-thought.test.js +0 -215
  872. package/templates/repo/.github/.cokit-version +0 -4
  873. package/templates/repo/.github/copilot-instructions.md +0 -45
  874. package/templates/repo/.github/prompts/ck-code.prompt.md +0 -178
  875. package/templates/repo/.github/skills/ck-frontend-development/SKILL.md +0 -399
  876. package/templates/repo/.github/skills/ck-frontend-development/resources/common-patterns.md +0 -331
  877. package/templates/repo/.github/skills/ck-frontend-development/resources/complete-examples.md +0 -872
  878. package/templates/repo/.github/skills/ck-frontend-development/resources/component-patterns.md +0 -502
  879. package/templates/repo/.github/skills/ck-frontend-development/resources/data-fetching.md +0 -767
  880. package/templates/repo/.github/skills/ck-frontend-development/resources/file-organization.md +0 -502
  881. package/templates/repo/.github/skills/ck-frontend-development/resources/loading-and-error-states.md +0 -501
  882. package/templates/repo/.github/skills/ck-frontend-development/resources/performance.md +0 -406
  883. package/templates/repo/.github/skills/ck-frontend-development/resources/routing-guide.md +0 -364
  884. package/templates/repo/.github/skills/ck-frontend-development/resources/styling-guide.md +0 -428
  885. package/templates/repo/.github/skills/ck-frontend-development/resources/typescript-standards.md +0 -418
  886. package/templates/repo/.github/skills/ck-sequential-thinking/tests/format-thought.test.js +0 -133
  887. package/templates/repo/.github/skills/ck-sequential-thinking/tests/process-thought.test.js +0 -215
  888. /package/skills/{ck-code-review → code-review}/references/verification-before-completion.md +0 -0
@@ -0,0 +1,1247 @@
1
+ # CoKit Skills Installation Script for Windows (PowerShell)
2
+ # Installs all dependencies for skills
3
+ #
4
+ # Exit codes (rustup model):
5
+ # 0 = Success (full or partial)
6
+ # 1 = Fatal error (no Python, broken venv)
7
+ # 2 = Partial success (some optional deps failed)
8
+
9
+ param(
10
+ [switch]$SkipChocolatey = $false,
11
+ [switch]$Help = $false,
12
+ [switch]$Y = $false, # Skip all prompts and auto-confirm
13
+ [switch]$WithAdmin = $false, # Use admin-requiring package managers (choco)
14
+ [switch]$Resume = $false, # Resume from previous interrupted installation
15
+ [switch]$RetryFailed = $false, # Retry previously failed packages
16
+ [ValidateSet("auto", "winget", "scoop", "choco")]
17
+ [string]$PreferPackageManager = "auto" # Preferred package manager (soft fallback to auto if unavailable)
18
+ )
19
+
20
+ # Configuration
21
+ $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
22
+ $VenvDir = Join-Path $ScriptDir ".venv"
23
+ $StateFile = Join-Path $ScriptDir ".install-state.json"
24
+ $LogDir = Join-Path $VenvDir "logs"
25
+ $ErrorSummaryFile = Join-Path $ScriptDir ".install-error-summary.json"
26
+
27
+ # Check for NON_INTERACTIVE environment variable
28
+ if ($env:NON_INTERACTIVE -eq "1") {
29
+ $Y = $true
30
+ }
31
+
32
+ # ============================================================================
33
+ # Installation Tracking Variables
34
+ # ============================================================================
35
+ $Script:INSTALLED_CRITICAL = [System.Collections.ArrayList]::new()
36
+ $Script:INSTALLED_OPTIONAL = [System.Collections.ArrayList]::new()
37
+ $Script:FAILED_OPTIONAL = [System.Collections.ArrayList]::new()
38
+ $Script:SKIPPED_ADMIN = [System.Collections.ArrayList]::new()
39
+ $Script:FINAL_EXIT_CODE = 0
40
+
41
+ # ============================================================================
42
+ # Tracking Functions
43
+ # ============================================================================
44
+ function Track-Success {
45
+ param(
46
+ [string]$Category, # "critical" or "optional"
47
+ [string]$Name
48
+ )
49
+ if ($Category -eq "critical") {
50
+ [void]$Script:INSTALLED_CRITICAL.Add($Name)
51
+ } else {
52
+ [void]$Script:INSTALLED_OPTIONAL.Add($Name)
53
+ }
54
+ }
55
+
56
+ function Track-Failure {
57
+ param(
58
+ [string]$Category, # "critical" or "optional"
59
+ [string]$Name,
60
+ [string]$Reason
61
+ )
62
+ if ($Category -eq "critical") {
63
+ $Script:FINAL_EXIT_CODE = 1
64
+ } else {
65
+ [void]$Script:FAILED_OPTIONAL.Add("${Name}: ${Reason}")
66
+ if ($Script:FINAL_EXIT_CODE -eq 0) {
67
+ $Script:FINAL_EXIT_CODE = 2
68
+ }
69
+ }
70
+ }
71
+
72
+ function Track-Skipped {
73
+ param(
74
+ [string]$Name,
75
+ [string]$Reason
76
+ )
77
+ [void]$Script:SKIPPED_ADMIN.Add("${Name}: ${Reason}")
78
+ }
79
+
80
+ # ============================================================================
81
+ # State Persistence Functions
82
+ # ============================================================================
83
+ function Initialize-State {
84
+ if ($Resume -and (Test-Path $StateFile)) {
85
+ Write-Info "Resuming from previous installation..."
86
+ # Load state and validate preference consistency
87
+ $state = Get-Content $StateFile -Raw | ConvertFrom-Json
88
+ if ($state.PSObject.Properties['prefer_package_manager']) {
89
+ if ($state.prefer_package_manager -ne $Script:PreferPackageManager) {
90
+ Write-Warning "Preference changed from '$($state.prefer_package_manager)' to '$($Script:PreferPackageManager)'"
91
+ Write-Warning "Using original preference: $($state.prefer_package_manager)"
92
+ $Script:PreferPackageManager = $state.prefer_package_manager
93
+ }
94
+ }
95
+ return
96
+ }
97
+
98
+ # Create fresh state
99
+ $state = @{
100
+ version = 1
101
+ started_at = (Get-Date -Format "yyyy-MM-ddTHH:mm:ssZ")
102
+ last_updated = (Get-Date -Format "yyyy-MM-ddTHH:mm:ssZ")
103
+ prefer_package_manager = $Script:PreferPackageManager
104
+ phases = @{
105
+ chocolatey = "pending"
106
+ system_deps = "pending"
107
+ node_deps = "pending"
108
+ python_env = "pending"
109
+ verify = "pending"
110
+ }
111
+ packages = @{
112
+ installed = @()
113
+ failed = @()
114
+ skipped = @()
115
+ }
116
+ }
117
+ $state | ConvertTo-Json -Depth 5 | Set-Content $StateFile -Encoding UTF8
118
+ }
119
+
120
+ function Update-Phase {
121
+ param(
122
+ [string]$Phase,
123
+ [string]$Status
124
+ )
125
+ if (-not (Test-Path $StateFile)) {
126
+ return
127
+ }
128
+
129
+ $state = Get-Content $StateFile -Raw | ConvertFrom-Json
130
+ $state.phases.$Phase = $Status
131
+ $state.last_updated = (Get-Date -Format "yyyy-MM-ddTHH:mm:ssZ")
132
+ $state | ConvertTo-Json -Depth 5 | Set-Content $StateFile -Encoding UTF8
133
+ }
134
+
135
+ function Test-PhaseDone {
136
+ param([string]$Phase)
137
+ if (-not (Test-Path $StateFile)) {
138
+ return $false
139
+ }
140
+ $state = Get-Content $StateFile -Raw | ConvertFrom-Json
141
+ return ($state.phases.$Phase -eq "done")
142
+ }
143
+
144
+ function Remove-StateFile {
145
+ if (Test-Path $StateFile) {
146
+ Remove-Item $StateFile -Force
147
+ Write-Info "Installation state cleaned (success)"
148
+ }
149
+ }
150
+
151
+ # Colors for output
152
+ function Write-Header {
153
+ param([string]$Message)
154
+ Write-Host ""
155
+ Write-Host "===================================================" -ForegroundColor Blue
156
+ Write-Host $Message -ForegroundColor Blue
157
+ Write-Host "===================================================" -ForegroundColor Blue
158
+ Write-Host ""
159
+ }
160
+
161
+ function Write-Success {
162
+ param([string]$Message)
163
+ Write-Host "[OK] $Message" -ForegroundColor Green
164
+ }
165
+
166
+ function Write-Warning {
167
+ param([string]$Message)
168
+ Write-Host "[WARN] $Message" -ForegroundColor Yellow
169
+ }
170
+
171
+ function Write-Error {
172
+ param([string]$Message)
173
+ Write-Host "[ERROR] $Message" -ForegroundColor Red
174
+ }
175
+
176
+ function Write-Info {
177
+ param([string]$Message)
178
+ Write-Host "[INFO] $Message" -ForegroundColor Cyan
179
+ }
180
+
181
+ # Check if running as Administrator
182
+ function Test-Administrator {
183
+ $currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
184
+ $principal = New-Object Security.Principal.WindowsPrincipal($currentUser)
185
+ return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
186
+ }
187
+
188
+ # Check if command exists and is functional (not just in PATH)
189
+ # Validates: command exists, is not a broken alias, and responds to --version
190
+ function Test-Command {
191
+ param([string]$Command)
192
+ try {
193
+ $cmd = Get-Command $Command -ErrorAction SilentlyContinue
194
+ if (-not $cmd) {
195
+ return $false
196
+ }
197
+
198
+ # Skip aliases that don't resolve to applications
199
+ if ($cmd.CommandType -eq 'Alias') {
200
+ $resolved = Get-Command $cmd.Definition -ErrorAction SilentlyContinue
201
+ if (-not $resolved -or $resolved.CommandType -ne 'Application') {
202
+ return $false
203
+ }
204
+ }
205
+
206
+ # For package managers, verify they actually respond
207
+ if ($Command -in @('winget', 'scoop', 'choco')) {
208
+ $null = & $Command --version 2>$null
209
+ return ($LASTEXITCODE -eq 0)
210
+ }
211
+
212
+ return $true
213
+ } catch {
214
+ return $false
215
+ }
216
+ }
217
+
218
+ # Check if Visual Studio Build Tools are installed (not just in PATH)
219
+ # Returns $true if VS Build Tools are available for compilation
220
+ function Test-VSBuildTools {
221
+ # Quick check: if cl.exe or gcc is in PATH, we're good
222
+ if ((Test-Command "cl") -or (Test-Command "gcc")) {
223
+ return $true
224
+ }
225
+
226
+ # Check via vswhere.exe (most reliable method for VS detection)
227
+ $vswherePaths = @(
228
+ "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe",
229
+ "${env:ProgramFiles}\Microsoft Visual Studio\Installer\vswhere.exe"
230
+ )
231
+
232
+ foreach ($vswhere in $vswherePaths) {
233
+ if (Test-Path $vswhere) {
234
+ try {
235
+ # Check for any VS installation with C++ build tools
236
+ $vsPath = & $vswhere -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath 2>$null
237
+ if ($vsPath -and (Test-Path $vsPath)) {
238
+ return $true
239
+ }
240
+ # Fallback: check for any VS installation
241
+ $vsPath = & $vswhere -latest -property installationPath 2>$null
242
+ if ($vsPath -and (Test-Path $vsPath)) {
243
+ return $true
244
+ }
245
+ } catch {
246
+ # vswhere failed, continue to fallback checks
247
+ }
248
+ }
249
+ }
250
+
251
+ # Fallback: check common VS Build Tools installation paths
252
+ $commonPaths = @(
253
+ "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools",
254
+ "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\Community",
255
+ "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\Professional",
256
+ "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\Enterprise",
257
+ "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\BuildTools",
258
+ "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2019\Community"
259
+ )
260
+
261
+ foreach ($vsPath in $commonPaths) {
262
+ if (Test-Path $vsPath) {
263
+ # Check if VC tools exist in this installation
264
+ $vcToolsPath = Join-Path $vsPath "VC\Tools\MSVC"
265
+ if (Test-Path $vcToolsPath) {
266
+ return $true
267
+ }
268
+ }
269
+ }
270
+
271
+ return $false
272
+ }
273
+
274
+ # Find Python executable, handling Windows Store aliases
275
+ # Returns: hashtable with 'Path' and 'Version', or $null if not found
276
+ function Find-Python {
277
+ # Priority 1: Check py launcher first (most reliable on Windows)
278
+ $py = Get-Command py -ErrorAction SilentlyContinue
279
+ if ($py) {
280
+ try {
281
+ $version = (& py --version 2>&1)
282
+ if ($LASTEXITCODE -eq 0 -and $version -match 'Python') {
283
+ return @{ Path = $py.Source; Version = $version; Command = "py" }
284
+ }
285
+ } catch { }
286
+ }
287
+
288
+ # Priority 2: Check common Python install paths
289
+ $commonPaths = @(
290
+ "$env:LOCALAPPDATA\Programs\Python\Python3*\python.exe",
291
+ "$env:LOCALAPPDATA\Programs\Python\Python*\python.exe",
292
+ "C:\Python3*\python.exe",
293
+ "C:\Python*\python.exe",
294
+ "$env:ProgramFiles\Python3*\python.exe",
295
+ "$env:ProgramFiles\Python*\python.exe",
296
+ "$env:ProgramFiles(x86)\Python3*\python.exe"
297
+ )
298
+
299
+ foreach ($pathPattern in $commonPaths) {
300
+ $found = Get-Item $pathPattern -ErrorAction SilentlyContinue | Sort-Object Name -Descending | Select-Object -First 1
301
+ if ($found) {
302
+ try {
303
+ $version = (& $found.FullName --version 2>&1)
304
+ if ($LASTEXITCODE -eq 0 -and $version -match 'Python') {
305
+ return @{ Path = $found.FullName; Version = $version; Command = $found.FullName }
306
+ }
307
+ } catch { }
308
+ }
309
+ }
310
+
311
+ # Priority 3: Check PATH but detect Windows Store alias
312
+ $python = Get-Command python -ErrorAction SilentlyContinue
313
+ if ($python) {
314
+ # Detect Windows Store alias (points to WindowsApps)
315
+ if ($python.Source -like "*WindowsApps*") {
316
+ Write-Warning "Windows Store Python alias detected at: $($python.Source)"
317
+ Write-Warning "This alias redirects to Microsoft Store instead of running Python."
318
+ Write-Info "To fix this, either:"
319
+ Write-Info " 1. Install Python from https://www.python.org/downloads/"
320
+ Write-Info " 2. Or disable the alias: Settings > Apps > Advanced app settings > App execution aliases"
321
+ Write-Info " Then turn off 'python.exe' and 'python3.exe'"
322
+ return $null
323
+ }
324
+
325
+ # Valid Python in PATH
326
+ try {
327
+ $version = (& python --version 2>&1)
328
+ if ($LASTEXITCODE -eq 0 -and $version -match 'Python') {
329
+ return @{ Path = $python.Source; Version = $version; Command = "python" }
330
+ }
331
+ } catch { }
332
+ }
333
+
334
+ # Priority 4: Try python3 command
335
+ $python3 = Get-Command python3 -ErrorAction SilentlyContinue
336
+ if ($python3 -and -not ($python3.Source -like "*WindowsApps*")) {
337
+ try {
338
+ $version = (& python3 --version 2>&1)
339
+ if ($LASTEXITCODE -eq 0 -and $version -match 'Python') {
340
+ return @{ Path = $python3.Source; Version = $version; Command = "python3" }
341
+ }
342
+ } catch { }
343
+ }
344
+
345
+ return $null
346
+ }
347
+
348
+ # Get available package manager with preference support (soft fallback to auto-detection)
349
+ # Priority for auto: winget > scoop > choco
350
+ function Get-PackageManager {
351
+ param([string]$Preference = "auto")
352
+
353
+ # If preference specified, try it first
354
+ if ($Preference -ne "auto") {
355
+ if (Test-Command $Preference) {
356
+ return $Preference
357
+ }
358
+ # Auto-detect for better warning message
359
+ $autoDetected = $null
360
+ if (Test-Command "winget") { $autoDetected = "winget" }
361
+ elseif (Test-Command "scoop") { $autoDetected = "scoop" }
362
+ elseif (Test-Command "choco") { $autoDetected = "choco" }
363
+
364
+ if ($autoDetected) {
365
+ Write-Warning "Preferred '$Preference' not found, using auto-detected: $autoDetected"
366
+ return $autoDetected
367
+ } else {
368
+ Write-Warning "Preferred '$Preference' not found, no package manager available"
369
+ return $null
370
+ }
371
+ }
372
+
373
+ # Auto-detection (priority: winget > scoop > choco)
374
+ if (Test-Command "winget") { return "winget" }
375
+ if (Test-Command "scoop") { return "scoop" }
376
+ if (Test-Command "choco") { return "choco" }
377
+ return $null
378
+ }
379
+
380
+ # Install package using available package manager
381
+ # Returns $true if installed, $false if failed
382
+ # Now with tracking support
383
+ function Install-WithPackageManager {
384
+ param(
385
+ [string]$DisplayName,
386
+ [string]$WingetId,
387
+ [string]$ChocoName,
388
+ [string]$ScoopName,
389
+ [string]$ManualUrl,
390
+ [string]$Category = "optional" # "critical" or "optional"
391
+ )
392
+
393
+ $pm = Get-PackageManager -Preference $Script:PreferPackageManager
394
+
395
+ switch ($pm) {
396
+ $null {
397
+ # No package manager available - provide manual install guidance
398
+ Write-Warning "$DisplayName not installed. No package manager available."
399
+ Write-Info "Install manually from: $ManualUrl"
400
+ Track-Failure -Category $Category -Name $DisplayName -Reason "no package manager"
401
+ return $false
402
+ }
403
+ "winget" {
404
+ Write-Info "Installing $DisplayName via winget..."
405
+ # Try user scope first, fallback to machine scope
406
+ winget install $WingetId --silent --accept-package-agreements --accept-source-agreements --scope user 2>$null
407
+ if ($LASTEXITCODE -ne 0) {
408
+ # Retry without scope restriction (some packages only support machine-wide)
409
+ winget install $WingetId --silent --accept-package-agreements --accept-source-agreements 2>$null
410
+ }
411
+ if ($LASTEXITCODE -eq 0) {
412
+ Write-Success "$DisplayName installed via winget"
413
+ Track-Success -Category $Category -Name $DisplayName
414
+ return $true
415
+ }
416
+ }
417
+ "scoop" {
418
+ Write-Info "Installing $DisplayName via scoop..."
419
+ scoop install $ScoopName 2>$null
420
+ if ($LASTEXITCODE -eq 0) {
421
+ Write-Success "$DisplayName installed via scoop"
422
+ Track-Success -Category $Category -Name $DisplayName
423
+ return $true
424
+ }
425
+ }
426
+ "choco" {
427
+ if ($WithAdmin -and (Test-Administrator)) {
428
+ Write-Info "Installing $DisplayName via chocolatey..."
429
+ choco install $ChocoName -y 2>$null
430
+ if ($LASTEXITCODE -eq 0) {
431
+ Write-Success "$DisplayName installed via chocolatey"
432
+ Track-Success -Category $Category -Name $DisplayName
433
+ return $true
434
+ }
435
+ } elseif (-not $WithAdmin) {
436
+ Write-Info "${DisplayName}: skipped (no -WithAdmin flag)"
437
+ Track-Skipped -Name $DisplayName -Reason "requires admin"
438
+ return $false
439
+ } else {
440
+ Write-Warning "Chocolatey requires admin. Skipping $DisplayName..."
441
+ Track-Skipped -Name $DisplayName -Reason "not running as admin"
442
+ return $false
443
+ }
444
+ }
445
+ }
446
+
447
+ Write-Warning "$DisplayName not installed. Install manually from: $ManualUrl"
448
+ Track-Failure -Category $Category -Name $DisplayName -Reason "installation failed"
449
+ return $false
450
+ }
451
+
452
+ # Get user input with support for redirected stdin
453
+ function Get-UserInput {
454
+ param(
455
+ [string]$Prompt,
456
+ [string]$Default = "N"
457
+ )
458
+
459
+ # Check if stdin is redirected (e.g., from Bash tool or piped input)
460
+ if ([Console]::IsInputRedirected) {
461
+ Write-Host "$Prompt " -NoNewline
462
+
463
+ # Try to read from stdin without blocking
464
+ $inputAvailable = $false
465
+ try {
466
+ $stdin = [Console]::In
467
+ # Peek returns -1 if no data available
468
+ if ($stdin.Peek() -ne -1) {
469
+ $response = $stdin.ReadLine()
470
+ $inputAvailable = $true
471
+ Write-Host $response
472
+ }
473
+ } catch {
474
+ # If peek fails, no input available
475
+ }
476
+
477
+ if ($inputAvailable -and $response) {
478
+ return $response
479
+ } else {
480
+ # No input available, use default
481
+ Write-Host $Default
482
+ Write-Warning "No input detected (stdin redirected), using default: $Default"
483
+ return $Default
484
+ }
485
+ } else {
486
+ # Normal interactive mode - use standard Read-Host
487
+ return Read-Host $Prompt
488
+ }
489
+ }
490
+
491
+ # Install Chocolatey (optional - only if admin and no better PM available)
492
+ function Install-Chocolatey {
493
+ if ($SkipChocolatey) {
494
+ Write-Warning "Skipping Chocolatey installation (--SkipChocolatey flag)"
495
+ return $false
496
+ }
497
+
498
+ if (Test-Command "choco") {
499
+ Write-Success "Chocolatey already installed"
500
+ return $true
501
+ }
502
+
503
+ # Check if we have winget/scoop - no need for choco then
504
+ if ((Test-Command "winget") -or (Test-Command "scoop")) {
505
+ $pm = Get-PackageManager -Preference $Script:PreferPackageManager
506
+ Write-Info "Using $pm as package manager (Chocolatey not needed)"
507
+ return $false
508
+ }
509
+
510
+ # Only try to install choco if we're admin and have no other PM
511
+ if (-not (Test-Administrator)) {
512
+ Write-Warning "No package manager found. Options:"
513
+ Write-Info " 1. Run as Administrator to install Chocolatey"
514
+ Write-Info " 2. Install winget (recommended): https://aka.ms/getwinget"
515
+ Write-Info " 3. Install scoop: irm get.scoop.sh | iex"
516
+ return $false
517
+ }
518
+
519
+ Write-Info "Installing Chocolatey package manager..."
520
+
521
+ # Wrap Set-ExecutionPolicy in try-catch (may fail in some PS7 environments)
522
+ try {
523
+ Set-ExecutionPolicy Bypass -Scope Process -Force
524
+ } catch {
525
+ Write-Warning "Could not set execution policy: $($_.Exception.Message)"
526
+ Write-Info "Continuing anyway - Chocolatey install may prompt for confirmation"
527
+ }
528
+
529
+ try {
530
+ [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
531
+ Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
532
+ Write-Success "Chocolatey installed"
533
+ return $true
534
+ } catch {
535
+ Write-Warning "Failed to install Chocolatey: $($_.Exception.Message)"
536
+ return $false
537
+ }
538
+ }
539
+
540
+ # Install system dependencies
541
+ function Install-SystemDeps {
542
+ Write-Header "Installing System Dependencies"
543
+
544
+ $pm = Get-PackageManager -Preference $Script:PreferPackageManager
545
+ if ($pm) {
546
+ Write-Info "Using package manager: $pm"
547
+ } else {
548
+ Write-Warning "No package manager found. Will provide manual install instructions."
549
+ }
550
+
551
+ # FFmpeg
552
+ if (Test-Command "ffmpeg") {
553
+ $ffmpegVersion = (ffmpeg -version 2>&1 | Select-Object -First 1)
554
+ Write-Success "FFmpeg already installed ($ffmpegVersion)"
555
+ Track-Success -Category "optional" -Name "FFmpeg"
556
+ } else {
557
+ $null = Install-WithPackageManager `
558
+ -DisplayName "FFmpeg" `
559
+ -WingetId "Gyan.FFmpeg" `
560
+ -ChocoName "ffmpeg" `
561
+ -ScoopName "ffmpeg" `
562
+ -ManualUrl "https://ffmpeg.org/download.html" `
563
+ -Category "optional"
564
+ }
565
+
566
+ # ImageMagick
567
+ if (Test-Command "magick") {
568
+ Write-Success "ImageMagick already installed"
569
+ Track-Success -Category "optional" -Name "ImageMagick"
570
+ } else {
571
+ $null = Install-WithPackageManager `
572
+ -DisplayName "ImageMagick" `
573
+ -WingetId "ImageMagick.ImageMagick" `
574
+ -ChocoName "imagemagick" `
575
+ -ScoopName "imagemagick" `
576
+ -ManualUrl "https://imagemagick.org/script/download.php" `
577
+ -Category "optional"
578
+ }
579
+
580
+ # Docker (optional)
581
+ if (Test-Command "docker") {
582
+ $dockerVersion = (docker --version)
583
+ Write-Success "Docker already installed ($dockerVersion)"
584
+ Track-Success -Category "optional" -Name "Docker"
585
+ } else {
586
+ Write-Warning "Docker not found. Skipping (optional)..."
587
+ Write-Info "Install Docker from: https://docs.docker.com/desktop/install/windows-install/"
588
+ }
589
+ }
590
+
591
+ # Install Node.js and npm packages
592
+ function Install-NodeDeps {
593
+ Write-Header "Installing Node.js Dependencies"
594
+
595
+ # Check Node.js
596
+ if (Test-Command "node") {
597
+ $nodeVersion = (node --version)
598
+ Write-Success "Node.js already installed ($nodeVersion)"
599
+ } else {
600
+ $installed = Install-WithPackageManager `
601
+ -DisplayName "Node.js" `
602
+ -WingetId "OpenJS.NodeJS.LTS" `
603
+ -ChocoName "nodejs-lts" `
604
+ -ScoopName "nodejs-lts" `
605
+ -ManualUrl "https://nodejs.org/"
606
+
607
+ if (-not $installed) {
608
+ Write-Error "Node.js is required but could not be installed"
609
+ Write-Info "Please install Node.js manually and re-run this script"
610
+ exit 1
611
+ }
612
+
613
+ # Refresh PATH after Node.js install
614
+ $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
615
+ }
616
+
617
+ # Install global npm packages
618
+ Write-Info "Installing global npm packages..."
619
+
620
+ $npmPackages = @(
621
+ "rmbg-cli",
622
+ "pnpm",
623
+ "wrangler",
624
+ "repomix"
625
+ )
626
+
627
+ foreach ($package in $npmPackages) {
628
+ try {
629
+ $installed = npm list -g $package 2>&1
630
+ if ($LASTEXITCODE -eq 0) {
631
+ Write-Success "$package already installed"
632
+ } else {
633
+ Write-Info "Installing $package..."
634
+ npm install -g $package
635
+ Write-Success "$package installed"
636
+ }
637
+ } catch {
638
+ Write-Info "Installing $package..."
639
+ npm install -g $package
640
+ Write-Success "$package installed"
641
+ }
642
+ }
643
+
644
+ # Install local npm packages for skills
645
+ Write-Info "Installing local npm packages for skills..."
646
+
647
+ # sequential-thinking
648
+ $seqThinkingPath = Join-Path $ScriptDir "sequential-thinking"
649
+ $seqPackageJson = Join-Path $seqThinkingPath "package.json"
650
+ if ((Test-Path $seqThinkingPath) -and (Test-Path $seqPackageJson)) {
651
+ Write-Info "Installing sequential-thinking dependencies..."
652
+ Push-Location $seqThinkingPath
653
+ npm install --quiet
654
+ Pop-Location
655
+ Write-Success "sequential-thinking dependencies installed"
656
+ }
657
+
658
+ # mcp-management
659
+ $mcpManagementPath = Join-Path $ScriptDir "mcp-management\scripts"
660
+ $mcpPackageJson = Join-Path $mcpManagementPath "package.json"
661
+ if ((Test-Path $mcpManagementPath) -and (Test-Path $mcpPackageJson)) {
662
+ Write-Info "Installing mcp-management dependencies..."
663
+ Push-Location $mcpManagementPath
664
+ npm install --quiet
665
+ Pop-Location
666
+ Write-Success "mcp-management dependencies installed"
667
+ }
668
+ }
669
+
670
+ # Try pip install with wheel-first fallback
671
+ # Returns $true if successful, $false otherwise
672
+ function Try-PipInstall {
673
+ param(
674
+ [string]$PackageSpec,
675
+ [string]$LogFile
676
+ )
677
+
678
+ $packageName = ($PackageSpec -split '[=<>]')[0]
679
+
680
+ # Phase 1: Try with prefer-binary (wheels first)
681
+ $output = pip install $PackageSpec --prefer-binary 2>&1
682
+ $output | Out-File -Append $LogFile -Encoding UTF8
683
+ if ($LASTEXITCODE -eq 0) {
684
+ return $true
685
+ }
686
+
687
+ # Phase 2: Check if we can build from source (uses vswhere for proper VS detection)
688
+ if (-not (Test-VSBuildTools)) {
689
+ Write-Warning "${packageName}: No wheel available, no build tools detected"
690
+ Write-Info "Install Visual Studio Build Tools from: https://visualstudio.microsoft.com/visual-cpp-build-tools/"
691
+ return $false
692
+ }
693
+
694
+ # Phase 3: Try source build
695
+ Write-Info "Trying source build for $packageName..."
696
+ $output = pip install $PackageSpec --no-binary $packageName 2>&1
697
+ $output | Out-File -Append $LogFile -Encoding UTF8
698
+ if ($LASTEXITCODE -eq 0) {
699
+ Write-Success "$packageName installed (source build)"
700
+ return $true
701
+ }
702
+
703
+ Write-Error "${packageName}: Both wheel and source build failed"
704
+ return $false
705
+ }
706
+
707
+ # Setup Python virtual environment
708
+ function Setup-PythonEnv {
709
+ Write-Header "Setting Up Python Environment"
710
+
711
+ # Suppress pip version check notices that trigger PowerShell NativeCommandError
712
+ # Set early to affect all pip operations in this function
713
+ $env:PIP_DISABLE_PIP_VERSION_CHECK = "1"
714
+
715
+ # Track successful and failed installations
716
+ $successfulSkills = [System.Collections.ArrayList]::new()
717
+ $failedSkills = [System.Collections.ArrayList]::new()
718
+
719
+ # Find Python using robust detection (handles Windows Store aliases)
720
+ $pythonInfo = Find-Python
721
+ if ($pythonInfo) {
722
+ Write-Success "Python found ($($pythonInfo.Version))"
723
+ Write-Info "Using: $($pythonInfo.Command)"
724
+ $pythonCmd = $pythonInfo.Command
725
+ } else {
726
+ Write-Error "Python not found or only Windows Store alias detected."
727
+ Write-Info "Please install Python 3.7+ from: https://www.python.org/downloads/"
728
+ Write-Info "Make sure to check 'Add Python to PATH' during installation"
729
+ Track-Failure -Category "critical" -Name "Python" -Reason "not installed or Store alias"
730
+ return # Don't exit, return and let final report show
731
+ }
732
+
733
+ # Create virtual environment
734
+ if (Test-Path $VenvDir) {
735
+ # Verify venv is valid
736
+ $activateScript = Join-Path $VenvDir "Scripts\Activate.ps1"
737
+ $pythonExe = Join-Path $VenvDir "Scripts\python.exe"
738
+ if ((Test-Path $activateScript) -and (Test-Path $pythonExe)) {
739
+ Write-Success "Virtual environment already exists at $VenvDir"
740
+ } else {
741
+ Write-Warning "Virtual environment is corrupted. Recreating..."
742
+ Remove-Item -Recurse -Force $VenvDir
743
+ & $pythonCmd -m venv $VenvDir
744
+ Write-Success "Virtual environment recreated"
745
+ }
746
+ } else {
747
+ Write-Info "Creating virtual environment at $VenvDir..."
748
+ & $pythonCmd -m venv $VenvDir
749
+ if ($LASTEXITCODE -eq 0) {
750
+ Write-Success "Virtual environment created"
751
+ } else {
752
+ Write-Error "Failed to create virtual environment"
753
+ Track-Failure -Category "critical" -Name "Python venv" -Reason "venv creation failed"
754
+ return
755
+ }
756
+ }
757
+
758
+ # Create log directory
759
+ if (-not (Test-Path $LogDir)) {
760
+ New-Item -ItemType Directory -Path $LogDir -Force | Out-Null
761
+ }
762
+
763
+ # Activate and install packages
764
+ Write-Info "Activating virtual environment..."
765
+ $activateScript = Join-Path $VenvDir "Scripts\Activate.ps1"
766
+
767
+ if (Test-Path $activateScript) {
768
+ & $activateScript
769
+ } else {
770
+ Write-Error "Failed to find activation script at $activateScript"
771
+ Track-Failure -Category "critical" -Name "Python venv" -Reason "activation failed"
772
+ return
773
+ }
774
+
775
+ # Upgrade pip with prefer-binary
776
+ Write-Info "Upgrading pip..."
777
+ $pipLogFile = Join-Path $LogDir "pip-upgrade.log"
778
+ $venvPython = Join-Path $VenvDir "Scripts\python.exe"
779
+ & $venvPython -m pip install --upgrade pip --prefer-binary 2>&1 | Tee-Object -FilePath $pipLogFile
780
+ if ($LASTEXITCODE -eq 0) {
781
+ Write-Success "pip upgraded successfully"
782
+ } else {
783
+ Write-Warning "pip upgrade failed (continuing anyway)"
784
+ Write-Info "See log: $pipLogFile"
785
+ }
786
+
787
+ # Install dependencies from all skills' requirements.txt files
788
+ Write-Info "Installing Python dependencies from all skills..."
789
+
790
+ $installedCount = 0
791
+ Get-ChildItem -Path $ScriptDir -Directory | ForEach-Object {
792
+ $skillName = $_.Name
793
+
794
+ # Skip .venv
795
+ if ($skillName -eq ".venv") {
796
+ return
797
+ }
798
+
799
+ # Install main requirements.txt with wheel-first approach
800
+ $requirementsPath = Join-Path $_.FullName "scripts\requirements.txt"
801
+ if (Test-Path $requirementsPath) {
802
+ $skillLogFile = Join-Path $LogDir "install-${skillName}.log"
803
+ Write-Info "Installing $skillName dependencies..."
804
+
805
+ # Read requirements and install one-by-one for granular tracking
806
+ $pkgSuccess = 0
807
+ $pkgFail = 0
808
+ Get-Content $requirementsPath | ForEach-Object {
809
+ $line = $_.Trim()
810
+ # Skip comments and empty lines
811
+ if ($line -match '^#' -or [string]::IsNullOrWhiteSpace($line)) {
812
+ return
813
+ }
814
+
815
+ # Strip inline comments (e.g., "package>=1.0 # comment" -> "package>=1.0")
816
+ $line = ($line -split '#')[0].Trim()
817
+ if ([string]::IsNullOrWhiteSpace($line)) {
818
+ return
819
+ }
820
+
821
+ if (Try-PipInstall -PackageSpec $line -LogFile $skillLogFile) {
822
+ $pkgSuccess++
823
+ } else {
824
+ $pkgFail++
825
+ Track-Failure -Category "optional" -Name "${skillName}:${line}" -Reason "Package install failed"
826
+ }
827
+ }
828
+
829
+ if ($pkgFail -eq 0) {
830
+ Write-Success "${skillName}: all $pkgSuccess packages installed"
831
+ Track-Success -Category "optional" -Name $skillName
832
+ [void]$successfulSkills.Add($skillName)
833
+ $installedCount++
834
+ } else {
835
+ Write-Warning "${skillName}: $pkgSuccess installed, $pkgFail failed"
836
+ [void]$failedSkills.Add($skillName)
837
+ }
838
+ }
839
+
840
+ # Install test requirements.txt
841
+ $testRequirementsPath = Join-Path $_.FullName "scripts\tests\requirements.txt"
842
+ if (Test-Path $testRequirementsPath) {
843
+ $testLogFile = Join-Path $LogDir "install-${skillName}-tests.log"
844
+ Write-Info "Installing $skillName test dependencies..."
845
+
846
+ pip install -r $testRequirementsPath --prefer-binary 2>&1 | Tee-Object -FilePath $testLogFile
847
+ if ($LASTEXITCODE -eq 0) {
848
+ Write-Success "$skillName test dependencies installed successfully"
849
+ } else {
850
+ Write-Warning "$skillName test dependencies failed to install"
851
+ }
852
+ }
853
+ }
854
+
855
+ # Install $HOME/.copilot/scripts requirements (contains pyyaml for generate_catalogs.py)
856
+ $scriptsReqPath = Join-Path $ScriptDir "..\scripts\requirements.txt"
857
+ if (Test-Path $scriptsReqPath) {
858
+ $scriptsLogFile = Join-Path $LogDir "install-scripts.log"
859
+ Write-Info "Installing $HOME/.copilot/scripts dependencies..."
860
+
861
+ $pkgSuccess = 0
862
+ $pkgFail = 0
863
+ Get-Content $scriptsReqPath | ForEach-Object {
864
+ $line = $_.Trim()
865
+ if ($line -match '^#' -or [string]::IsNullOrWhiteSpace($line)) {
866
+ return
867
+ }
868
+ $line = ($line -split '#')[0].Trim()
869
+ if ([string]::IsNullOrWhiteSpace($line)) {
870
+ return
871
+ }
872
+
873
+ if (Try-PipInstall -PackageSpec $line -LogFile $scriptsLogFile) {
874
+ $pkgSuccess++
875
+ } else {
876
+ $pkgFail++
877
+ Track-Failure -Category "optional" -Name "scripts:${line}" -Reason "Package install failed"
878
+ }
879
+ }
880
+
881
+ if ($pkgFail -eq 0) {
882
+ Write-Success "$HOME/.copilot/scripts: all $pkgSuccess packages installed"
883
+ Track-Success -Category "optional" -Name "scripts"
884
+ } else {
885
+ Write-Warning "$HOME/.copilot/scripts: $pkgSuccess installed, $pkgFail failed"
886
+ }
887
+ }
888
+
889
+ # Print installation summary (brief - final report comes later)
890
+ Write-Header "Python Dependencies Installation Summary"
891
+
892
+ if ($successfulSkills.Count -gt 0) {
893
+ Write-Success "Successfully installed $($successfulSkills.Count) skill(s)"
894
+ }
895
+
896
+ if ($failedSkills.Count -gt 0) {
897
+ Write-Warning "$($failedSkills.Count) skill(s) had package failures (see final report)"
898
+ } elseif ($successfulSkills.Count -eq 0) {
899
+ Write-Warning "No skill requirements.txt files found"
900
+ } else {
901
+ Write-Success "All Python dependencies installed successfully"
902
+ }
903
+
904
+ deactivate
905
+ }
906
+
907
+ # Verify installations
908
+ function Test-Installations {
909
+ Write-Header "Verifying Installations"
910
+
911
+ $tools = @{
912
+ "ffmpeg" = "FFmpeg"
913
+ "magick" = "ImageMagick"
914
+ "node" = "Node.js"
915
+ "npm" = "npm"
916
+ }
917
+
918
+ foreach ($tool in $tools.GetEnumerator()) {
919
+ if (Test-Command $tool.Key) {
920
+ Write-Success "$($tool.Value) is available"
921
+ } else {
922
+ Write-Warning "$($tool.Value) is not available"
923
+ }
924
+ }
925
+
926
+ $npmPackages = @("rmbg", "pnpm", "wrangler", "repomix")
927
+ foreach ($package in $npmPackages) {
928
+ if (Test-Command $package) {
929
+ Write-Success "$package CLI is available"
930
+ } else {
931
+ Write-Warning "$package CLI is not available"
932
+ }
933
+ }
934
+
935
+ # Check Python packages
936
+ if (Test-Path $VenvDir) {
937
+ $activateScript = Join-Path $VenvDir "Scripts\Activate.ps1"
938
+ & $activateScript
939
+
940
+ try {
941
+ python -c "import google.genai" 2>$null
942
+ if ($LASTEXITCODE -eq 0) {
943
+ Write-Success "google-genai Python package is available"
944
+ } else {
945
+ Write-Warning "google-genai Python package is not available"
946
+ }
947
+ } catch {
948
+ Write-Warning "google-genai Python package is not available"
949
+ }
950
+
951
+ deactivate
952
+ }
953
+ }
954
+
955
+ # ============================================================================
956
+ # Final Report Functions
957
+ # ============================================================================
958
+
959
+ function Get-RemediationCommands {
960
+ $hasSudoSkipped = $Script:SKIPPED_ADMIN.Count -gt 0
961
+ $hasPythonFailed = $Script:FAILED_OPTIONAL.Count -gt 0
962
+
963
+ if (-not $hasSudoSkipped -and -not $hasPythonFailed) {
964
+ return
965
+ }
966
+
967
+ Write-Host ""
968
+ Write-Host "---------------------------------------------------" -ForegroundColor Blue
969
+ Write-Host "Manual Installation Commands:" -ForegroundColor Blue
970
+ Write-Host "---------------------------------------------------" -ForegroundColor Blue
971
+ Write-Host ""
972
+
973
+ if ($hasSudoSkipped) {
974
+ Write-Host "# System packages (use winget or scoop):"
975
+ foreach ($item in $Script:SKIPPED_ADMIN) {
976
+ $pkg = ($item -split ':')[0]
977
+ switch ($pkg) {
978
+ "FFmpeg" { Write-Host "winget install Gyan.FFmpeg" }
979
+ "ImageMagick" { Write-Host "winget install ImageMagick.ImageMagick" }
980
+ default { Write-Host "# ${pkg}: see documentation" }
981
+ }
982
+ }
983
+ Write-Host ""
984
+ }
985
+
986
+ if ($hasPythonFailed) {
987
+ Write-Host "# Python packages (may require build tools):"
988
+ Write-Host "# Install Visual Studio Build Tools: https://visualstudio.microsoft.com/visual-cpp-build-tools/"
989
+ Write-Host "..copilot\skills\.venv\Scripts\Activate.ps1"
990
+
991
+ foreach ($item in $Script:FAILED_OPTIONAL) {
992
+ $pkg = ($item -split ':')[0]
993
+ # Extract package name from skill:package format
994
+ if ($pkg -match ':') {
995
+ $pkg = ($pkg -split ':')[1]
996
+ }
997
+ Write-Host "pip install $pkg"
998
+ }
999
+ Write-Host ""
1000
+ }
1001
+ }
1002
+
1003
+ function Write-FinalReport {
1004
+ Write-Host ""
1005
+ Write-Host "===================================================" -ForegroundColor Blue
1006
+ Write-Host " Installation Report" -ForegroundColor Blue
1007
+ Write-Host "===================================================" -ForegroundColor Blue
1008
+ Write-Host ""
1009
+
1010
+ # Installed section
1011
+ $installedCount = $Script:INSTALLED_CRITICAL.Count + $Script:INSTALLED_OPTIONAL.Count
1012
+ if ($installedCount -gt 0) {
1013
+ Write-Host "Installed ($installedCount):" -ForegroundColor Green
1014
+ foreach ($item in $Script:INSTALLED_CRITICAL) {
1015
+ Write-Host " [OK] $item" -ForegroundColor Green
1016
+ }
1017
+ foreach ($item in $Script:INSTALLED_OPTIONAL) {
1018
+ Write-Host " [OK] $item" -ForegroundColor Green
1019
+ }
1020
+ Write-Host ""
1021
+ }
1022
+
1023
+ # Skipped section
1024
+ if ($Script:SKIPPED_ADMIN.Count -gt 0) {
1025
+ Write-Host "Skipped ($($Script:SKIPPED_ADMIN.Count)):" -ForegroundColor Yellow
1026
+ foreach ($item in $Script:SKIPPED_ADMIN) {
1027
+ $name = ($item -split ':')[0]
1028
+ $reason = ($item -split ':')[1]
1029
+ Write-Host " [~] $name ($reason)" -ForegroundColor Yellow
1030
+ }
1031
+ Write-Host ""
1032
+ }
1033
+
1034
+ # Degraded/Failed section
1035
+ if ($Script:FAILED_OPTIONAL.Count -gt 0) {
1036
+ Write-Host "Degraded ($($Script:FAILED_OPTIONAL.Count)):" -ForegroundColor Red
1037
+ foreach ($item in $Script:FAILED_OPTIONAL) {
1038
+ $name = ($item -split ':')[0]
1039
+ $reason = ($item -split ':')[1]
1040
+ Write-Host " [!] $name ($reason)" -ForegroundColor Red
1041
+ }
1042
+ Write-Host ""
1043
+ }
1044
+
1045
+ # Remediation commands
1046
+ Get-RemediationCommands
1047
+
1048
+ # Exit status line
1049
+ Write-Host "===================================================" -ForegroundColor Blue
1050
+ switch ($Script:FINAL_EXIT_CODE) {
1051
+ 0 { Write-Host " Exit: 0 (success - all dependencies installed)" -ForegroundColor Green }
1052
+ 1 { Write-Host " Exit: 1 (failed - critical dependencies missing)" -ForegroundColor Red }
1053
+ 2 { Write-Host " Exit: 2 (partial - some optional deps failed)" -ForegroundColor Yellow }
1054
+ }
1055
+ Write-Host "===================================================" -ForegroundColor Blue
1056
+ Write-Host ""
1057
+ }
1058
+
1059
+ function Write-ErrorSummary {
1060
+ # Only write if there are failures
1061
+ if ($Script:FINAL_EXIT_CODE -eq 0) {
1062
+ return
1063
+ }
1064
+
1065
+ # Build JSON structure
1066
+ $summary = @{
1067
+ exit_code = $Script:FINAL_EXIT_CODE
1068
+ timestamp = (Get-Date -Format "yyyy-MM-ddTHH:mm:ssZ")
1069
+ critical_failures = @()
1070
+ optional_failures = @($Script:FAILED_OPTIONAL)
1071
+ skipped = @($Script:SKIPPED_ADMIN)
1072
+ remediation = @{
1073
+ winget_packages = "winget install Gyan.FFmpeg ImageMagick.ImageMagick"
1074
+ build_tools = "https://visualstudio.microsoft.com/visual-cpp-build-tools/"
1075
+ pip_retry = "..copilot\skills\.venv\Scripts\Activate.ps1; pip install <package>"
1076
+ }
1077
+ }
1078
+
1079
+ # Use Out-File with UTF8NoBOM for proper JSON encoding (PS 6+) or UTF8 (PS 5)
1080
+ $jsonContent = $summary | ConvertTo-Json -Depth 5
1081
+ if ($PSVersionTable.PSVersion.Major -ge 6) {
1082
+ $jsonContent | Out-File -FilePath $ErrorSummaryFile -Encoding utf8NoBOM -NoNewline
1083
+ } else {
1084
+ # PowerShell 5.x: Use .NET to write UTF-8 without BOM
1085
+ [System.IO.File]::WriteAllText($ErrorSummaryFile, $jsonContent, [System.Text.UTF8Encoding]::new($false))
1086
+ }
1087
+ Write-Info "Error summary written to: $ErrorSummaryFile"
1088
+ }
1089
+
1090
+ # Print usage instructions (now just brief tips)
1091
+ function Show-Usage {
1092
+ Write-Host "To use the Python virtual environment:" -ForegroundColor Green
1093
+ Write-Host " ..copilot\skills\.venv\Scripts\Activate.ps1"
1094
+ Write-Host ""
1095
+ Write-Host "For more information, see:" -ForegroundColor Blue
1096
+ Write-Host " .copilot\skills\INSTALLATION.md"
1097
+ Write-Host ""
1098
+ }
1099
+
1100
+ # Show help
1101
+ function Show-Help {
1102
+ Write-Host "CoKit Skills Installation Script for Windows"
1103
+ Write-Host ""
1104
+ Write-Host "Usage:"
1105
+ Write-Host " .\install.ps1 [Options]"
1106
+ Write-Host ""
1107
+ Write-Host "Options:"
1108
+ Write-Host " -Y Skip all prompts and auto-confirm installation"
1109
+ Write-Host " -WithAdmin Use admin-requiring package managers (chocolatey)"
1110
+ Write-Host " -Resume Resume from previous interrupted installation"
1111
+ Write-Host " -RetryFailed Retry previously failed packages"
1112
+ Write-Host " -SkipChocolatey Skip Chocolatey installation (uses winget/scoop instead)"
1113
+ Write-Host " -PreferPackageManager <PM> Prefer specific package manager (auto|winget|scoop|choco)"
1114
+ Write-Host " Falls back to auto-detection if preferred PM unavailable"
1115
+ Write-Host " -Help Show this help message"
1116
+ Write-Host ""
1117
+ Write-Host "Exit Codes:"
1118
+ Write-Host " 0 Success (all dependencies installed)"
1119
+ Write-Host " 1 Fatal error (critical dependencies missing)"
1120
+ Write-Host " 2 Partial success (some optional deps failed)"
1121
+ Write-Host ""
1122
+ Write-Host "Examples:"
1123
+ Write-Host " .\install.ps1 # Normal install (auto-detect PM)"
1124
+ Write-Host " .\install.ps1 -PreferPackageManager scoop # Prefer scoop, fallback to auto"
1125
+ Write-Host " .\install.ps1 -PreferPackageManager winget # Use winget explicitly"
1126
+ Write-Host " .\install.ps1 -Y # Non-interactive"
1127
+ Write-Host " .\install.ps1 -WithAdmin # Use chocolatey if admin"
1128
+ Write-Host " .\install.ps1 -Resume # Resume interrupted install"
1129
+ Write-Host ""
1130
+ Write-Host "Package Manager Priority:"
1131
+ Write-Host " 1. winget (recommended, no admin required)"
1132
+ Write-Host " 2. scoop (no admin required)"
1133
+ Write-Host " 3. chocolatey (requires admin + -WithAdmin flag)"
1134
+ Write-Host ""
1135
+ Write-Host "Requirements:"
1136
+ Write-Host " - PowerShell 5.1 or higher"
1137
+ Write-Host " - One of: winget, scoop, or chocolatey (admin)"
1138
+ Write-Host ""
1139
+ }
1140
+
1141
+ # Main installation flow
1142
+ function Main {
1143
+ if ($Help) {
1144
+ Show-Help
1145
+ exit 0
1146
+ }
1147
+
1148
+ Write-Host "" # Just add spacing, don't clear terminal
1149
+ Write-Header "CoKit Skills Installation (Windows)"
1150
+ Write-Info "Script directory: $ScriptDir"
1151
+
1152
+ # Store preference in script scope for functions to access
1153
+ $Script:PreferPackageManager = $PreferPackageManager
1154
+
1155
+ # Show detected package manager
1156
+ $pm = Get-PackageManager -Preference $PreferPackageManager
1157
+ if ($pm) {
1158
+ Write-Success "Detected package manager: $pm"
1159
+ } else {
1160
+ Write-Warning "No package manager detected (winget, scoop, or choco)"
1161
+ Write-Info "Install winget: https://aka.ms/getwinget"
1162
+ }
1163
+
1164
+ # Show mode info
1165
+ if ($PreferPackageManager -ne "auto") {
1166
+ Write-Info "Mode: prefer $PreferPackageManager (soft fallback to auto if unavailable)"
1167
+ }
1168
+ if ($WithAdmin) {
1169
+ Write-Info "Mode: with admin (chocolatey enabled)"
1170
+ } else {
1171
+ Write-Info "Mode: without admin (system packages may be skipped)"
1172
+ }
1173
+ if ($Resume) {
1174
+ Write-Info "Mode: resuming previous installation"
1175
+ }
1176
+ Write-Host ""
1177
+
1178
+ # Confirm installation (skip if -Y flag or NON_INTERACTIVE env is set)
1179
+ if (-not $Y) {
1180
+ $confirmation = Get-UserInput -Prompt "This will install system packages and Node.js dependencies. Continue? (y/N)" -Default "N"
1181
+ if ($confirmation -ne 'y' -and $confirmation -ne 'Y') {
1182
+ Write-Warning "Installation cancelled"
1183
+ exit 0
1184
+ }
1185
+ } else {
1186
+ Write-Info "Auto-confirming installation (-Y flag or NON_INTERACTIVE mode)"
1187
+ }
1188
+
1189
+ # Initialize state tracking
1190
+ Initialize-State
1191
+
1192
+ # Phase 1: Chocolatey (optional)
1193
+ if (-not (Test-PhaseDone "chocolatey")) {
1194
+ Update-Phase "chocolatey" "running"
1195
+ $null = Install-Chocolatey
1196
+ Update-Phase "chocolatey" "done"
1197
+ }
1198
+
1199
+ # Phase 2: System deps
1200
+ if (Test-PhaseDone "system_deps") {
1201
+ Write-Success "System deps: already processed (resume)"
1202
+ } else {
1203
+ Update-Phase "system_deps" "running"
1204
+ Install-SystemDeps
1205
+ Update-Phase "system_deps" "done"
1206
+ }
1207
+
1208
+ # Phase 3: Node deps
1209
+ if (Test-PhaseDone "node_deps") {
1210
+ Write-Success "Node deps: already installed (resume)"
1211
+ } else {
1212
+ Update-Phase "node_deps" "running"
1213
+ Install-NodeDeps
1214
+ Update-Phase "node_deps" "done"
1215
+ }
1216
+
1217
+ # Phase 4: Python env
1218
+ if (Test-PhaseDone "python_env") {
1219
+ Write-Success "Python env: already set up (resume)"
1220
+ } else {
1221
+ Update-Phase "python_env" "running"
1222
+ Setup-PythonEnv
1223
+ Update-Phase "python_env" "done"
1224
+ }
1225
+
1226
+ # Phase 5: Verify
1227
+ Update-Phase "verify" "running"
1228
+ Test-Installations
1229
+ Update-Phase "verify" "done"
1230
+
1231
+ # Print final report with all tracking info
1232
+ Write-FinalReport
1233
+ Show-Usage
1234
+
1235
+ # Write error summary for CLI to parse
1236
+ Write-ErrorSummary
1237
+
1238
+ # Clean state on complete success
1239
+ if ($Script:FINAL_EXIT_CODE -eq 0) {
1240
+ Remove-StateFile
1241
+ }
1242
+
1243
+ exit $Script:FINAL_EXIT_CODE
1244
+ }
1245
+
1246
+ # Run main function
1247
+ Main