@stella-studio/ck 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1202) hide show
  1. package/.agents/skills/find-skills/SKILL.md +133 -0
  2. package/.claude/.ck.json +60 -0
  3. package/.claude/.ckignore +27 -0
  4. package/.claude/.env.example +100 -0
  5. package/.claude/.mcp.json.example +23 -0
  6. package/.claude/agents/brainstormer.md +113 -0
  7. package/.claude/agents/code-reviewer.md +131 -0
  8. package/.claude/agents/code-simplifier.md +42 -0
  9. package/.claude/agents/debugger.md +137 -0
  10. package/.claude/agents/docs-manager.md +208 -0
  11. package/.claude/agents/fullstack-developer.md +95 -0
  12. package/.claude/agents/git-manager.md +9 -0
  13. package/.claude/agents/journal-writer.md +113 -0
  14. package/.claude/agents/mcp-manager.md +97 -0
  15. package/.claude/agents/planner.md +108 -0
  16. package/.claude/agents/project-manager.md +125 -0
  17. package/.claude/agents/researcher.md +38 -0
  18. package/.claude/agents/tester.md +105 -0
  19. package/.claude/agents/ui-ux-designer.md +236 -0
  20. package/.claude/commands/ask.md +56 -0
  21. package/.claude/commands/bootstrap/auto/fast.md +111 -0
  22. package/.claude/commands/bootstrap/auto/parallel.md +66 -0
  23. package/.claude/commands/bootstrap/auto.md +115 -0
  24. package/.claude/commands/bootstrap.md +137 -0
  25. package/.claude/commands/ck-help.md +129 -0
  26. package/.claude/commands/coding-level.md +48 -0
  27. package/.claude/commands/docs/init.md +38 -0
  28. package/.claude/commands/docs/summarize.md +22 -0
  29. package/.claude/commands/docs/update.md +76 -0
  30. package/.claude/commands/journal.md +7 -0
  31. package/.claude/commands/kanban.md +99 -0
  32. package/.claude/commands/plan/archive.md +57 -0
  33. package/.claude/commands/plan/ci.md +33 -0
  34. package/.claude/commands/plan/cro.md +69 -0
  35. package/.claude/commands/plan/fast.md +82 -0
  36. package/.claude/commands/plan/hard.md +108 -0
  37. package/.claude/commands/plan/parallel.md +145 -0
  38. package/.claude/commands/plan/two.md +61 -0
  39. package/.claude/commands/plan/validate.md +188 -0
  40. package/.claude/commands/plan.md +30 -0
  41. package/.claude/commands/preview.md +280 -0
  42. package/.claude/commands/review/codebase/parallel.md +122 -0
  43. package/.claude/commands/review/codebase.md +49 -0
  44. package/.claude/commands/test/ui.md +92 -0
  45. package/.claude/commands/test.md +8 -0
  46. package/.claude/commands/use-mcp.md +38 -0
  47. package/.claude/commands/watzup.md +8 -0
  48. package/.claude/commands/worktree.md +109 -0
  49. package/.claude/commands-archived/code/auto.md +203 -0
  50. package/.claude/commands-archived/code/no-test.md +174 -0
  51. package/.claude/commands-archived/code/parallel.md +100 -0
  52. package/.claude/commands-archived/code.md +205 -0
  53. package/.claude/commands-archived/content/cro.md +43 -0
  54. package/.claude/commands-archived/content/enhance.md +14 -0
  55. package/.claude/commands-archived/content/fast.md +13 -0
  56. package/.claude/commands-archived/content/good.md +16 -0
  57. package/.claude/commands-archived/cook/auto/fast.md +26 -0
  58. package/.claude/commands-archived/cook/auto/parallel.md +49 -0
  59. package/.claude/commands-archived/cook/auto.md +15 -0
  60. package/.claude/commands-archived/cook.md +105 -0
  61. package/.claude/commands-archived/debug.md +13 -0
  62. package/.claude/commands-archived/design/3d.md +83 -0
  63. package/.claude/commands-archived/design/describe.md +23 -0
  64. package/.claude/commands-archived/design/fast.md +31 -0
  65. package/.claude/commands-archived/design/good.md +35 -0
  66. package/.claude/commands-archived/design/screenshot.md +34 -0
  67. package/.claude/commands-archived/design/video.md +34 -0
  68. package/.claude/commands-archived/fix/ci.md +17 -0
  69. package/.claude/commands-archived/fix/fast.md +19 -0
  70. package/.claude/commands-archived/fix/hard.md +39 -0
  71. package/.claude/commands-archived/fix/logs.md +26 -0
  72. package/.claude/commands-archived/fix/parallel.md +54 -0
  73. package/.claude/commands-archived/fix/test.md +20 -0
  74. package/.claude/commands-archived/fix/types.md +9 -0
  75. package/.claude/commands-archived/fix/ui.md +48 -0
  76. package/.claude/commands-archived/fix.md +43 -0
  77. package/.claude/commands-archived/scout/ext.md +39 -0
  78. package/.claude/commands-archived/scout.md +28 -0
  79. package/.claude/commands-archived/skill/add.md +36 -0
  80. package/.claude/commands-archived/skill/create.md +29 -0
  81. package/.claude/commands-archived/skill/fix-logs.md +22 -0
  82. package/.claude/commands-archived/skill/optimize/auto.md +25 -0
  83. package/.claude/commands-archived/skill/optimize.md +34 -0
  84. package/.claude/commands-archived/skill/plan.md +45 -0
  85. package/.claude/commands-archived/skill/update.md +36 -0
  86. package/.claude/hooks/__tests__/ck-config-utils.test.cjs +557 -0
  87. package/.claude/hooks/__tests__/descriptive-name.test.cjs +292 -0
  88. package/.claude/hooks/__tests__/dev-rules-reminder.test.cjs +336 -0
  89. package/.claude/hooks/__tests__/integration/path-resolution.test.cjs +319 -0
  90. package/.claude/hooks/__tests__/privacy-block.test.cjs +273 -0
  91. package/.claude/hooks/__tests__/session-init.test.cjs +308 -0
  92. package/.claude/hooks/__tests__/skill-dedup.test.cjs +527 -0
  93. package/.claude/hooks/__tests__/subagent-init.test.cjs +622 -0
  94. package/.claude/hooks/cook-after-plan-reminder.cjs +58 -0
  95. package/.claude/hooks/descriptive-name.cjs +33 -0
  96. package/.claude/hooks/dev-rules-reminder.cjs +58 -0
  97. package/.claude/hooks/docs/README.md +179 -0
  98. package/.claude/hooks/lib/__tests__/README.md +240 -0
  99. package/.claude/hooks/lib/__tests__/ck-config-utils.test.cjs +781 -0
  100. package/.claude/hooks/lib/__tests__/context-builder.test.cjs +450 -0
  101. package/.claude/hooks/lib/__tests__/statusline-integration.test.cjs +678 -0
  102. package/.claude/hooks/lib/__tests__/statusline.test.cjs +689 -0
  103. package/.claude/hooks/lib/ck-config-utils.cjs +829 -0
  104. package/.claude/hooks/lib/colors.cjs +95 -0
  105. package/.claude/hooks/lib/config-counter.cjs +103 -0
  106. package/.claude/hooks/lib/context-builder.cjs +612 -0
  107. package/.claude/hooks/lib/privacy-checker.cjs +297 -0
  108. package/.claude/hooks/lib/project-detector.cjs +430 -0
  109. package/.claude/hooks/lib/scout-checker.cjs +191 -0
  110. package/.claude/hooks/lib/transcript-parser.cjs +181 -0
  111. package/.claude/hooks/notifications/.env.example +21 -0
  112. package/.claude/hooks/notifications/discord_notify.sh +234 -0
  113. package/.claude/hooks/notifications/docs/discord-hook-setup.md +461 -0
  114. package/.claude/hooks/notifications/docs/slack-hook-setup.md +118 -0
  115. package/.claude/hooks/notifications/docs/telegram-hook-setup.md +813 -0
  116. package/.claude/hooks/notifications/lib/env-loader.cjs +105 -0
  117. package/.claude/hooks/notifications/lib/sender.cjs +128 -0
  118. package/.claude/hooks/notifications/notify.cjs +156 -0
  119. package/.claude/hooks/notifications/providers/discord.cjs +197 -0
  120. package/.claude/hooks/notifications/providers/slack.cjs +111 -0
  121. package/.claude/hooks/notifications/providers/telegram.cjs +109 -0
  122. package/.claude/hooks/notifications/send-discord.sh +75 -0
  123. package/.claude/hooks/notifications/telegram_notify.sh +137 -0
  124. package/.claude/hooks/post-edit-simplify-reminder.cjs +138 -0
  125. package/.claude/hooks/privacy-block.cjs +151 -0
  126. package/.claude/hooks/scout-block/broad-pattern-detector.cjs +260 -0
  127. package/.claude/hooks/scout-block/error-formatter.cjs +156 -0
  128. package/.claude/hooks/scout-block/path-extractor.cjs +265 -0
  129. package/.claude/hooks/scout-block/pattern-matcher.cjs +184 -0
  130. package/.claude/hooks/scout-block/tests/test-broad-pattern-detector.cjs +165 -0
  131. package/.claude/hooks/scout-block/tests/test-build-command-allowlist.cjs +137 -0
  132. package/.claude/hooks/scout-block/tests/test-error-formatter.cjs +109 -0
  133. package/.claude/hooks/scout-block/tests/test-full-flow-edge-cases.cjs +75 -0
  134. package/.claude/hooks/scout-block/tests/test-monorepo-scenarios.cjs +225 -0
  135. package/.claude/hooks/scout-block/tests/test-path-extractor.cjs +138 -0
  136. package/.claude/hooks/scout-block/tests/test-pattern-matcher.cjs +64 -0
  137. package/.claude/hooks/scout-block/vendor/ignore.cjs +627 -0
  138. package/.claude/hooks/scout-block.cjs +123 -0
  139. package/.claude/hooks/session-init.cjs +299 -0
  140. package/.claude/hooks/skill-dedup.cjs +254 -0
  141. package/.claude/hooks/subagent-init.cjs +189 -0
  142. package/.claude/hooks/tests/test-ckignore.cjs +194 -0
  143. package/.claude/hooks/tests/test-modularization-hook.cjs +126 -0
  144. package/.claude/hooks/tests/test-privacy-block.cjs +298 -0
  145. package/.claude/hooks/tests/test-scout-block.cjs +288 -0
  146. package/.claude/hooks/usage-context-awareness.cjs +165 -0
  147. package/.claude/metadata.json +44 -0
  148. package/.claude/output-styles/coding-level-0-eli5.md +103 -0
  149. package/.claude/output-styles/coding-level-1-junior.md +124 -0
  150. package/.claude/output-styles/coding-level-2-mid.md +146 -0
  151. package/.claude/output-styles/coding-level-3-senior.md +148 -0
  152. package/.claude/output-styles/coding-level-4-lead.md +159 -0
  153. package/.claude/output-styles/coding-level-5-god.md +91 -0
  154. package/.claude/rules/development-rules.md +52 -0
  155. package/.claude/rules/documentation-management.md +121 -0
  156. package/.claude/rules/orchestration-protocol.md +36 -0
  157. package/.claude/rules/primary-workflow.md +57 -0
  158. package/.claude/schemas/ck-config.schema.json +381 -0
  159. package/.claude/scripts/README.md +153 -0
  160. package/.claude/scripts/ck-help.py +1088 -0
  161. package/.claude/scripts/commands_data.yaml +363 -0
  162. package/.claude/scripts/fix-shebang-permissions.sh +50 -0
  163. package/.claude/scripts/requirements.txt +1 -0
  164. package/.claude/scripts/resolve_env.py +329 -0
  165. package/.claude/scripts/scan_commands.py +98 -0
  166. package/.claude/scripts/scan_skills.py +186 -0
  167. package/.claude/scripts/set-active-plan.cjs +50 -0
  168. package/.claude/scripts/skills_data.yaml +370 -0
  169. package/.claude/scripts/test-ck-help.py +218 -0
  170. package/.claude/scripts/test_ck_help.py +420 -0
  171. package/.claude/scripts/test_ck_help_integration.py +127 -0
  172. package/.claude/scripts/validate-docs.cjs +342 -0
  173. package/.claude/scripts/win_compat.py +57 -0
  174. package/.claude/scripts/worktree.cjs +825 -0
  175. package/.claude/scripts/worktree.test.cjs +770 -0
  176. package/.claude/settings.json +102 -0
  177. package/.claude/skills/.env.example +101 -0
  178. package/.claude/skills/INSTALLATION.md +360 -0
  179. package/.claude/skills/README.md +149 -0
  180. package/.claude/skills/THIRD_PARTY_NOTICES.md +405 -0
  181. package/.claude/skills/agent-browser/SKILL.md +293 -0
  182. package/.claude/skills/agent-browser/references/.gitkeep +0 -0
  183. package/.claude/skills/agent-browser/references/agent-browser-vs-chrome-devtools.md +112 -0
  184. package/.claude/skills/agent-browser/references/browserbase-cloud-setup.md +161 -0
  185. package/.claude/skills/agent_skills_spec.md +55 -0
  186. package/.claude/skills/ai-artist/SKILL.md +121 -0
  187. package/.claude/skills/ai-artist/data/awesome-prompts.csv +3592 -0
  188. package/.claude/skills/ai-artist/data/lighting.csv +19 -0
  189. package/.claude/skills/ai-artist/data/nano-banana-templates.csv +17 -0
  190. package/.claude/skills/ai-artist/data/platforms.csv +11 -0
  191. package/.claude/skills/ai-artist/data/styles.csv +26 -0
  192. package/.claude/skills/ai-artist/data/techniques.csv +19 -0
  193. package/.claude/skills/ai-artist/data/use-cases.csv +16 -0
  194. package/.claude/skills/ai-artist/references/advanced-techniques.md +184 -0
  195. package/.claude/skills/ai-artist/references/awesome-nano-banana-pro-prompts.md +8575 -0
  196. package/.claude/skills/ai-artist/references/domain-code.md +66 -0
  197. package/.claude/skills/ai-artist/references/domain-data.md +72 -0
  198. package/.claude/skills/ai-artist/references/domain-marketing.md +66 -0
  199. package/.claude/skills/ai-artist/references/domain-patterns.md +33 -0
  200. package/.claude/skills/ai-artist/references/domain-writing.md +68 -0
  201. package/.claude/skills/ai-artist/references/image-prompting.md +141 -0
  202. package/.claude/skills/ai-artist/references/llm-prompting.md +165 -0
  203. package/.claude/skills/ai-artist/references/nano-banana.md +136 -0
  204. package/.claude/skills/ai-artist/references/reasoning-techniques.md +201 -0
  205. package/.claude/skills/ai-artist/references/validation-workflow.md +117 -0
  206. package/.claude/skills/ai-artist/scripts/core.py +197 -0
  207. package/.claude/skills/ai-artist/scripts/extract_prompts.py +102 -0
  208. package/.claude/skills/ai-artist/scripts/generate.py +370 -0
  209. package/.claude/skills/ai-artist/scripts/search.py +147 -0
  210. package/.claude/skills/ai-multimodal/.env.example +204 -0
  211. package/.claude/skills/ai-multimodal/SKILL.md +109 -0
  212. package/.claude/skills/ai-multimodal/references/audio-processing.md +387 -0
  213. package/.claude/skills/ai-multimodal/references/image-generation.md +939 -0
  214. package/.claude/skills/ai-multimodal/references/music-generation.md +311 -0
  215. package/.claude/skills/ai-multimodal/references/video-analysis.md +515 -0
  216. package/.claude/skills/ai-multimodal/references/video-generation.md +457 -0
  217. package/.claude/skills/ai-multimodal/references/vision-understanding.md +492 -0
  218. package/.claude/skills/ai-multimodal/scripts/.coverage +0 -0
  219. package/.claude/skills/ai-multimodal/scripts/check_setup.py +315 -0
  220. package/.claude/skills/ai-multimodal/scripts/document_converter.py +395 -0
  221. package/.claude/skills/ai-multimodal/scripts/gemini_batch_process.py +1185 -0
  222. package/.claude/skills/ai-multimodal/scripts/media_optimizer.py +506 -0
  223. package/.claude/skills/ai-multimodal/scripts/requirements.txt +26 -0
  224. package/.claude/skills/ai-multimodal/scripts/tests/.coverage +0 -0
  225. package/.claude/skills/ai-multimodal/scripts/tests/requirements.txt +20 -0
  226. package/.claude/skills/ai-multimodal/scripts/tests/test_document_converter.py +74 -0
  227. package/.claude/skills/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -0
  228. package/.claude/skills/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -0
  229. package/.claude/skills/backend-development/SKILL.md +95 -0
  230. package/.claude/skills/backend-development/references/backend-api-design.md +495 -0
  231. package/.claude/skills/backend-development/references/backend-architecture.md +454 -0
  232. package/.claude/skills/backend-development/references/backend-authentication.md +338 -0
  233. package/.claude/skills/backend-development/references/backend-code-quality.md +659 -0
  234. package/.claude/skills/backend-development/references/backend-debugging.md +904 -0
  235. package/.claude/skills/backend-development/references/backend-devops.md +494 -0
  236. package/.claude/skills/backend-development/references/backend-mindset.md +387 -0
  237. package/.claude/skills/backend-development/references/backend-performance.md +397 -0
  238. package/.claude/skills/backend-development/references/backend-security.md +290 -0
  239. package/.claude/skills/backend-development/references/backend-technologies.md +256 -0
  240. package/.claude/skills/backend-development/references/backend-testing.md +429 -0
  241. package/.claude/skills/better-auth/SKILL.md +204 -0
  242. package/.claude/skills/better-auth/references/advanced-features.md +553 -0
  243. package/.claude/skills/better-auth/references/database-integration.md +577 -0
  244. package/.claude/skills/better-auth/references/email-password-auth.md +416 -0
  245. package/.claude/skills/better-auth/references/oauth-providers.md +430 -0
  246. package/.claude/skills/better-auth/scripts/.coverage +0 -0
  247. package/.claude/skills/better-auth/scripts/better_auth_init.py +521 -0
  248. package/.claude/skills/better-auth/scripts/requirements.txt +15 -0
  249. package/.claude/skills/better-auth/scripts/tests/.coverage +0 -0
  250. package/.claude/skills/better-auth/scripts/tests/test_better_auth_init.py +421 -0
  251. package/.claude/skills/brainstorm/SKILL.md +76 -0
  252. package/.claude/skills/chrome-devtools/SKILL.md +587 -0
  253. package/.claude/skills/chrome-devtools/references/cdp-domains.md +694 -0
  254. package/.claude/skills/chrome-devtools/references/performance-guide.md +940 -0
  255. package/.claude/skills/chrome-devtools/references/puppeteer-reference.md +953 -0
  256. package/.claude/skills/chrome-devtools/scripts/README.md +290 -0
  257. package/.claude/skills/chrome-devtools/scripts/__tests__/error-handling.test.js +102 -0
  258. package/.claude/skills/chrome-devtools/scripts/__tests__/selector.test.js +210 -0
  259. package/.claude/skills/chrome-devtools/scripts/aria-snapshot.js +363 -0
  260. package/.claude/skills/chrome-devtools/scripts/click.js +84 -0
  261. package/.claude/skills/chrome-devtools/scripts/connect-chrome.js +146 -0
  262. package/.claude/skills/chrome-devtools/scripts/console.js +81 -0
  263. package/.claude/skills/chrome-devtools/scripts/evaluate.js +55 -0
  264. package/.claude/skills/chrome-devtools/scripts/fill.js +77 -0
  265. package/.claude/skills/chrome-devtools/scripts/import-cookies.js +205 -0
  266. package/.claude/skills/chrome-devtools/scripts/inject-auth.js +230 -0
  267. package/.claude/skills/chrome-devtools/scripts/install-deps.sh +181 -0
  268. package/.claude/skills/chrome-devtools/scripts/install.sh +83 -0
  269. package/.claude/skills/chrome-devtools/scripts/lib/browser.js +341 -0
  270. package/.claude/skills/chrome-devtools/scripts/lib/selector.js +178 -0
  271. package/.claude/skills/chrome-devtools/scripts/navigate.js +66 -0
  272. package/.claude/skills/chrome-devtools/scripts/network.js +108 -0
  273. package/.claude/skills/chrome-devtools/scripts/package.json +16 -0
  274. package/.claude/skills/chrome-devtools/scripts/performance.js +151 -0
  275. package/.claude/skills/chrome-devtools/scripts/screenshot.js +199 -0
  276. package/.claude/skills/chrome-devtools/scripts/select-ref.js +132 -0
  277. package/.claude/skills/chrome-devtools/scripts/snapshot.js +136 -0
  278. package/.claude/skills/chrome-devtools/scripts/ws-debug.js +44 -0
  279. package/.claude/skills/chrome-devtools/scripts/ws-full-debug.js +107 -0
  280. package/.claude/skills/code-review/SKILL.md +106 -0
  281. package/.claude/skills/code-review/references/code-review-reception.md +113 -0
  282. package/.claude/skills/code-review/references/edge-case-scouting.md +119 -0
  283. package/.claude/skills/code-review/references/requesting-code-review.md +116 -0
  284. package/.claude/skills/code-review/references/verification-before-completion.md +139 -0
  285. package/.claude/skills/common/README.md +120 -0
  286. package/.claude/skills/common/api_key_helper.py +411 -0
  287. package/.claude/skills/common/api_key_rotator.py +248 -0
  288. package/.claude/skills/context-engineering/SKILL.md +107 -0
  289. package/.claude/skills/context-engineering/references/context-compression.md +84 -0
  290. package/.claude/skills/context-engineering/references/context-degradation.md +93 -0
  291. package/.claude/skills/context-engineering/references/context-fundamentals.md +75 -0
  292. package/.claude/skills/context-engineering/references/context-optimization.md +82 -0
  293. package/.claude/skills/context-engineering/references/evaluation.md +89 -0
  294. package/.claude/skills/context-engineering/references/memory-systems.md +88 -0
  295. package/.claude/skills/context-engineering/references/multi-agent-patterns.md +90 -0
  296. package/.claude/skills/context-engineering/references/project-development.md +97 -0
  297. package/.claude/skills/context-engineering/references/runtime-awareness.md +202 -0
  298. package/.claude/skills/context-engineering/references/tool-design.md +86 -0
  299. package/.claude/skills/context-engineering/scripts/compression_evaluator.py +349 -0
  300. package/.claude/skills/context-engineering/scripts/context_analyzer.py +317 -0
  301. package/.claude/skills/context-engineering/scripts/tests/test_edge_cases.py +246 -0
  302. package/.claude/skills/cook/README.md +86 -0
  303. package/.claude/skills/cook/SKILL.md +112 -0
  304. package/.claude/skills/cook/references/intent-detection.md +101 -0
  305. package/.claude/skills/cook/references/review-cycle.md +75 -0
  306. package/.claude/skills/cook/references/subagent-patterns.md +75 -0
  307. package/.claude/skills/cook/references/workflow-steps.md +166 -0
  308. package/.claude/skills/copywriting/SKILL.md +93 -0
  309. package/.claude/skills/copywriting/references/copy-formulas.md +150 -0
  310. package/.claude/skills/copywriting/references/cta-patterns.md +168 -0
  311. package/.claude/skills/copywriting/references/email-copy.md +193 -0
  312. package/.claude/skills/copywriting/references/headline-templates.md +140 -0
  313. package/.claude/skills/copywriting/references/landing-page-copy.md +175 -0
  314. package/.claude/skills/copywriting/references/power-words.md +189 -0
  315. package/.claude/skills/copywriting/references/social-media-copy.md +222 -0
  316. package/.claude/skills/copywriting/references/workflow-cro.md +54 -0
  317. package/.claude/skills/copywriting/references/workflow-enhance.md +32 -0
  318. package/.claude/skills/copywriting/references/workflow-fast.md +29 -0
  319. package/.claude/skills/copywriting/references/workflow-good.md +39 -0
  320. package/.claude/skills/copywriting/references/writing-styles.md +247 -0
  321. package/.claude/skills/copywriting/scripts/extract-writing-styles.py +308 -0
  322. package/.claude/skills/copywriting/templates/copy-brief.md +49 -0
  323. package/.claude/skills/databases/SKILL.md +83 -0
  324. package/.claude/skills/databases/analytics.md +198 -0
  325. package/.claude/skills/databases/db-design.md +188 -0
  326. package/.claude/skills/databases/incremental-etl.md +213 -0
  327. package/.claude/skills/databases/references/mongodb-aggregation.md +447 -0
  328. package/.claude/skills/databases/references/mongodb-atlas.md +465 -0
  329. package/.claude/skills/databases/references/mongodb-crud.md +408 -0
  330. package/.claude/skills/databases/references/mongodb-indexing.md +442 -0
  331. package/.claude/skills/databases/references/postgresql-administration.md +594 -0
  332. package/.claude/skills/databases/references/postgresql-performance.md +527 -0
  333. package/.claude/skills/databases/references/postgresql-psql-cli.md +467 -0
  334. package/.claude/skills/databases/references/postgresql-queries.md +475 -0
  335. package/.claude/skills/databases/scripts/.coverage +0 -0
  336. package/.claude/skills/databases/scripts/db_backup.py +502 -0
  337. package/.claude/skills/databases/scripts/db_migrate.py +426 -0
  338. package/.claude/skills/databases/scripts/db_performance_check.py +457 -0
  339. package/.claude/skills/databases/scripts/requirements.txt +20 -0
  340. package/.claude/skills/databases/scripts/tests/coverage-db.json +1 -0
  341. package/.claude/skills/databases/scripts/tests/requirements.txt +4 -0
  342. package/.claude/skills/databases/scripts/tests/test_db_backup.py +340 -0
  343. package/.claude/skills/databases/scripts/tests/test_db_migrate.py +277 -0
  344. package/.claude/skills/databases/scripts/tests/test_db_performance_check.py +370 -0
  345. package/.claude/skills/databases/stacks/bigquery.md +231 -0
  346. package/.claude/skills/databases/stacks/d1_cloudflare.md +137 -0
  347. package/.claude/skills/databases/stacks/mysql.md +216 -0
  348. package/.claude/skills/databases/stacks/postgres.md +235 -0
  349. package/.claude/skills/databases/stacks/sqlite.md +244 -0
  350. package/.claude/skills/databases/transactional.md +176 -0
  351. package/.claude/skills/debug/SKILL.md +84 -0
  352. package/.claude/skills/debug/references/defense-in-depth.md +124 -0
  353. package/.claude/skills/debug/references/root-cause-tracing.md +122 -0
  354. package/.claude/skills/debug/references/systematic-debugging.md +102 -0
  355. package/.claude/skills/debug/references/verification.md +123 -0
  356. package/.claude/skills/debug/scripts/find-polluter.sh +63 -0
  357. package/.claude/skills/debug/scripts/find-polluter.test.md +102 -0
  358. package/.claude/skills/devops/.env.example +76 -0
  359. package/.claude/skills/devops/SKILL.md +96 -0
  360. package/.claude/skills/devops/references/browser-rendering.md +305 -0
  361. package/.claude/skills/devops/references/cloudflare-d1-kv.md +123 -0
  362. package/.claude/skills/devops/references/cloudflare-platform.md +271 -0
  363. package/.claude/skills/devops/references/cloudflare-r2-storage.md +280 -0
  364. package/.claude/skills/devops/references/cloudflare-workers-advanced.md +312 -0
  365. package/.claude/skills/devops/references/cloudflare-workers-apis.md +309 -0
  366. package/.claude/skills/devops/references/cloudflare-workers-basics.md +418 -0
  367. package/.claude/skills/devops/references/docker-basics.md +297 -0
  368. package/.claude/skills/devops/references/docker-compose.md +292 -0
  369. package/.claude/skills/devops/references/gcloud-platform.md +297 -0
  370. package/.claude/skills/devops/references/gcloud-services.md +304 -0
  371. package/.claude/skills/devops/references/kubernetes-basics.md +99 -0
  372. package/.claude/skills/devops/references/kubernetes-helm-advanced.md +75 -0
  373. package/.claude/skills/devops/references/kubernetes-helm.md +81 -0
  374. package/.claude/skills/devops/references/kubernetes-kubectl.md +74 -0
  375. package/.claude/skills/devops/references/kubernetes-security-advanced.md +98 -0
  376. package/.claude/skills/devops/references/kubernetes-security.md +95 -0
  377. package/.claude/skills/devops/references/kubernetes-troubleshooting-advanced.md +74 -0
  378. package/.claude/skills/devops/references/kubernetes-troubleshooting.md +49 -0
  379. package/.claude/skills/devops/references/kubernetes-workflows-advanced.md +75 -0
  380. package/.claude/skills/devops/references/kubernetes-workflows.md +78 -0
  381. package/.claude/skills/devops/scripts/cloudflare_deploy.py +269 -0
  382. package/.claude/skills/devops/scripts/docker_optimize.py +332 -0
  383. package/.claude/skills/devops/scripts/requirements.txt +20 -0
  384. package/.claude/skills/devops/scripts/tests/requirements.txt +3 -0
  385. package/.claude/skills/devops/scripts/tests/test_cloudflare_deploy.py +285 -0
  386. package/.claude/skills/devops/scripts/tests/test_docker_optimize.py +436 -0
  387. package/.claude/skills/docs-seeker/.env.example +15 -0
  388. package/.claude/skills/docs-seeker/SKILL.md +97 -0
  389. package/.claude/skills/docs-seeker/package.json +25 -0
  390. package/.claude/skills/docs-seeker/references/advanced.md +79 -0
  391. package/.claude/skills/docs-seeker/references/context7-patterns.md +68 -0
  392. package/.claude/skills/docs-seeker/references/errors.md +68 -0
  393. package/.claude/skills/docs-seeker/scripts/analyze-llms-txt.js +211 -0
  394. package/.claude/skills/docs-seeker/scripts/detect-topic.js +172 -0
  395. package/.claude/skills/docs-seeker/scripts/fetch-docs.js +213 -0
  396. package/.claude/skills/docs-seeker/scripts/tests/run-tests.js +72 -0
  397. package/.claude/skills/docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
  398. package/.claude/skills/docs-seeker/scripts/tests/test-detect-topic.js +112 -0
  399. package/.claude/skills/docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
  400. package/.claude/skills/docs-seeker/scripts/utils/env-loader.js +94 -0
  401. package/.claude/skills/docs-seeker/workflows/library-search.md +87 -0
  402. package/.claude/skills/docs-seeker/workflows/repo-analysis.md +91 -0
  403. package/.claude/skills/docs-seeker/workflows/topic-search.md +77 -0
  404. package/.claude/skills/document-skills/docx/LICENSE.txt +30 -0
  405. package/.claude/skills/document-skills/docx/SKILL.md +197 -0
  406. package/.claude/skills/document-skills/docx/docx-js.md +350 -0
  407. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  408. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  409. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  410. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  411. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  412. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  413. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  414. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  415. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  416. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  417. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  418. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  419. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  420. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  421. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  422. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  423. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  424. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  425. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  426. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  427. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  428. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  429. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  430. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  431. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  432. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  433. package/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  434. package/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  435. package/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  436. package/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  437. package/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  438. package/.claude/skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  439. package/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  440. package/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  441. package/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  442. package/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  443. package/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  444. package/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  445. package/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  446. package/.claude/skills/document-skills/docx/ooxml/scripts/pack.py +159 -0
  447. package/.claude/skills/document-skills/docx/ooxml/scripts/unpack.py +29 -0
  448. package/.claude/skills/document-skills/docx/ooxml/scripts/validate.py +69 -0
  449. package/.claude/skills/document-skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  450. package/.claude/skills/document-skills/docx/ooxml/scripts/validation/base.py +951 -0
  451. package/.claude/skills/document-skills/docx/ooxml/scripts/validation/docx.py +274 -0
  452. package/.claude/skills/document-skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  453. package/.claude/skills/document-skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  454. package/.claude/skills/document-skills/docx/ooxml.md +610 -0
  455. package/.claude/skills/document-skills/docx/scripts/__init__.py +1 -0
  456. package/.claude/skills/document-skills/docx/scripts/document.py +1276 -0
  457. package/.claude/skills/document-skills/docx/scripts/templates/comments.xml +3 -0
  458. package/.claude/skills/document-skills/docx/scripts/templates/commentsExtended.xml +3 -0
  459. package/.claude/skills/document-skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  460. package/.claude/skills/document-skills/docx/scripts/templates/commentsIds.xml +3 -0
  461. package/.claude/skills/document-skills/docx/scripts/templates/people.xml +3 -0
  462. package/.claude/skills/document-skills/docx/scripts/utilities.py +374 -0
  463. package/.claude/skills/document-skills/pdf/LICENSE.txt +30 -0
  464. package/.claude/skills/document-skills/pdf/SKILL.md +294 -0
  465. package/.claude/skills/document-skills/pdf/forms.md +205 -0
  466. package/.claude/skills/document-skills/pdf/reference.md +612 -0
  467. package/.claude/skills/document-skills/pdf/scripts/check_bounding_boxes.py +70 -0
  468. package/.claude/skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  469. package/.claude/skills/document-skills/pdf/scripts/check_fillable_fields.py +12 -0
  470. package/.claude/skills/document-skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  471. package/.claude/skills/document-skills/pdf/scripts/create_validation_image.py +41 -0
  472. package/.claude/skills/document-skills/pdf/scripts/extract_form_field_info.py +152 -0
  473. package/.claude/skills/document-skills/pdf/scripts/fill_fillable_fields.py +114 -0
  474. package/.claude/skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  475. package/.claude/skills/document-skills/pptx/LICENSE.txt +30 -0
  476. package/.claude/skills/document-skills/pptx/SKILL.md +484 -0
  477. package/.claude/skills/document-skills/pptx/html2pptx.md +625 -0
  478. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  479. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  480. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  481. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  482. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  483. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  484. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  485. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  486. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  487. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  488. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  489. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  490. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  491. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  492. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  493. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  494. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  495. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  496. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  497. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  498. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  499. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  500. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  501. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  502. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  503. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  504. package/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  505. package/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  506. package/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  507. package/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  508. package/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  509. package/.claude/skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  510. package/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  511. package/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  512. package/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  513. package/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  514. package/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  515. package/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  516. package/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  517. package/.claude/skills/document-skills/pptx/ooxml/scripts/pack.py +159 -0
  518. package/.claude/skills/document-skills/pptx/ooxml/scripts/unpack.py +29 -0
  519. package/.claude/skills/document-skills/pptx/ooxml/scripts/validate.py +69 -0
  520. package/.claude/skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  521. package/.claude/skills/document-skills/pptx/ooxml/scripts/validation/base.py +951 -0
  522. package/.claude/skills/document-skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  523. package/.claude/skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  524. package/.claude/skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  525. package/.claude/skills/document-skills/pptx/ooxml.md +427 -0
  526. package/.claude/skills/document-skills/pptx/scripts/html2pptx.js +979 -0
  527. package/.claude/skills/document-skills/pptx/scripts/inventory.py +1020 -0
  528. package/.claude/skills/document-skills/pptx/scripts/rearrange.py +231 -0
  529. package/.claude/skills/document-skills/pptx/scripts/replace.py +385 -0
  530. package/.claude/skills/document-skills/pptx/scripts/thumbnail.py +450 -0
  531. package/.claude/skills/document-skills/xlsx/LICENSE.txt +30 -0
  532. package/.claude/skills/document-skills/xlsx/SKILL.md +289 -0
  533. package/.claude/skills/document-skills/xlsx/recalc.py +191 -0
  534. package/.claude/skills/find-skills/SKILL.md +133 -0
  535. package/.claude/skills/fix/SKILL.md +104 -0
  536. package/.claude/skills/fix/references/complexity-assessment.md +64 -0
  537. package/.claude/skills/fix/references/mode-selection.md +46 -0
  538. package/.claude/skills/fix/references/parallel-exploration.md +77 -0
  539. package/.claude/skills/fix/references/review-cycle.md +77 -0
  540. package/.claude/skills/fix/references/skill-activation-matrix.md +65 -0
  541. package/.claude/skills/fix/references/workflow-ci.md +28 -0
  542. package/.claude/skills/fix/references/workflow-deep.md +91 -0
  543. package/.claude/skills/fix/references/workflow-logs.md +36 -0
  544. package/.claude/skills/fix/references/workflow-quick.md +59 -0
  545. package/.claude/skills/fix/references/workflow-standard.md +86 -0
  546. package/.claude/skills/fix/references/workflow-test.md +36 -0
  547. package/.claude/skills/fix/references/workflow-types.md +33 -0
  548. package/.claude/skills/fix/references/workflow-ui.md +37 -0
  549. package/.claude/skills/frontend-design/SKILL.md +78 -0
  550. package/.claude/skills/frontend-design/references/ai-multimodal-overview.md +165 -0
  551. package/.claude/skills/frontend-design/references/analysis-best-practices.md +80 -0
  552. package/.claude/skills/frontend-design/references/analysis-prompts.md +141 -0
  553. package/.claude/skills/frontend-design/references/analysis-techniques.md +118 -0
  554. package/.claude/skills/frontend-design/references/animejs.md +396 -0
  555. package/.claude/skills/frontend-design/references/asset-generation.md +337 -0
  556. package/.claude/skills/frontend-design/references/design-extraction-overview.md +71 -0
  557. package/.claude/skills/frontend-design/references/extraction-best-practices.md +141 -0
  558. package/.claude/skills/frontend-design/references/extraction-output-templates.md +162 -0
  559. package/.claude/skills/frontend-design/references/extraction-prompts.md +127 -0
  560. package/.claude/skills/frontend-design/references/technical-accessibility.md +119 -0
  561. package/.claude/skills/frontend-design/references/technical-best-practices.md +97 -0
  562. package/.claude/skills/frontend-design/references/technical-optimization.md +44 -0
  563. package/.claude/skills/frontend-design/references/technical-overview.md +90 -0
  564. package/.claude/skills/frontend-design/references/technical-workflows.md +150 -0
  565. package/.claude/skills/frontend-design/references/visual-analysis-overview.md +95 -0
  566. package/.claude/skills/frontend-design/references/workflow-3d.md +102 -0
  567. package/.claude/skills/frontend-design/references/workflow-describe.md +87 -0
  568. package/.claude/skills/frontend-design/references/workflow-immersive.md +87 -0
  569. package/.claude/skills/frontend-design/references/workflow-quick.md +57 -0
  570. package/.claude/skills/frontend-design/references/workflow-screenshot.md +63 -0
  571. package/.claude/skills/frontend-design/references/workflow-video.md +74 -0
  572. package/.claude/skills/frontend-development/SKILL.md +399 -0
  573. package/.claude/skills/frontend-development/resources/common-patterns.md +331 -0
  574. package/.claude/skills/frontend-development/resources/complete-examples.md +872 -0
  575. package/.claude/skills/frontend-development/resources/component-patterns.md +502 -0
  576. package/.claude/skills/frontend-development/resources/data-fetching.md +767 -0
  577. package/.claude/skills/frontend-development/resources/file-organization.md +502 -0
  578. package/.claude/skills/frontend-development/resources/loading-and-error-states.md +501 -0
  579. package/.claude/skills/frontend-development/resources/performance.md +406 -0
  580. package/.claude/skills/frontend-development/resources/routing-guide.md +364 -0
  581. package/.claude/skills/frontend-development/resources/styling-guide.md +428 -0
  582. package/.claude/skills/frontend-development/resources/typescript-standards.md +418 -0
  583. package/.claude/skills/git/SKILL.md +100 -0
  584. package/.claude/skills/git/references/branch-management.md +88 -0
  585. package/.claude/skills/git/references/commit-standards.md +46 -0
  586. package/.claude/skills/git/references/gh-cli-guide.md +109 -0
  587. package/.claude/skills/git/references/safety-protocols.md +69 -0
  588. package/.claude/skills/git/references/workflow-commit.md +58 -0
  589. package/.claude/skills/git/references/workflow-merge.md +48 -0
  590. package/.claude/skills/git/references/workflow-pr.md +58 -0
  591. package/.claude/skills/git/references/workflow-push.md +52 -0
  592. package/.claude/skills/gkg/SKILL.md +90 -0
  593. package/.claude/skills/gkg/references/cli-commands.md +106 -0
  594. package/.claude/skills/gkg/references/http-api.md +102 -0
  595. package/.claude/skills/gkg/references/language-support.md +57 -0
  596. package/.claude/skills/gkg/references/mcp-tools.md +99 -0
  597. package/.claude/skills/google-adk-python/SKILL.md +132 -0
  598. package/.claude/skills/google-adk-python/references/agent-types-and-architecture.md +128 -0
  599. package/.claude/skills/google-adk-python/references/callbacks-plugins-observability.md +117 -0
  600. package/.claude/skills/google-adk-python/references/deployment-cloud-run-vertex-gke.md +138 -0
  601. package/.claude/skills/google-adk-python/references/evaluation-testing-cli.md +112 -0
  602. package/.claude/skills/google-adk-python/references/multi-agent-and-a2a-protocol.md +145 -0
  603. package/.claude/skills/google-adk-python/references/sessions-state-memory-artifacts.md +131 -0
  604. package/.claude/skills/google-adk-python/references/tools-and-mcp-integration.md +146 -0
  605. package/.claude/skills/install.ps1 +1295 -0
  606. package/.claude/skills/install.sh +1339 -0
  607. package/.claude/skills/markdown-novel-viewer/SKILL.md +313 -0
  608. package/.claude/skills/markdown-novel-viewer/assets/directory-browser.css +215 -0
  609. package/.claude/skills/markdown-novel-viewer/assets/favicon.png +0 -0
  610. package/.claude/skills/markdown-novel-viewer/assets/novel-theme.css +16 -0
  611. package/.claude/skills/markdown-novel-viewer/assets/reader.js +746 -0
  612. package/.claude/skills/markdown-novel-viewer/assets/styles/novel-theme-base.css +54 -0
  613. package/.claude/skills/markdown-novel-viewer/assets/styles/novel-theme-components.css +83 -0
  614. package/.claude/skills/markdown-novel-viewer/assets/styles/novel-theme-content.css +175 -0
  615. package/.claude/skills/markdown-novel-viewer/assets/styles/novel-theme-header.css +217 -0
  616. package/.claude/skills/markdown-novel-viewer/assets/styles/novel-theme-mermaid.css +128 -0
  617. package/.claude/skills/markdown-novel-viewer/assets/styles/novel-theme-overlays.css +202 -0
  618. package/.claude/skills/markdown-novel-viewer/assets/styles/novel-theme-responsive.css +285 -0
  619. package/.claude/skills/markdown-novel-viewer/assets/styles/novel-theme-sidebar.css +359 -0
  620. package/.claude/skills/markdown-novel-viewer/assets/styles/novel-theme-variables.css +56 -0
  621. package/.claude/skills/markdown-novel-viewer/assets/template.html +149 -0
  622. package/.claude/skills/markdown-novel-viewer/package.json +15 -0
  623. package/.claude/skills/markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
  624. package/.claude/skills/markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +335 -0
  625. package/.claude/skills/markdown-novel-viewer/scripts/lib/plan-navigator.cjs +571 -0
  626. package/.claude/skills/markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
  627. package/.claude/skills/markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
  628. package/.claude/skills/markdown-novel-viewer/scripts/server.cjs +411 -0
  629. package/.claude/skills/markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
  630. package/.claude/skills/markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
  631. package/.claude/skills/markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
  632. package/.claude/skills/markdown-novel-viewer/tests/http-server.test.cjs +271 -0
  633. package/.claude/skills/markdown-novel-viewer/tests/run-tests.cjs +51 -0
  634. package/.claude/skills/markdown-novel-viewer/tests/test-framework.cjs +154 -0
  635. package/.claude/skills/markdown-novel-viewer/tests/verify-xss.cjs +90 -0
  636. package/.claude/skills/mcp-builder/LICENSE.txt +202 -0
  637. package/.claude/skills/mcp-builder/SKILL.md +328 -0
  638. package/.claude/skills/mcp-builder/reference/evaluation.md +602 -0
  639. package/.claude/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  640. package/.claude/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  641. package/.claude/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  642. package/.claude/skills/mcp-builder/scripts/connections.py +151 -0
  643. package/.claude/skills/mcp-builder/scripts/evaluation.py +381 -0
  644. package/.claude/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  645. package/.claude/skills/mcp-builder/scripts/requirements.txt +2 -0
  646. package/.claude/skills/mcp-management/README.md +219 -0
  647. package/.claude/skills/mcp-management/SKILL.md +209 -0
  648. package/.claude/skills/mcp-management/assets/tools.json +3146 -0
  649. package/.claude/skills/mcp-management/references/configuration.md +114 -0
  650. package/.claude/skills/mcp-management/references/gemini-cli-integration.md +221 -0
  651. package/.claude/skills/mcp-management/references/mcp-protocol.md +116 -0
  652. package/.claude/skills/mcp-management/scripts/.env.example +10 -0
  653. package/.claude/skills/mcp-management/scripts/cli.ts +195 -0
  654. package/.claude/skills/mcp-management/scripts/mcp-client.ts +230 -0
  655. package/.claude/skills/mcp-management/scripts/package.json +20 -0
  656. package/.claude/skills/mcp-management/scripts/tsconfig.json +15 -0
  657. package/.claude/skills/media-processing/SKILL.md +91 -0
  658. package/.claude/skills/media-processing/references/common-workflows.md +132 -0
  659. package/.claude/skills/media-processing/references/ffmpeg-encoding.md +358 -0
  660. package/.claude/skills/media-processing/references/ffmpeg-filters.md +503 -0
  661. package/.claude/skills/media-processing/references/ffmpeg-streaming.md +403 -0
  662. package/.claude/skills/media-processing/references/format-compatibility.md +375 -0
  663. package/.claude/skills/media-processing/references/imagemagick-batch.md +612 -0
  664. package/.claude/skills/media-processing/references/imagemagick-editing.md +623 -0
  665. package/.claude/skills/media-processing/references/rmbg-background-removal.md +66 -0
  666. package/.claude/skills/media-processing/references/troubleshooting.md +109 -0
  667. package/.claude/skills/media-processing/scripts/README.md +111 -0
  668. package/.claude/skills/media-processing/scripts/batch-remove-background.sh +124 -0
  669. package/.claude/skills/media-processing/scripts/batch_resize.py +342 -0
  670. package/.claude/skills/media-processing/scripts/media_convert.py +311 -0
  671. package/.claude/skills/media-processing/scripts/remove-background.sh +96 -0
  672. package/.claude/skills/media-processing/scripts/remove-bg-node.js +158 -0
  673. package/.claude/skills/media-processing/scripts/requirements.txt +24 -0
  674. package/.claude/skills/media-processing/scripts/tests/.coverage +0 -0
  675. package/.claude/skills/media-processing/scripts/tests/requirements.txt +2 -0
  676. package/.claude/skills/media-processing/scripts/tests/test_batch_resize.py +372 -0
  677. package/.claude/skills/media-processing/scripts/tests/test_media_convert.py +259 -0
  678. package/.claude/skills/media-processing/scripts/tests/test_video_optimize.py +397 -0
  679. package/.claude/skills/media-processing/scripts/video_optimize.py +414 -0
  680. package/.claude/skills/mermaidjs-v11/SKILL.md +115 -0
  681. package/.claude/skills/mermaidjs-v11/references/cli-usage.md +228 -0
  682. package/.claude/skills/mermaidjs-v11/references/configuration.md +232 -0
  683. package/.claude/skills/mermaidjs-v11/references/diagram-types.md +315 -0
  684. package/.claude/skills/mermaidjs-v11/references/examples.md +344 -0
  685. package/.claude/skills/mermaidjs-v11/references/integration.md +310 -0
  686. package/.claude/skills/mintlify/SKILL.md +120 -0
  687. package/.claude/skills/mintlify/references/ai-features-and-integrations-reference.md +756 -0
  688. package/.claude/skills/mintlify/references/api-documentation-components-reference.md +873 -0
  689. package/.claude/skills/mintlify/references/deployment-and-continuous-integration-reference.md +674 -0
  690. package/.claude/skills/mintlify/references/docs-json-configuration-reference.md +724 -0
  691. package/.claude/skills/mintlify/references/mdx-components-reference.md +551 -0
  692. package/.claude/skills/mintlify/references/navigation-structure-and-organization-reference.md +775 -0
  693. package/.claude/skills/mobile-development/SKILL.md +212 -0
  694. package/.claude/skills/mobile-development/references/mobile-android.md +604 -0
  695. package/.claude/skills/mobile-development/references/mobile-best-practices.md +545 -0
  696. package/.claude/skills/mobile-development/references/mobile-debugging.md +1089 -0
  697. package/.claude/skills/mobile-development/references/mobile-frameworks.md +465 -0
  698. package/.claude/skills/mobile-development/references/mobile-ios.md +496 -0
  699. package/.claude/skills/mobile-development/references/mobile-mindset.md +544 -0
  700. package/.claude/skills/payment-integration/README.md +217 -0
  701. package/.claude/skills/payment-integration/SKILL.md +102 -0
  702. package/.claude/skills/payment-integration/references/creem/api.md +139 -0
  703. package/.claude/skills/payment-integration/references/creem/checkouts.md +99 -0
  704. package/.claude/skills/payment-integration/references/creem/licensing.md +136 -0
  705. package/.claude/skills/payment-integration/references/creem/overview.md +65 -0
  706. package/.claude/skills/payment-integration/references/creem/sdk.md +161 -0
  707. package/.claude/skills/payment-integration/references/creem/subscriptions.md +129 -0
  708. package/.claude/skills/payment-integration/references/creem/webhooks.md +120 -0
  709. package/.claude/skills/payment-integration/references/implementation-workflows.md +43 -0
  710. package/.claude/skills/payment-integration/references/multi-provider-order-management-patterns.md +821 -0
  711. package/.claude/skills/payment-integration/references/paddle/api.md +116 -0
  712. package/.claude/skills/payment-integration/references/paddle/best-practices.md +130 -0
  713. package/.claude/skills/payment-integration/references/paddle/overview.md +57 -0
  714. package/.claude/skills/payment-integration/references/paddle/paddle-js.md +106 -0
  715. package/.claude/skills/payment-integration/references/paddle/sdk.md +131 -0
  716. package/.claude/skills/payment-integration/references/paddle/subscriptions.md +118 -0
  717. package/.claude/skills/payment-integration/references/paddle/webhooks.md +112 -0
  718. package/.claude/skills/payment-integration/references/polar/benefits.md +396 -0
  719. package/.claude/skills/payment-integration/references/polar/best-practices.md +902 -0
  720. package/.claude/skills/payment-integration/references/polar/checkouts.md +266 -0
  721. package/.claude/skills/payment-integration/references/polar/overview.md +184 -0
  722. package/.claude/skills/payment-integration/references/polar/products.md +244 -0
  723. package/.claude/skills/payment-integration/references/polar/sdk.md +436 -0
  724. package/.claude/skills/payment-integration/references/polar/subscriptions.md +340 -0
  725. package/.claude/skills/payment-integration/references/polar/webhooks.md +405 -0
  726. package/.claude/skills/payment-integration/references/sepay/api.md +140 -0
  727. package/.claude/skills/payment-integration/references/sepay/best-practices.md +939 -0
  728. package/.claude/skills/payment-integration/references/sepay/overview.md +138 -0
  729. package/.claude/skills/payment-integration/references/sepay/qr-codes.md +228 -0
  730. package/.claude/skills/payment-integration/references/sepay/sdk.md +213 -0
  731. package/.claude/skills/payment-integration/references/sepay/webhooks.md +208 -0
  732. package/.claude/skills/payment-integration/references/stripe/stripe-best-practices.md +32 -0
  733. package/.claude/skills/payment-integration/references/stripe/stripe-cli.md +148 -0
  734. package/.claude/skills/payment-integration/references/stripe/stripe-js.md +116 -0
  735. package/.claude/skills/payment-integration/references/stripe/stripe-sdks.md +84 -0
  736. package/.claude/skills/payment-integration/references/stripe/stripe-upgrade.md +175 -0
  737. package/.claude/skills/payment-integration/scripts/.env.example +20 -0
  738. package/.claude/skills/payment-integration/scripts/checkout-helper.js +244 -0
  739. package/.claude/skills/payment-integration/scripts/package.json +17 -0
  740. package/.claude/skills/payment-integration/scripts/polar-webhook-verify.js +202 -0
  741. package/.claude/skills/payment-integration/scripts/sepay-webhook-verify.js +193 -0
  742. package/.claude/skills/payment-integration/scripts/test-scripts.js +237 -0
  743. package/.claude/skills/planning/SKILL.md +132 -0
  744. package/.claude/skills/planning/references/codebase-understanding.md +62 -0
  745. package/.claude/skills/planning/references/output-standards.md +141 -0
  746. package/.claude/skills/planning/references/plan-organization.md +160 -0
  747. package/.claude/skills/planning/references/research-phase.md +49 -0
  748. package/.claude/skills/planning/references/solution-design.md +63 -0
  749. package/.claude/skills/plans-kanban/SKILL.md +166 -0
  750. package/.claude/skills/plans-kanban/assets/dashboard-template.html +119 -0
  751. package/.claude/skills/plans-kanban/assets/dashboard.css +1594 -0
  752. package/.claude/skills/plans-kanban/assets/dashboard.js +596 -0
  753. package/.claude/skills/plans-kanban/assets/favicon.png +0 -0
  754. package/.claude/skills/plans-kanban/package.json +13 -0
  755. package/.claude/skills/plans-kanban/scripts/lib/dashboard-renderer.cjs +884 -0
  756. package/.claude/skills/plans-kanban/scripts/lib/http-server.cjs +310 -0
  757. package/.claude/skills/plans-kanban/scripts/lib/plan-metadata-extractor.cjs +489 -0
  758. package/.claude/skills/plans-kanban/scripts/lib/plan-parser.cjs +175 -0
  759. package/.claude/skills/plans-kanban/scripts/lib/plan-scanner.cjs +272 -0
  760. package/.claude/skills/plans-kanban/scripts/lib/port-finder.cjs +48 -0
  761. package/.claude/skills/plans-kanban/scripts/lib/process-mgr.cjs +128 -0
  762. package/.claude/skills/plans-kanban/scripts/server.cjs +260 -0
  763. package/.claude/skills/problem-solving/SKILL.md +96 -0
  764. package/.claude/skills/problem-solving/references/attribution.md +69 -0
  765. package/.claude/skills/problem-solving/references/collision-zone-thinking.md +79 -0
  766. package/.claude/skills/problem-solving/references/inversion-exercise.md +91 -0
  767. package/.claude/skills/problem-solving/references/meta-pattern-recognition.md +87 -0
  768. package/.claude/skills/problem-solving/references/scale-game.md +95 -0
  769. package/.claude/skills/problem-solving/references/simplification-cascades.md +80 -0
  770. package/.claude/skills/problem-solving/references/when-stuck.md +72 -0
  771. package/.claude/skills/react-best-practices/AGENTS.md +2249 -0
  772. package/.claude/skills/react-best-practices/README.md +123 -0
  773. package/.claude/skills/react-best-practices/SKILL.md +121 -0
  774. package/.claude/skills/react-best-practices/metadata.json +15 -0
  775. package/.claude/skills/react-best-practices/rules/_sections.md +46 -0
  776. package/.claude/skills/react-best-practices/rules/_template.md +28 -0
  777. package/.claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  778. package/.claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  779. package/.claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
  780. package/.claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
  781. package/.claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
  782. package/.claude/skills/react-best-practices/rules/async-parallel.md +28 -0
  783. package/.claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  784. package/.claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  785. package/.claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  786. package/.claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  787. package/.claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  788. package/.claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
  789. package/.claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  790. package/.claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  791. package/.claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  792. package/.claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  793. package/.claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  794. package/.claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  795. package/.claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  796. package/.claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
  797. package/.claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  798. package/.claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
  799. package/.claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  800. package/.claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  801. package/.claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  802. package/.claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  803. package/.claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
  804. package/.claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  805. package/.claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  806. package/.claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  807. package/.claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  808. package/.claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  809. package/.claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  810. package/.claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  811. package/.claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  812. package/.claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  813. package/.claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  814. package/.claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  815. package/.claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
  816. package/.claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  817. package/.claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  818. package/.claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  819. package/.claude/skills/react-best-practices/rules/server-cache-react.md +26 -0
  820. package/.claude/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
  821. package/.claude/skills/react-best-practices/rules/server-serialization.md +38 -0
  822. package/.claude/skills/remotion/SKILL.md +43 -0
  823. package/.claude/skills/remotion/rules/3d.md +86 -0
  824. package/.claude/skills/remotion/rules/animations.md +29 -0
  825. package/.claude/skills/remotion/rules/assets/charts-bar-chart.tsx +173 -0
  826. package/.claude/skills/remotion/rules/assets/text-animations-typewriter.tsx +100 -0
  827. package/.claude/skills/remotion/rules/assets/text-animations-word-highlight.tsx +108 -0
  828. package/.claude/skills/remotion/rules/assets.md +78 -0
  829. package/.claude/skills/remotion/rules/audio.md +172 -0
  830. package/.claude/skills/remotion/rules/calculate-metadata.md +104 -0
  831. package/.claude/skills/remotion/rules/can-decode.md +75 -0
  832. package/.claude/skills/remotion/rules/charts.md +58 -0
  833. package/.claude/skills/remotion/rules/compositions.md +146 -0
  834. package/.claude/skills/remotion/rules/display-captions.md +126 -0
  835. package/.claude/skills/remotion/rules/extract-frames.md +229 -0
  836. package/.claude/skills/remotion/rules/fonts.md +152 -0
  837. package/.claude/skills/remotion/rules/get-audio-duration.md +58 -0
  838. package/.claude/skills/remotion/rules/get-video-dimensions.md +68 -0
  839. package/.claude/skills/remotion/rules/get-video-duration.md +58 -0
  840. package/.claude/skills/remotion/rules/gifs.md +138 -0
  841. package/.claude/skills/remotion/rules/images.md +130 -0
  842. package/.claude/skills/remotion/rules/import-srt-captions.md +67 -0
  843. package/.claude/skills/remotion/rules/lottie.md +68 -0
  844. package/.claude/skills/remotion/rules/measuring-dom-nodes.md +35 -0
  845. package/.claude/skills/remotion/rules/measuring-text.md +143 -0
  846. package/.claude/skills/remotion/rules/sequencing.md +106 -0
  847. package/.claude/skills/remotion/rules/tailwind.md +11 -0
  848. package/.claude/skills/remotion/rules/text-animations.md +20 -0
  849. package/.claude/skills/remotion/rules/timing.md +179 -0
  850. package/.claude/skills/remotion/rules/transcribe-captions.md +19 -0
  851. package/.claude/skills/remotion/rules/transitions.md +122 -0
  852. package/.claude/skills/remotion/rules/trimming.md +53 -0
  853. package/.claude/skills/remotion/rules/videos.md +171 -0
  854. package/.claude/skills/repomix/SKILL.md +247 -0
  855. package/.claude/skills/repomix/references/configuration.md +211 -0
  856. package/.claude/skills/repomix/references/usage-patterns.md +232 -0
  857. package/.claude/skills/repomix/scripts/.coverage +0 -0
  858. package/.claude/skills/repomix/scripts/README.md +179 -0
  859. package/.claude/skills/repomix/scripts/repomix_batch.py +455 -0
  860. package/.claude/skills/repomix/scripts/repos.example.json +15 -0
  861. package/.claude/skills/repomix/scripts/requirements.txt +15 -0
  862. package/.claude/skills/repomix/scripts/tests/test_repomix_batch.py +531 -0
  863. package/.claude/skills/research/SKILL.md +170 -0
  864. package/.claude/skills/scout/SKILL.md +79 -0
  865. package/.claude/skills/scout/references/external-scouting.md +140 -0
  866. package/.claude/skills/scout/references/internal-scouting.md +119 -0
  867. package/.claude/skills/sequential-thinking/.env.example +8 -0
  868. package/.claude/skills/sequential-thinking/README.md +183 -0
  869. package/.claude/skills/sequential-thinking/SKILL.md +94 -0
  870. package/.claude/skills/sequential-thinking/package.json +31 -0
  871. package/.claude/skills/sequential-thinking/references/advanced-strategies.md +79 -0
  872. package/.claude/skills/sequential-thinking/references/advanced-techniques.md +76 -0
  873. package/.claude/skills/sequential-thinking/references/core-patterns.md +95 -0
  874. package/.claude/skills/sequential-thinking/references/examples-api.md +88 -0
  875. package/.claude/skills/sequential-thinking/references/examples-architecture.md +94 -0
  876. package/.claude/skills/sequential-thinking/references/examples-debug.md +90 -0
  877. package/.claude/skills/sequential-thinking/scripts/format-thought.js +159 -0
  878. package/.claude/skills/sequential-thinking/scripts/process-thought.js +236 -0
  879. package/.claude/skills/sequential-thinking/tests/format-thought.test.js +133 -0
  880. package/.claude/skills/sequential-thinking/tests/process-thought.test.js +215 -0
  881. package/.claude/skills/shader/SKILL.md +112 -0
  882. package/.claude/skills/shader/references/glsl-cellular-voronoi-worley-noise-patterns.md +142 -0
  883. package/.claude/skills/shader/references/glsl-colors-rgb-hsb-gradients-mixing-color-spaces.md +143 -0
  884. package/.claude/skills/shader/references/glsl-fbm-fractional-brownian-motion-turbulence-octaves.md +146 -0
  885. package/.claude/skills/shader/references/glsl-fundamentals-data-types-vectors-precision-coordinates.md +104 -0
  886. package/.claude/skills/shader/references/glsl-noise-random-perlin-simplex-cellular-voronoi.md +115 -0
  887. package/.claude/skills/shader/references/glsl-pattern-symmetry-truchet-domain-warping.md +134 -0
  888. package/.claude/skills/shader/references/glsl-patterns-tiling-fract-matrices-transformations.md +133 -0
  889. package/.claude/skills/shader/references/glsl-procedural-textures-clouds-marble-wood-terrain.md +144 -0
  890. package/.claude/skills/shader/references/glsl-shader-builtin-functions-complete-api-reference.md +112 -0
  891. package/.claude/skills/shader/references/glsl-shapes-polygon-star-polar-sdf-combinations.md +124 -0
  892. package/.claude/skills/shader/references/glsl-shapes-sdf-circles-rectangles-polar-distance-fields.md +106 -0
  893. package/.claude/skills/shader/references/glsl-shaping-functions-step-smoothstep-curves-interpolation.md +141 -0
  894. package/.claude/skills/shopify/README.md +66 -0
  895. package/.claude/skills/shopify/SKILL.md +319 -0
  896. package/.claude/skills/shopify/references/app-development.md +470 -0
  897. package/.claude/skills/shopify/references/extensions.md +493 -0
  898. package/.claude/skills/shopify/references/themes.md +498 -0
  899. package/.claude/skills/shopify/scripts/.coverage +0 -0
  900. package/.claude/skills/shopify/scripts/requirements.txt +19 -0
  901. package/.claude/skills/shopify/scripts/shopify_init.py +423 -0
  902. package/.claude/skills/shopify/scripts/tests/.coverage +0 -0
  903. package/.claude/skills/shopify/scripts/tests/test_shopify_init.py +385 -0
  904. package/.claude/skills/skill-creator/LICENSE.txt +202 -0
  905. package/.claude/skills/skill-creator/SKILL.md +309 -0
  906. package/.claude/skills/skill-creator/references/metadata-quality-criteria.md +76 -0
  907. package/.claude/skills/skill-creator/references/plugin-marketplace-hosting.md +101 -0
  908. package/.claude/skills/skill-creator/references/plugin-marketplace-overview.md +55 -0
  909. package/.claude/skills/skill-creator/references/plugin-marketplace-schema.md +88 -0
  910. package/.claude/skills/skill-creator/references/plugin-marketplace-sources.md +103 -0
  911. package/.claude/skills/skill-creator/references/plugin-marketplace-troubleshooting.md +80 -0
  912. package/.claude/skills/skill-creator/references/script-quality-criteria.md +106 -0
  913. package/.claude/skills/skill-creator/references/structure-organization-criteria.md +114 -0
  914. package/.claude/skills/skill-creator/references/token-efficiency-criteria.md +74 -0
  915. package/.claude/skills/skill-creator/references/validation-checklist.md +83 -0
  916. package/.claude/skills/skill-creator/scripts/encoding_utils.py +36 -0
  917. package/.claude/skills/skill-creator/scripts/init_skill.py +308 -0
  918. package/.claude/skills/skill-creator/scripts/package_skill.py +115 -0
  919. package/.claude/skills/skill-creator/scripts/quick_validate.py +69 -0
  920. package/.claude/skills/template-skill/SKILL.md +6 -0
  921. package/.claude/skills/threejs/SKILL.md +141 -0
  922. package/.claude/skills/threejs/data/api-reference.csv +61 -0
  923. package/.claude/skills/threejs/data/categories.csv +14 -0
  924. package/.claude/skills/threejs/data/examples-all.csv +557 -0
  925. package/.claude/skills/threejs/data/use-cases.csv +21 -0
  926. package/.claude/skills/threejs/references/00-fundamentals.md +487 -0
  927. package/.claude/skills/threejs/references/01-getting-started.md +177 -0
  928. package/.claude/skills/threejs/references/02-loaders.md +169 -0
  929. package/.claude/skills/threejs/references/03-textures.md +170 -0
  930. package/.claude/skills/threejs/references/04-cameras.md +195 -0
  931. package/.claude/skills/threejs/references/05-lights.md +183 -0
  932. package/.claude/skills/threejs/references/06-animations.md +214 -0
  933. package/.claude/skills/threejs/references/07-math.md +260 -0
  934. package/.claude/skills/threejs/references/08-interaction.md +267 -0
  935. package/.claude/skills/threejs/references/09-postprocessing.md +240 -0
  936. package/.claude/skills/threejs/references/10-controls.md +259 -0
  937. package/.claude/skills/threejs/references/11-materials-advanced.md +270 -0
  938. package/.claude/skills/threejs/references/11-materials.md +519 -0
  939. package/.claude/skills/threejs/references/12-performance.md +269 -0
  940. package/.claude/skills/threejs/references/13-node-materials.md +298 -0
  941. package/.claude/skills/threejs/references/14-physics-vr.md +304 -0
  942. package/.claude/skills/threejs/references/15-specialized-loaders.md +333 -0
  943. package/.claude/skills/threejs/references/16-webgpu.md +302 -0
  944. package/.claude/skills/threejs/references/17-shader.md +641 -0
  945. package/.claude/skills/threejs/references/18-geometry.md +547 -0
  946. package/.claude/skills/threejs/scripts/core.py +236 -0
  947. package/.claude/skills/threejs/scripts/extract_examples.py +688 -0
  948. package/.claude/skills/threejs/scripts/generate_csv_from_json.py +135 -0
  949. package/.claude/skills/threejs/scripts/search.py +77 -0
  950. package/.claude/skills/ui-styling/LICENSE.txt +202 -0
  951. package/.claude/skills/ui-styling/SKILL.md +321 -0
  952. package/.claude/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  953. package/.claude/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  954. package/.claude/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  955. package/.claude/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  956. package/.claude/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  957. package/.claude/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  958. package/.claude/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  959. package/.claude/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  960. package/.claude/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  961. package/.claude/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  962. package/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  963. package/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  964. package/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  965. package/.claude/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  966. package/.claude/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  967. package/.claude/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  968. package/.claude/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  969. package/.claude/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  970. package/.claude/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  971. package/.claude/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  972. package/.claude/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  973. package/.claude/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  974. package/.claude/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  975. package/.claude/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  976. package/.claude/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  977. package/.claude/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  978. package/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  979. package/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  980. package/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  981. package/.claude/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  982. package/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  983. package/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  984. package/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  985. package/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  986. package/.claude/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  987. package/.claude/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  988. package/.claude/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  989. package/.claude/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  990. package/.claude/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  991. package/.claude/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  992. package/.claude/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  993. package/.claude/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  994. package/.claude/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  995. package/.claude/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  996. package/.claude/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  997. package/.claude/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  998. package/.claude/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  999. package/.claude/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  1000. package/.claude/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  1001. package/.claude/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  1002. package/.claude/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  1003. package/.claude/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  1004. package/.claude/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  1005. package/.claude/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  1006. package/.claude/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  1007. package/.claude/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  1008. package/.claude/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  1009. package/.claude/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  1010. package/.claude/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  1011. package/.claude/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  1012. package/.claude/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  1013. package/.claude/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  1014. package/.claude/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  1015. package/.claude/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  1016. package/.claude/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  1017. package/.claude/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  1018. package/.claude/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  1019. package/.claude/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  1020. package/.claude/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  1021. package/.claude/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  1022. package/.claude/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  1023. package/.claude/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  1024. package/.claude/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  1025. package/.claude/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  1026. package/.claude/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  1027. package/.claude/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  1028. package/.claude/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  1029. package/.claude/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  1030. package/.claude/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  1031. package/.claude/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  1032. package/.claude/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  1033. package/.claude/skills/ui-styling/references/canvas-design-system.md +320 -0
  1034. package/.claude/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  1035. package/.claude/skills/ui-styling/references/shadcn-components.md +424 -0
  1036. package/.claude/skills/ui-styling/references/shadcn-theming.md +373 -0
  1037. package/.claude/skills/ui-styling/references/tailwind-customization.md +483 -0
  1038. package/.claude/skills/ui-styling/references/tailwind-responsive.md +382 -0
  1039. package/.claude/skills/ui-styling/references/tailwind-utilities.md +455 -0
  1040. package/.claude/skills/ui-styling/scripts/.coverage +0 -0
  1041. package/.claude/skills/ui-styling/scripts/requirements.txt +17 -0
  1042. package/.claude/skills/ui-styling/scripts/shadcn_add.py +292 -0
  1043. package/.claude/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
  1044. package/.claude/skills/ui-styling/scripts/tests/coverage-ui.json +1 -0
  1045. package/.claude/skills/ui-styling/scripts/tests/requirements.txt +3 -0
  1046. package/.claude/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  1047. package/.claude/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  1048. package/.claude/skills/ui-ux-pro-max/SKILL.md +351 -0
  1049. package/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1050. package/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1051. package/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -0
  1052. package/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1053. package/.claude/skills/ui-ux-pro-max/data/products.csv +97 -0
  1054. package/.claude/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  1055. package/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  1056. package/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1057. package/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  1058. package/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1059. package/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  1060. package/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  1061. package/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1062. package/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1063. package/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  1064. package/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1065. package/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1066. package/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1067. package/.claude/skills/ui-ux-pro-max/data/styles.csv +59 -0
  1068. package/.claude/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1069. package/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  1070. package/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1071. package/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  1072. package/.claude/skills/ui-ux-pro-max/scripts/core.py +257 -0
  1073. package/.claude/skills/ui-ux-pro-max/scripts/design_system.py +494 -0
  1074. package/.claude/skills/ui-ux-pro-max/scripts/search.py +84 -0
  1075. package/.claude/skills/web-design-guidelines/SKILL.md +36 -0
  1076. package/.claude/skills/web-frameworks/SKILL.md +324 -0
  1077. package/.claude/skills/web-frameworks/references/nextjs-app-router.md +465 -0
  1078. package/.claude/skills/web-frameworks/references/nextjs-data-fetching.md +459 -0
  1079. package/.claude/skills/web-frameworks/references/nextjs-optimization.md +511 -0
  1080. package/.claude/skills/web-frameworks/references/nextjs-server-components.md +495 -0
  1081. package/.claude/skills/web-frameworks/references/remix-icon-integration.md +603 -0
  1082. package/.claude/skills/web-frameworks/references/turborepo-caching.md +551 -0
  1083. package/.claude/skills/web-frameworks/references/turborepo-pipelines.md +517 -0
  1084. package/.claude/skills/web-frameworks/references/turborepo-setup.md +542 -0
  1085. package/.claude/skills/web-frameworks/scripts/.coverage +0 -0
  1086. package/.claude/skills/web-frameworks/scripts/__init__.py +0 -0
  1087. package/.claude/skills/web-frameworks/scripts/nextjs_init.py +547 -0
  1088. package/.claude/skills/web-frameworks/scripts/requirements.txt +16 -0
  1089. package/.claude/skills/web-frameworks/scripts/tests/coverage-web.json +1 -0
  1090. package/.claude/skills/web-frameworks/scripts/tests/requirements.txt +3 -0
  1091. package/.claude/skills/web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
  1092. package/.claude/skills/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
  1093. package/.claude/skills/web-frameworks/scripts/turborepo_migrate.py +394 -0
  1094. package/.claude/skills/web-testing/SKILL.md +96 -0
  1095. package/.claude/skills/web-testing/references/accessibility-testing.md +84 -0
  1096. package/.claude/skills/web-testing/references/api-testing.md +78 -0
  1097. package/.claude/skills/web-testing/references/ci-cd-testing-workflows.md +121 -0
  1098. package/.claude/skills/web-testing/references/component-testing.md +94 -0
  1099. package/.claude/skills/web-testing/references/contract-testing.md +146 -0
  1100. package/.claude/skills/web-testing/references/cross-browser-checklist.md +72 -0
  1101. package/.claude/skills/web-testing/references/database-testing.md +139 -0
  1102. package/.claude/skills/web-testing/references/e2e-testing-playwright.md +119 -0
  1103. package/.claude/skills/web-testing/references/functional-testing-checklist.md +88 -0
  1104. package/.claude/skills/web-testing/references/interactive-testing-patterns.md +89 -0
  1105. package/.claude/skills/web-testing/references/load-testing-k6.md +93 -0
  1106. package/.claude/skills/web-testing/references/mobile-gesture-testing.md +85 -0
  1107. package/.claude/skills/web-testing/references/performance-core-web-vitals.md +124 -0
  1108. package/.claude/skills/web-testing/references/playwright-component-testing.md +115 -0
  1109. package/.claude/skills/web-testing/references/pre-release-checklist.md +75 -0
  1110. package/.claude/skills/web-testing/references/security-checklists.md +81 -0
  1111. package/.claude/skills/web-testing/references/security-testing-overview.md +92 -0
  1112. package/.claude/skills/web-testing/references/shadow-dom-testing.md +70 -0
  1113. package/.claude/skills/web-testing/references/test-data-management.md +131 -0
  1114. package/.claude/skills/web-testing/references/test-flakiness-mitigation.md +86 -0
  1115. package/.claude/skills/web-testing/references/testing-pyramid-strategy.md +76 -0
  1116. package/.claude/skills/web-testing/references/unit-integration-testing.md +138 -0
  1117. package/.claude/skills/web-testing/references/visual-regression.md +92 -0
  1118. package/.claude/skills/web-testing/references/vulnerability-payloads.md +93 -0
  1119. package/.claude/skills/web-testing/scripts/analyze-test-results.js +280 -0
  1120. package/.claude/skills/web-testing/scripts/init-playwright.js +233 -0
  1121. package/.claude/statusline.cjs +571 -0
  1122. package/.claude/statusline.ps1 +307 -0
  1123. package/.claude/statusline.sh +237 -0
  1124. package/.commitlintrc.json +27 -0
  1125. package/.coverage +0 -0
  1126. package/.env.example +26 -0
  1127. package/.github/workflows/branch-protection.yml +33 -0
  1128. package/.github/workflows/release-beta.yml +63 -0
  1129. package/.github/workflows/release.yml +63 -0
  1130. package/.github/workflows/sync-dev-after-release.yml +32 -0
  1131. package/.github/workflows/sync-main-to-dev.yml +35 -0
  1132. package/.husky/commit-msg +12 -0
  1133. package/.releaserc.beta-config.json +136 -0
  1134. package/.releaserc.cjs +183 -0
  1135. package/.releaserc.production.json +132 -0
  1136. package/.repomixignore +22 -0
  1137. package/AGENTS.md +61 -0
  1138. package/CHANGELOG.md +2928 -0
  1139. package/CLAUDE.md +88 -0
  1140. package/GEMINI.md +75 -0
  1141. package/LICENSE +18 -0
  1142. package/README-MIRROR.md +174 -0
  1143. package/README.md +602 -0
  1144. package/TEST-MANIFEST.md +220 -0
  1145. package/docs/assets/demo-landing-page-2.png +0 -0
  1146. package/docs/assets/demo-landing-page-3.png +0 -0
  1147. package/docs/assets/demo-landing-page.jpg +0 -0
  1148. package/docs/assets/generated_generated_0.png +0 -0
  1149. package/docs/assets/image-generation-test-report.md +223 -0
  1150. package/docs/assets/imagen-correction-summary.md +161 -0
  1151. package/docs/assets/imagen4_generated_1763658214_0.png +0 -0
  1152. package/docs/assets/imagen4_generated_1763658238_0.png +0 -0
  1153. package/docs/assets/imagen4_generated_1763658255_0.png +0 -0
  1154. package/docs/assets/model-support-status.md +338 -0
  1155. package/docs/assets/multimodal-generation-comprehensive-report.md +369 -0
  1156. package/docs/assets/veo-video-generation-test-report.md +139 -0
  1157. package/docs/assets/veo_generated_1763658722.mp4 +0 -0
  1158. package/docs/assets/veo_generated_1763659088.mp4 +0 -0
  1159. package/docs/code-standards.md +946 -0
  1160. package/docs/codebase-summary.md +365 -0
  1161. package/docs/infographics/cpg-marketing-2026-landscape.png +0 -0
  1162. package/docs/infographics/cpg-marketing-2026-vietnam-creative.png +0 -0
  1163. package/docs/infographics/cpg-marketing-2026-vietnam-search.png +0 -0
  1164. package/docs/infographics/cpg-marketing-2026-vietnam-wild.png +0 -0
  1165. package/docs/journals/2025-11-11-planning-skill-never-started.md +86 -0
  1166. package/docs/journals/2025-11-11-windows-statusline-complete.md +71 -0
  1167. package/docs/journals/2025-11-14-aesthetic-skill-ambitious-planning.md +107 -0
  1168. package/docs/journals/2025-11-14-docs-commands-optimization-stuck.md +137 -0
  1169. package/docs/journals/2510181655-massive-skills-integration-technical-debt.md +75 -0
  1170. package/docs/journals/2510181700-obsession-with-conciseness.md +89 -0
  1171. package/docs/journals/2510181710-git-workflow-evolution.md +108 -0
  1172. package/docs/journals/2510181720-release-automation-reality-check.md +134 -0
  1173. package/docs/journals/251106135700-wrong-about-agent-skills.md +184 -0
  1174. package/docs/journals/251212-ck-name-pattern-refactor.md +70 -0
  1175. package/docs/journals/INDEX.md +81 -0
  1176. package/docs/project-overview-pdr.md +585 -0
  1177. package/docs/project-roadmap.md +534 -0
  1178. package/docs/referecences/claude-cli-usage-limits-api.md +522 -0
  1179. package/docs/stlck-installation-guide.md +157 -0
  1180. package/docs/system-architecture.md +1029 -0
  1181. package/guide/COMMANDS.md +403 -0
  1182. package/guide/COMMANDS.yaml +403 -0
  1183. package/guide/ENVIRONMENT_RESOLVER.md +255 -0
  1184. package/guide/SKILLS.md +234 -0
  1185. package/guide/SKILLS.yaml +386 -0
  1186. package/install-stlck.sh +163 -0
  1187. package/package.json +18 -0
  1188. package/plans/templates/bug-fix-template.md +69 -0
  1189. package/plans/templates/feature-implementation-template.md +84 -0
  1190. package/plans/templates/refactor-template.md +82 -0
  1191. package/plans/templates/template-usage-guide.md +58 -0
  1192. package/scripts/commands_data.yaml +363 -0
  1193. package/scripts/generate-opencode.py +914 -0
  1194. package/scripts/generate-release-manifest.cjs +201 -0
  1195. package/scripts/generate_catalogs.py +168 -0
  1196. package/scripts/prepare-release-assets.cjs +158 -0
  1197. package/scripts/send-discord-release.cjs +204 -0
  1198. package/scripts/skills_data.yaml +370 -0
  1199. package/scripts/win_compat.py +57 -0
  1200. package/shader.zip +0 -0
  1201. package/tests/test-scout-block.ps1 +60 -0
  1202. package/tests/test-scout-block.sh +117 -0
@@ -0,0 +1,1295 @@
1
+ # Skills Installation Script for Windows (PowerShell)
2
+ # Installs all dependencies for Claude Code 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
+ # chrome-devtools
648
+ $chromeDevToolsPath = Join-Path $ScriptDir "chrome-devtools\scripts"
649
+ $chromePackageJson = Join-Path $chromeDevToolsPath "package.json"
650
+ if ((Test-Path $chromeDevToolsPath) -and (Test-Path $chromePackageJson)) {
651
+ Write-Info "Installing chrome-devtools dependencies..."
652
+ Push-Location $chromeDevToolsPath
653
+ npm install --quiet
654
+ Pop-Location
655
+ Write-Success "chrome-devtools dependencies installed"
656
+ }
657
+
658
+ # sequential-thinking
659
+ $seqThinkingPath = Join-Path $ScriptDir "sequential-thinking"
660
+ $seqPackageJson = Join-Path $seqThinkingPath "package.json"
661
+ if ((Test-Path $seqThinkingPath) -and (Test-Path $seqPackageJson)) {
662
+ Write-Info "Installing sequential-thinking dependencies..."
663
+ Push-Location $seqThinkingPath
664
+ npm install --quiet
665
+ Pop-Location
666
+ Write-Success "sequential-thinking dependencies installed"
667
+ }
668
+
669
+ # mcp-management
670
+ $mcpManagementPath = Join-Path $ScriptDir "mcp-management\scripts"
671
+ $mcpPackageJson = Join-Path $mcpManagementPath "package.json"
672
+ if ((Test-Path $mcpManagementPath) -and (Test-Path $mcpPackageJson)) {
673
+ Write-Info "Installing mcp-management dependencies..."
674
+ Push-Location $mcpManagementPath
675
+ npm install --quiet
676
+ Pop-Location
677
+ Write-Success "mcp-management dependencies installed"
678
+ }
679
+
680
+ # markdown-novel-viewer (marked, highlight.js, gray-matter)
681
+ $novelViewerPath = Join-Path $ScriptDir "markdown-novel-viewer"
682
+ $novelViewerPackageJson = Join-Path $novelViewerPath "package.json"
683
+ if ((Test-Path $novelViewerPath) -and (Test-Path $novelViewerPackageJson)) {
684
+ Write-Info "Installing markdown-novel-viewer dependencies..."
685
+ Push-Location $novelViewerPath
686
+ npm install --quiet
687
+ Pop-Location
688
+ Write-Success "markdown-novel-viewer dependencies installed"
689
+ }
690
+
691
+ # plans-kanban (gray-matter)
692
+ $plansKanbanPath = Join-Path $ScriptDir "plans-kanban"
693
+ $plansKanbanPackageJson = Join-Path $plansKanbanPath "package.json"
694
+ if ((Test-Path $plansKanbanPath) -and (Test-Path $plansKanbanPackageJson)) {
695
+ Write-Info "Installing plans-kanban dependencies..."
696
+ Push-Location $plansKanbanPath
697
+ npm install --quiet
698
+ Pop-Location
699
+ Write-Success "plans-kanban dependencies installed"
700
+ }
701
+
702
+ # Optional: Shopify CLI (ask user unless auto-confirming)
703
+ $shopifyPath = Join-Path $ScriptDir "shopify"
704
+ if (Test-Path $shopifyPath) {
705
+ if ($Y) {
706
+ Write-Info "Skipping Shopify CLI installation (optional, use -Y to install all)"
707
+ } else {
708
+ $confirmation = Get-UserInput -Prompt "Install Shopify CLI for Shopify skill? (y/N)" -Default "N"
709
+ if ($confirmation -eq 'y' -or $confirmation -eq 'Y') {
710
+ Write-Info "Installing Shopify CLI..."
711
+ npm install -g @shopify/cli @shopify/theme
712
+ Write-Success "Shopify CLI installed"
713
+ }
714
+ }
715
+ }
716
+ }
717
+
718
+ # Try pip install with wheel-first fallback
719
+ # Returns $true if successful, $false otherwise
720
+ function Try-PipInstall {
721
+ param(
722
+ [string]$PackageSpec,
723
+ [string]$LogFile
724
+ )
725
+
726
+ $packageName = ($PackageSpec -split '[=<>]')[0]
727
+
728
+ # Phase 1: Try with prefer-binary (wheels first)
729
+ $output = pip install $PackageSpec --prefer-binary 2>&1
730
+ $output | Out-File -Append $LogFile -Encoding UTF8
731
+ if ($LASTEXITCODE -eq 0) {
732
+ return $true
733
+ }
734
+
735
+ # Phase 2: Check if we can build from source (uses vswhere for proper VS detection)
736
+ if (-not (Test-VSBuildTools)) {
737
+ Write-Warning "${packageName}: No wheel available, no build tools detected"
738
+ Write-Info "Install Visual Studio Build Tools from: https://visualstudio.microsoft.com/visual-cpp-build-tools/"
739
+ return $false
740
+ }
741
+
742
+ # Phase 3: Try source build
743
+ Write-Info "Trying source build for $packageName..."
744
+ $output = pip install $PackageSpec --no-binary $packageName 2>&1
745
+ $output | Out-File -Append $LogFile -Encoding UTF8
746
+ if ($LASTEXITCODE -eq 0) {
747
+ Write-Success "$packageName installed (source build)"
748
+ return $true
749
+ }
750
+
751
+ Write-Error "${packageName}: Both wheel and source build failed"
752
+ return $false
753
+ }
754
+
755
+ # Setup Python virtual environment
756
+ function Setup-PythonEnv {
757
+ Write-Header "Setting Up Python Environment"
758
+
759
+ # Suppress pip version check notices that trigger PowerShell NativeCommandError
760
+ # Set early to affect all pip operations in this function
761
+ $env:PIP_DISABLE_PIP_VERSION_CHECK = "1"
762
+
763
+ # Track successful and failed installations
764
+ $successfulSkills = [System.Collections.ArrayList]::new()
765
+ $failedSkills = [System.Collections.ArrayList]::new()
766
+
767
+ # Find Python using robust detection (handles Windows Store aliases)
768
+ $pythonInfo = Find-Python
769
+ if ($pythonInfo) {
770
+ Write-Success "Python found ($($pythonInfo.Version))"
771
+ Write-Info "Using: $($pythonInfo.Command)"
772
+ $pythonCmd = $pythonInfo.Command
773
+ } else {
774
+ Write-Error "Python not found or only Windows Store alias detected."
775
+ Write-Info "Please install Python 3.7+ from: https://www.python.org/downloads/"
776
+ Write-Info "Make sure to check 'Add Python to PATH' during installation"
777
+ Track-Failure -Category "critical" -Name "Python" -Reason "not installed or Store alias"
778
+ return # Don't exit, return and let final report show
779
+ }
780
+
781
+ # Create virtual environment
782
+ if (Test-Path $VenvDir) {
783
+ # Verify venv is valid
784
+ $activateScript = Join-Path $VenvDir "Scripts\Activate.ps1"
785
+ $pythonExe = Join-Path $VenvDir "Scripts\python.exe"
786
+ if ((Test-Path $activateScript) -and (Test-Path $pythonExe)) {
787
+ Write-Success "Virtual environment already exists at $VenvDir"
788
+ } else {
789
+ Write-Warning "Virtual environment is corrupted. Recreating..."
790
+ Remove-Item -Recurse -Force $VenvDir
791
+ & $pythonCmd -m venv $VenvDir
792
+ Write-Success "Virtual environment recreated"
793
+ }
794
+ } else {
795
+ Write-Info "Creating virtual environment at $VenvDir..."
796
+ & $pythonCmd -m venv $VenvDir
797
+ if ($LASTEXITCODE -eq 0) {
798
+ Write-Success "Virtual environment created"
799
+ } else {
800
+ Write-Error "Failed to create virtual environment"
801
+ Track-Failure -Category "critical" -Name "Python venv" -Reason "venv creation failed"
802
+ return
803
+ }
804
+ }
805
+
806
+ # Create log directory
807
+ if (-not (Test-Path $LogDir)) {
808
+ New-Item -ItemType Directory -Path $LogDir -Force | Out-Null
809
+ }
810
+
811
+ # Activate and install packages
812
+ Write-Info "Activating virtual environment..."
813
+ $activateScript = Join-Path $VenvDir "Scripts\Activate.ps1"
814
+
815
+ if (Test-Path $activateScript) {
816
+ & $activateScript
817
+ } else {
818
+ Write-Error "Failed to find activation script at $activateScript"
819
+ Track-Failure -Category "critical" -Name "Python venv" -Reason "activation failed"
820
+ return
821
+ }
822
+
823
+ # Upgrade pip with prefer-binary
824
+ Write-Info "Upgrading pip..."
825
+ $pipLogFile = Join-Path $LogDir "pip-upgrade.log"
826
+ $venvPython = Join-Path $VenvDir "Scripts\python.exe"
827
+ & $venvPython -m pip install --upgrade pip --prefer-binary 2>&1 | Tee-Object -FilePath $pipLogFile
828
+ if ($LASTEXITCODE -eq 0) {
829
+ Write-Success "pip upgraded successfully"
830
+ } else {
831
+ Write-Warning "pip upgrade failed (continuing anyway)"
832
+ Write-Info "See log: $pipLogFile"
833
+ }
834
+
835
+ # Install dependencies from all skills' requirements.txt files
836
+ Write-Info "Installing Python dependencies from all skills..."
837
+
838
+ $installedCount = 0
839
+ Get-ChildItem -Path $ScriptDir -Directory | ForEach-Object {
840
+ $skillName = $_.Name
841
+
842
+ # Skip .venv and document-skills
843
+ if ($skillName -eq ".venv" -or $skillName -eq "document-skills") {
844
+ return
845
+ }
846
+
847
+ # Install main requirements.txt with wheel-first approach
848
+ $requirementsPath = Join-Path $_.FullName "scripts\requirements.txt"
849
+ if (Test-Path $requirementsPath) {
850
+ $skillLogFile = Join-Path $LogDir "install-${skillName}.log"
851
+ Write-Info "Installing $skillName dependencies..."
852
+
853
+ # Read requirements and install one-by-one for granular tracking
854
+ $pkgSuccess = 0
855
+ $pkgFail = 0
856
+ Get-Content $requirementsPath | ForEach-Object {
857
+ $line = $_.Trim()
858
+ # Skip comments and empty lines
859
+ if ($line -match '^#' -or [string]::IsNullOrWhiteSpace($line)) {
860
+ return
861
+ }
862
+
863
+ # Strip inline comments (e.g., "package>=1.0 # comment" -> "package>=1.0")
864
+ $line = ($line -split '#')[0].Trim()
865
+ if ([string]::IsNullOrWhiteSpace($line)) {
866
+ return
867
+ }
868
+
869
+ if (Try-PipInstall -PackageSpec $line -LogFile $skillLogFile) {
870
+ $pkgSuccess++
871
+ } else {
872
+ $pkgFail++
873
+ Track-Failure -Category "optional" -Name "${skillName}:${line}" -Reason "Package install failed"
874
+ }
875
+ }
876
+
877
+ if ($pkgFail -eq 0) {
878
+ Write-Success "${skillName}: all $pkgSuccess packages installed"
879
+ Track-Success -Category "optional" -Name $skillName
880
+ [void]$successfulSkills.Add($skillName)
881
+ $installedCount++
882
+ } else {
883
+ Write-Warning "${skillName}: $pkgSuccess installed, $pkgFail failed"
884
+ [void]$failedSkills.Add($skillName)
885
+ }
886
+ }
887
+
888
+ # Install test requirements.txt
889
+ $testRequirementsPath = Join-Path $_.FullName "scripts\tests\requirements.txt"
890
+ if (Test-Path $testRequirementsPath) {
891
+ $testLogFile = Join-Path $LogDir "install-${skillName}-tests.log"
892
+ Write-Info "Installing $skillName test dependencies..."
893
+
894
+ pip install -r $testRequirementsPath --prefer-binary 2>&1 | Tee-Object -FilePath $testLogFile
895
+ if ($LASTEXITCODE -eq 0) {
896
+ Write-Success "$skillName test dependencies installed successfully"
897
+ } else {
898
+ Write-Warning "$skillName test dependencies failed to install"
899
+ }
900
+ }
901
+ }
902
+
903
+ # Install .claude/scripts requirements (contains pyyaml for generate_catalogs.py)
904
+ $scriptsReqPath = Join-Path $ScriptDir "..\scripts\requirements.txt"
905
+ if (Test-Path $scriptsReqPath) {
906
+ $scriptsLogFile = Join-Path $LogDir "install-scripts.log"
907
+ Write-Info "Installing .claude/scripts dependencies..."
908
+
909
+ $pkgSuccess = 0
910
+ $pkgFail = 0
911
+ Get-Content $scriptsReqPath | ForEach-Object {
912
+ $line = $_.Trim()
913
+ if ($line -match '^#' -or [string]::IsNullOrWhiteSpace($line)) {
914
+ return
915
+ }
916
+ $line = ($line -split '#')[0].Trim()
917
+ if ([string]::IsNullOrWhiteSpace($line)) {
918
+ return
919
+ }
920
+
921
+ if (Try-PipInstall -PackageSpec $line -LogFile $scriptsLogFile) {
922
+ $pkgSuccess++
923
+ } else {
924
+ $pkgFail++
925
+ Track-Failure -Category "optional" -Name "scripts:${line}" -Reason "Package install failed"
926
+ }
927
+ }
928
+
929
+ if ($pkgFail -eq 0) {
930
+ Write-Success ".claude/scripts: all $pkgSuccess packages installed"
931
+ Track-Success -Category "optional" -Name "scripts"
932
+ } else {
933
+ Write-Warning ".claude/scripts: $pkgSuccess installed, $pkgFail failed"
934
+ }
935
+ }
936
+
937
+ # Print installation summary (brief - final report comes later)
938
+ Write-Header "Python Dependencies Installation Summary"
939
+
940
+ if ($successfulSkills.Count -gt 0) {
941
+ Write-Success "Successfully installed $($successfulSkills.Count) skill(s)"
942
+ }
943
+
944
+ if ($failedSkills.Count -gt 0) {
945
+ Write-Warning "$($failedSkills.Count) skill(s) had package failures (see final report)"
946
+ } elseif ($successfulSkills.Count -eq 0) {
947
+ Write-Warning "No skill requirements.txt files found"
948
+ } else {
949
+ Write-Success "All Python dependencies installed successfully"
950
+ }
951
+
952
+ deactivate
953
+ }
954
+
955
+ # Verify installations
956
+ function Test-Installations {
957
+ Write-Header "Verifying Installations"
958
+
959
+ $tools = @{
960
+ "ffmpeg" = "FFmpeg"
961
+ "magick" = "ImageMagick"
962
+ "node" = "Node.js"
963
+ "npm" = "npm"
964
+ }
965
+
966
+ foreach ($tool in $tools.GetEnumerator()) {
967
+ if (Test-Command $tool.Key) {
968
+ Write-Success "$($tool.Value) is available"
969
+ } else {
970
+ Write-Warning "$($tool.Value) is not available"
971
+ }
972
+ }
973
+
974
+ $npmPackages = @("rmbg", "pnpm", "wrangler", "repomix")
975
+ foreach ($package in $npmPackages) {
976
+ if (Test-Command $package) {
977
+ Write-Success "$package CLI is available"
978
+ } else {
979
+ Write-Warning "$package CLI is not available"
980
+ }
981
+ }
982
+
983
+ # Check Python packages
984
+ if (Test-Path $VenvDir) {
985
+ $activateScript = Join-Path $VenvDir "Scripts\Activate.ps1"
986
+ & $activateScript
987
+
988
+ try {
989
+ python -c "import google.genai" 2>$null
990
+ if ($LASTEXITCODE -eq 0) {
991
+ Write-Success "google-genai Python package is available"
992
+ } else {
993
+ Write-Warning "google-genai Python package is not available"
994
+ }
995
+ } catch {
996
+ Write-Warning "google-genai Python package is not available"
997
+ }
998
+
999
+ deactivate
1000
+ }
1001
+ }
1002
+
1003
+ # ============================================================================
1004
+ # Final Report Functions
1005
+ # ============================================================================
1006
+
1007
+ function Get-RemediationCommands {
1008
+ $hasSudoSkipped = $Script:SKIPPED_ADMIN.Count -gt 0
1009
+ $hasPythonFailed = $Script:FAILED_OPTIONAL.Count -gt 0
1010
+
1011
+ if (-not $hasSudoSkipped -and -not $hasPythonFailed) {
1012
+ return
1013
+ }
1014
+
1015
+ Write-Host ""
1016
+ Write-Host "---------------------------------------------------" -ForegroundColor Blue
1017
+ Write-Host "Manual Installation Commands:" -ForegroundColor Blue
1018
+ Write-Host "---------------------------------------------------" -ForegroundColor Blue
1019
+ Write-Host ""
1020
+
1021
+ if ($hasSudoSkipped) {
1022
+ Write-Host "# System packages (use winget or scoop):"
1023
+ foreach ($item in $Script:SKIPPED_ADMIN) {
1024
+ $pkg = ($item -split ':')[0]
1025
+ switch ($pkg) {
1026
+ "FFmpeg" { Write-Host "winget install Gyan.FFmpeg" }
1027
+ "ImageMagick" { Write-Host "winget install ImageMagick.ImageMagick" }
1028
+ default { Write-Host "# ${pkg}: see documentation" }
1029
+ }
1030
+ }
1031
+ Write-Host ""
1032
+ }
1033
+
1034
+ if ($hasPythonFailed) {
1035
+ Write-Host "# Python packages (may require build tools):"
1036
+ Write-Host "# Install Visual Studio Build Tools: https://visualstudio.microsoft.com/visual-cpp-build-tools/"
1037
+ Write-Host ".\.claude\skills\.venv\Scripts\Activate.ps1"
1038
+
1039
+ foreach ($item in $Script:FAILED_OPTIONAL) {
1040
+ $pkg = ($item -split ':')[0]
1041
+ # Extract package name from skill:package format
1042
+ if ($pkg -match ':') {
1043
+ $pkg = ($pkg -split ':')[1]
1044
+ }
1045
+ Write-Host "pip install $pkg"
1046
+ }
1047
+ Write-Host ""
1048
+ }
1049
+ }
1050
+
1051
+ function Write-FinalReport {
1052
+ Write-Host ""
1053
+ Write-Host "===================================================" -ForegroundColor Blue
1054
+ Write-Host " Installation Report" -ForegroundColor Blue
1055
+ Write-Host "===================================================" -ForegroundColor Blue
1056
+ Write-Host ""
1057
+
1058
+ # Installed section
1059
+ $installedCount = $Script:INSTALLED_CRITICAL.Count + $Script:INSTALLED_OPTIONAL.Count
1060
+ if ($installedCount -gt 0) {
1061
+ Write-Host "Installed ($installedCount):" -ForegroundColor Green
1062
+ foreach ($item in $Script:INSTALLED_CRITICAL) {
1063
+ Write-Host " [OK] $item" -ForegroundColor Green
1064
+ }
1065
+ foreach ($item in $Script:INSTALLED_OPTIONAL) {
1066
+ Write-Host " [OK] $item" -ForegroundColor Green
1067
+ }
1068
+ Write-Host ""
1069
+ }
1070
+
1071
+ # Skipped section
1072
+ if ($Script:SKIPPED_ADMIN.Count -gt 0) {
1073
+ Write-Host "Skipped ($($Script:SKIPPED_ADMIN.Count)):" -ForegroundColor Yellow
1074
+ foreach ($item in $Script:SKIPPED_ADMIN) {
1075
+ $name = ($item -split ':')[0]
1076
+ $reason = ($item -split ':')[1]
1077
+ Write-Host " [~] $name ($reason)" -ForegroundColor Yellow
1078
+ }
1079
+ Write-Host ""
1080
+ }
1081
+
1082
+ # Degraded/Failed section
1083
+ if ($Script:FAILED_OPTIONAL.Count -gt 0) {
1084
+ Write-Host "Degraded ($($Script:FAILED_OPTIONAL.Count)):" -ForegroundColor Red
1085
+ foreach ($item in $Script:FAILED_OPTIONAL) {
1086
+ $name = ($item -split ':')[0]
1087
+ $reason = ($item -split ':')[1]
1088
+ Write-Host " [!] $name ($reason)" -ForegroundColor Red
1089
+ }
1090
+ Write-Host ""
1091
+ }
1092
+
1093
+ # Remediation commands
1094
+ Get-RemediationCommands
1095
+
1096
+ # Exit status line
1097
+ Write-Host "===================================================" -ForegroundColor Blue
1098
+ switch ($Script:FINAL_EXIT_CODE) {
1099
+ 0 { Write-Host " Exit: 0 (success - all dependencies installed)" -ForegroundColor Green }
1100
+ 1 { Write-Host " Exit: 1 (failed - critical dependencies missing)" -ForegroundColor Red }
1101
+ 2 { Write-Host " Exit: 2 (partial - some optional deps failed)" -ForegroundColor Yellow }
1102
+ }
1103
+ Write-Host "===================================================" -ForegroundColor Blue
1104
+ Write-Host ""
1105
+ }
1106
+
1107
+ function Write-ErrorSummary {
1108
+ # Only write if there are failures
1109
+ if ($Script:FINAL_EXIT_CODE -eq 0) {
1110
+ return
1111
+ }
1112
+
1113
+ # Build JSON structure
1114
+ $summary = @{
1115
+ exit_code = $Script:FINAL_EXIT_CODE
1116
+ timestamp = (Get-Date -Format "yyyy-MM-ddTHH:mm:ssZ")
1117
+ critical_failures = @()
1118
+ optional_failures = @($Script:FAILED_OPTIONAL)
1119
+ skipped = @($Script:SKIPPED_ADMIN)
1120
+ remediation = @{
1121
+ winget_packages = "winget install Gyan.FFmpeg ImageMagick.ImageMagick"
1122
+ build_tools = "https://visualstudio.microsoft.com/visual-cpp-build-tools/"
1123
+ pip_retry = ".\.claude\skills\.venv\Scripts\Activate.ps1; pip install <package>"
1124
+ }
1125
+ }
1126
+
1127
+ # Use Out-File with UTF8NoBOM for proper JSON encoding (PS 6+) or UTF8 (PS 5)
1128
+ $jsonContent = $summary | ConvertTo-Json -Depth 5
1129
+ if ($PSVersionTable.PSVersion.Major -ge 6) {
1130
+ $jsonContent | Out-File -FilePath $ErrorSummaryFile -Encoding utf8NoBOM -NoNewline
1131
+ } else {
1132
+ # PowerShell 5.x: Use .NET to write UTF-8 without BOM
1133
+ [System.IO.File]::WriteAllText($ErrorSummaryFile, $jsonContent, [System.Text.UTF8Encoding]::new($false))
1134
+ }
1135
+ Write-Info "Error summary written to: $ErrorSummaryFile"
1136
+ }
1137
+
1138
+ # Print usage instructions (now just brief tips)
1139
+ function Show-Usage {
1140
+ Write-Host "To use the Python virtual environment:" -ForegroundColor Green
1141
+ Write-Host " .\.claude\skills\.venv\Scripts\Activate.ps1"
1142
+ Write-Host ""
1143
+ Write-Host "For more information, see:" -ForegroundColor Blue
1144
+ Write-Host " .claude\skills\INSTALLATION.md"
1145
+ Write-Host ""
1146
+ }
1147
+
1148
+ # Show help
1149
+ function Show-Help {
1150
+ Write-Host "Claude Code Skills Installation Script for Windows"
1151
+ Write-Host ""
1152
+ Write-Host "Usage:"
1153
+ Write-Host " .\install.ps1 [Options]"
1154
+ Write-Host ""
1155
+ Write-Host "Options:"
1156
+ Write-Host " -Y Skip all prompts and auto-confirm installation"
1157
+ Write-Host " -WithAdmin Use admin-requiring package managers (chocolatey)"
1158
+ Write-Host " -Resume Resume from previous interrupted installation"
1159
+ Write-Host " -RetryFailed Retry previously failed packages"
1160
+ Write-Host " -SkipChocolatey Skip Chocolatey installation (uses winget/scoop instead)"
1161
+ Write-Host " -PreferPackageManager <PM> Prefer specific package manager (auto|winget|scoop|choco)"
1162
+ Write-Host " Falls back to auto-detection if preferred PM unavailable"
1163
+ Write-Host " -Help Show this help message"
1164
+ Write-Host ""
1165
+ Write-Host "Exit Codes:"
1166
+ Write-Host " 0 Success (all dependencies installed)"
1167
+ Write-Host " 1 Fatal error (critical dependencies missing)"
1168
+ Write-Host " 2 Partial success (some optional deps failed)"
1169
+ Write-Host ""
1170
+ Write-Host "Examples:"
1171
+ Write-Host " .\install.ps1 # Normal install (auto-detect PM)"
1172
+ Write-Host " .\install.ps1 -PreferPackageManager scoop # Prefer scoop, fallback to auto"
1173
+ Write-Host " .\install.ps1 -PreferPackageManager winget # Use winget explicitly"
1174
+ Write-Host " .\install.ps1 -Y # Non-interactive"
1175
+ Write-Host " .\install.ps1 -WithAdmin # Use chocolatey if admin"
1176
+ Write-Host " .\install.ps1 -Resume # Resume interrupted install"
1177
+ Write-Host ""
1178
+ Write-Host "Package Manager Priority:"
1179
+ Write-Host " 1. winget (recommended, no admin required)"
1180
+ Write-Host " 2. scoop (no admin required)"
1181
+ Write-Host " 3. chocolatey (requires admin + -WithAdmin flag)"
1182
+ Write-Host ""
1183
+ Write-Host "Requirements:"
1184
+ Write-Host " - PowerShell 5.1 or higher"
1185
+ Write-Host " - One of: winget, scoop, or chocolatey (admin)"
1186
+ Write-Host ""
1187
+ }
1188
+
1189
+ # Main installation flow
1190
+ function Main {
1191
+ if ($Help) {
1192
+ Show-Help
1193
+ exit 0
1194
+ }
1195
+
1196
+ Write-Host "" # Just add spacing, don't clear terminal
1197
+ Write-Header "Claude Code Skills Installation (Windows)"
1198
+ Write-Info "Script directory: $ScriptDir"
1199
+
1200
+ # Store preference in script scope for functions to access
1201
+ $Script:PreferPackageManager = $PreferPackageManager
1202
+
1203
+ # Show detected package manager
1204
+ $pm = Get-PackageManager -Preference $PreferPackageManager
1205
+ if ($pm) {
1206
+ Write-Success "Detected package manager: $pm"
1207
+ } else {
1208
+ Write-Warning "No package manager detected (winget, scoop, or choco)"
1209
+ Write-Info "Install winget: https://aka.ms/getwinget"
1210
+ }
1211
+
1212
+ # Show mode info
1213
+ if ($PreferPackageManager -ne "auto") {
1214
+ Write-Info "Mode: prefer $PreferPackageManager (soft fallback to auto if unavailable)"
1215
+ }
1216
+ if ($WithAdmin) {
1217
+ Write-Info "Mode: with admin (chocolatey enabled)"
1218
+ } else {
1219
+ Write-Info "Mode: without admin (system packages may be skipped)"
1220
+ }
1221
+ if ($Resume) {
1222
+ Write-Info "Mode: resuming previous installation"
1223
+ }
1224
+ Write-Host ""
1225
+
1226
+ # Confirm installation (skip if -Y flag or NON_INTERACTIVE env is set)
1227
+ if (-not $Y) {
1228
+ $confirmation = Get-UserInput -Prompt "This will install system packages and Node.js dependencies. Continue? (y/N)" -Default "N"
1229
+ if ($confirmation -ne 'y' -and $confirmation -ne 'Y') {
1230
+ Write-Warning "Installation cancelled"
1231
+ exit 0
1232
+ }
1233
+ } else {
1234
+ Write-Info "Auto-confirming installation (-Y flag or NON_INTERACTIVE mode)"
1235
+ }
1236
+
1237
+ # Initialize state tracking
1238
+ Initialize-State
1239
+
1240
+ # Phase 1: Chocolatey (optional)
1241
+ if (-not (Test-PhaseDone "chocolatey")) {
1242
+ Update-Phase "chocolatey" "running"
1243
+ $null = Install-Chocolatey
1244
+ Update-Phase "chocolatey" "done"
1245
+ }
1246
+
1247
+ # Phase 2: System deps
1248
+ if (Test-PhaseDone "system_deps") {
1249
+ Write-Success "System deps: already processed (resume)"
1250
+ } else {
1251
+ Update-Phase "system_deps" "running"
1252
+ Install-SystemDeps
1253
+ Update-Phase "system_deps" "done"
1254
+ }
1255
+
1256
+ # Phase 3: Node deps
1257
+ if (Test-PhaseDone "node_deps") {
1258
+ Write-Success "Node deps: already installed (resume)"
1259
+ } else {
1260
+ Update-Phase "node_deps" "running"
1261
+ Install-NodeDeps
1262
+ Update-Phase "node_deps" "done"
1263
+ }
1264
+
1265
+ # Phase 4: Python env
1266
+ if (Test-PhaseDone "python_env") {
1267
+ Write-Success "Python env: already set up (resume)"
1268
+ } else {
1269
+ Update-Phase "python_env" "running"
1270
+ Setup-PythonEnv
1271
+ Update-Phase "python_env" "done"
1272
+ }
1273
+
1274
+ # Phase 5: Verify
1275
+ Update-Phase "verify" "running"
1276
+ Test-Installations
1277
+ Update-Phase "verify" "done"
1278
+
1279
+ # Print final report with all tracking info
1280
+ Write-FinalReport
1281
+ Show-Usage
1282
+
1283
+ # Write error summary for CLI to parse
1284
+ Write-ErrorSummary
1285
+
1286
+ # Clean state on complete success
1287
+ if ($Script:FINAL_EXIT_CODE -eq 0) {
1288
+ Remove-StateFile
1289
+ }
1290
+
1291
+ exit $Script:FINAL_EXIT_CODE
1292
+ }
1293
+
1294
+ # Run main function
1295
+ Main