@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,1339 @@
1
+ #!/bin/bash
2
+ # Skills Installation Script for Linux/macOS
3
+ # Installs all dependencies for Claude Code skills
4
+ #
5
+ # Exit codes (rustup model):
6
+ # 0 = Success (full or partial)
7
+ # 1 = Fatal error (no Python, broken venv)
8
+ # 2 = Partial success (some optional deps failed)
9
+
10
+ # set -e removed - we handle errors per-phase
11
+
12
+ # Parse command line arguments
13
+ SKIP_CONFIRM=false
14
+ WITH_SUDO=false
15
+ RESUME_MODE=false
16
+ RETRY_FAILED=false
17
+ while [[ "$#" -gt 0 ]]; do
18
+ case $1 in
19
+ -y|--yes) SKIP_CONFIRM=true ;;
20
+ --with-sudo) WITH_SUDO=true ;;
21
+ --resume) RESUME_MODE=true ;;
22
+ --retry-failed) RETRY_FAILED=true ;;
23
+ *) echo "Unknown parameter: $1"; exit 1 ;;
24
+ esac
25
+ shift
26
+ done
27
+
28
+ # Check for NON_INTERACTIVE environment variable
29
+ if [[ -n "${NON_INTERACTIVE}" ]]; then
30
+ SKIP_CONFIRM=true
31
+ fi
32
+
33
+ # Colors for output
34
+ RED='\033[0;31m'
35
+ GREEN='\033[0;32m'
36
+ YELLOW='\033[1;33m'
37
+ BLUE='\033[0;34m'
38
+ NC='\033[0m' # No Color
39
+
40
+ # Configuration
41
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
42
+ VENV_DIR="$SCRIPT_DIR/.venv"
43
+ STATE_FILE="$SCRIPT_DIR/.install-state.json"
44
+ LOG_DIR="$VENV_DIR/logs"
45
+
46
+ # Installation tracking arrays (Bash 3.2+ compatible - indexed arrays only)
47
+ declare -a INSTALLED_CRITICAL=()
48
+ declare -a INSTALLED_OPTIONAL=()
49
+ declare -a FAILED_OPTIONAL=()
50
+ declare -a SKIPPED_SUDO=()
51
+ FINAL_EXIT_CODE=0
52
+
53
+ # Detect OS (including WSL and Windows shells)
54
+ detect_os() {
55
+ if [[ "$OSTYPE" == "darwin"* ]]; then
56
+ echo "macos"
57
+ elif [[ "$OSTYPE" == "linux-gnu"* ]] || [[ "$OSTYPE" == "linux"* ]]; then
58
+ # Check for WSL
59
+ if [[ -f /proc/version ]] && grep -qi microsoft /proc/version 2>/dev/null; then
60
+ echo "wsl"
61
+ else
62
+ echo "linux"
63
+ fi
64
+ elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "mingw"* ]]; then
65
+ echo "msys" # Git Bash / MSYS2
66
+ elif [[ "$OSTYPE" == "cygwin" ]]; then
67
+ echo "cygwin"
68
+ else
69
+ echo "unknown"
70
+ fi
71
+ }
72
+
73
+ # Detect Linux distribution (for package manager selection)
74
+ detect_distro() {
75
+ # WSL uses the underlying Linux distro
76
+ if [[ "$OS" != "linux" ]] && [[ "$OS" != "wsl" ]]; then
77
+ echo "none"
78
+ return
79
+ fi
80
+
81
+ # Alpine detection (check first - most specific)
82
+ if [[ -f /etc/alpine-release ]]; then
83
+ echo "alpine"
84
+ # Arch Linux detection
85
+ elif [[ -f /etc/arch-release ]] || command_exists pacman; then
86
+ echo "arch"
87
+ # Debian/Ubuntu detection
88
+ elif command_exists apt-get; then
89
+ echo "debian"
90
+ # RHEL/CentOS/Fedora detection
91
+ elif command_exists dnf; then
92
+ echo "redhat"
93
+ elif command_exists yum; then
94
+ echo "redhat"
95
+ else
96
+ echo "unknown"
97
+ fi
98
+ }
99
+
100
+ # Package manager abstraction - update package lists
101
+ pkg_update() {
102
+ case "$DISTRO" in
103
+ alpine)
104
+ apk update
105
+ ;;
106
+ arch)
107
+ pacman -Sy
108
+ ;;
109
+ debian)
110
+ apt-get update -qq
111
+ ;;
112
+ redhat)
113
+ dnf check-update || true
114
+ ;;
115
+ *)
116
+ print_warning "Unknown distro, skipping package update"
117
+ ;;
118
+ esac
119
+ }
120
+
121
+ # Package manager abstraction - install package
122
+ # Usage: pkg_install <package_name>
123
+ pkg_install() {
124
+ local package_name="$1"
125
+
126
+ case "$DISTRO" in
127
+ alpine)
128
+ apk add --no-cache "$package_name"
129
+ ;;
130
+ arch)
131
+ pacman -S --noconfirm "$package_name"
132
+ ;;
133
+ debian)
134
+ apt-get install -y "$package_name"
135
+ ;;
136
+ redhat)
137
+ dnf install -y "$package_name"
138
+ ;;
139
+ *)
140
+ print_warning "Unknown distro, cannot install $package_name"
141
+ return 1
142
+ ;;
143
+ esac
144
+ }
145
+
146
+ # Print functions (must be defined before check_bash_version)
147
+ print_header() {
148
+ echo -e "\n${BLUE}===================================================${NC}"
149
+ echo -e "${BLUE}$1${NC}"
150
+ echo -e "${BLUE}===================================================${NC}\n"
151
+ }
152
+
153
+ print_success() {
154
+ echo -e "${GREEN}✓${NC} $1"
155
+ }
156
+
157
+ print_warning() {
158
+ echo -e "${YELLOW}⚠${NC} $1"
159
+ }
160
+
161
+ print_error() {
162
+ echo -e "${RED}✗${NC} $1"
163
+ }
164
+
165
+ print_info() {
166
+ echo -e "${BLUE}ℹ${NC} $1"
167
+ }
168
+
169
+ # Check Bash version (3.2+ required for compatibility)
170
+ check_bash_version() {
171
+ # Get major version number
172
+ bash_major="${BASH_VERSINFO[0]}"
173
+
174
+ if [ "$bash_major" -lt 3 ]; then
175
+ print_error "Bash 3.0+ required (found Bash $BASH_VERSION)"
176
+ print_info "Please upgrade Bash and re-run this script"
177
+ exit 1
178
+ fi
179
+
180
+ if [ "$bash_major" -lt 4 ]; then
181
+ print_warning "Bash 3.x detected (Bash 4+ recommended)"
182
+
183
+ if [[ "$OSTYPE" == "darwin"* ]]; then
184
+ print_info "macOS ships with Bash 3.2 by default"
185
+ print_info "For better compatibility: brew install bash"
186
+ print_info "Then use: /usr/local/bin/bash install.sh"
187
+ fi
188
+
189
+ print_info "Continuing with compatibility mode..."
190
+ fi
191
+ }
192
+
193
+ OS=$(detect_os)
194
+ check_bash_version
195
+
196
+ # Check if command exists
197
+ command_exists() {
198
+ command -v "$1" >/dev/null 2>&1
199
+ }
200
+
201
+ # Initialize distro detection (after command_exists is defined)
202
+ DISTRO=$(detect_distro)
203
+
204
+ # ============================================================================
205
+ # Installation Tracking Functions
206
+ # ============================================================================
207
+
208
+ track_success() {
209
+ local category="$1" name="$2"
210
+ if [[ "$category" == "critical" ]]; then
211
+ INSTALLED_CRITICAL+=("$name")
212
+ else
213
+ INSTALLED_OPTIONAL+=("$name")
214
+ fi
215
+ }
216
+
217
+ track_failure() {
218
+ local category="$1" name="$2" reason="$3"
219
+ if [[ "$category" == "critical" ]]; then
220
+ FINAL_EXIT_CODE=1
221
+ else
222
+ FAILED_OPTIONAL+=("$name: $reason")
223
+ [[ "$FINAL_EXIT_CODE" == "0" ]] && FINAL_EXIT_CODE=2
224
+ fi
225
+ }
226
+
227
+ track_skipped() {
228
+ local name="$1" reason="$2"
229
+ SKIPPED_SUDO+=("$name: $reason")
230
+ }
231
+
232
+ # ============================================================================
233
+ # State Persistence Functions
234
+ # ============================================================================
235
+
236
+ # Initialize or load state
237
+ init_state() {
238
+ if [[ "$RESUME_MODE" == "true" ]] && [[ -f "$STATE_FILE" ]]; then
239
+ print_info "Resuming from previous installation..."
240
+ return 0
241
+ fi
242
+
243
+ # Create fresh state
244
+ cat > "$STATE_FILE" << EOF
245
+ {
246
+ "version": 1,
247
+ "started_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
248
+ "last_updated": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
249
+ "phases": {
250
+ "system_deps": "pending",
251
+ "node_deps": "pending",
252
+ "python_env": "pending",
253
+ "verify": "pending"
254
+ },
255
+ "packages": {
256
+ "installed": [],
257
+ "failed": [],
258
+ "skipped": []
259
+ }
260
+ }
261
+ EOF
262
+ }
263
+
264
+ # Update phase status
265
+ update_phase() {
266
+ local phase="$1" status="$2"
267
+ if [[ ! -f "$STATE_FILE" ]]; then
268
+ return 0
269
+ fi
270
+ local temp_file="$STATE_FILE.tmp"
271
+
272
+ # Simple sed replacement (jq not required)
273
+ sed "s/\"$phase\": \"[^\"]*\"/\"$phase\": \"$status\"/" "$STATE_FILE" > "$temp_file"
274
+ mv "$temp_file" "$STATE_FILE"
275
+
276
+ # Update timestamp
277
+ sed "s/\"last_updated\": \"[^\"]*\"/\"last_updated\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"/" "$STATE_FILE" > "$temp_file"
278
+ mv "$temp_file" "$STATE_FILE"
279
+ }
280
+
281
+ # Check if phase is already done (for resume)
282
+ phase_done() {
283
+ local phase="$1"
284
+ grep -q "\"$phase\": \"done\"" "$STATE_FILE" 2>/dev/null
285
+ }
286
+
287
+ # Clean state file (on complete success)
288
+ clean_state() {
289
+ if [[ -f "$STATE_FILE" ]]; then
290
+ rm -f "$STATE_FILE"
291
+ print_info "Installation state cleaned (success)"
292
+ fi
293
+ }
294
+
295
+ # ============================================================================
296
+ # Build Tools Detection
297
+ # ============================================================================
298
+
299
+ # Check if system has C build tools for compiling Python packages
300
+ has_build_tools() {
301
+ if command_exists gcc || command_exists clang; then
302
+ if [[ "$OS" == "linux" ]]; then
303
+ # Check for Python dev headers
304
+ if [[ -f /usr/include/python3*/Python.h ]] || \
305
+ python3-config --includes &>/dev/null; then
306
+ return 0
307
+ fi
308
+ elif [[ "$OS" == "macos" ]]; then
309
+ # macOS: Xcode command line tools include headers
310
+ if xcode-select -p &>/dev/null; then
311
+ return 0
312
+ fi
313
+ fi
314
+ fi
315
+ return 1
316
+ }
317
+
318
+ # Try pip install with wheel-first fallback
319
+ # Returns: 0=success, 1=failed
320
+ try_pip_install() {
321
+ local package_spec="$1"
322
+ local log_file="$2"
323
+ local package_name="${package_spec%%[=<>]*}" # Strip version specifier
324
+
325
+ # Phase 1: Try with prefer-binary (wheels first)
326
+ if pip install "$package_spec" --prefer-binary 2>&1 | tee -a "$log_file"; then
327
+ return 0
328
+ fi
329
+
330
+ # Phase 2: Check if we can build from source
331
+ if ! has_build_tools; then
332
+ print_warning "$package_name: No wheel available, no build tools"
333
+ if [[ "$OS" == "linux" ]] || [[ "$OS" == "wsl" ]]; then
334
+ case "$DISTRO" in
335
+ alpine)
336
+ print_info "Install build tools: apk add build-base python3-dev"
337
+ ;;
338
+ arch)
339
+ print_info "Install build tools: sudo pacman -S base-devel python"
340
+ ;;
341
+ debian)
342
+ print_info "Install build tools: sudo apt-get install gcc python3-dev"
343
+ ;;
344
+ redhat)
345
+ print_info "Install build tools: sudo dnf install gcc python3-devel"
346
+ ;;
347
+ *)
348
+ print_info "Install build tools: gcc and python3-dev equivalent"
349
+ ;;
350
+ esac
351
+ elif [[ "$OS" == "macos" ]]; then
352
+ print_info "Install build tools: xcode-select --install"
353
+ fi
354
+ return 1
355
+ fi
356
+
357
+ # Phase 3: Try source build
358
+ print_info "Trying source build for $package_name..."
359
+ if pip install "$package_spec" --no-binary "$package_name" 2>&1 | tee -a "$log_file"; then
360
+ print_success "$package_name installed (source build)"
361
+ return 0
362
+ fi
363
+
364
+ print_error "$package_name: Both wheel and source build failed"
365
+ return 1
366
+ }
367
+
368
+ # Install system package - no prompts, just install or skip
369
+ # CLI controls sudo via --with-sudo flag
370
+ install_system_package() {
371
+ local package_name="$1"
372
+ local display_name="$2"
373
+ local check_commands="$3" # Comma-separated commands to check
374
+
375
+ # Check if already installed (check multiple commands)
376
+ IFS=',' read -ra cmds <<< "$check_commands"
377
+ for cmd in "${cmds[@]}"; do
378
+ if command_exists "$cmd"; then
379
+ print_success "$display_name already installed"
380
+ track_success "optional" "$display_name"
381
+ return 0
382
+ fi
383
+ done
384
+
385
+ # macOS: brew doesn't need sudo
386
+ if [[ "$OS" == "macos" ]]; then
387
+ print_info "Installing $display_name..."
388
+ if brew install "$package_name" 2>/dev/null; then
389
+ print_success "$display_name installed"
390
+ track_success "optional" "$display_name"
391
+ return 0
392
+ else
393
+ print_warning "$display_name: brew install failed"
394
+ track_failure "optional" "$display_name" "brew install failed"
395
+ return 1
396
+ fi
397
+ fi
398
+
399
+ # Linux: only install if --with-sudo was passed (except Alpine which often runs as root)
400
+ if [[ "$WITH_SUDO" == "true" ]] || [[ "$DISTRO" == "alpine" && "$(id -u)" == "0" ]]; then
401
+ print_info "Installing $display_name..."
402
+ if [[ "$WITH_SUDO" == "true" ]]; then
403
+ # Call package manager directly with sudo (functions don't work with sudo)
404
+ local install_result=0
405
+ case "$DISTRO" in
406
+ alpine) sudo apk add --no-cache "$package_name" || install_result=1 ;;
407
+ arch) sudo pacman -S --noconfirm "$package_name" || install_result=1 ;;
408
+ debian) sudo apt-get install -y "$package_name" || install_result=1 ;;
409
+ redhat) sudo dnf install -y "$package_name" || install_result=1 ;;
410
+ *) install_result=1 ;;
411
+ esac
412
+ if [[ "$install_result" -eq 0 ]]; then
413
+ print_success "$display_name installed"
414
+ track_success "optional" "$display_name"
415
+ return 0
416
+ else
417
+ print_warning "$display_name: package install failed"
418
+ track_failure "optional" "$display_name" "package install failed"
419
+ return 1
420
+ fi
421
+ else
422
+ # Alpine as root (no sudo needed)
423
+ if pkg_install "$package_name"; then
424
+ print_success "$display_name installed"
425
+ track_success "optional" "$display_name"
426
+ return 0
427
+ else
428
+ print_warning "$display_name: package install failed"
429
+ track_failure "optional" "$display_name" "package install failed"
430
+ return 1
431
+ fi
432
+ fi
433
+ else
434
+ # No sudo permission - track as skipped
435
+ print_info "$display_name: skipped (no --with-sudo)"
436
+ track_skipped "$display_name" "requires sudo"
437
+ return 0 # Don't fail, just skip
438
+ fi
439
+ }
440
+
441
+ # Check and install system package manager
442
+ check_package_manager() {
443
+ if [[ "$OS" == "macos" ]]; then
444
+ if ! command_exists brew; then
445
+ print_warning "Homebrew not found. Installing Homebrew..."
446
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
447
+ print_success "Homebrew installed"
448
+ else
449
+ print_success "Homebrew found"
450
+ fi
451
+ elif [[ "$OS" == "linux" ]] || [[ "$OS" == "wsl" ]]; then
452
+ case "$DISTRO" in
453
+ alpine)
454
+ print_success "apk found (Alpine Linux)"
455
+ ;;
456
+ arch)
457
+ print_success "pacman found (Arch Linux)"
458
+ ;;
459
+ debian)
460
+ print_success "apt-get found (Debian/Ubuntu)"
461
+ ;;
462
+ redhat)
463
+ if command_exists dnf; then
464
+ print_success "dnf found (RHEL/Fedora)"
465
+ else
466
+ print_success "yum found (RHEL/CentOS)"
467
+ fi
468
+ ;;
469
+ *)
470
+ print_warning "No supported package manager found (apk, pacman, apt-get, dnf, or yum)"
471
+ print_info "System packages will be skipped"
472
+ ;;
473
+ esac
474
+ elif [[ "$OS" == "msys" ]] || [[ "$OS" == "cygwin" ]]; then
475
+ print_warning "Windows shell detected ($OS)"
476
+ print_info "System package installation not supported"
477
+ print_info "Please install dependencies manually or use WSL"
478
+ fi
479
+ }
480
+
481
+ # Install system dependencies
482
+ install_system_deps() {
483
+ print_header "Installing System Dependencies"
484
+
485
+ # Update package cache if we have permission (Linux only)
486
+ if [[ "$OS" == "linux" ]]; then
487
+ if [[ "$WITH_SUDO" == "true" ]]; then
488
+ print_info "Updating package lists..."
489
+ # Call package manager directly with sudo (functions don't work with sudo)
490
+ case "$DISTRO" in
491
+ alpine) sudo apk update ;;
492
+ arch) sudo pacman -Sy ;;
493
+ debian) sudo apt-get update -qq ;;
494
+ redhat) sudo dnf check-update || true ;;
495
+ esac
496
+ elif [[ "$DISTRO" == "alpine" && "$(id -u)" == "0" ]]; then
497
+ # Alpine as root (no sudo needed)
498
+ print_info "Updating package lists..."
499
+ pkg_update
500
+ fi
501
+ fi
502
+
503
+ # FFmpeg (required for media-processing skill)
504
+ install_system_package "ffmpeg" "FFmpeg" "ffmpeg"
505
+
506
+ # ImageMagick (required for media-processing skill)
507
+ install_system_package "imagemagick" "ImageMagick" "magick,convert"
508
+
509
+ # PostgreSQL client (optional - just check)
510
+ if command_exists psql; then
511
+ print_success "PostgreSQL client already installed"
512
+ fi
513
+
514
+ # Docker (optional - just check)
515
+ if command_exists docker; then
516
+ print_success "Docker already installed ($(docker --version))"
517
+ fi
518
+ }
519
+
520
+ # Install Node.js and npm packages
521
+ install_node_deps() {
522
+ print_header "Installing Node.js Dependencies"
523
+
524
+ # Check Node.js
525
+ if command_exists node; then
526
+ NODE_VERSION=$(node --version)
527
+ print_success "Node.js already installed ($NODE_VERSION)"
528
+ else
529
+ print_info "Installing Node.js..."
530
+ if [[ "$OS" == "macos" ]]; then
531
+ brew install node
532
+ elif [[ "$OS" == "linux" ]] || [[ "$OS" == "wsl" ]]; then
533
+ case "$DISTRO" in
534
+ alpine)
535
+ # Alpine: install via apk
536
+ if [[ "$(id -u)" == "0" ]]; then
537
+ apk add --no-cache nodejs npm
538
+ elif [[ "$WITH_SUDO" == "true" ]]; then
539
+ sudo apk add --no-cache nodejs npm
540
+ else
541
+ print_warning "Node.js installation requires root or --with-sudo"
542
+ print_info "Run: apk add nodejs npm"
543
+ return 1
544
+ fi
545
+ ;;
546
+ arch)
547
+ # Arch: install via pacman
548
+ if [[ "$(id -u)" == "0" ]]; then
549
+ pacman -S --noconfirm nodejs npm
550
+ elif [[ "$WITH_SUDO" == "true" ]]; then
551
+ sudo pacman -S --noconfirm nodejs npm
552
+ else
553
+ print_warning "Node.js installation requires root or --with-sudo"
554
+ print_info "Run: sudo pacman -S nodejs npm"
555
+ return 1
556
+ fi
557
+ ;;
558
+ debian)
559
+ # Debian/Ubuntu: use nodesource
560
+ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
561
+ sudo apt-get install -y nodejs
562
+ ;;
563
+ redhat)
564
+ # RHEL/CentOS/Fedora: use nodesource
565
+ curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
566
+ if command_exists dnf; then
567
+ sudo dnf install -y nodejs
568
+ else
569
+ sudo yum install -y nodejs
570
+ fi
571
+ ;;
572
+ *)
573
+ print_warning "Unknown distro, cannot install Node.js automatically"
574
+ print_info "Please install Node.js manually"
575
+ return 1
576
+ ;;
577
+ esac
578
+ elif [[ "$OS" == "msys" ]] || [[ "$OS" == "cygwin" ]]; then
579
+ print_warning "Cannot install Node.js in $OS environment"
580
+ print_info "Please install Node.js from https://nodejs.org"
581
+ print_info "Or use WSL for better compatibility"
582
+ return 1
583
+ fi
584
+ print_success "Node.js installed"
585
+ fi
586
+
587
+ # Install global npm packages
588
+ print_info "Installing global npm packages..."
589
+
590
+ # Package name to CLI command mapping (some packages have different CLI names)
591
+ # Using indexed array with colon-separated pairs for Bash 3.2+ compatibility
592
+ npm_packages=(
593
+ "rmbg-cli:rmbg"
594
+ "pnpm:pnpm"
595
+ "wrangler:wrangler"
596
+ "repomix:repomix"
597
+ )
598
+
599
+ for package_pair in "${npm_packages[@]}"; do
600
+ # Split "package:command" on colon
601
+ IFS=':' read -r package cmd <<< "$package_pair"
602
+
603
+ # Check CLI command first (handles standalone installs like brew, curl, etc.)
604
+ if command_exists "$cmd"; then
605
+ version=$("$cmd" --version 2>&1 | head -n1 || echo "available")
606
+ print_success "$package already installed ($version)"
607
+ # Fallback: check if installed via npm registry
608
+ elif npm list -g "$package" >/dev/null 2>&1; then
609
+ print_success "$package already installed via npm"
610
+ else
611
+ print_info "Installing $package..."
612
+ npm install -g "$package" 2>/dev/null || {
613
+ print_warning "Failed to install $package globally. Trying with sudo..."
614
+ sudo npm install -g "$package"
615
+ }
616
+ print_success "$package installed"
617
+ fi
618
+ done
619
+
620
+ # Install local npm packages for skills
621
+ print_info "Installing local npm packages for skills..."
622
+
623
+ # chrome-devtools
624
+ if [ -d "$SCRIPT_DIR/chrome-devtools/scripts" ] && [ -f "$SCRIPT_DIR/chrome-devtools/scripts/package.json" ]; then
625
+ print_info "Installing chrome-devtools dependencies..."
626
+ (cd "$SCRIPT_DIR/chrome-devtools/scripts" && npm install --quiet)
627
+ print_success "chrome-devtools dependencies installed"
628
+ fi
629
+
630
+ # sequential-thinking
631
+ if [ -d "$SCRIPT_DIR/sequential-thinking" ] && [ -f "$SCRIPT_DIR/sequential-thinking/package.json" ]; then
632
+ print_info "Installing sequential-thinking dependencies..."
633
+ (cd "$SCRIPT_DIR/sequential-thinking" && npm install --quiet)
634
+ print_success "sequential-thinking dependencies installed"
635
+ fi
636
+
637
+ # mcp-management
638
+ if [ -d "$SCRIPT_DIR/mcp-management/scripts" ] && [ -f "$SCRIPT_DIR/mcp-management/scripts/package.json" ]; then
639
+ print_info "Installing mcp-management dependencies..."
640
+ (cd "$SCRIPT_DIR/mcp-management/scripts" && npm install --quiet)
641
+ print_success "mcp-management dependencies installed"
642
+ fi
643
+
644
+ # markdown-novel-viewer (marked, highlight.js, gray-matter)
645
+ if [ -d "$SCRIPT_DIR/markdown-novel-viewer" ] && [ -f "$SCRIPT_DIR/markdown-novel-viewer/package.json" ]; then
646
+ print_info "Installing markdown-novel-viewer dependencies..."
647
+ (cd "$SCRIPT_DIR/markdown-novel-viewer" && npm install --quiet)
648
+ print_success "markdown-novel-viewer dependencies installed"
649
+ fi
650
+
651
+ # plans-kanban (gray-matter)
652
+ if [ -d "$SCRIPT_DIR/plans-kanban" ] && [ -f "$SCRIPT_DIR/plans-kanban/package.json" ]; then
653
+ print_info "Installing plans-kanban dependencies..."
654
+ (cd "$SCRIPT_DIR/plans-kanban" && npm install --quiet)
655
+ print_success "plans-kanban dependencies installed"
656
+ fi
657
+
658
+ # Optional: Shopify CLI (ask user unless auto-confirming)
659
+ if [ -d "$SCRIPT_DIR/shopify" ]; then
660
+ if [[ "$SKIP_CONFIRM" == "true" ]]; then
661
+ print_info "Skipping Shopify CLI installation (optional, use --yes to install all)"
662
+ else
663
+ read -p "Install Shopify CLI for Shopify skill? (y/N) " -n 1 -r
664
+ echo
665
+ if [[ $REPLY =~ ^[Yy]$ ]]; then
666
+ print_info "Installing Shopify CLI..."
667
+ npm install -g @shopify/cli @shopify/theme 2>/dev/null || {
668
+ print_warning "Failed to install Shopify CLI globally. Trying with sudo..."
669
+ sudo npm install -g @shopify/cli @shopify/theme
670
+ }
671
+ print_success "Shopify CLI installed"
672
+ fi
673
+ fi
674
+ fi
675
+ }
676
+
677
+ # Setup Python virtual environment
678
+ setup_python_env() {
679
+ print_header "Setting Up Python Environment"
680
+
681
+ # Track successful and failed installations
682
+ local successful_skills=()
683
+ local failed_skills=()
684
+
685
+ # Check Python
686
+ if command_exists python3; then
687
+ PYTHON_VERSION=$(python3 --version)
688
+ PYTHON_PATH=$(which python3)
689
+ print_success "Python3 found ($PYTHON_VERSION)"
690
+
691
+ # Check for broken UV Python installation
692
+ if [[ "$PYTHON_PATH" == *"/.local/share/uv/"* ]]; then
693
+ # Verify UV Python works by testing venv creation
694
+ if ! python3 -c "import sys; sys.exit(0 if '/install' not in sys.base_prefix else 1)" 2>/dev/null; then
695
+ print_error "UV Python installation is broken (corrupted sys.base_prefix)"
696
+ print_info "Please reinstall Python using Homebrew:"
697
+ print_info " brew install python@3.12"
698
+ print_info " export PATH=\"/opt/homebrew/bin:\$PATH\""
699
+ print_info "Or fix UV Python:"
700
+ print_info " uv python uninstall 3.12"
701
+ print_info " uv python install 3.12"
702
+ exit 1
703
+ fi
704
+ fi
705
+ else
706
+ print_error "Python3 not found. Please install Python 3.7+"
707
+ exit 1
708
+ fi
709
+
710
+ # Create virtual environment (or recreate if corrupted)
711
+ create_venv() {
712
+ # Try normal venv creation first
713
+ if python3 -m venv "$VENV_DIR" 2>/dev/null; then
714
+ return 0
715
+ fi
716
+
717
+ # If ensurepip fails (common on macOS), create without pip and bootstrap manually
718
+ print_warning "Standard venv creation failed, trying without ensurepip..."
719
+ if python3 -m venv --without-pip "$VENV_DIR"; then
720
+ # Bootstrap pip manually with error handling
721
+ source "$VENV_DIR/bin/activate"
722
+ if ! curl -sS https://bootstrap.pypa.io/get-pip.py | python3; then
723
+ print_error "Failed to bootstrap pip (network issue or get-pip.py failed)"
724
+ deactivate
725
+ rm -rf "$VENV_DIR"
726
+ return 1
727
+ fi
728
+ deactivate
729
+ return 0
730
+ fi
731
+
732
+ return 1
733
+ }
734
+
735
+ if [ -d "$VENV_DIR" ]; then
736
+ # Verify venv is valid by checking for activate script AND python executable
737
+ if [ -f "$VENV_DIR/bin/activate" ] && [ -x "$VENV_DIR/bin/python3" ]; then
738
+ print_success "Virtual environment already exists at $VENV_DIR"
739
+ else
740
+ print_warning "Virtual environment is corrupted (missing activate or python3). Recreating..."
741
+ rm -rf "$VENV_DIR"
742
+ if create_venv; then
743
+ print_success "Virtual environment recreated"
744
+ else
745
+ print_error "Failed to create virtual environment"
746
+ exit 1
747
+ fi
748
+ fi
749
+ else
750
+ print_info "Creating virtual environment at $VENV_DIR..."
751
+ if create_venv; then
752
+ print_success "Virtual environment created"
753
+ else
754
+ print_error "Failed to create virtual environment"
755
+ exit 1
756
+ fi
757
+ fi
758
+
759
+ # Activate and install packages
760
+ print_info "Activating virtual environment..."
761
+ source "$VENV_DIR/bin/activate"
762
+
763
+ # Create log directory
764
+ local LOG_DIR="$VENV_DIR/logs"
765
+ mkdir -p "$LOG_DIR"
766
+
767
+ # Upgrade pip with logging (use --prefer-binary)
768
+ print_info "Upgrading pip..."
769
+ if pip install --upgrade pip --prefer-binary 2>&1 | tee "$LOG_DIR/pip-upgrade.log" | tail -n 3; then
770
+ print_success "pip upgraded successfully"
771
+ else
772
+ print_warning "pip upgrade failed (continuing anyway)"
773
+ print_info "See log: $LOG_DIR/pip-upgrade.log"
774
+ fi
775
+
776
+ # Install dependencies from all skills' requirements.txt files
777
+ print_info "Installing Python dependencies from all skills..."
778
+
779
+ local installed_count=0
780
+ for skill_dir in "$SCRIPT_DIR"/*; do
781
+ if [ -d "$skill_dir" ]; then
782
+ skill_name=$(basename "$skill_dir")
783
+
784
+ # Skip .venv and document-skills
785
+ if [ "$skill_name" == ".venv" ] || [ "$skill_name" == "document-skills" ]; then
786
+ continue
787
+ fi
788
+
789
+ # Install main requirements.txt with wheel-first approach
790
+ if [ -f "$skill_dir/scripts/requirements.txt" ]; then
791
+ local SKILL_LOG="$LOG_DIR/install-${skill_name}.log"
792
+
793
+ print_info "Installing $skill_name dependencies..."
794
+
795
+ # Read requirements and install one-by-one for granular tracking
796
+ local pkg_success=0
797
+ local pkg_fail=0
798
+ while IFS= read -r line || [[ -n "$line" ]]; do
799
+ # Skip comments and empty lines
800
+ [[ "$line" =~ ^#.*$ ]] && continue
801
+ [[ -z "${line// }" ]] && continue
802
+
803
+ # Strip inline comments (e.g., "package>=1.0 # comment" -> "package>=1.0")
804
+ line="${line%%#*}"
805
+ line="${line%"${line##*[![:space:]]}"}" # trim trailing whitespace
806
+ [[ -z "$line" ]] && continue
807
+
808
+ if try_pip_install "$line" "$SKILL_LOG"; then
809
+ pkg_success=$((pkg_success + 1))
810
+ else
811
+ pkg_fail=$((pkg_fail + 1))
812
+ track_failure "optional" "$skill_name:$line" "Package install failed"
813
+ fi
814
+ done < "$skill_dir/scripts/requirements.txt"
815
+
816
+ if [[ $pkg_fail -eq 0 ]]; then
817
+ print_success "$skill_name: all $pkg_success packages installed"
818
+ track_success "optional" "$skill_name"
819
+ successful_skills+=("$skill_name")
820
+ installed_count=$((installed_count + 1))
821
+ else
822
+ print_warning "$skill_name: $pkg_success installed, $pkg_fail failed"
823
+ failed_skills+=("$skill_name")
824
+ fi
825
+ fi
826
+
827
+ # Install test requirements.txt
828
+ if [ -f "$skill_dir/scripts/tests/requirements.txt" ]; then
829
+ local SKILL_TEST_LOG="$LOG_DIR/install-${skill_name}-tests.log"
830
+
831
+ print_info "Installing $skill_name test dependencies..."
832
+
833
+ if pip install -r "$skill_dir/scripts/tests/requirements.txt" --prefer-binary 2>&1 | tee "$SKILL_TEST_LOG"; then
834
+ print_success "$skill_name test dependencies installed successfully"
835
+ else
836
+ print_warning "$skill_name test dependencies failed to install"
837
+ # Don't fail installation if test deps fail (less critical)
838
+ fi
839
+ fi
840
+ fi
841
+ done
842
+
843
+ # Install .claude/scripts requirements (contains pyyaml for generate_catalogs.py)
844
+ local SCRIPTS_REQ="$SCRIPT_DIR/../scripts/requirements.txt"
845
+ if [ -f "$SCRIPTS_REQ" ]; then
846
+ local SCRIPTS_LOG="$LOG_DIR/install-scripts.log"
847
+ print_info "Installing .claude/scripts dependencies..."
848
+
849
+ local pkg_success=0
850
+ local pkg_fail=0
851
+ while IFS= read -r line || [[ -n "$line" ]]; do
852
+ [[ "$line" =~ ^#.*$ ]] && continue
853
+ [[ -z "${line// }" ]] && continue
854
+ line="${line%%#*}"
855
+ line="${line%"${line##*[![:space:]]}"}"
856
+ [[ -z "$line" ]] && continue
857
+
858
+ if try_pip_install "$line" "$SCRIPTS_LOG"; then
859
+ pkg_success=$((pkg_success + 1))
860
+ else
861
+ pkg_fail=$((pkg_fail + 1))
862
+ track_failure "optional" "scripts:$line" "Package install failed"
863
+ fi
864
+ done < "$SCRIPTS_REQ"
865
+
866
+ if [[ $pkg_fail -eq 0 ]]; then
867
+ print_success ".claude/scripts: all $pkg_success packages installed"
868
+ track_success "optional" "scripts"
869
+ else
870
+ print_warning ".claude/scripts: $pkg_success installed, $pkg_fail failed"
871
+ fi
872
+ fi
873
+
874
+ # Print installation summary (brief - final report comes later)
875
+ print_header "Python Dependencies Installation Summary"
876
+
877
+ if [ ${#successful_skills[@]} -gt 0 ]; then
878
+ print_success "Successfully installed ${#successful_skills[@]} skill(s)"
879
+ fi
880
+
881
+ if [ ${#failed_skills[@]} -gt 0 ]; then
882
+ print_warning "${#failed_skills[@]} skill(s) had package failures (see final report)"
883
+ # Don't exit 1 - track failures instead and continue
884
+ elif [ ${#successful_skills[@]} -eq 0 ]; then
885
+ print_warning "No skill requirements.txt files found"
886
+ else
887
+ print_success "All Python dependencies installed successfully"
888
+ fi
889
+
890
+ deactivate
891
+ }
892
+
893
+ # Verify installations
894
+ verify_installations() {
895
+ print_header "Verifying Installations"
896
+
897
+ # FFmpeg
898
+ if command_exists ffmpeg; then
899
+ print_success "FFmpeg is available"
900
+ else
901
+ print_warning "FFmpeg is not available"
902
+ fi
903
+
904
+ # ImageMagick (check both magick and convert - older versions use convert)
905
+ if command_exists magick || command_exists convert; then
906
+ print_success "ImageMagick is available"
907
+ else
908
+ print_warning "ImageMagick is not available"
909
+ fi
910
+
911
+ # Node.js & npm
912
+ if command_exists node; then
913
+ print_success "Node.js is available"
914
+ else
915
+ print_warning "Node.js is not available"
916
+ fi
917
+
918
+ if command_exists npm; then
919
+ print_success "npm is available"
920
+ else
921
+ print_warning "npm is not available"
922
+ fi
923
+
924
+ declare -a npm_packages=(
925
+ "rmbg"
926
+ "pnpm"
927
+ "wrangler"
928
+ "repomix"
929
+ )
930
+
931
+ for package in "${npm_packages[@]}"; do
932
+ if command_exists "$package"; then
933
+ print_success "$package CLI is available"
934
+ else
935
+ print_warning "$package CLI is not available"
936
+ fi
937
+ done
938
+
939
+ # Check Python packages
940
+ if [ -d "$VENV_DIR" ]; then
941
+ source "$VENV_DIR/bin/activate"
942
+ if python -c "import google.genai" 2>/dev/null; then
943
+ print_success "google-genai Python package is available"
944
+ else
945
+ print_warning "google-genai Python package is not available"
946
+ fi
947
+ deactivate
948
+ fi
949
+ }
950
+
951
+ # ============================================================================
952
+ # Final Report Functions
953
+ # ============================================================================
954
+
955
+ generate_remediation_commands() {
956
+ local has_sudo_skipped=false
957
+ local has_python_failed=false
958
+
959
+ # Check if we have sudo-skipped packages
960
+ if [[ ${#SKIPPED_SUDO[@]} -gt 0 ]]; then
961
+ has_sudo_skipped=true
962
+ fi
963
+
964
+ # Check if we have Python package failures
965
+ if [[ ${#FAILED_OPTIONAL[@]} -gt 0 ]]; then
966
+ has_python_failed=true
967
+ fi
968
+
969
+ if [[ "$has_sudo_skipped" == "false" ]] && [[ "$has_python_failed" == "false" ]]; then
970
+ return 0
971
+ fi
972
+
973
+ echo ""
974
+ echo -e "${BLUE}---------------------------------------------------${NC}"
975
+ echo -e "${BLUE}Manual Installation Commands:${NC}"
976
+ echo -e "${BLUE}---------------------------------------------------${NC}"
977
+ echo ""
978
+
979
+ if [[ "$has_sudo_skipped" == "true" ]]; then
980
+ echo "# System packages (requires root/sudo):"
981
+ case "$DISTRO" in
982
+ alpine)
983
+ echo "apk update"
984
+ for item in "${SKIPPED_SUDO[@]}"; do
985
+ local pkg="${item%%:*}"
986
+ case "$pkg" in
987
+ FFmpeg) echo "apk add ffmpeg" ;;
988
+ ImageMagick) echo "apk add imagemagick" ;;
989
+ *) echo "# $pkg: see documentation" ;;
990
+ esac
991
+ done
992
+ ;;
993
+ arch)
994
+ echo "sudo pacman -Sy"
995
+ for item in "${SKIPPED_SUDO[@]}"; do
996
+ local pkg="${item%%:*}"
997
+ case "$pkg" in
998
+ FFmpeg) echo "sudo pacman -S --noconfirm ffmpeg" ;;
999
+ ImageMagick) echo "sudo pacman -S --noconfirm imagemagick" ;;
1000
+ *) echo "# $pkg: see documentation" ;;
1001
+ esac
1002
+ done
1003
+ ;;
1004
+ debian)
1005
+ echo "sudo apt-get update"
1006
+ for item in "${SKIPPED_SUDO[@]}"; do
1007
+ local pkg="${item%%:*}"
1008
+ case "$pkg" in
1009
+ FFmpeg) echo "sudo apt-get install -y ffmpeg" ;;
1010
+ ImageMagick) echo "sudo apt-get install -y imagemagick" ;;
1011
+ *) echo "# $pkg: see documentation" ;;
1012
+ esac
1013
+ done
1014
+ ;;
1015
+ redhat)
1016
+ echo "sudo dnf check-update"
1017
+ for item in "${SKIPPED_SUDO[@]}"; do
1018
+ local pkg="${item%%:*}"
1019
+ case "$pkg" in
1020
+ FFmpeg) echo "sudo dnf install -y ffmpeg" ;;
1021
+ ImageMagick) echo "sudo dnf install -y ImageMagick" ;;
1022
+ *) echo "# $pkg: see documentation" ;;
1023
+ esac
1024
+ done
1025
+ ;;
1026
+ *)
1027
+ echo "# Unknown distro - install packages manually"
1028
+ for item in "${SKIPPED_SUDO[@]}"; do
1029
+ local pkg="${item%%:*}"
1030
+ echo "# $pkg: see documentation"
1031
+ done
1032
+ ;;
1033
+ esac
1034
+ echo ""
1035
+ fi
1036
+
1037
+ if [[ "$has_python_failed" == "true" ]]; then
1038
+ echo "# Python packages (may require build tools):"
1039
+ case "$DISTRO" in
1040
+ alpine)
1041
+ echo "apk add build-base python3-dev jpeg-dev zlib-dev"
1042
+ ;;
1043
+ arch)
1044
+ echo "sudo pacman -S --noconfirm base-devel python libjpeg-turbo zlib"
1045
+ ;;
1046
+ debian)
1047
+ echo "sudo apt-get install -y gcc python3-dev libjpeg-dev zlib1g-dev"
1048
+ ;;
1049
+ redhat)
1050
+ echo "sudo dnf install -y gcc python3-devel libjpeg-devel zlib-devel"
1051
+ ;;
1052
+ *)
1053
+ if [[ "$OS" == "macos" ]]; then
1054
+ echo "xcode-select --install"
1055
+ echo "brew install jpeg libpng"
1056
+ else
1057
+ echo "# Install gcc, python3-dev, and image libraries for your distro"
1058
+ fi
1059
+ ;;
1060
+ esac
1061
+ echo "source $VENV_DIR/bin/activate"
1062
+
1063
+ for item in "${FAILED_OPTIONAL[@]}"; do
1064
+ local pkg="${item%%:*}"
1065
+ # Extract package name from skill:package format
1066
+ if [[ "$pkg" == *":"* ]]; then
1067
+ pkg="${pkg#*:}"
1068
+ fi
1069
+ echo "pip install $pkg"
1070
+ done
1071
+ echo ""
1072
+ fi
1073
+ }
1074
+
1075
+ print_final_report() {
1076
+ echo ""
1077
+ echo -e "${BLUE}===================================================${NC}"
1078
+ echo -e "${BLUE} Installation Report${NC}"
1079
+ echo -e "${BLUE}===================================================${NC}"
1080
+ echo ""
1081
+
1082
+ # Installed section
1083
+ local installed_count=$((${#INSTALLED_CRITICAL[@]} + ${#INSTALLED_OPTIONAL[@]}))
1084
+ if [[ $installed_count -gt 0 ]]; then
1085
+ echo -e "${GREEN}Installed ($installed_count):${NC}"
1086
+ for item in "${INSTALLED_CRITICAL[@]}"; do
1087
+ echo -e " ${GREEN}✓${NC} $item"
1088
+ done
1089
+ for item in "${INSTALLED_OPTIONAL[@]}"; do
1090
+ echo -e " ${GREEN}✓${NC} $item"
1091
+ done
1092
+ echo ""
1093
+ fi
1094
+
1095
+ # Skipped section
1096
+ if [[ ${#SKIPPED_SUDO[@]} -gt 0 ]]; then
1097
+ echo -e "${YELLOW}Skipped (${#SKIPPED_SUDO[@]}):${NC}"
1098
+ for item in "${SKIPPED_SUDO[@]}"; do
1099
+ local name="${item%%:*}"
1100
+ local reason="${item#*:}"
1101
+ echo -e " ${YELLOW}~${NC} $name (${reason# })"
1102
+ done
1103
+ echo ""
1104
+ fi
1105
+
1106
+ # Degraded/Failed section
1107
+ if [[ ${#FAILED_OPTIONAL[@]} -gt 0 ]]; then
1108
+ echo -e "${RED}Degraded (${#FAILED_OPTIONAL[@]}):${NC}"
1109
+ for item in "${FAILED_OPTIONAL[@]}"; do
1110
+ local name="${item%%:*}"
1111
+ local reason="${item#*:}"
1112
+ echo -e " ${RED}!${NC} $name (${reason# })"
1113
+ done
1114
+ echo ""
1115
+ fi
1116
+
1117
+ # Remediation commands
1118
+ generate_remediation_commands
1119
+
1120
+ # Exit status line
1121
+ echo -e "${BLUE}===================================================${NC}"
1122
+ case $FINAL_EXIT_CODE in
1123
+ 0) echo -e " ${GREEN}Exit: 0 (success - all dependencies installed)${NC}" ;;
1124
+ 1) echo -e " ${RED}Exit: 1 (failed - critical dependencies missing)${NC}" ;;
1125
+ 2) echo -e " ${YELLOW}Exit: 2 (partial - some optional deps failed)${NC}" ;;
1126
+ esac
1127
+ echo -e "${BLUE}===================================================${NC}"
1128
+ echo ""
1129
+ }
1130
+
1131
+ # Escape string for JSON (handle all special chars)
1132
+ json_escape() {
1133
+ printf '%s' "$1" | sed 's/\\/\\\\/g; s/"/\\"/g' | tr '\n' ' ' | tr '\r' ' ' | tr '\t' ' '
1134
+ }
1135
+
1136
+ # Write structured error summary for CLI to parse
1137
+ write_error_summary() {
1138
+ # Only write if there are failures
1139
+ if [[ $FINAL_EXIT_CODE -eq 0 ]]; then
1140
+ return 0
1141
+ fi
1142
+
1143
+ # Write to a file that CLI can read
1144
+ local summary_file="$SCRIPT_DIR/.install-error-summary.json"
1145
+
1146
+ # Build JSON arrays carefully for bash compatibility
1147
+ local critical_json="[]"
1148
+ local optional_json="[]"
1149
+ local skipped_json="[]"
1150
+
1151
+ if [[ ${#FAILED_OPTIONAL[@]} -gt 0 ]]; then
1152
+ optional_json="["
1153
+ local first=true
1154
+ for item in "${FAILED_OPTIONAL[@]}"; do
1155
+ if [[ "$first" == "true" ]]; then
1156
+ first=false
1157
+ else
1158
+ optional_json+=","
1159
+ fi
1160
+ optional_json+="\"$(json_escape "$item")\""
1161
+ done
1162
+ optional_json+="]"
1163
+ fi
1164
+
1165
+ if [[ ${#SKIPPED_SUDO[@]} -gt 0 ]]; then
1166
+ skipped_json="["
1167
+ local first=true
1168
+ for item in "${SKIPPED_SUDO[@]}"; do
1169
+ if [[ "$first" == "true" ]]; then
1170
+ first=false
1171
+ else
1172
+ skipped_json+=","
1173
+ fi
1174
+ skipped_json+="\"$(json_escape "$item")\""
1175
+ done
1176
+ skipped_json+="]"
1177
+ fi
1178
+
1179
+ # Generate distro-specific remediation commands
1180
+ local sudo_pkg_cmd build_tools_cmd
1181
+ case "$DISTRO" in
1182
+ alpine)
1183
+ sudo_pkg_cmd="apk add ffmpeg imagemagick"
1184
+ build_tools_cmd="apk add build-base python3-dev jpeg-dev zlib-dev"
1185
+ ;;
1186
+ arch)
1187
+ sudo_pkg_cmd="sudo pacman -S --noconfirm ffmpeg imagemagick"
1188
+ build_tools_cmd="sudo pacman -S --noconfirm base-devel python libjpeg-turbo zlib"
1189
+ ;;
1190
+ debian)
1191
+ sudo_pkg_cmd="sudo apt-get install -y ffmpeg imagemagick"
1192
+ build_tools_cmd="sudo apt-get install -y gcc python3-dev libjpeg-dev zlib1g-dev"
1193
+ ;;
1194
+ redhat)
1195
+ sudo_pkg_cmd="sudo dnf install -y ffmpeg ImageMagick"
1196
+ build_tools_cmd="sudo dnf install -y gcc python3-devel libjpeg-devel zlib-devel"
1197
+ ;;
1198
+ *)
1199
+ if [[ "$OS" == "macos" ]]; then
1200
+ sudo_pkg_cmd="brew install ffmpeg imagemagick"
1201
+ build_tools_cmd="xcode-select --install && brew install jpeg libpng"
1202
+ else
1203
+ sudo_pkg_cmd="# Install ffmpeg and imagemagick for your distro"
1204
+ build_tools_cmd="# Install gcc, python3-dev, and image libraries for your distro"
1205
+ fi
1206
+ ;;
1207
+ esac
1208
+
1209
+ cat > "$summary_file" << EOF
1210
+ {
1211
+ "exit_code": $FINAL_EXIT_CODE,
1212
+ "timestamp": "$(date -Iseconds 2>/dev/null || date -u +%Y-%m-%dT%H:%M:%SZ)",
1213
+ "distro": "$DISTRO",
1214
+ "critical_failures": $critical_json,
1215
+ "optional_failures": $optional_json,
1216
+ "skipped": $skipped_json,
1217
+ "remediation": {
1218
+ "sudo_packages": "$sudo_pkg_cmd",
1219
+ "build_tools": "$build_tools_cmd",
1220
+ "pip_retry": "source $VENV_DIR/bin/activate && pip install <package>"
1221
+ }
1222
+ }
1223
+ EOF
1224
+
1225
+ print_info "Error summary written to: $summary_file"
1226
+ }
1227
+
1228
+ # Print usage instructions (now just brief tips)
1229
+ print_usage() {
1230
+ echo -e "${GREEN}To use the Python virtual environment:${NC}"
1231
+ echo -e " source .claude/skills/.venv/bin/activate"
1232
+ echo ""
1233
+ echo -e "${BLUE}For more information, see:${NC}"
1234
+ echo -e " .claude/skills/INSTALLATION.md"
1235
+ echo ""
1236
+ }
1237
+
1238
+ # Main installation flow
1239
+ main() {
1240
+ echo "" # Just add spacing, don't clear terminal
1241
+ print_header "Claude Code Skills Installation"
1242
+ print_info "OS: $OS"
1243
+ if [[ "$OS" == "linux" ]] || [[ "$OS" == "wsl" ]]; then
1244
+ print_info "Distro: $DISTRO"
1245
+ fi
1246
+ if [[ "$OS" == "wsl" ]]; then
1247
+ print_info "Environment: Windows Subsystem for Linux"
1248
+ fi
1249
+ print_info "Script directory: $SCRIPT_DIR"
1250
+ if [[ "$WITH_SUDO" == "true" ]]; then
1251
+ print_info "Mode: with sudo (--with-sudo)"
1252
+ else
1253
+ print_info "Mode: without sudo (system packages will be skipped)"
1254
+ fi
1255
+ if [[ "$RESUME_MODE" == "true" ]]; then
1256
+ print_info "Mode: resuming previous installation"
1257
+ fi
1258
+ echo ""
1259
+
1260
+ # Handle unsupported OS
1261
+ if [[ "$OS" == "unknown" ]]; then
1262
+ print_error "Unsupported operating system"
1263
+ exit 1
1264
+ fi
1265
+
1266
+ # Warn about limited Windows shell support
1267
+ if [[ "$OS" == "msys" ]] || [[ "$OS" == "cygwin" ]]; then
1268
+ print_warning "Running in Windows shell environment ($OS)"
1269
+ print_warning "Limited functionality - system packages cannot be installed"
1270
+ print_info "For full support, consider using WSL (Windows Subsystem for Linux)"
1271
+ print_info "Continuing with Python environment setup only..."
1272
+ echo ""
1273
+ fi
1274
+
1275
+ # Confirm installation (skip if --yes flag or NON_INTERACTIVE env is set)
1276
+ if [[ "$SKIP_CONFIRM" == "false" ]]; then
1277
+ read -p "This will install system packages and Node.js dependencies. Continue? (y/N) " -n 1 -r
1278
+ echo
1279
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
1280
+ print_warning "Installation cancelled"
1281
+ exit 0
1282
+ fi
1283
+ else
1284
+ print_info "Auto-confirming installation (--yes flag or NON_INTERACTIVE mode)"
1285
+ fi
1286
+
1287
+ # Initialize state tracking
1288
+ init_state
1289
+
1290
+ # Phase 1: System deps
1291
+ if phase_done "system_deps"; then
1292
+ print_success "System deps: already processed (resume)"
1293
+ else
1294
+ update_phase "system_deps" "running"
1295
+ check_package_manager
1296
+ install_system_deps
1297
+ update_phase "system_deps" "done"
1298
+ fi
1299
+
1300
+ # Phase 2: Node deps
1301
+ if phase_done "node_deps"; then
1302
+ print_success "Node deps: already installed (resume)"
1303
+ else
1304
+ update_phase "node_deps" "running"
1305
+ install_node_deps
1306
+ update_phase "node_deps" "done"
1307
+ fi
1308
+
1309
+ # Phase 3: Python env
1310
+ if phase_done "python_env"; then
1311
+ print_success "Python env: already set up (resume)"
1312
+ else
1313
+ update_phase "python_env" "running"
1314
+ setup_python_env
1315
+ update_phase "python_env" "done"
1316
+ fi
1317
+
1318
+ # Phase 4: Verify
1319
+ update_phase "verify" "running"
1320
+ verify_installations
1321
+ update_phase "verify" "done"
1322
+
1323
+ # Print final report with all tracking info
1324
+ print_final_report
1325
+ print_usage
1326
+
1327
+ # Write error summary for CLI to parse
1328
+ write_error_summary
1329
+
1330
+ # Clean state on complete success
1331
+ if [[ "$FINAL_EXIT_CODE" -eq 0 ]]; then
1332
+ clean_state
1333
+ fi
1334
+
1335
+ exit $FINAL_EXIT_CODE
1336
+ }
1337
+
1338
+ # Run main function
1339
+ main