thanh-kit 2.5.0 → 2.5.1

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 (766) hide show
  1. package/package.json +1 -1
  2. package/templates/.ck.json +60 -0
  3. package/templates/.ckignore +27 -0
  4. package/templates/.mcp.json.example +23 -0
  5. package/templates/agents/brainstormer.md +18 -2
  6. package/templates/agents/code-reviewer.md +122 -142
  7. package/templates/agents/code-simplifier.md +50 -100
  8. package/templates/agents/debugger.md +27 -11
  9. package/templates/agents/docs-manager.md +100 -38
  10. package/templates/agents/fullstack-developer.md +15 -3
  11. package/templates/agents/git-manager.md +11 -386
  12. package/templates/agents/journal-writer.md +13 -8
  13. package/templates/agents/mcp-manager.md +21 -6
  14. package/templates/agents/planner.md +24 -8
  15. package/templates/agents/project-manager.md +17 -121
  16. package/templates/agents/researcher.md +22 -7
  17. package/templates/agents/tester.md +23 -7
  18. package/templates/agents/ui-ux-designer.md +23 -14
  19. package/templates/hooks/__tests__/ck-config-utils.test.cjs +557 -0
  20. package/templates/hooks/__tests__/descriptive-name.test.cjs +292 -0
  21. package/templates/hooks/__tests__/dev-rules-reminder.test.cjs +336 -0
  22. package/templates/hooks/__tests__/integration/path-resolution.test.cjs +319 -0
  23. package/templates/hooks/__tests__/privacy-block.test.cjs +273 -0
  24. package/templates/hooks/__tests__/session-init.test.cjs +308 -0
  25. package/templates/hooks/__tests__/skill-dedup.test.cjs +527 -0
  26. package/templates/hooks/__tests__/subagent-init.test.cjs +622 -0
  27. package/templates/hooks/__tests__/task-completed-handler.test.cjs +246 -0
  28. package/templates/hooks/__tests__/team-context-inject.test.cjs +804 -0
  29. package/templates/hooks/__tests__/teammate-idle-handler.test.cjs +254 -0
  30. package/templates/hooks/cook-after-plan-reminder.cjs +72 -0
  31. package/templates/hooks/descriptive-name.cjs +47 -0
  32. package/templates/hooks/dev-rules-reminder.cjs +37 -214
  33. package/templates/hooks/lib/__tests__/README.md +240 -0
  34. package/templates/hooks/lib/__tests__/ck-config-utils.test.cjs +613 -1
  35. package/templates/hooks/lib/__tests__/context-builder.test.cjs +468 -0
  36. package/templates/hooks/lib/__tests__/project-detector.test.cjs +754 -0
  37. package/templates/hooks/lib/__tests__/statusline-integration.test.cjs +678 -0
  38. package/templates/hooks/lib/__tests__/statusline.test.cjs +689 -0
  39. package/templates/hooks/lib/ck-config-utils.cjs +146 -21
  40. package/templates/hooks/lib/colors.cjs +95 -0
  41. package/templates/hooks/lib/config-counter.cjs +103 -0
  42. package/templates/hooks/lib/context-builder.cjs +616 -0
  43. package/templates/hooks/lib/git-info-cache.cjs +143 -0
  44. package/templates/hooks/lib/hook-logger.cjs +92 -0
  45. package/templates/hooks/lib/privacy-checker.cjs +297 -0
  46. package/templates/hooks/lib/project-detector.cjs +474 -0
  47. package/templates/hooks/lib/scout-checker.cjs +263 -0
  48. package/templates/hooks/lib/transcript-parser.cjs +181 -0
  49. package/templates/hooks/notifications/discord_notify.sh +17 -4
  50. package/templates/hooks/notifications/docs/discord-hook-setup.md +26 -10
  51. package/templates/hooks/notifications/docs/telegram-hook-setup.md +24 -6
  52. package/templates/hooks/notifications/notify.cjs +0 -0
  53. package/templates/hooks/notifications/send-discord.sh +0 -0
  54. package/templates/hooks/notifications/telegram_notify.sh +17 -4
  55. package/templates/hooks/post-edit-simplify-reminder.cjs +156 -0
  56. package/templates/hooks/privacy-block.cjs +97 -188
  57. package/templates/hooks/scout-block/broad-pattern-detector.cjs +4 -6
  58. package/templates/hooks/scout-block/error-formatter.cjs +0 -0
  59. package/templates/hooks/scout-block/path-extractor.cjs +102 -13
  60. package/templates/hooks/scout-block/pattern-matcher.cjs +16 -1
  61. package/templates/hooks/scout-block/tests/{test-broad-pattern-detector.js → test-broad-pattern-detector.cjs} +1 -61
  62. package/templates/hooks/scout-block/tests/{test-build-command-allowlist.js → test-build-command-allowlist.cjs} +1 -1
  63. package/templates/hooks/scout-block/tests/{test-error-formatter.js → test-error-formatter.cjs} +1 -1
  64. package/templates/hooks/scout-block/tests/{test-full-flow-edge-cases.js → test-full-flow-edge-cases.cjs} +1 -1
  65. package/templates/hooks/scout-block/tests/{test-monorepo-scenarios.js → test-monorepo-scenarios.cjs} +1 -1
  66. package/templates/hooks/scout-block/tests/{test-path-extractor.js → test-path-extractor.cjs} +1 -1
  67. package/templates/hooks/scout-block/tests/{test-pattern-matcher.js → test-pattern-matcher.cjs} +1 -1
  68. package/templates/hooks/scout-block.cjs +100 -87
  69. package/templates/hooks/session-init.cjs +197 -330
  70. package/templates/hooks/skill-dedup.cjs +268 -0
  71. package/templates/hooks/subagent-init.cjs +75 -22
  72. package/templates/hooks/task-completed-handler.cjs +118 -0
  73. package/templates/hooks/team-context-inject.cjs +176 -0
  74. package/templates/hooks/teammate-idle-handler.cjs +121 -0
  75. package/templates/hooks/tests/scout-block/broad-pattern-detector.test.cjs +231 -0
  76. package/templates/hooks/tests/scout-block/fixtures/ckignore-custom.txt +6 -0
  77. package/templates/hooks/tests/scout-block/fixtures/ckignore-default.txt +13 -0
  78. package/templates/hooks/tests/scout-block/fixtures/ckignore-negation.txt +8 -0
  79. package/templates/hooks/tests/scout-block/path-extractor.test.cjs +527 -0
  80. package/templates/hooks/tests/scout-block/pattern-matcher.test.cjs +293 -0
  81. package/templates/hooks/tests/scout-block/scout-checker.test.cjs +741 -0
  82. package/templates/hooks/tests/{test-ckignore.js → test-ckignore.cjs} +0 -0
  83. package/templates/hooks/tests/{test-modularization-hook.js → test-modularization-hook.cjs} +0 -0
  84. package/templates/hooks/tests/{test-privacy-block.js → test-privacy-block.cjs} +1 -1
  85. package/templates/hooks/tests/test-scout-block.cjs +315 -0
  86. package/templates/hooks/usage-context-awareness.cjs +179 -0
  87. package/templates/metadata.json +104 -0
  88. package/templates/scripts/README.md +94 -198
  89. package/templates/scripts/ck-help.py +19 -855
  90. package/templates/scripts/commands_data.yaml +3 -621
  91. package/templates/scripts/fix-shebang-permissions.sh +50 -0
  92. package/templates/scripts/generate_catalogs.py +37 -8
  93. package/templates/scripts/resolve_env.py +0 -0
  94. package/templates/scripts/scan_commands.py +14 -96
  95. package/templates/scripts/scan_skills.py +59 -19
  96. package/templates/scripts/set-active-plan.cjs +8 -3
  97. package/templates/scripts/skills_data.yaml +2 -596
  98. package/templates/scripts/test-ck-help.py +15 -0
  99. package/templates/scripts/test_ck_help.py +139 -0
  100. package/templates/scripts/test_ck_help_integration.py +72 -0
  101. package/templates/scripts/validate-docs.cjs +342 -0
  102. package/templates/scripts/win_compat.py +0 -0
  103. package/templates/scripts/worktree.cjs +4 -652
  104. package/templates/scripts/worktree.test.cjs +5 -330
  105. package/templates/settings.json +104 -239
  106. package/templates/skills/README.md +95 -255
  107. package/templates/skills/THIRD_PARTY_NOTICES.md +405 -0
  108. package/templates/skills/agent-browser/SKILL.md +294 -0
  109. package/templates/skills/agent-browser/references/.gitkeep +0 -0
  110. package/templates/skills/agent-browser/references/agent-browser-vs-chrome-devtools.md +112 -0
  111. package/templates/skills/agent-browser/references/browserbase-cloud-setup.md +161 -0
  112. package/templates/skills/ai-artist/SKILL.md +103 -56
  113. package/templates/skills/ai-artist/data/awesome-prompts.csv +3592 -0
  114. package/templates/skills/ai-artist/data/lighting.csv +19 -0
  115. package/templates/skills/ai-artist/data/nano-banana-templates.csv +17 -0
  116. package/templates/skills/ai-artist/data/platforms.csv +11 -0
  117. package/templates/skills/ai-artist/data/styles.csv +26 -0
  118. package/templates/skills/ai-artist/data/techniques.csv +19 -0
  119. package/templates/skills/ai-artist/data/use-cases.csv +16 -0
  120. package/templates/skills/ai-artist/references/awesome-nano-banana-pro-prompts.md +8575 -0
  121. package/templates/skills/ai-artist/references/nano-banana.md +78 -1
  122. package/templates/skills/ai-artist/references/validation-workflow.md +117 -0
  123. package/templates/skills/ai-artist/scripts/core.py +197 -0
  124. package/templates/skills/ai-artist/scripts/extract_prompts.py +102 -0
  125. package/templates/skills/ai-artist/scripts/generate.py +370 -0
  126. package/templates/skills/ai-artist/scripts/search.py +147 -0
  127. package/templates/skills/ai-multimodal/SKILL.md +4 -3
  128. package/templates/skills/ai-multimodal/scripts/check_setup.py +12 -2
  129. package/templates/skills/ai-multimodal/scripts/document_converter.py +0 -0
  130. package/templates/skills/ai-multimodal/scripts/gemini_batch_process.py +3 -2
  131. package/templates/skills/ai-multimodal/scripts/media_optimizer.py +0 -0
  132. package/templates/skills/ask/SKILL.md +58 -0
  133. package/templates/skills/backend-development/SKILL.md +3 -2
  134. package/templates/skills/better-auth/SKILL.md +3 -2
  135. package/templates/skills/better-auth/scripts/better_auth_init.py +3 -3
  136. package/templates/skills/bootstrap/SKILL.md +101 -0
  137. package/templates/skills/bootstrap/references/shared-phases.md +59 -0
  138. package/templates/skills/bootstrap/references/workflow-auto.md +52 -0
  139. package/templates/skills/bootstrap/references/workflow-fast.md +50 -0
  140. package/templates/skills/bootstrap/references/workflow-full.md +60 -0
  141. package/templates/skills/bootstrap/references/workflow-parallel.md +59 -0
  142. package/templates/skills/brainstorm/SKILL.md +77 -0
  143. package/templates/skills/chrome-devtools/SKILL.md +221 -68
  144. package/templates/skills/chrome-devtools/scripts/README.md +18 -0
  145. package/templates/skills/chrome-devtools/scripts/__tests__/error-handling.test.js +102 -0
  146. package/templates/skills/chrome-devtools/scripts/aria-snapshot.js +2 -1
  147. package/templates/skills/chrome-devtools/scripts/click.js +2 -1
  148. package/templates/skills/chrome-devtools/scripts/connect-chrome.js +146 -0
  149. package/templates/skills/chrome-devtools/scripts/console.js +3 -1
  150. package/templates/skills/chrome-devtools/scripts/evaluate.js +6 -3
  151. package/templates/skills/chrome-devtools/scripts/fill.js +2 -1
  152. package/templates/skills/chrome-devtools/scripts/import-cookies.js +205 -0
  153. package/templates/skills/chrome-devtools/scripts/inject-auth.js +2 -1
  154. package/templates/skills/chrome-devtools/scripts/install-deps.sh +0 -0
  155. package/templates/skills/chrome-devtools/scripts/install.sh +0 -0
  156. package/templates/skills/chrome-devtools/scripts/lib/browser.js +60 -4
  157. package/templates/skills/chrome-devtools/scripts/navigate.js +86 -2
  158. package/templates/skills/chrome-devtools/scripts/network.js +3 -1
  159. package/templates/skills/chrome-devtools/scripts/performance.js +3 -1
  160. package/templates/skills/chrome-devtools/scripts/screenshot.js +2 -1
  161. package/templates/skills/chrome-devtools/scripts/select-ref.js +2 -1
  162. package/templates/skills/chrome-devtools/scripts/snapshot.js +2 -1
  163. package/templates/skills/chrome-devtools/scripts/ws-debug.js +44 -0
  164. package/templates/skills/chrome-devtools/scripts/ws-full-debug.js +107 -0
  165. package/templates/skills/ck-help/SKILL.md +102 -0
  166. package/templates/skills/ck-help/scripts/ck-help.py +1321 -0
  167. package/templates/skills/ck-help/scripts/commands_data.yaml +3 -0
  168. package/templates/skills/ck-help/scripts/skills_data.yaml +593 -0
  169. package/templates/skills/code-review/SKILL.md +97 -93
  170. package/templates/skills/code-review/references/code-review-reception.md +113 -209
  171. package/templates/skills/code-review/references/codebase-scan-workflow.md +29 -0
  172. package/templates/skills/code-review/references/edge-case-scouting.md +119 -0
  173. package/templates/skills/code-review/references/parallel-review-workflow.md +69 -0
  174. package/templates/skills/code-review/references/requesting-code-review.md +115 -104
  175. package/templates/skills/code-review/references/task-management-reviews.md +140 -0
  176. package/templates/skills/code-review/references/verification-before-completion.md +138 -138
  177. package/templates/skills/coding-level/SKILL.md +56 -0
  178. package/templates/skills/common/README.md +120 -0
  179. package/templates/skills/common/api_key_helper.py +411 -0
  180. package/templates/skills/common/api_key_rotator.py +248 -0
  181. package/templates/skills/context-engineering/SKILL.md +108 -0
  182. package/templates/skills/context-engineering/references/context-compression.md +84 -0
  183. package/templates/skills/context-engineering/references/context-degradation.md +93 -0
  184. package/templates/skills/context-engineering/references/context-fundamentals.md +75 -0
  185. package/templates/skills/context-engineering/references/context-optimization.md +82 -0
  186. package/templates/skills/context-engineering/references/evaluation.md +89 -0
  187. package/templates/skills/context-engineering/references/memory-systems.md +88 -0
  188. package/templates/skills/context-engineering/references/multi-agent-patterns.md +90 -0
  189. package/templates/skills/context-engineering/references/project-development.md +97 -0
  190. package/templates/skills/context-engineering/references/runtime-awareness.md +202 -0
  191. package/templates/skills/context-engineering/references/tool-design.md +86 -0
  192. package/templates/skills/context-engineering/scripts/compression_evaluator.py +349 -0
  193. package/templates/skills/context-engineering/scripts/context_analyzer.py +317 -0
  194. package/templates/skills/context-engineering/scripts/tests/test_edge_cases.py +246 -0
  195. package/templates/skills/cook/README.md +86 -0
  196. package/templates/skills/cook/SKILL.md +113 -0
  197. package/templates/skills/cook/references/intent-detection.md +101 -0
  198. package/templates/skills/cook/references/review-cycle.md +75 -0
  199. package/templates/skills/cook/references/subagent-patterns.md +75 -0
  200. package/templates/skills/cook/references/workflow-steps.md +172 -0
  201. package/templates/skills/copywriting/SKILL.md +94 -0
  202. package/templates/skills/copywriting/references/copy-formulas.md +150 -0
  203. package/templates/skills/copywriting/references/cta-patterns.md +168 -0
  204. package/templates/skills/copywriting/references/email-copy.md +193 -0
  205. package/templates/skills/copywriting/references/headline-templates.md +140 -0
  206. package/templates/skills/copywriting/references/landing-page-copy.md +175 -0
  207. package/templates/skills/copywriting/references/power-words.md +189 -0
  208. package/templates/skills/copywriting/references/social-media-copy.md +222 -0
  209. package/templates/skills/copywriting/references/workflow-cro.md +83 -0
  210. package/templates/skills/copywriting/references/workflow-enhance.md +32 -0
  211. package/templates/skills/copywriting/references/workflow-fast.md +29 -0
  212. package/templates/skills/copywriting/references/workflow-good.md +39 -0
  213. package/templates/skills/copywriting/references/writing-styles.md +247 -0
  214. package/templates/skills/copywriting/scripts/extract-writing-styles.py +308 -0
  215. package/templates/skills/copywriting/templates/copy-brief.md +49 -0
  216. package/templates/skills/databases/SKILL.md +7 -155
  217. package/templates/skills/databases/analytics.md +198 -0
  218. package/templates/skills/databases/db-design.md +188 -0
  219. package/templates/skills/databases/incremental-etl.md +213 -0
  220. package/templates/skills/databases/scripts/db_backup.py +0 -0
  221. package/templates/skills/databases/scripts/db_migrate.py +3 -2
  222. package/templates/skills/databases/scripts/db_performance_check.py +3 -2
  223. package/templates/skills/databases/stacks/bigquery.md +231 -0
  224. package/templates/skills/databases/stacks/d1_cloudflare.md +137 -0
  225. package/templates/skills/databases/stacks/mysql.md +216 -0
  226. package/templates/skills/databases/stacks/postgres.md +235 -0
  227. package/templates/skills/databases/stacks/sqlite.md +244 -0
  228. package/templates/skills/databases/transactional.md +176 -0
  229. package/templates/skills/debug/SKILL.md +121 -0
  230. package/templates/skills/debug/references/frontend-verification.md +103 -0
  231. package/templates/skills/debug/references/investigation-methodology.md +101 -0
  232. package/templates/skills/debug/references/log-and-ci-analysis.md +97 -0
  233. package/templates/skills/debug/references/performance-diagnostics.md +113 -0
  234. package/templates/skills/debug/references/reporting-standards.md +122 -0
  235. package/templates/skills/debug/references/task-management-debugging.md +155 -0
  236. package/templates/skills/devops/SKILL.md +65 -253
  237. package/templates/skills/devops/references/kubernetes-basics.md +99 -0
  238. package/templates/skills/devops/references/kubernetes-helm-advanced.md +75 -0
  239. package/templates/skills/devops/references/kubernetes-helm.md +81 -0
  240. package/templates/skills/devops/references/kubernetes-kubectl.md +74 -0
  241. package/templates/skills/devops/references/kubernetes-security-advanced.md +98 -0
  242. package/templates/skills/devops/references/kubernetes-security.md +95 -0
  243. package/templates/skills/devops/references/kubernetes-troubleshooting-advanced.md +74 -0
  244. package/templates/skills/devops/references/kubernetes-troubleshooting.md +49 -0
  245. package/templates/skills/devops/references/kubernetes-workflows-advanced.md +75 -0
  246. package/templates/skills/devops/references/kubernetes-workflows.md +78 -0
  247. package/templates/skills/devops/scripts/cloudflare_deploy.py +0 -0
  248. package/templates/skills/devops/scripts/docker_optimize.py +3 -2
  249. package/templates/skills/docs/SKILL.md +55 -0
  250. package/templates/skills/docs/references/init-workflow.md +32 -0
  251. package/templates/skills/docs/references/summarize-workflow.md +18 -0
  252. package/templates/skills/docs/references/update-workflow.md +59 -0
  253. package/templates/skills/docs-seeker/SKILL.md +3 -2
  254. package/templates/skills/docs-seeker/scripts/analyze-llms-txt.js +0 -0
  255. package/templates/skills/docs-seeker/scripts/detect-topic.js +0 -0
  256. package/templates/skills/docs-seeker/scripts/fetch-docs.js +0 -0
  257. package/templates/skills/docs-seeker/scripts/tests/run-tests.js +0 -0
  258. package/templates/skills/docs-seeker/scripts/tests/test-analyze-llms.js +0 -0
  259. package/templates/skills/docs-seeker/scripts/tests/test-detect-topic.js +0 -0
  260. package/templates/skills/docs-seeker/scripts/tests/test-fetch-docs.js +0 -0
  261. package/templates/skills/docs-seeker/scripts/utils/env-loader.js +0 -0
  262. package/templates/skills/document-skills/docx/SKILL.md +2 -2
  263. package/templates/skills/document-skills/docx/ooxml/scripts/pack.py +0 -0
  264. package/templates/skills/document-skills/docx/ooxml/scripts/unpack.py +0 -0
  265. package/templates/skills/document-skills/docx/ooxml/scripts/validate.py +0 -0
  266. package/templates/skills/document-skills/docx/scripts/document.py +0 -0
  267. package/templates/skills/document-skills/docx/scripts/utilities.py +0 -0
  268. package/templates/skills/document-skills/pdf/SKILL.md +2 -2
  269. package/templates/skills/document-skills/pptx/SKILL.md +2 -2
  270. package/templates/skills/document-skills/pptx/ooxml/scripts/pack.py +0 -0
  271. package/templates/skills/document-skills/pptx/ooxml/scripts/unpack.py +0 -0
  272. package/templates/skills/document-skills/pptx/ooxml/scripts/validate.py +0 -0
  273. package/templates/skills/document-skills/pptx/scripts/inventory.py +0 -0
  274. package/templates/skills/document-skills/pptx/scripts/rearrange.py +0 -0
  275. package/templates/skills/document-skills/pptx/scripts/replace.py +0 -0
  276. package/templates/skills/document-skills/pptx/scripts/thumbnail.py +0 -0
  277. package/templates/skills/document-skills/xlsx/SKILL.md +2 -2
  278. package/templates/skills/document-skills/xlsx/recalc.py +3 -2
  279. package/templates/skills/find-skills/SKILL.md +134 -0
  280. package/templates/skills/fix/SKILL.md +111 -0
  281. package/templates/skills/fix/references/complexity-assessment.md +72 -0
  282. package/templates/skills/fix/references/mode-selection.md +46 -0
  283. package/templates/skills/fix/references/parallel-exploration.md +100 -0
  284. package/templates/skills/fix/references/review-cycle.md +77 -0
  285. package/templates/skills/fix/references/skill-activation-matrix.md +78 -0
  286. package/templates/skills/fix/references/task-orchestration.md +103 -0
  287. package/templates/skills/fix/references/workflow-ci.md +28 -0
  288. package/templates/skills/fix/references/workflow-deep.md +122 -0
  289. package/templates/skills/fix/references/workflow-logs.md +72 -0
  290. package/templates/skills/fix/references/workflow-quick.md +59 -0
  291. package/templates/skills/fix/references/workflow-standard.md +111 -0
  292. package/templates/skills/fix/references/workflow-test.md +75 -0
  293. package/templates/skills/fix/references/workflow-types.md +33 -0
  294. package/templates/skills/fix/references/workflow-ui.md +75 -0
  295. package/templates/skills/frontend-design/SKILL.md +78 -91
  296. package/templates/skills/frontend-design/references/ai-multimodal-overview.md +6 -6
  297. package/templates/skills/frontend-design/references/animejs.md +395 -395
  298. package/templates/skills/frontend-design/references/asset-generation.md +4 -4
  299. package/templates/skills/frontend-design/references/visual-analysis-overview.md +1 -1
  300. package/templates/skills/frontend-design/references/workflow-3d.md +102 -0
  301. package/templates/skills/frontend-design/references/workflow-describe.md +87 -0
  302. package/templates/skills/frontend-design/references/workflow-immersive.md +87 -0
  303. package/templates/skills/frontend-design/references/workflow-quick.md +57 -0
  304. package/templates/skills/frontend-design/references/workflow-screenshot.md +63 -0
  305. package/templates/skills/frontend-design/references/workflow-video.md +74 -0
  306. package/templates/skills/frontend-development/SKILL.md +4 -3
  307. package/templates/skills/git/SKILL.md +114 -0
  308. package/templates/skills/git/references/branch-management.md +88 -0
  309. package/templates/skills/git/references/commit-standards.md +46 -0
  310. package/templates/skills/git/references/gh-cli-guide.md +109 -0
  311. package/templates/skills/git/references/safety-protocols.md +69 -0
  312. package/templates/skills/git/references/workflow-commit.md +58 -0
  313. package/templates/skills/git/references/workflow-merge.md +48 -0
  314. package/templates/skills/git/references/workflow-pr.md +58 -0
  315. package/templates/skills/git/references/workflow-push.md +52 -0
  316. package/templates/skills/gkg/SKILL.md +91 -0
  317. package/templates/skills/gkg/references/cli-commands.md +106 -0
  318. package/templates/skills/gkg/references/http-api.md +102 -0
  319. package/templates/skills/gkg/references/language-support.md +57 -0
  320. package/templates/skills/gkg/references/mcp-tools.md +99 -0
  321. package/templates/skills/google-adk-python/SKILL.md +91 -195
  322. package/templates/skills/google-adk-python/references/agent-types-and-architecture.md +128 -0
  323. package/templates/skills/google-adk-python/references/callbacks-plugins-observability.md +117 -0
  324. package/templates/skills/google-adk-python/references/deployment-cloud-run-vertex-gke.md +138 -0
  325. package/templates/skills/google-adk-python/references/evaluation-testing-cli.md +112 -0
  326. package/templates/skills/google-adk-python/references/multi-agent-and-a2a-protocol.md +145 -0
  327. package/templates/skills/google-adk-python/references/sessions-state-memory-artifacts.md +131 -0
  328. package/templates/skills/google-adk-python/references/tools-and-mcp-integration.md +146 -0
  329. package/templates/skills/install.ps1 +130 -26
  330. package/templates/skills/install.sh +383 -63
  331. package/templates/skills/journal/SKILL.md +11 -0
  332. package/templates/skills/kanban/SKILL.md +99 -0
  333. package/templates/skills/markdown-novel-viewer/SKILL.md +314 -0
  334. package/templates/skills/markdown-novel-viewer/assets/directory-browser.css +215 -0
  335. package/templates/skills/markdown-novel-viewer/assets/favicon.png +0 -0
  336. package/templates/skills/markdown-novel-viewer/assets/novel-theme.css +16 -0
  337. package/templates/skills/markdown-novel-viewer/assets/reader.js +838 -0
  338. package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-base.css +54 -0
  339. package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-components.css +180 -0
  340. package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-content.css +176 -0
  341. package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-header.css +217 -0
  342. package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-mermaid.css +153 -0
  343. package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-overlays.css +202 -0
  344. package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-responsive.css +285 -0
  345. package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-sidebar.css +359 -0
  346. package/templates/skills/markdown-novel-viewer/assets/styles/novel-theme-variables.css +56 -0
  347. package/templates/skills/markdown-novel-viewer/assets/template.html +149 -0
  348. package/templates/skills/markdown-novel-viewer/bun.lock +38 -0
  349. package/templates/skills/markdown-novel-viewer/package.json +15 -0
  350. package/templates/skills/markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
  351. package/templates/skills/markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +335 -0
  352. package/templates/skills/markdown-novel-viewer/scripts/lib/plan-navigator.cjs +571 -0
  353. package/templates/skills/markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
  354. package/templates/skills/markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
  355. package/templates/skills/markdown-novel-viewer/scripts/server.cjs +411 -0
  356. package/templates/skills/markdown-novel-viewer/scripts/tests/server.test.cjs +283 -0
  357. package/templates/skills/markdown-novel-viewer/tests/dashboard-assets.test.cjs +340 -0
  358. package/templates/skills/markdown-novel-viewer/tests/dashboard-renderer.test.cjs +404 -0
  359. package/templates/skills/markdown-novel-viewer/tests/http-server.test.cjs +271 -0
  360. package/templates/skills/markdown-novel-viewer/tests/run-tests.cjs +51 -0
  361. package/templates/skills/markdown-novel-viewer/tests/test-framework.cjs +154 -0
  362. package/templates/skills/markdown-novel-viewer/tests/verify-xss.cjs +90 -0
  363. package/templates/skills/mcp-builder/SKILL.md +3 -2
  364. package/templates/skills/mcp-builder/scripts/evaluation.py +9 -1
  365. package/templates/skills/mcp-management/SKILL.md +8 -7
  366. package/templates/skills/mcp-management/references/gemini-cli-integration.md +16 -10
  367. package/templates/skills/mcp-management/scripts/cli.ts +0 -0
  368. package/templates/skills/mcp-management/scripts/dist/analyze-tools.js +0 -0
  369. package/templates/skills/mcp-management/scripts/dist/cli.js +0 -0
  370. package/templates/skills/mcp-management/scripts/dist/mcp-client.js +0 -0
  371. package/templates/skills/mcp-management/scripts/mcp-client.ts +0 -0
  372. package/templates/skills/media-processing/SKILL.md +3 -2
  373. package/templates/skills/media-processing/scripts/batch-remove-background.sh +0 -0
  374. package/templates/skills/media-processing/scripts/batch_resize.py +0 -0
  375. package/templates/skills/media-processing/scripts/media_convert.py +0 -0
  376. package/templates/skills/media-processing/scripts/remove-background.sh +0 -0
  377. package/templates/skills/media-processing/scripts/remove-bg-node.js +0 -0
  378. package/templates/skills/media-processing/scripts/tests/test_batch_resize.py +0 -0
  379. package/templates/skills/media-processing/scripts/tests/test_media_convert.py +0 -0
  380. package/templates/skills/media-processing/scripts/tests/test_video_optimize.py +0 -0
  381. package/templates/skills/media-processing/scripts/video_optimize.py +0 -0
  382. package/templates/skills/mermaidjs-v11/SKILL.md +116 -0
  383. package/templates/skills/mermaidjs-v11/references/cli-usage.md +228 -0
  384. package/templates/skills/mermaidjs-v11/references/configuration.md +232 -0
  385. package/templates/skills/mermaidjs-v11/references/diagram-types.md +315 -0
  386. package/templates/skills/mermaidjs-v11/references/examples.md +344 -0
  387. package/templates/skills/mermaidjs-v11/references/integration.md +310 -0
  388. package/templates/skills/mintlify/SKILL.md +121 -0
  389. package/templates/skills/mintlify/references/ai-features-and-integrations-reference.md +756 -0
  390. package/templates/skills/mintlify/references/api-documentation-components-reference.md +873 -0
  391. package/templates/skills/mintlify/references/deployment-and-continuous-integration-reference.md +674 -0
  392. package/templates/skills/mintlify/references/docs-json-configuration-reference.md +724 -0
  393. package/templates/skills/mintlify/references/mdx-components-reference.md +551 -0
  394. package/templates/skills/mintlify/references/navigation-structure-and-organization-reference.md +775 -0
  395. package/templates/skills/mobile-development/SKILL.md +3 -2
  396. package/templates/skills/payment-integration/README.md +44 -12
  397. package/templates/skills/payment-integration/SKILL.md +82 -97
  398. package/templates/skills/payment-integration/references/creem/api.md +139 -0
  399. package/templates/skills/payment-integration/references/creem/checkouts.md +99 -0
  400. package/templates/skills/payment-integration/references/creem/licensing.md +136 -0
  401. package/templates/skills/payment-integration/references/creem/overview.md +65 -0
  402. package/templates/skills/payment-integration/references/creem/sdk.md +161 -0
  403. package/templates/skills/payment-integration/references/creem/subscriptions.md +129 -0
  404. package/templates/skills/payment-integration/references/creem/webhooks.md +120 -0
  405. package/templates/skills/payment-integration/references/implementation-workflows.md +43 -0
  406. package/templates/skills/payment-integration/references/multi-provider-order-management-patterns.md +821 -0
  407. package/templates/skills/payment-integration/references/paddle/api.md +116 -0
  408. package/templates/skills/payment-integration/references/paddle/best-practices.md +130 -0
  409. package/templates/skills/payment-integration/references/paddle/overview.md +57 -0
  410. package/templates/skills/payment-integration/references/paddle/paddle-js.md +106 -0
  411. package/templates/skills/payment-integration/references/paddle/sdk.md +131 -0
  412. package/templates/skills/payment-integration/references/paddle/subscriptions.md +118 -0
  413. package/templates/skills/payment-integration/references/paddle/webhooks.md +112 -0
  414. package/templates/skills/payment-integration/references/polar/best-practices.md +781 -361
  415. package/templates/skills/payment-integration/references/sepay/best-practices.md +870 -268
  416. package/templates/skills/payment-integration/references/stripe/stripe-best-practices.md +32 -0
  417. package/templates/skills/payment-integration/references/stripe/stripe-cli.md +148 -0
  418. package/templates/skills/payment-integration/references/stripe/stripe-js.md +116 -0
  419. package/templates/skills/payment-integration/references/stripe/stripe-sdks.md +84 -0
  420. package/templates/skills/payment-integration/references/stripe/stripe-upgrade.md +175 -0
  421. package/templates/skills/payment-integration/scripts/checkout-helper.js +0 -0
  422. package/templates/skills/payment-integration/scripts/polar-webhook-verify.js +0 -0
  423. package/templates/skills/payment-integration/scripts/sepay-webhook-verify.js +0 -0
  424. package/templates/skills/payment-integration/scripts/test-scripts.js +0 -0
  425. package/templates/skills/plan/SKILL.md +137 -0
  426. package/templates/skills/plan/references/archive-workflow.md +53 -0
  427. package/templates/skills/{planning → plan}/references/codebase-understanding.md +1 -1
  428. package/templates/skills/{planning → plan}/references/output-standards.md +15 -1
  429. package/templates/skills/{planning → plan}/references/plan-organization.md +12 -19
  430. package/templates/skills/plan/references/red-team-personas.md +69 -0
  431. package/templates/skills/plan/references/red-team-workflow.md +77 -0
  432. package/templates/skills/{planning → plan}/references/research-phase.md +2 -2
  433. package/templates/skills/plan/references/task-management.md +132 -0
  434. package/templates/skills/plan/references/validate-question-framework.md +80 -0
  435. package/templates/skills/plan/references/validate-workflow.md +65 -0
  436. package/templates/skills/plan/references/workflow-modes.md +145 -0
  437. package/templates/skills/plans-kanban/SKILL.md +167 -0
  438. package/templates/skills/plans-kanban/assets/dashboard-template.html +119 -0
  439. package/templates/skills/plans-kanban/assets/dashboard.css +1594 -0
  440. package/templates/skills/plans-kanban/assets/dashboard.js +596 -0
  441. package/templates/skills/plans-kanban/assets/favicon.png +0 -0
  442. package/templates/skills/plans-kanban/package.json +13 -0
  443. package/templates/skills/plans-kanban/scripts/lib/dashboard-renderer.cjs +884 -0
  444. package/templates/skills/plans-kanban/scripts/lib/http-server.cjs +310 -0
  445. package/templates/skills/plans-kanban/scripts/lib/plan-metadata-extractor.cjs +489 -0
  446. package/templates/skills/plans-kanban/scripts/lib/plan-parser.cjs +175 -0
  447. package/templates/skills/plans-kanban/scripts/lib/plan-scanner.cjs +272 -0
  448. package/templates/skills/plans-kanban/scripts/lib/port-finder.cjs +48 -0
  449. package/templates/skills/plans-kanban/scripts/lib/process-mgr.cjs +128 -0
  450. package/templates/skills/plans-kanban/scripts/server.cjs +260 -0
  451. package/templates/skills/preview/SKILL.md +75 -0
  452. package/templates/skills/preview/references/generation-modes.md +95 -0
  453. package/templates/skills/preview/references/view-mode.md +42 -0
  454. package/templates/skills/problem-solving/SKILL.md +3 -2
  455. package/templates/skills/project-management/SKILL.md +122 -0
  456. package/templates/skills/project-management/references/documentation-triggers.md +60 -0
  457. package/templates/skills/project-management/references/hydration-workflow.md +85 -0
  458. package/templates/skills/project-management/references/progress-tracking.md +96 -0
  459. package/templates/skills/project-management/references/reporting-patterns.md +94 -0
  460. package/templates/skills/project-management/references/task-operations.md +85 -0
  461. package/templates/skills/react-best-practices/AGENTS.md +2249 -0
  462. package/templates/skills/react-best-practices/README.md +123 -0
  463. package/templates/skills/react-best-practices/SKILL.md +122 -0
  464. package/templates/skills/react-best-practices/metadata.json +15 -0
  465. package/templates/skills/react-best-practices/rules/_sections.md +46 -0
  466. package/templates/skills/react-best-practices/rules/_template.md +28 -0
  467. package/templates/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  468. package/templates/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  469. package/templates/skills/react-best-practices/rules/async-api-routes.md +38 -0
  470. package/templates/skills/react-best-practices/rules/async-defer-await.md +80 -0
  471. package/templates/skills/react-best-practices/rules/async-dependencies.md +36 -0
  472. package/templates/skills/react-best-practices/rules/async-parallel.md +28 -0
  473. package/templates/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  474. package/templates/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  475. package/templates/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  476. package/templates/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  477. package/templates/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  478. package/templates/skills/react-best-practices/rules/bundle-preload.md +50 -0
  479. package/templates/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  480. package/templates/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  481. package/templates/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  482. package/templates/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  483. package/templates/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  484. package/templates/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  485. package/templates/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  486. package/templates/skills/react-best-practices/rules/js-early-exit.md +50 -0
  487. package/templates/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  488. package/templates/skills/react-best-practices/rules/js-index-maps.md +37 -0
  489. package/templates/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  490. package/templates/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  491. package/templates/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  492. package/templates/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  493. package/templates/skills/react-best-practices/rules/rendering-activity.md +26 -0
  494. package/templates/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  495. package/templates/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  496. package/templates/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  497. package/templates/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  498. package/templates/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  499. package/templates/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  500. package/templates/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  501. package/templates/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  502. package/templates/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  503. package/templates/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  504. package/templates/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  505. package/templates/skills/react-best-practices/rules/rerender-memo.md +44 -0
  506. package/templates/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  507. package/templates/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  508. package/templates/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  509. package/templates/skills/react-best-practices/rules/server-cache-react.md +26 -0
  510. package/templates/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
  511. package/templates/skills/react-best-practices/rules/server-serialization.md +38 -0
  512. package/templates/skills/remotion/SKILL.md +44 -0
  513. package/templates/skills/remotion/rules/3d.md +86 -0
  514. package/templates/skills/remotion/rules/animations.md +29 -0
  515. package/templates/skills/remotion/rules/assets/charts-bar-chart.tsx +173 -0
  516. package/templates/skills/remotion/rules/assets/text-animations-typewriter.tsx +100 -0
  517. package/templates/skills/remotion/rules/assets/text-animations-word-highlight.tsx +108 -0
  518. package/templates/skills/remotion/rules/assets.md +78 -0
  519. package/templates/skills/remotion/rules/audio.md +172 -0
  520. package/templates/skills/remotion/rules/calculate-metadata.md +104 -0
  521. package/templates/skills/remotion/rules/can-decode.md +75 -0
  522. package/templates/skills/remotion/rules/charts.md +58 -0
  523. package/templates/skills/remotion/rules/compositions.md +146 -0
  524. package/templates/skills/remotion/rules/display-captions.md +126 -0
  525. package/templates/skills/remotion/rules/extract-frames.md +229 -0
  526. package/templates/skills/remotion/rules/fonts.md +152 -0
  527. package/templates/skills/remotion/rules/get-audio-duration.md +58 -0
  528. package/templates/skills/remotion/rules/get-video-dimensions.md +68 -0
  529. package/templates/skills/remotion/rules/get-video-duration.md +58 -0
  530. package/templates/skills/remotion/rules/gifs.md +138 -0
  531. package/templates/skills/remotion/rules/images.md +130 -0
  532. package/templates/skills/remotion/rules/import-srt-captions.md +67 -0
  533. package/templates/skills/remotion/rules/lottie.md +68 -0
  534. package/templates/skills/remotion/rules/measuring-dom-nodes.md +35 -0
  535. package/templates/skills/remotion/rules/measuring-text.md +143 -0
  536. package/templates/skills/remotion/rules/sequencing.md +106 -0
  537. package/templates/skills/remotion/rules/tailwind.md +11 -0
  538. package/templates/skills/remotion/rules/text-animations.md +20 -0
  539. package/templates/skills/remotion/rules/timing.md +179 -0
  540. package/templates/skills/remotion/rules/transcribe-captions.md +19 -0
  541. package/templates/skills/remotion/rules/transitions.md +122 -0
  542. package/templates/skills/remotion/rules/trimming.md +53 -0
  543. package/templates/skills/remotion/rules/videos.md +171 -0
  544. package/templates/skills/repomix/SKILL.md +3 -2
  545. package/templates/skills/repomix/scripts/repomix_batch.py +0 -0
  546. package/templates/skills/research/SKILL.md +9 -6
  547. package/templates/skills/scout/SKILL.md +89 -0
  548. package/templates/skills/scout/references/external-scouting.md +140 -0
  549. package/templates/skills/scout/references/internal-scouting.md +119 -0
  550. package/templates/skills/scout/references/task-management-scouting.md +125 -0
  551. package/templates/skills/sequential-thinking/SKILL.md +3 -2
  552. package/templates/skills/sequential-thinking/scripts/format-thought.js +0 -0
  553. package/templates/skills/sequential-thinking/scripts/process-thought.js +0 -0
  554. package/templates/skills/shader/SKILL.md +113 -0
  555. package/templates/skills/shader/references/glsl-cellular-voronoi-worley-noise-patterns.md +142 -0
  556. package/templates/skills/shader/references/glsl-colors-rgb-hsb-gradients-mixing-color-spaces.md +143 -0
  557. package/templates/skills/shader/references/glsl-fbm-fractional-brownian-motion-turbulence-octaves.md +146 -0
  558. package/templates/skills/shader/references/glsl-fundamentals-data-types-vectors-precision-coordinates.md +104 -0
  559. package/templates/skills/shader/references/glsl-noise-random-perlin-simplex-cellular-voronoi.md +115 -0
  560. package/templates/skills/shader/references/glsl-pattern-symmetry-truchet-domain-warping.md +134 -0
  561. package/templates/skills/shader/references/glsl-patterns-tiling-fract-matrices-transformations.md +133 -0
  562. package/templates/skills/shader/references/glsl-procedural-textures-clouds-marble-wood-terrain.md +144 -0
  563. package/templates/skills/shader/references/glsl-shader-builtin-functions-complete-api-reference.md +112 -0
  564. package/templates/skills/shader/references/glsl-shapes-polygon-star-polar-sdf-combinations.md +124 -0
  565. package/templates/skills/shader/references/glsl-shapes-sdf-circles-rectangles-polar-distance-fields.md +106 -0
  566. package/templates/skills/shader/references/glsl-shaping-functions-step-smoothstep-curves-interpolation.md +141 -0
  567. package/templates/skills/shopify/SKILL.md +3 -2
  568. package/templates/skills/shopify/scripts/shopify_init.py +5 -5
  569. package/templates/skills/skill-creator/SKILL.md +91 -238
  570. package/templates/skills/skill-creator/references/benchmark-optimization-guide.md +86 -0
  571. package/templates/skills/skill-creator/references/distribution-guide.md +79 -0
  572. package/templates/skills/skill-creator/references/mcp-skills-integration.md +71 -0
  573. package/templates/skills/skill-creator/references/metadata-quality-criteria.md +76 -0
  574. package/templates/skills/skill-creator/references/plugin-marketplace-hosting.md +104 -0
  575. package/templates/skills/skill-creator/references/plugin-marketplace-overview.md +89 -0
  576. package/templates/skills/skill-creator/references/plugin-marketplace-schema.md +93 -0
  577. package/templates/skills/skill-creator/references/plugin-marketplace-sources.md +103 -0
  578. package/templates/skills/skill-creator/references/plugin-marketplace-troubleshooting.md +76 -0
  579. package/templates/skills/skill-creator/references/script-quality-criteria.md +106 -0
  580. package/templates/skills/skill-creator/references/skill-anatomy-and-requirements.md +76 -0
  581. package/templates/skills/skill-creator/references/skill-creation-workflow.md +95 -0
  582. package/templates/skills/skill-creator/references/skill-design-patterns.md +75 -0
  583. package/templates/skills/skill-creator/references/skillmark-benchmark-criteria.md +102 -0
  584. package/templates/skills/skill-creator/references/structure-organization-criteria.md +114 -0
  585. package/templates/skills/skill-creator/references/testing-and-iteration.md +78 -0
  586. package/templates/skills/skill-creator/references/token-efficiency-criteria.md +74 -0
  587. package/templates/skills/skill-creator/references/troubleshooting-guide.md +80 -0
  588. package/templates/skills/skill-creator/references/validation-checklist.md +83 -0
  589. package/templates/skills/skill-creator/references/writing-effective-instructions.md +88 -0
  590. package/templates/skills/skill-creator/references/yaml-frontmatter-reference.md +91 -0
  591. package/templates/skills/skill-creator/scripts/debug.zip +0 -0
  592. package/templates/skills/skill-creator/scripts/encoding_utils.py +36 -0
  593. package/templates/skills/skill-creator/scripts/init_skill.py +9 -4
  594. package/templates/skills/skill-creator/scripts/package_skill.py +5 -0
  595. package/templates/skills/skill-creator/scripts/quick_validate.py +6 -2
  596. package/templates/skills/tanstack/SKILL.md +141 -0
  597. package/templates/skills/tanstack/references/tanstack-ai.md +97 -0
  598. package/templates/skills/tanstack/references/tanstack-form.md +125 -0
  599. package/templates/skills/tanstack/references/tanstack-start.md +100 -0
  600. package/templates/skills/team/SKILL.md +285 -0
  601. package/templates/skills/team/references/agent-teams-controls-and-modes.md +107 -0
  602. package/templates/skills/team/references/agent-teams-examples-and-best-practices.md +182 -0
  603. package/templates/skills/team/references/agent-teams-official-docs.md +175 -0
  604. package/templates/skills/template-skill/SKILL.md +1 -1
  605. package/templates/skills/test/SKILL.md +109 -0
  606. package/templates/skills/test/references/report-format.md +58 -0
  607. package/templates/skills/test/references/test-execution-workflow.md +103 -0
  608. package/templates/skills/test/references/ui-testing-workflow.md +65 -0
  609. package/templates/skills/threejs/SKILL.md +106 -53
  610. package/templates/skills/threejs/data/api-reference.csv +61 -0
  611. package/templates/skills/threejs/data/categories.csv +14 -0
  612. package/templates/skills/threejs/data/examples-all.csv +557 -0
  613. package/templates/skills/threejs/data/use-cases.csv +21 -0
  614. package/templates/skills/threejs/references/00-fundamentals.md +487 -0
  615. package/templates/skills/threejs/references/11-materials-advanced.md +1 -1
  616. package/templates/skills/threejs/references/11-materials.md +519 -0
  617. package/templates/skills/threejs/references/17-shader.md +641 -0
  618. package/templates/skills/threejs/references/18-geometry.md +547 -0
  619. package/templates/skills/threejs/scripts/core.py +236 -0
  620. package/templates/skills/threejs/scripts/extract_examples.py +688 -0
  621. package/templates/skills/threejs/scripts/generate_csv_from_json.py +135 -0
  622. package/templates/skills/threejs/scripts/search.py +77 -0
  623. package/templates/skills/ui-styling/SKILL.md +3 -2
  624. package/templates/skills/ui-styling/scripts/shadcn_add.py +0 -0
  625. package/templates/skills/ui-styling/scripts/tailwind_config_gen.py +1 -1
  626. package/templates/skills/ui-ux-pro-max/SKILL.md +69 -32
  627. package/templates/skills/ui-ux-pro-max/data/charts.csv +25 -25
  628. package/templates/skills/ui-ux-pro-max/data/colors.csv +96 -96
  629. package/templates/skills/ui-ux-pro-max/data/landing.csv +30 -30
  630. package/templates/skills/ui-ux-pro-max/data/products.csv +96 -96
  631. package/templates/skills/ui-ux-pro-max/data/prompts.csv +20 -20
  632. package/templates/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  633. package/templates/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  634. package/templates/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  635. package/templates/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  636. package/templates/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  637. package/templates/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  638. package/templates/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  639. package/templates/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  640. package/templates/skills/ui-ux-pro-max/data/styles.csv +58 -58
  641. package/templates/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  642. package/templates/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  643. package/templates/skills/ui-ux-pro-max/scripts/design_system.py +494 -0
  644. package/templates/skills/ui-ux-pro-max/scripts/search.py +84 -61
  645. package/templates/skills/use-mcp/SKILL.md +42 -0
  646. package/templates/skills/watzup/SKILL.md +12 -0
  647. package/templates/skills/web-design-guidelines/SKILL.md +36 -0
  648. package/templates/skills/web-frameworks/SKILL.md +4 -3
  649. package/templates/skills/web-frameworks/scripts/nextjs_init.py +13 -13
  650. package/templates/skills/web-frameworks/scripts/turborepo_migrate.py +0 -0
  651. package/templates/skills/web-testing/SKILL.md +97 -0
  652. package/templates/skills/web-testing/references/accessibility-testing.md +84 -0
  653. package/templates/skills/web-testing/references/api-testing.md +78 -0
  654. package/templates/skills/web-testing/references/ci-cd-testing-workflows.md +121 -0
  655. package/templates/skills/web-testing/references/component-testing.md +94 -0
  656. package/templates/skills/web-testing/references/contract-testing.md +146 -0
  657. package/templates/skills/web-testing/references/cross-browser-checklist.md +72 -0
  658. package/templates/skills/web-testing/references/database-testing.md +139 -0
  659. package/templates/skills/web-testing/references/e2e-testing-playwright.md +119 -0
  660. package/templates/skills/web-testing/references/functional-testing-checklist.md +88 -0
  661. package/templates/skills/web-testing/references/interactive-testing-patterns.md +89 -0
  662. package/templates/skills/web-testing/references/load-testing-k6.md +93 -0
  663. package/templates/skills/web-testing/references/mobile-gesture-testing.md +85 -0
  664. package/templates/skills/web-testing/references/performance-core-web-vitals.md +124 -0
  665. package/templates/skills/web-testing/references/playwright-component-testing.md +115 -0
  666. package/templates/skills/web-testing/references/pre-release-checklist.md +75 -0
  667. package/templates/skills/web-testing/references/security-checklists.md +81 -0
  668. package/templates/skills/web-testing/references/security-testing-overview.md +92 -0
  669. package/templates/skills/web-testing/references/shadow-dom-testing.md +70 -0
  670. package/templates/skills/web-testing/references/test-data-management.md +131 -0
  671. package/templates/skills/web-testing/references/test-flakiness-mitigation.md +86 -0
  672. package/templates/skills/web-testing/references/testing-pyramid-strategy.md +76 -0
  673. package/templates/skills/web-testing/references/unit-integration-testing.md +138 -0
  674. package/templates/skills/web-testing/references/visual-regression.md +92 -0
  675. package/templates/skills/web-testing/references/vulnerability-payloads.md +93 -0
  676. package/templates/skills/web-testing/scripts/analyze-test-results.js +280 -0
  677. package/templates/skills/web-testing/scripts/init-playwright.js +233 -0
  678. package/templates/skills/worktree/SKILL.md +96 -0
  679. package/templates/skills/worktree/scripts/worktree.cjs +916 -0
  680. package/templates/skills/worktree/scripts/worktree.test.cjs +792 -0
  681. package/templates/statusline.cjs +477 -244
  682. package/templates/statusline.ps1 +0 -1
  683. package/templates/statusline.sh +0 -1
  684. package/templates/agents/README.md +0 -172
  685. package/templates/agents/copywriter.md +0 -113
  686. package/templates/agents/database-admin.md +0 -97
  687. package/templates/agents/scout-external.md +0 -146
  688. package/templates/agents/scout.md +0 -260
  689. package/templates/hooks/.python-cache.json +0 -1
  690. package/templates/hooks/README.md +0 -246
  691. package/templates/hooks/backend-csharp-context.cjs +0 -223
  692. package/templates/hooks/design-system-context.cjs +0 -185
  693. package/templates/hooks/frontend-typescript-context.cjs +0 -233
  694. package/templates/hooks/lib/ck-paths.cjs +0 -110
  695. package/templates/hooks/lib/context-tracker.cjs +0 -335
  696. package/templates/hooks/notify-waiting.js +0 -117
  697. package/templates/hooks/post-edit-prettier.cjs +0 -189
  698. package/templates/hooks/post-task-review.cjs +0 -142
  699. package/templates/hooks/scss-styling-context.cjs +0 -213
  700. package/templates/hooks/session-end.cjs +0 -35
  701. package/templates/hooks/tests/test-context-tracker.cjs +0 -454
  702. package/templates/hooks/tests/test-scout-block.js +0 -163
  703. package/templates/hooks/workflow-router.cjs +0 -326
  704. package/templates/hooks/write-compact-marker.cjs +0 -159
  705. package/templates/scripts/__pycache__/win_compat.cpython-312.pyc +0 -0
  706. package/templates/scripts/plan-preview.cjs +0 -921
  707. package/templates/skills/arch-cross-service-integration/SKILL.md +0 -48
  708. package/templates/skills/arch-performance-optimization/SKILL.md +0 -306
  709. package/templates/skills/arch-security-review/SKILL.md +0 -344
  710. package/templates/skills/branch-comparison/SKILL.md +0 -150
  711. package/templates/skills/bug-diagnosis/SKILL.md +0 -309
  712. package/templates/skills/claude-code/references/advanced-features.md +0 -399
  713. package/templates/skills/claude-code/references/agent-skills.md +0 -399
  714. package/templates/skills/claude-code/references/api-reference.md +0 -498
  715. package/templates/skills/claude-code/references/best-practices.md +0 -447
  716. package/templates/skills/claude-code/references/cicd-integration.md +0 -428
  717. package/templates/skills/claude-code/references/common-workflows.md +0 -119
  718. package/templates/skills/claude-code/references/configuration.md +0 -480
  719. package/templates/skills/claude-code/references/enterprise-features.md +0 -472
  720. package/templates/skills/claude-code/references/getting-started.md +0 -252
  721. package/templates/skills/claude-code/references/hooks-and-plugins.md +0 -444
  722. package/templates/skills/claude-code/references/hooks-comprehensive.md +0 -622
  723. package/templates/skills/claude-code/references/ide-integration.md +0 -316
  724. package/templates/skills/claude-code/references/mcp-integration.md +0 -386
  725. package/templates/skills/claude-code/references/slash-commands.md +0 -489
  726. package/templates/skills/claude-code/references/troubleshooting.md +0 -456
  727. package/templates/skills/claude-code/skill.md +0 -60
  728. package/templates/skills/debugging/SKILL.md +0 -84
  729. package/templates/skills/developer-growth-analysis/SKILL.md +0 -322
  730. package/templates/skills/documentation/SKILL.md +0 -134
  731. package/templates/skills/domain-name-brainstormer/SKILL.md +0 -212
  732. package/templates/skills/dual-pass-review/SKILL.md +0 -249
  733. package/templates/skills/feature-docs/SKILL.md +0 -294
  734. package/templates/skills/feature-implementation/SKILL.md +0 -262
  735. package/templates/skills/feature-investigation/SKILL.md +0 -346
  736. package/templates/skills/frontend-design-pro/SKILL.md +0 -58
  737. package/templates/skills/package-upgrade/SKILL.md +0 -189
  738. package/templates/skills/plan-analysis/SKILL.md +0 -191
  739. package/templates/skills/planning/SKILL.md +0 -115
  740. package/templates/skills/planning-with-files/SKILL.md +0 -160
  741. package/templates/skills/planning-with-files/examples.md +0 -202
  742. package/templates/skills/planning-with-files/reference.md +0 -110
  743. package/templates/skills/project-index/SKILL.md +0 -97
  744. package/templates/skills/project-index/scripts/scan-structure.js +0 -417
  745. package/templates/skills/project-index/scripts/scan_structure.py +0 -450
  746. package/templates/skills/readme-improvement/SKILL.md +0 -177
  747. package/templates/skills/skill-share/SKILL.md +0 -80
  748. package/templates/skills/tasks-code-review/SKILL.md +0 -298
  749. package/templates/skills/tasks-documentation/SKILL.md +0 -328
  750. package/templates/skills/tasks-spec-update/SKILL.md +0 -318
  751. package/templates/skills/tasks-test-generation/SKILL.md +0 -433
  752. package/templates/skills/test-generation/SKILL.md +0 -203
  753. package/templates/skills/webapp-testing/LICENSE.txt +0 -202
  754. package/templates/skills/webapp-testing/SKILL.md +0 -96
  755. package/templates/skills/webapp-testing/examples/console_logging.py +0 -35
  756. package/templates/skills/webapp-testing/examples/element_discovery.py +0 -40
  757. package/templates/skills/webapp-testing/examples/static_html_automation.py +0 -33
  758. package/templates/skills/webapp-testing/scripts/with_server.py +0 -106
  759. /package/templates/hooks/scout-block/vendor/{ignore.js → ignore.cjs} +0 -0
  760. /package/templates/skills/{debugging → debug}/references/defense-in-depth.md +0 -0
  761. /package/templates/skills/{debugging → debug}/references/root-cause-tracing.md +0 -0
  762. /package/templates/skills/{debugging → debug}/references/systematic-debugging.md +0 -0
  763. /package/templates/skills/{debugging → debug}/references/verification.md +0 -0
  764. /package/templates/skills/{debugging → debug}/scripts/find-polluter.sh +0 -0
  765. /package/templates/skills/{debugging → debug}/scripts/find-polluter.test.md +0 -0
  766. /package/templates/skills/{planning → plan}/references/solution-design.md +0 -0
@@ -7,349 +7,146 @@
7
7
  *
8
8
  * Exit Codes:
9
9
  * 0 - Success (non-blocking, allows continuation)
10
+ *
11
+ * Core detection logic extracted to lib/project-detector.cjs for OpenCode plugin reuse.
10
12
  */
11
13
 
12
- const fs = require('fs');
13
- const path = require('path');
14
- const os = require('os');
15
- const { execSync, execFileSync } = require('child_process');
16
- const {
17
- loadConfig,
18
- writeEnv,
19
- writeSessionState,
20
- resolvePlanPath,
21
- getReportsPath,
22
- resolveNamingPattern
23
- } = require('./lib/ck-config-utils.cjs');
24
- const { writeResetMarker } = require('./lib/context-tracker.cjs');
25
-
26
- // Python version cache configuration
27
- const PYTHON_CACHE_FILE = path.join(__dirname, '.python-cache.json');
28
- const PYTHON_CACHE_TTL = 86400000; // 24 hours in milliseconds
29
-
30
- /**
31
- * Safely execute shell command with optional timeout
32
- * @param {string} cmd - Command to execute
33
- * @param {number} timeoutMs - Timeout in milliseconds (default: 5000)
34
- */
35
- function execSafe(cmd, timeoutMs = 5000) {
36
- try {
37
- return execSync(cmd, {
38
- encoding: 'utf8',
39
- timeout: timeoutMs,
40
- stdio: ['pipe', 'pipe', 'pipe']
41
- }).trim();
42
- } catch (e) {
43
- return null;
44
- }
45
- }
46
-
47
- /**
48
- * Safely execute a binary with arguments (no shell interpolation)
49
- * Prevents command injection and handles paths with spaces correctly
50
- * @param {string} binary - Path to the executable
51
- * @param {string[]} args - Arguments array
52
- * @param {number} timeoutMs - Timeout in milliseconds (default: 2000)
53
- */
54
- function execFileSafe(binary, args, timeoutMs = 2000) {
55
- try {
56
- return execFileSync(binary, args, {
57
- encoding: 'utf8',
58
- timeout: timeoutMs,
59
- stdio: ['pipe', 'pipe', 'pipe']
60
- }).trim();
61
- } catch (e) {
62
- return null;
63
- }
64
- }
65
-
66
- /**
67
- * Validate that a path is a file (not directory) and doesn't contain shell metacharacters
68
- * @param {string} p - Path to validate
69
- */
70
- function isValidPythonPath(p) {
71
- if (!p || typeof p !== 'string') return false;
72
- // Reject paths with shell metacharacters that could indicate injection attempts
73
- if (/[;&|`$(){}[\]<>!#*?]/.test(p)) return false;
74
- try {
75
- const stat = fs.statSync(p);
76
- return stat.isFile();
77
- } catch (e) {
78
- return false;
79
- }
80
- }
81
-
82
- /**
83
- * Build platform-specific Python paths for fast filesystem check
84
- * Avoids slow shell initialization (pyenv, conda) by checking paths directly
85
- */
86
- function getPythonPaths() {
87
- const paths = [];
88
-
89
- // User override takes priority
90
- if (process.env.PYTHON_PATH) {
91
- paths.push(process.env.PYTHON_PATH);
92
- }
93
-
94
- if (process.platform === 'win32') {
95
- // Windows paths
96
- const localAppData = process.env.LOCALAPPDATA;
97
- const programFiles = process.env.ProgramFiles || 'C:\\Program Files';
98
- const programFilesX86 = process.env['ProgramFiles(x86)'] || 'C:\\Program Files (x86)';
99
-
100
- // Microsoft Store Python (most common on modern Windows)
101
- if (localAppData) {
102
- paths.push(path.join(localAppData, 'Microsoft', 'WindowsApps', 'python.exe'));
103
- paths.push(path.join(localAppData, 'Microsoft', 'WindowsApps', 'python3.exe'));
104
- // User-installed Python (common versions)
105
- for (const ver of ['313', '312', '311', '310', '39']) {
106
- paths.push(path.join(localAppData, 'Programs', 'Python', `Python${ver}`, 'python.exe'));
107
- }
108
- }
109
-
110
- // System-wide Python installations
111
- for (const ver of ['313', '312', '311', '310', '39']) {
112
- paths.push(path.join(programFiles, `Python${ver}`, 'python.exe'));
113
- paths.push(path.join(programFilesX86, `Python${ver}`, 'python.exe'));
114
- }
115
-
116
- // Legacy paths
117
- paths.push('C:\\Python313\\python.exe');
118
- paths.push('C:\\Python312\\python.exe');
119
- paths.push('C:\\Python311\\python.exe');
120
- paths.push('C:\\Python310\\python.exe');
121
- paths.push('C:\\Python39\\python.exe');
122
- } else {
123
- // Unix-like paths (Linux, macOS)
124
- paths.push('/usr/bin/python3');
125
- paths.push('/usr/local/bin/python3');
126
- paths.push('/opt/homebrew/bin/python3'); // macOS ARM (Homebrew)
127
- paths.push('/opt/homebrew/bin/python'); // macOS ARM fallback
128
- paths.push('/usr/bin/python');
129
- paths.push('/usr/local/bin/python');
14
+ // Crash wrapper
15
+ try {
16
+ const fs = require('fs');
17
+ const path = require('path');
18
+ const os = require('os');
19
+ const {
20
+ loadConfig,
21
+ writeEnv,
22
+ writeSessionState,
23
+ resolvePlanPath,
24
+ getReportsPath,
25
+ resolveNamingPattern,
26
+ extractTaskListId,
27
+ isHookEnabled
28
+ } = require('./lib/ck-config-utils.cjs');
29
+
30
+ // Early exit if hook disabled in config
31
+ if (!isHookEnabled('session-init')) {
32
+ process.exit(0);
130
33
  }
131
34
 
132
- return paths;
133
- }
35
+ // Import shared project detection logic
36
+ const {
37
+ detectProjectType,
38
+ detectPackageManager,
39
+ detectFramework,
40
+ getPythonVersion,
41
+ getGitRemoteUrl,
42
+ getGitBranch,
43
+ getGitRoot,
44
+ getCodingLevelStyleName,
45
+ getCodingLevelGuidelines,
46
+ buildContextOutput,
47
+ execSafe
48
+ } = require('./lib/project-detector.cjs');
134
49
 
135
50
  /**
136
- * Find Python binary using fast filesystem check
137
- * Returns first existing valid file path, avoiding slow shell spawns
51
+ * One-time cleanup for orphaned .shadowed/ directories from skill-dedup hook (Issue #422)
52
+ * The hook was disabled due to race conditions; this restores any orphaned skills.
138
53
  */
139
- function findPythonBinary() {
140
- const paths = getPythonPaths();
141
- for (const p of paths) {
142
- if (isValidPythonPath(p)) return p;
143
- }
144
- return null;
145
- }
54
+ function cleanupOrphanedShadowedSkills() {
55
+ const shadowedDir = path.join(process.cwd(), '.claude', 'skills', '.shadowed');
56
+ if (!fs.existsSync(shadowedDir)) return { restored: [], skipped: [], kept: [] };
146
57
 
147
- /**
148
- * Get Python version with optimized detection
149
- * Layer 0: Fast path pre-check (instant fs lookup)
150
- * Layer 1: Timeout protection (2s max per command)
151
- * Layer 2: Graceful degradation (returns null on failure)
152
- */
153
- function getPythonVersion() {
154
- // Layer 0: Fast path pre-check - instant filesystem lookup
155
- const pythonPath = findPythonBinary();
156
- if (pythonPath) {
157
- // Use execFileSafe to prevent command injection and handle paths with spaces
158
- // Direct binary execution bypasses shell initialization (pyenv, conda)
159
- const result = execFileSafe(pythonPath, ['--version']);
160
- if (result) return result;
161
- }
162
-
163
- // Fallback: Try shell resolution with strict timeout
164
- // This catches non-standard installations but caps at 2s
165
- // Note: Shell fallback still needed for pyenv/asdf where binary isn't in standard paths
166
- const commands = ['python3', 'python'];
167
- for (const cmd of commands) {
168
- const result = execFileSafe(cmd, ['--version']);
169
- if (result) return result;
170
- }
58
+ const skillsDir = path.join(process.cwd(), '.claude', 'skills');
59
+ const restored = [];
60
+ const skipped = [];
61
+ const kept = []; // Skills kept for manual review (content differs)
171
62
 
172
- return null;
173
- }
174
-
175
- /**
176
- * Get Python version with caching to avoid repeated detection
177
- * Caches result for 24 hours to speed up session startup
178
- */
179
- function getPythonVersionCached() {
180
63
  try {
181
- if (fs.existsSync(PYTHON_CACHE_FILE)) {
182
- const cache = JSON.parse(fs.readFileSync(PYTHON_CACHE_FILE, 'utf8'));
183
- if (cache && Date.now() - cache.timestamp < PYTHON_CACHE_TTL) {
184
- return cache.version;
64
+ const entries = fs.readdirSync(shadowedDir, { withFileTypes: true });
65
+ for (const entry of entries) {
66
+ if (!entry.isDirectory()) continue;
67
+ const src = path.join(shadowedDir, entry.name);
68
+ const dest = path.join(skillsDir, entry.name);
69
+
70
+ try {
71
+ if (!fs.existsSync(dest)) {
72
+ fs.renameSync(src, dest);
73
+ restored.push(entry.name);
74
+ } else {
75
+ // Skill exists in local - verify content match before deleting orphaned copy
76
+ const orphanedSkill = path.join(src, 'SKILL.md');
77
+ const localSkill = path.join(dest, 'SKILL.md');
78
+ if (fs.existsSync(orphanedSkill) && fs.existsSync(localSkill)) {
79
+ const orphanedContent = fs.readFileSync(orphanedSkill, 'utf8');
80
+ const localContent = fs.readFileSync(localSkill, 'utf8');
81
+ if (orphanedContent === localContent) {
82
+ // Content identical - safe to remove orphaned duplicate
83
+ fs.rmSync(src, { recursive: true, force: true });
84
+ skipped.push(entry.name);
85
+ } else {
86
+ // Content differs - user may have edited orphaned version, keep for review
87
+ kept.push(entry.name);
88
+ }
89
+ } else {
90
+ // Missing SKILL.md - safe to remove orphaned copy
91
+ fs.rmSync(src, { recursive: true, force: true });
92
+ skipped.push(entry.name);
93
+ }
94
+ }
95
+ } catch (err) {
96
+ process.stderr.write(`[session-init] Failed to process "${entry.name}": ${err.message}\n`);
185
97
  }
186
98
  }
187
- } catch (e) {
188
- // Cache read failed, proceed with fresh detection
99
+ // Clean up manifest and shadowed dir if empty
100
+ const manifestFile = path.join(shadowedDir, '.dedup-manifest.json');
101
+ if (fs.existsSync(manifestFile)) fs.unlinkSync(manifestFile);
102
+ // Only remove shadowed dir if empty (kept skills may remain)
103
+ const remaining = fs.readdirSync(shadowedDir);
104
+ if (remaining.length === 0) fs.rmdirSync(shadowedDir);
105
+ return { restored, skipped, kept };
106
+ } catch (err) {
107
+ process.stderr.write(`[session-init] Shadowed cleanup error: ${err.message}\n`);
108
+ return { restored, skipped, kept };
189
109
  }
190
-
191
- const version = getPythonVersion();
192
-
193
- try {
194
- fs.writeFileSync(PYTHON_CACHE_FILE, JSON.stringify({
195
- version,
196
- timestamp: Date.now()
197
- }));
198
- } catch (e) {
199
- // Cache write failed, non-critical
200
- }
201
-
202
- return version;
203
110
  }
204
111
 
205
112
  /**
206
- * Get git remote URL
113
+ * Detect if this session is running inside an Agent Team.
114
+ * Scans ~/.claude/teams/ for active team configs and checks membership.
115
+ * Note: Returns first team found — Claude Code supports one team per session.
116
+ * Note: Team lifecycle (creation/cleanup) is managed by Claude Code, not this hook.
117
+ * @returns {{ teamName: string, memberCount: number } | null}
207
118
  */
208
- function getGitRemoteUrl() {
209
- return execSafe('git config --get remote.origin.url');
210
- }
211
-
212
- /**
213
- * Get current git branch
214
- */
215
- function getGitBranch() {
216
- return execSafe('git branch --show-current');
217
- }
218
-
219
- /**
220
- * Detect project type based on workspace indicators
221
- */
222
- function detectProjectType(configOverride) {
223
- if (configOverride && configOverride !== 'auto') return configOverride;
224
-
225
- if (fs.existsSync('pnpm-workspace.yaml')) return 'monorepo';
226
- if (fs.existsSync('lerna.json')) return 'monorepo';
227
-
228
- if (fs.existsSync('package.json')) {
229
- try {
230
- const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
231
- if (pkg.workspaces) return 'monorepo';
232
- if (pkg.main || pkg.exports) return 'library';
233
- } catch (e) { /* ignore */ }
234
- }
235
-
236
- return 'single-repo';
237
- }
238
-
239
- /**
240
- * Detect package manager from lock files
241
- */
242
- function detectPackageManager(configOverride) {
243
- if (configOverride && configOverride !== 'auto') return configOverride;
244
-
245
- if (fs.existsSync('bun.lockb')) return 'bun';
246
- if (fs.existsSync('pnpm-lock.yaml')) return 'pnpm';
247
- if (fs.existsSync('yarn.lock')) return 'yarn';
248
- if (fs.existsSync('package-lock.json')) return 'npm';
249
-
250
- return null;
251
- }
252
-
253
- /**
254
- * Detect framework from package.json dependencies
255
- */
256
- function detectFramework(configOverride) {
257
- if (configOverride && configOverride !== 'auto') return configOverride;
258
- if (!fs.existsSync('package.json')) return null;
259
-
119
+ function detectAgentTeam() {
260
120
  try {
261
- const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
262
- const deps = { ...pkg.dependencies, ...pkg.devDependencies };
263
-
264
- if (deps['next']) return 'next';
265
- if (deps['nuxt']) return 'nuxt';
266
- if (deps['astro']) return 'astro';
267
- if (deps['@remix-run/node'] || deps['@remix-run/react']) return 'remix';
268
- if (deps['svelte'] || deps['@sveltejs/kit']) return 'svelte';
269
- if (deps['vue']) return 'vue';
270
- if (deps['react']) return 'react';
271
- if (deps['express']) return 'express';
272
- if (deps['fastify']) return 'fastify';
273
- if (deps['hono']) return 'hono';
274
- if (deps['elysia']) return 'elysia';
275
-
276
- return null;
277
- } catch (e) {
121
+ const teamsDir = path.join(os.homedir(), '.claude', 'teams');
122
+ if (!fs.existsSync(teamsDir)) return null;
123
+
124
+ const teams = fs.readdirSync(teamsDir, { withFileTypes: true });
125
+ for (const entry of teams) {
126
+ if (!entry.isDirectory()) continue;
127
+ const configPath = path.join(teamsDir, entry.name, 'config.json');
128
+ if (!fs.existsSync(configPath)) continue;
129
+ try {
130
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
131
+ if (config.members && config.members.length > 0) {
132
+ return { teamName: entry.name, memberCount: config.members.length };
133
+ }
134
+ } catch { /* skip malformed configs */ }
135
+ }
278
136
  return null;
279
- }
280
- }
281
-
282
- /**
283
- * Get coding level style name mapping
284
- * @param {number} level - Coding level (0-5)
285
- * @returns {string} Style name for /output-style command
286
- */
287
- function getCodingLevelStyleName(level) {
288
- const styleMap = {
289
- 0: 'coding-level-0-eli5',
290
- 1: 'coding-level-1-junior',
291
- 2: 'coding-level-2-mid',
292
- 3: 'coding-level-3-senior',
293
- 4: 'coding-level-4-lead',
294
- 5: 'coding-level-5-god'
295
- };
296
- return styleMap[level] || 'coding-level-5-god';
297
- }
298
-
299
- /**
300
- * Get coding level guidelines by reading from output-styles .md files
301
- * This ensures single source of truth - users can customize the .md files directly
302
- * @param {number} level - Coding level (-1 to 5)
303
- * @returns {string|null} Guidelines text (frontmatter stripped) or null if disabled
304
- */
305
- function getCodingLevelGuidelines(level) {
306
- // -1 = disabled (no injection, saves tokens)
307
- // 5 = god mode (still injects minimal guidelines)
308
- if (level === -1 || level === null || level === undefined) return null;
309
-
310
- const styleName = getCodingLevelStyleName(level);
311
- const stylePath = path.join(__dirname, '..', 'output-styles', `${styleName}.md`);
312
-
313
- try {
314
- if (!fs.existsSync(stylePath)) return null;
315
-
316
- const content = fs.readFileSync(stylePath, 'utf8');
317
- // Strip YAML frontmatter (between --- markers at start of file)
318
- const withoutFrontmatter = content.replace(/^---[\s\S]*?---\n*/, '').trim();
319
- return withoutFrontmatter;
320
- } catch (e) {
137
+ } catch {
321
138
  return null;
322
139
  }
323
140
  }
324
141
 
325
- /**
326
- * Build context summary for output (compact, single line)
327
- * @param {Object} config - Loaded config
328
- * @param {Object} detections - Project detections
329
- * @param {{ path: string|null, resolvedBy: string|null }} resolved - Plan resolution result
330
- */
331
- function buildContextOutput(config, detections, resolved) {
332
- const lines = [`Project: ${detections.type || 'unknown'}`];
333
- if (detections.pm) lines.push(`PM: ${detections.pm}`);
334
- lines.push(`Plan naming: ${config.plan.namingFormat}`);
335
-
336
- // Show plan status with resolution context
337
- if (resolved.path) {
338
- if (resolved.resolvedBy === 'session') {
339
- lines.push(`Plan: ${resolved.path}`);
340
- } else {
341
- lines.push(`Suggested: ${resolved.path}`);
342
- }
343
- }
344
-
345
- return lines.join(' | ');
346
- }
347
-
348
142
  /**
349
143
  * Main hook execution
350
144
  */
351
145
  async function main() {
352
146
  try {
147
+ // Issue #422: One-time cleanup of orphaned .shadowed/ from disabled skill-dedup hook
148
+ const shadowedCleanup = cleanupOrphanedShadowedSkills();
149
+
353
150
  const stdin = fs.readFileSync(0, 'utf-8').trim();
354
151
  const data = stdin ? JSON.parse(stdin) : {};
355
152
  const envFile = process.env.CLAUDE_ENV_FILE;
@@ -358,12 +155,6 @@ async function main() {
358
155
 
359
156
  const config = loadConfig();
360
157
 
361
- // Layer 3: Write reset marker on /clear to signal statusline to reset baseline
362
- // This ensures context window percentage resets to 0% on fresh sessions
363
- if (source === 'clear' && sessionId) {
364
- writeResetMarker(sessionId, 'clear');
365
- }
366
-
367
158
  const detections = {
368
159
  type: detectProjectType(config.project?.type),
369
160
  pm: detectPackageManager(config.project?.packageManager),
@@ -391,19 +182,27 @@ async function main() {
391
182
  // Reports path only uses active plans, not suggested ones
392
183
  const reportsPath = getReportsPath(resolved.path, resolved.resolvedBy, config.plan, config.paths);
393
184
 
185
+ // Extract task list ID for Claude Code Tasks coordination (shared helper)
186
+ const taskListId = extractTaskListId(resolved);
187
+
394
188
  // Collect static environment info (computed once per session)
395
189
  const staticEnv = {
396
190
  nodeVersion: process.version,
397
- pythonVersion: getPythonVersionCached(),
191
+ pythonVersion: getPythonVersion(),
398
192
  osPlatform: process.platform,
399
193
  gitUrl: getGitRemoteUrl(),
400
194
  gitBranch: getGitBranch(),
195
+ gitRoot: getGitRoot(),
401
196
  user: process.env.USERNAME || process.env.USER || process.env.LOGNAME || os.userInfo().username,
402
197
  locale: process.env.LANG || '',
403
198
  timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
404
199
  claudeSettingsDir: path.resolve(__dirname, '..')
405
200
  };
406
201
 
202
+ // Compute base directory for absolute paths (Issue #327: use CWD for subdirectory support)
203
+ // Git root is kept in staticEnv for reference, but CWD determines where files are created
204
+ const baseDir = process.cwd();
205
+
407
206
  // Compute resolved naming pattern (date + issue resolved, {slug} kept as placeholder)
408
207
  const namePattern = resolveNamingPattern(config.plan, staticEnv.gitBranch);
409
208
 
@@ -423,11 +222,18 @@ async function main() {
423
222
  // Plan resolution
424
223
  writeEnv(envFile, 'CK_ACTIVE_PLAN', resolved.resolvedBy === 'session' ? resolved.path : '');
425
224
  writeEnv(envFile, 'CK_SUGGESTED_PLAN', resolved.resolvedBy === 'branch' ? resolved.path : '');
426
- writeEnv(envFile, 'CK_REPORTS_PATH', reportsPath);
427
225
 
428
- // Paths
429
- writeEnv(envFile, 'CK_DOCS_PATH', config.paths.docs);
430
- writeEnv(envFile, 'CK_PLANS_PATH', config.paths.plans);
226
+ // Claude Code Tasks integration - enables multi-session/subagent coordination
227
+ // Task list ID = plan directory name (shared across all sessions working on same plan)
228
+ if (taskListId) {
229
+ writeEnv(envFile, 'CLAUDE_CODE_TASK_LIST_ID', taskListId);
230
+ }
231
+
232
+ // Paths - use absolute paths based on CWD for subdirectory workflow support (Issue #327)
233
+ writeEnv(envFile, 'CK_GIT_ROOT', staticEnv.gitRoot || '');
234
+ writeEnv(envFile, 'CK_REPORTS_PATH', path.join(baseDir, reportsPath));
235
+ writeEnv(envFile, 'CK_DOCS_PATH', path.join(baseDir, config.paths.docs));
236
+ writeEnv(envFile, 'CK_PLANS_PATH', path.join(baseDir, config.paths.plans));
431
237
  writeEnv(envFile, 'CK_PROJECT_ROOT', process.cwd());
432
238
 
433
239
  // Project detection
@@ -454,7 +260,7 @@ async function main() {
454
260
  writeEnv(envFile, 'CK_RESPONSE_LANGUAGE', config.locale.responseLanguage);
455
261
  }
456
262
 
457
- // Plan validation config (for /plan:validate, /plan:hard, /plan:parallel)
263
+ // Plan validation config (for /plan validate, /plan --hard, /plan --parallel)
458
264
  const validation = config.plan?.validation || {};
459
265
  writeEnv(envFile, 'CK_VALIDATION_MODE', validation.mode || 'prompt');
460
266
  writeEnv(envFile, 'CK_VALIDATION_MIN_QUESTIONS', validation.minQuestions || 3);
@@ -465,9 +271,58 @@ async function main() {
465
271
  const codingLevel = config.codingLevel ?? 5;
466
272
  writeEnv(envFile, 'CK_CODING_LEVEL', codingLevel);
467
273
  writeEnv(envFile, 'CK_CODING_LEVEL_STYLE', getCodingLevelStyleName(codingLevel));
274
+
468
275
  }
469
276
 
470
- console.log(`Session ${source}. ${buildContextOutput(config, detections, resolved)}`);
277
+ // Agent Teams detection — detect once, used for env vars and console output
278
+ const teamInfo = detectAgentTeam();
279
+ if (envFile && teamInfo) {
280
+ writeEnv(envFile, 'CK_AGENT_TEAM', teamInfo.teamName);
281
+ writeEnv(envFile, 'CK_AGENT_TEAM_MEMBERS', teamInfo.memberCount);
282
+ }
283
+
284
+ console.log(`Session ${source}. ${buildContextOutput(config, detections, resolved, staticEnv.gitRoot)}`);
285
+
286
+ // Issue #422: Notify user if orphaned skills were recovered from .shadowed/
287
+ const hasCleanup = shadowedCleanup.restored.length > 0 || shadowedCleanup.skipped.length > 0 || shadowedCleanup.kept.length > 0;
288
+ if (hasCleanup) {
289
+ console.log(`\n[!] SKILL-DEDUP CLEANUP (Issue #422):`);
290
+ console.log(`Recovered orphaned .shadowed/ directory from disabled skill-dedup hook.`);
291
+ if (shadowedCleanup.restored.length > 0) {
292
+ console.log(`Restored ${shadowedCleanup.restored.length} skill(s): ${shadowedCleanup.restored.join(', ')}`);
293
+ }
294
+ if (shadowedCleanup.skipped.length > 0) {
295
+ console.log(`Removed ${shadowedCleanup.skipped.length} duplicate(s): ${shadowedCleanup.skipped.join(', ')}`);
296
+ }
297
+ if (shadowedCleanup.kept.length > 0) {
298
+ console.log(`[!] Kept ${shadowedCleanup.kept.length} skill(s) for manual review (content differs): ${shadowedCleanup.kept.join(', ')}`);
299
+ console.log(` Review .claude/skills/.shadowed/ and merge changes manually.`);
300
+ }
301
+ }
302
+
303
+ // Agent Teams: Show team context if running inside a team (uses cached result)
304
+ if (teamInfo) {
305
+ console.log(`[i] Agent Team detected: "${teamInfo.teamName}" (${teamInfo.memberCount} members)`);
306
+ console.log(` Team config: ~/.claude/teams/${teamInfo.teamName}/config.json`);
307
+ console.log(` Use /team skill for orchestration templates.`);
308
+ }
309
+
310
+ // Info: Show git root when running from subdirectory (Issue #327: now supported)
311
+ if (staticEnv.gitRoot && staticEnv.gitRoot !== process.cwd()) {
312
+ console.log(`📁 Subdirectory mode: Plans/docs will be created in current directory`);
313
+ console.log(` Git root: ${staticEnv.gitRoot}`);
314
+ }
315
+
316
+ // MITIGATION: Issue #277 - Auto-compact can bypass AskUserQuestion approval gates
317
+ // When context is compacted mid-workflow, the summarization may lose "pending approval" state.
318
+ // This warning reminds Claude to verify if user approval was pending before proceeding.
319
+ // Upstream bug: Claude Code CLI should preserve pending interactive state during compaction.
320
+ if (source === 'compact') {
321
+ console.log(`\n⚠️ CONTEXT COMPACTED - APPROVAL STATE CHECK:`);
322
+ console.log(`If you were waiting for user approval via AskUserQuestion (e.g., Step 4 review gate),`);
323
+ console.log(`you MUST re-confirm with the user before proceeding. Do NOT assume approval was given.`);
324
+ console.log(`Use AskUserQuestion to verify: "Context was compacted. Please confirm approval to continue."`);
325
+ }
471
326
 
472
327
  // Auto-inject coding level guidelines (if not disabled)
473
328
  const codingLevel = config.codingLevel ?? -1;
@@ -488,6 +343,18 @@ async function main() {
488
343
  console.error(`SessionStart hook error: ${error.message}`);
489
344
  process.exit(0);
490
345
  }
491
- }
346
+ }
492
347
 
493
- main();
348
+ main();
349
+ } catch (e) {
350
+ // Minimal crash logging (zero deps — only Node builtins)
351
+ try {
352
+ const fs = require('fs');
353
+ const p = require('path');
354
+ const logDir = p.join(__dirname, '.logs');
355
+ if (!fs.existsSync(logDir)) fs.mkdirSync(logDir, { recursive: true });
356
+ fs.appendFileSync(p.join(logDir, 'hook-log.jsonl'),
357
+ JSON.stringify({ ts: new Date().toISOString(), hook: p.basename(__filename, '.cjs'), status: 'crash', error: e.message }) + '\n');
358
+ } catch (_) {}
359
+ process.exit(0); // fail-open
360
+ }