@trieungoctam/vibekit 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 (352) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/agents/debugger.md +158 -0
  4. package/agents/docs-manager.md +220 -0
  5. package/agents/planner.md +129 -0
  6. package/agents/researcher.md +58 -0
  7. package/agents/reviewer.md +152 -0
  8. package/agents/tester.md +126 -0
  9. package/bin/vibekit.js +18 -0
  10. package/hooks/lib/ck-config-utils.cjs +831 -0
  11. package/hooks/lib/colors.cjs +95 -0
  12. package/hooks/lib/config-counter.cjs +103 -0
  13. package/hooks/lib/context-builder.cjs +616 -0
  14. package/hooks/lib/git-info-cache.cjs +143 -0
  15. package/hooks/lib/hook-logger.cjs +92 -0
  16. package/hooks/lib/privacy-checker.cjs +297 -0
  17. package/hooks/lib/project-detector.cjs +474 -0
  18. package/hooks/lib/scout-checker.cjs +263 -0
  19. package/hooks/lib/transcript-parser.cjs +181 -0
  20. package/hooks/post-edit-simplify-reminder.cjs +156 -0
  21. package/hooks/privacy-block.cjs +166 -0
  22. package/hooks/scout-block.cjs +147 -0
  23. package/hooks/session-init.cjs +360 -0
  24. package/package.json +41 -0
  25. package/rules/development-rules.md +52 -0
  26. package/rules/documentation-management.md +121 -0
  27. package/rules/orchestration-protocol.md +43 -0
  28. package/rules/primary-workflow.md +57 -0
  29. package/rules/team-coordination-rules.md +90 -0
  30. package/skills/ai/agent-browser/SKILL.md +294 -0
  31. package/skills/ai/agent-browser/references/.gitkeep +0 -0
  32. package/skills/ai/agent-browser/references/agent-browser-vs-chrome-devtools.md +112 -0
  33. package/skills/ai/agent-browser/references/browserbase-cloud-setup.md +161 -0
  34. package/skills/ai/ai-artist/SKILL.md +122 -0
  35. package/skills/ai/ai-artist/data/awesome-prompts.csv +3592 -0
  36. package/skills/ai/ai-artist/data/lighting.csv +19 -0
  37. package/skills/ai/ai-artist/data/nano-banana-templates.csv +17 -0
  38. package/skills/ai/ai-artist/data/platforms.csv +11 -0
  39. package/skills/ai/ai-artist/data/styles.csv +26 -0
  40. package/skills/ai/ai-artist/data/techniques.csv +19 -0
  41. package/skills/ai/ai-artist/data/use-cases.csv +16 -0
  42. package/skills/ai/ai-artist/references/advanced-techniques.md +184 -0
  43. package/skills/ai/ai-artist/references/awesome-nano-banana-pro-prompts.md +8575 -0
  44. package/skills/ai/ai-artist/references/domain-code.md +66 -0
  45. package/skills/ai/ai-artist/references/domain-data.md +72 -0
  46. package/skills/ai/ai-artist/references/domain-marketing.md +66 -0
  47. package/skills/ai/ai-artist/references/domain-patterns.md +33 -0
  48. package/skills/ai/ai-artist/references/domain-writing.md +68 -0
  49. package/skills/ai/ai-artist/references/image-prompting.md +141 -0
  50. package/skills/ai/ai-artist/references/llm-prompting.md +165 -0
  51. package/skills/ai/ai-artist/references/nano-banana.md +136 -0
  52. package/skills/ai/ai-artist/references/reasoning-techniques.md +201 -0
  53. package/skills/ai/ai-artist/references/validation-workflow.md +117 -0
  54. package/skills/ai/ai-artist/scripts/core.py +197 -0
  55. package/skills/ai/ai-artist/scripts/extract_prompts.py +102 -0
  56. package/skills/ai/ai-artist/scripts/generate.py +370 -0
  57. package/skills/ai/ai-artist/scripts/search.py +147 -0
  58. package/skills/ai/ai-multimodal/.env.example +204 -0
  59. package/skills/ai/ai-multimodal/SKILL.md +110 -0
  60. package/skills/ai/ai-multimodal/references/audio-processing.md +387 -0
  61. package/skills/ai/ai-multimodal/references/image-generation.md +939 -0
  62. package/skills/ai/ai-multimodal/references/music-generation.md +311 -0
  63. package/skills/ai/ai-multimodal/references/video-analysis.md +515 -0
  64. package/skills/ai/ai-multimodal/references/video-generation.md +457 -0
  65. package/skills/ai/ai-multimodal/references/vision-understanding.md +492 -0
  66. package/skills/ai/ai-multimodal/scripts/.coverage +0 -0
  67. package/skills/ai/ai-multimodal/scripts/check_setup.py +315 -0
  68. package/skills/ai/ai-multimodal/scripts/document_converter.py +395 -0
  69. package/skills/ai/ai-multimodal/scripts/gemini_batch_process.py +1185 -0
  70. package/skills/ai/ai-multimodal/scripts/media_optimizer.py +506 -0
  71. package/skills/ai/ai-multimodal/scripts/requirements.txt +26 -0
  72. package/skills/ai/ai-multimodal/scripts/tests/.coverage +0 -0
  73. package/skills/ai/ai-multimodal/scripts/tests/requirements.txt +20 -0
  74. package/skills/ai/ai-multimodal/scripts/tests/test_document_converter.py +74 -0
  75. package/skills/ai/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -0
  76. package/skills/ai/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -0
  77. package/skills/ai/mcp-management/README.md +219 -0
  78. package/skills/ai/mcp-management/SKILL.md +210 -0
  79. package/skills/ai/mcp-management/assets/tools.json +3146 -0
  80. package/skills/ai/mcp-management/references/configuration.md +114 -0
  81. package/skills/ai/mcp-management/references/gemini-cli-integration.md +221 -0
  82. package/skills/ai/mcp-management/references/mcp-protocol.md +116 -0
  83. package/skills/ai/mcp-management/scripts/.env.example +10 -0
  84. package/skills/ai/mcp-management/scripts/cli.ts +195 -0
  85. package/skills/ai/mcp-management/scripts/dist/analyze-tools.js +70 -0
  86. package/skills/ai/mcp-management/scripts/dist/cli.js +160 -0
  87. package/skills/ai/mcp-management/scripts/dist/mcp-client.js +183 -0
  88. package/skills/ai/mcp-management/scripts/mcp-client.ts +230 -0
  89. package/skills/ai/mcp-management/scripts/package.json +20 -0
  90. package/skills/ai/mcp-management/scripts/tsconfig.json +15 -0
  91. package/skills/core/brainstorm/SKILL.md +164 -0
  92. package/skills/core/brainstorm/scripts/frame-template.html +214 -0
  93. package/skills/core/brainstorm/scripts/helper.js +88 -0
  94. package/skills/core/brainstorm/scripts/server.cjs +338 -0
  95. package/skills/core/brainstorm/scripts/start-server.sh +153 -0
  96. package/skills/core/brainstorm/scripts/stop-server.sh +55 -0
  97. package/skills/core/brainstorm/spec-document-reviewer-prompt.md +49 -0
  98. package/skills/core/brainstorm/visual-companion.md +286 -0
  99. package/skills/core/code-review/SKILL.md +147 -0
  100. package/skills/core/code-review/references/code-review-reception.md +113 -0
  101. package/skills/core/code-review/references/codebase-scan-workflow.md +29 -0
  102. package/skills/core/code-review/references/edge-case-scouting.md +119 -0
  103. package/skills/core/code-review/references/parallel-review-workflow.md +69 -0
  104. package/skills/core/code-review/references/requesting-code-review.md +116 -0
  105. package/skills/core/code-review/references/task-management-reviews.md +140 -0
  106. package/skills/core/code-review/references/verification-before-completion.md +139 -0
  107. package/skills/core/cook/README.md +86 -0
  108. package/skills/core/cook/SKILL.md +113 -0
  109. package/skills/core/cook/references/intent-detection.md +101 -0
  110. package/skills/core/cook/references/review-cycle.md +75 -0
  111. package/skills/core/cook/references/subagent-patterns.md +75 -0
  112. package/skills/core/cook/references/workflow-steps.md +172 -0
  113. package/skills/core/debug/SKILL.md +121 -0
  114. package/skills/core/debug/references/defense-in-depth.md +124 -0
  115. package/skills/core/debug/references/frontend-verification.md +103 -0
  116. package/skills/core/debug/references/investigation-methodology.md +101 -0
  117. package/skills/core/debug/references/log-and-ci-analysis.md +97 -0
  118. package/skills/core/debug/references/performance-diagnostics.md +113 -0
  119. package/skills/core/debug/references/reporting-standards.md +122 -0
  120. package/skills/core/debug/references/root-cause-tracing.md +122 -0
  121. package/skills/core/debug/references/systematic-debugging.md +102 -0
  122. package/skills/core/debug/references/task-management-debugging.md +155 -0
  123. package/skills/core/debug/references/verification.md +123 -0
  124. package/skills/core/debug/scripts/find-polluter.sh +63 -0
  125. package/skills/core/debug/scripts/find-polluter.test.md +102 -0
  126. package/skills/core/execute/SKILL.md +70 -0
  127. package/skills/core/fix/SKILL.md +111 -0
  128. package/skills/core/fix/references/complexity-assessment.md +72 -0
  129. package/skills/core/fix/references/mode-selection.md +46 -0
  130. package/skills/core/fix/references/parallel-exploration.md +100 -0
  131. package/skills/core/fix/references/review-cycle.md +77 -0
  132. package/skills/core/fix/references/skill-activation-matrix.md +78 -0
  133. package/skills/core/fix/references/task-orchestration.md +103 -0
  134. package/skills/core/fix/references/workflow-ci.md +28 -0
  135. package/skills/core/fix/references/workflow-deep.md +122 -0
  136. package/skills/core/fix/references/workflow-logs.md +72 -0
  137. package/skills/core/fix/references/workflow-quick.md +59 -0
  138. package/skills/core/fix/references/workflow-standard.md +111 -0
  139. package/skills/core/fix/references/workflow-test.md +75 -0
  140. package/skills/core/fix/references/workflow-types.md +33 -0
  141. package/skills/core/fix/references/workflow-ui.md +75 -0
  142. package/skills/core/plan/SKILL.md +145 -0
  143. package/skills/core/plan/plan-document-reviewer-prompt.md +49 -0
  144. package/skills/core/subagent-dev/SKILL.md +277 -0
  145. package/skills/core/subagent-dev/code-quality-reviewer-prompt.md +26 -0
  146. package/skills/core/subagent-dev/implementer-prompt.md +113 -0
  147. package/skills/core/subagent-dev/spec-reviewer-prompt.md +61 -0
  148. package/skills/core/tdd/SKILL.md +371 -0
  149. package/skills/core/tdd/testing-anti-patterns.md +299 -0
  150. package/skills/core/test/SKILL.md +109 -0
  151. package/skills/core/test/references/report-format.md +58 -0
  152. package/skills/core/test/references/test-execution-workflow.md +103 -0
  153. package/skills/core/test/references/ui-testing-workflow.md +65 -0
  154. package/skills/core/verify/SKILL.md +139 -0
  155. package/skills/dev/backend-dev/SKILL.md +96 -0
  156. package/skills/dev/backend-dev/references/backend-api-design.md +495 -0
  157. package/skills/dev/backend-dev/references/backend-architecture.md +454 -0
  158. package/skills/dev/backend-dev/references/backend-authentication.md +338 -0
  159. package/skills/dev/backend-dev/references/backend-code-quality.md +659 -0
  160. package/skills/dev/backend-dev/references/backend-debugging.md +904 -0
  161. package/skills/dev/backend-dev/references/backend-devops.md +494 -0
  162. package/skills/dev/backend-dev/references/backend-mindset.md +387 -0
  163. package/skills/dev/backend-dev/references/backend-performance.md +397 -0
  164. package/skills/dev/backend-dev/references/backend-security.md +290 -0
  165. package/skills/dev/backend-dev/references/backend-technologies.md +256 -0
  166. package/skills/dev/backend-dev/references/backend-testing.md +429 -0
  167. package/skills/dev/context-engineering/SKILL.md +108 -0
  168. package/skills/dev/context-engineering/references/context-compression.md +84 -0
  169. package/skills/dev/context-engineering/references/context-degradation.md +93 -0
  170. package/skills/dev/context-engineering/references/context-fundamentals.md +75 -0
  171. package/skills/dev/context-engineering/references/context-optimization.md +82 -0
  172. package/skills/dev/context-engineering/references/evaluation.md +89 -0
  173. package/skills/dev/context-engineering/references/memory-systems.md +88 -0
  174. package/skills/dev/context-engineering/references/multi-agent-patterns.md +90 -0
  175. package/skills/dev/context-engineering/references/project-development.md +97 -0
  176. package/skills/dev/context-engineering/references/runtime-awareness.md +202 -0
  177. package/skills/dev/context-engineering/references/tool-design.md +86 -0
  178. package/skills/dev/context-engineering/scripts/compression_evaluator.py +349 -0
  179. package/skills/dev/context-engineering/scripts/context_analyzer.py +317 -0
  180. package/skills/dev/context-engineering/scripts/tests/test_edge_cases.py +246 -0
  181. package/skills/dev/databases/SKILL.md +84 -0
  182. package/skills/dev/databases/analytics.md +198 -0
  183. package/skills/dev/databases/db-design.md +188 -0
  184. package/skills/dev/databases/incremental-etl.md +213 -0
  185. package/skills/dev/databases/references/mongodb-aggregation.md +447 -0
  186. package/skills/dev/databases/references/mongodb-atlas.md +465 -0
  187. package/skills/dev/databases/references/mongodb-crud.md +408 -0
  188. package/skills/dev/databases/references/mongodb-indexing.md +442 -0
  189. package/skills/dev/databases/references/postgresql-administration.md +594 -0
  190. package/skills/dev/databases/references/postgresql-performance.md +527 -0
  191. package/skills/dev/databases/references/postgresql-psql-cli.md +467 -0
  192. package/skills/dev/databases/references/postgresql-queries.md +475 -0
  193. package/skills/dev/databases/scripts/.coverage +0 -0
  194. package/skills/dev/databases/scripts/db_backup.py +502 -0
  195. package/skills/dev/databases/scripts/db_migrate.py +426 -0
  196. package/skills/dev/databases/scripts/db_performance_check.py +457 -0
  197. package/skills/dev/databases/scripts/requirements.txt +20 -0
  198. package/skills/dev/databases/scripts/tests/coverage-db.json +1 -0
  199. package/skills/dev/databases/scripts/tests/requirements.txt +4 -0
  200. package/skills/dev/databases/scripts/tests/test_db_backup.py +340 -0
  201. package/skills/dev/databases/scripts/tests/test_db_migrate.py +277 -0
  202. package/skills/dev/databases/scripts/tests/test_db_performance_check.py +370 -0
  203. package/skills/dev/databases/stacks/bigquery.md +231 -0
  204. package/skills/dev/databases/stacks/d1_cloudflare.md +137 -0
  205. package/skills/dev/databases/stacks/mysql.md +216 -0
  206. package/skills/dev/databases/stacks/postgres.md +235 -0
  207. package/skills/dev/databases/stacks/sqlite.md +244 -0
  208. package/skills/dev/databases/transactional.md +176 -0
  209. package/skills/dev/devops/.env.example +76 -0
  210. package/skills/dev/devops/SKILL.md +97 -0
  211. package/skills/dev/devops/references/browser-rendering.md +305 -0
  212. package/skills/dev/devops/references/cloudflare-d1-kv.md +123 -0
  213. package/skills/dev/devops/references/cloudflare-platform.md +271 -0
  214. package/skills/dev/devops/references/cloudflare-r2-storage.md +280 -0
  215. package/skills/dev/devops/references/cloudflare-workers-advanced.md +312 -0
  216. package/skills/dev/devops/references/cloudflare-workers-apis.md +309 -0
  217. package/skills/dev/devops/references/cloudflare-workers-basics.md +418 -0
  218. package/skills/dev/devops/references/docker-basics.md +297 -0
  219. package/skills/dev/devops/references/docker-compose.md +292 -0
  220. package/skills/dev/devops/references/gcloud-platform.md +297 -0
  221. package/skills/dev/devops/references/gcloud-services.md +304 -0
  222. package/skills/dev/devops/references/kubernetes-basics.md +99 -0
  223. package/skills/dev/devops/references/kubernetes-helm-advanced.md +75 -0
  224. package/skills/dev/devops/references/kubernetes-helm.md +81 -0
  225. package/skills/dev/devops/references/kubernetes-kubectl.md +74 -0
  226. package/skills/dev/devops/references/kubernetes-security-advanced.md +98 -0
  227. package/skills/dev/devops/references/kubernetes-security.md +95 -0
  228. package/skills/dev/devops/references/kubernetes-troubleshooting-advanced.md +74 -0
  229. package/skills/dev/devops/references/kubernetes-troubleshooting.md +49 -0
  230. package/skills/dev/devops/references/kubernetes-workflows-advanced.md +75 -0
  231. package/skills/dev/devops/references/kubernetes-workflows.md +78 -0
  232. package/skills/dev/devops/scripts/cloudflare_deploy.py +269 -0
  233. package/skills/dev/devops/scripts/docker_optimize.py +332 -0
  234. package/skills/dev/devops/scripts/requirements.txt +20 -0
  235. package/skills/dev/devops/scripts/tests/requirements.txt +3 -0
  236. package/skills/dev/devops/scripts/tests/test_cloudflare_deploy.py +285 -0
  237. package/skills/dev/devops/scripts/tests/test_docker_optimize.py +436 -0
  238. package/skills/dev/frontend-design/SKILL.md +78 -0
  239. package/skills/dev/frontend-design/references/ai-multimodal-overview.md +165 -0
  240. package/skills/dev/frontend-design/references/analysis-best-practices.md +80 -0
  241. package/skills/dev/frontend-design/references/analysis-prompts.md +141 -0
  242. package/skills/dev/frontend-design/references/analysis-techniques.md +118 -0
  243. package/skills/dev/frontend-design/references/animejs.md +396 -0
  244. package/skills/dev/frontend-design/references/asset-generation.md +337 -0
  245. package/skills/dev/frontend-design/references/design-extraction-overview.md +71 -0
  246. package/skills/dev/frontend-design/references/extraction-best-practices.md +141 -0
  247. package/skills/dev/frontend-design/references/extraction-output-templates.md +162 -0
  248. package/skills/dev/frontend-design/references/extraction-prompts.md +127 -0
  249. package/skills/dev/frontend-design/references/technical-accessibility.md +119 -0
  250. package/skills/dev/frontend-design/references/technical-best-practices.md +97 -0
  251. package/skills/dev/frontend-design/references/technical-optimization.md +44 -0
  252. package/skills/dev/frontend-design/references/technical-overview.md +90 -0
  253. package/skills/dev/frontend-design/references/technical-workflows.md +150 -0
  254. package/skills/dev/frontend-design/references/visual-analysis-overview.md +95 -0
  255. package/skills/dev/frontend-design/references/workflow-3d.md +102 -0
  256. package/skills/dev/frontend-design/references/workflow-describe.md +87 -0
  257. package/skills/dev/frontend-design/references/workflow-immersive.md +87 -0
  258. package/skills/dev/frontend-design/references/workflow-quick.md +57 -0
  259. package/skills/dev/frontend-design/references/workflow-screenshot.md +63 -0
  260. package/skills/dev/frontend-design/references/workflow-video.md +74 -0
  261. package/skills/dev/frontend-dev/SKILL.md +400 -0
  262. package/skills/dev/frontend-dev/resources/common-patterns.md +331 -0
  263. package/skills/dev/frontend-dev/resources/complete-examples.md +872 -0
  264. package/skills/dev/frontend-dev/resources/component-patterns.md +502 -0
  265. package/skills/dev/frontend-dev/resources/data-fetching.md +767 -0
  266. package/skills/dev/frontend-dev/resources/file-organization.md +502 -0
  267. package/skills/dev/frontend-dev/resources/loading-and-error-states.md +501 -0
  268. package/skills/dev/frontend-dev/resources/performance.md +406 -0
  269. package/skills/dev/frontend-dev/resources/routing-guide.md +364 -0
  270. package/skills/dev/frontend-dev/resources/styling-guide.md +428 -0
  271. package/skills/dev/frontend-dev/resources/typescript-standards.md +418 -0
  272. package/skills/dev/git/SKILL.md +114 -0
  273. package/skills/dev/git/references/branch-management.md +88 -0
  274. package/skills/dev/git/references/commit-standards.md +46 -0
  275. package/skills/dev/git/references/gh-cli-guide.md +109 -0
  276. package/skills/dev/git/references/safety-protocols.md +69 -0
  277. package/skills/dev/git/references/workflow-commit.md +58 -0
  278. package/skills/dev/git/references/workflow-merge.md +48 -0
  279. package/skills/dev/git/references/workflow-pr.md +58 -0
  280. package/skills/dev/git/references/workflow-push.md +52 -0
  281. package/skills/dev/git-worktree/SKILL.md +218 -0
  282. package/skills/utils/ask/SKILL.md +58 -0
  283. package/skills/utils/bootstrap/SKILL.md +101 -0
  284. package/skills/utils/bootstrap/references/shared-phases.md +59 -0
  285. package/skills/utils/bootstrap/references/workflow-auto.md +52 -0
  286. package/skills/utils/bootstrap/references/workflow-fast.md +50 -0
  287. package/skills/utils/bootstrap/references/workflow-full.md +60 -0
  288. package/skills/utils/bootstrap/references/workflow-parallel.md +59 -0
  289. package/skills/utils/ck-help/SKILL.md +102 -0
  290. package/skills/utils/ck-help/scripts/ck-help.py +1321 -0
  291. package/skills/utils/ck-help/scripts/commands_data.yaml +3 -0
  292. package/skills/utils/ck-help/scripts/skills_data.yaml +593 -0
  293. package/skills/utils/copywriting/SKILL.md +94 -0
  294. package/skills/utils/copywriting/references/copy-formulas.md +150 -0
  295. package/skills/utils/copywriting/references/cta-patterns.md +168 -0
  296. package/skills/utils/copywriting/references/email-copy.md +193 -0
  297. package/skills/utils/copywriting/references/headline-templates.md +140 -0
  298. package/skills/utils/copywriting/references/landing-page-copy.md +175 -0
  299. package/skills/utils/copywriting/references/power-words.md +189 -0
  300. package/skills/utils/copywriting/references/social-media-copy.md +222 -0
  301. package/skills/utils/copywriting/references/workflow-cro.md +83 -0
  302. package/skills/utils/copywriting/references/workflow-enhance.md +32 -0
  303. package/skills/utils/copywriting/references/workflow-fast.md +29 -0
  304. package/skills/utils/copywriting/references/workflow-good.md +39 -0
  305. package/skills/utils/copywriting/references/writing-styles.md +247 -0
  306. package/skills/utils/copywriting/scripts/extract-writing-styles.py +308 -0
  307. package/skills/utils/copywriting/templates/copy-brief.md +49 -0
  308. package/skills/utils/docs/SKILL.md +55 -0
  309. package/skills/utils/docs/references/init-workflow.md +32 -0
  310. package/skills/utils/docs/references/summarize-workflow.md +18 -0
  311. package/skills/utils/docs/references/update-workflow.md +59 -0
  312. package/skills/utils/journal/SKILL.md +11 -0
  313. package/skills/utils/kanban/SKILL.md +99 -0
  314. package/skills/utils/preview/SKILL.md +75 -0
  315. package/skills/utils/preview/references/generation-modes.md +95 -0
  316. package/skills/utils/preview/references/view-mode.md +42 -0
  317. package/skills/utils/repomix/SKILL.md +248 -0
  318. package/skills/utils/repomix/references/configuration.md +211 -0
  319. package/skills/utils/repomix/references/usage-patterns.md +232 -0
  320. package/skills/utils/repomix/scripts/.coverage +0 -0
  321. package/skills/utils/repomix/scripts/README.md +179 -0
  322. package/skills/utils/repomix/scripts/repomix_batch.py +455 -0
  323. package/skills/utils/repomix/scripts/repos.example.json +15 -0
  324. package/skills/utils/repomix/scripts/requirements.txt +15 -0
  325. package/skills/utils/repomix/scripts/tests/test_repomix_batch.py +531 -0
  326. package/skills/utils/research/SKILL.md +171 -0
  327. package/skills/utils/scout/SKILL.md +89 -0
  328. package/skills/utils/scout/references/external-scouting.md +140 -0
  329. package/skills/utils/scout/references/internal-scouting.md +119 -0
  330. package/skills/utils/scout/references/task-management-scouting.md +125 -0
  331. package/skills/utils/sequential-thinking/.env.example +8 -0
  332. package/skills/utils/sequential-thinking/README.md +183 -0
  333. package/skills/utils/sequential-thinking/SKILL.md +95 -0
  334. package/skills/utils/sequential-thinking/package.json +31 -0
  335. package/skills/utils/sequential-thinking/references/advanced-strategies.md +79 -0
  336. package/skills/utils/sequential-thinking/references/advanced-techniques.md +76 -0
  337. package/skills/utils/sequential-thinking/references/core-patterns.md +95 -0
  338. package/skills/utils/sequential-thinking/references/examples-api.md +88 -0
  339. package/skills/utils/sequential-thinking/references/examples-architecture.md +94 -0
  340. package/skills/utils/sequential-thinking/references/examples-debug.md +90 -0
  341. package/skills/utils/sequential-thinking/scripts/format-thought.js +159 -0
  342. package/skills/utils/sequential-thinking/scripts/process-thought.js +236 -0
  343. package/skills/utils/sequential-thinking/tests/format-thought.test.js +133 -0
  344. package/skills/utils/sequential-thinking/tests/process-thought.test.js +215 -0
  345. package/skills/utils/write-skill/SKILL.md +655 -0
  346. package/skills/utils/write-skill/anthropic-best-practices.md +1150 -0
  347. package/skills/utils/write-skill/examples/CLAUDE_MD_TESTING.md +189 -0
  348. package/skills/utils/write-skill/graphviz-conventions.dot +172 -0
  349. package/skills/utils/write-skill/persuasion-principles.md +187 -0
  350. package/skills/utils/write-skill/render-graphs.js +168 -0
  351. package/skills/utils/write-skill/testing-skills-with-subagents.md +384 -0
  352. package/src/commands/init.js +238 -0
@@ -0,0 +1,474 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * project-detector.cjs - Project and environment detection logic
4
+ *
5
+ * Extracted from session-init.cjs for reuse in both Claude hooks and OpenCode plugins.
6
+ * Detects project type, package manager, framework, and runtime versions.
7
+ *
8
+ * @module project-detector
9
+ */
10
+
11
+ const fs = require('fs');
12
+ const path = require('path');
13
+ const os = require('os');
14
+ const { execSync, execFileSync } = require('child_process');
15
+
16
+ // ═══════════════════════════════════════════════════════════════════════════
17
+ // SAFE EXECUTION HELPERS
18
+ // ═══════════════════════════════════════════════════════════════════════════
19
+
20
+ /**
21
+ * Safely execute shell command with optional timeout
22
+ * @param {string} cmd - Command to execute
23
+ * @param {number} [timeoutMs=5000] - Timeout in milliseconds
24
+ * @returns {string|null} Output or null on error
25
+ */
26
+ function execSafe(cmd, timeoutMs = 5000) {
27
+ try {
28
+ return execSync(cmd, {
29
+ encoding: 'utf8',
30
+ timeout: timeoutMs,
31
+ stdio: ['pipe', 'pipe', 'pipe']
32
+ }).trim();
33
+ } catch (e) {
34
+ return null;
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Safely execute a binary with arguments (no shell interpolation)
40
+ * @param {string} binary - Path to the executable
41
+ * @param {string[]} args - Arguments array
42
+ * @param {number} [timeoutMs=2000] - Timeout in milliseconds
43
+ * @returns {string|null} Output or null on error
44
+ */
45
+ function execFileSafe(binary, args, timeoutMs = 2000) {
46
+ try {
47
+ return execFileSync(binary, args, {
48
+ encoding: 'utf8',
49
+ timeout: timeoutMs,
50
+ stdio: ['pipe', 'pipe', 'pipe']
51
+ }).trim();
52
+ } catch (e) {
53
+ return null;
54
+ }
55
+ }
56
+
57
+ // ═══════════════════════════════════════════════════════════════════════════
58
+ // PYTHON DETECTION
59
+ // ═══════════════════════════════════════════════════════════════════════════
60
+
61
+ /**
62
+ * Validate that a path is a file and doesn't contain shell metacharacters
63
+ * @param {string} p - Path to validate
64
+ * @returns {boolean}
65
+ */
66
+ function isValidPythonPath(p) {
67
+ if (!p || typeof p !== 'string') return false;
68
+ if (/[;&|`$(){}[\]<>!#*?]/.test(p)) return false;
69
+ try {
70
+ const stat = fs.statSync(p);
71
+ return stat.isFile();
72
+ } catch (e) {
73
+ return false;
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Build platform-specific Python paths for fast filesystem check
79
+ * @returns {string[]} Array of potential Python paths
80
+ */
81
+ function getPythonPaths() {
82
+ const paths = [];
83
+
84
+ if (process.env.PYTHON_PATH) {
85
+ paths.push(process.env.PYTHON_PATH);
86
+ }
87
+
88
+ if (process.platform === 'win32') {
89
+ const localAppData = process.env.LOCALAPPDATA;
90
+ const programFiles = process.env.ProgramFiles || 'C:\\Program Files';
91
+ const programFilesX86 = process.env['ProgramFiles(x86)'] || 'C:\\Program Files (x86)';
92
+
93
+ if (localAppData) {
94
+ paths.push(path.join(localAppData, 'Microsoft', 'WindowsApps', 'python.exe'));
95
+ paths.push(path.join(localAppData, 'Microsoft', 'WindowsApps', 'python3.exe'));
96
+ for (const ver of ['313', '312', '311', '310', '39']) {
97
+ paths.push(path.join(localAppData, 'Programs', 'Python', `Python${ver}`, 'python.exe'));
98
+ }
99
+ }
100
+
101
+ for (const ver of ['313', '312', '311', '310', '39']) {
102
+ paths.push(path.join(programFiles, `Python${ver}`, 'python.exe'));
103
+ paths.push(path.join(programFilesX86, `Python${ver}`, 'python.exe'));
104
+ }
105
+
106
+ paths.push('C:\\Python313\\python.exe');
107
+ paths.push('C:\\Python312\\python.exe');
108
+ paths.push('C:\\Python311\\python.exe');
109
+ paths.push('C:\\Python310\\python.exe');
110
+ paths.push('C:\\Python39\\python.exe');
111
+ } else {
112
+ paths.push('/usr/bin/python3');
113
+ paths.push('/usr/local/bin/python3');
114
+ paths.push('/opt/homebrew/bin/python3');
115
+ paths.push('/opt/homebrew/bin/python');
116
+ paths.push('/usr/bin/python');
117
+ paths.push('/usr/local/bin/python');
118
+ }
119
+
120
+ return paths;
121
+ }
122
+
123
+ /**
124
+ * Find Python binary using fast `which` lookup first, then filesystem check
125
+ * @returns {string|null} Python binary path or null
126
+ */
127
+ function findPythonBinary() {
128
+ // Fast path: try `which` command first (10ms vs 2000ms per path)
129
+ if (process.platform !== 'win32') {
130
+ const whichPython3 = execSafe('which python3', 500);
131
+ if (whichPython3 && isValidPythonPath(whichPython3)) return whichPython3;
132
+
133
+ const whichPython = execSafe('which python', 500);
134
+ if (whichPython && isValidPythonPath(whichPython)) return whichPython;
135
+ } else {
136
+ // Windows: try `where` command
137
+ const wherePython = execSafe('where python', 500);
138
+ if (wherePython) {
139
+ const firstPath = wherePython.split('\n')[0].trim();
140
+ if (isValidPythonPath(firstPath)) return firstPath;
141
+ }
142
+ }
143
+
144
+ // Fallback: check known paths
145
+ const paths = getPythonPaths();
146
+ for (const p of paths) {
147
+ if (isValidPythonPath(p)) return p;
148
+ }
149
+ return null;
150
+ }
151
+
152
+ /**
153
+ * Get Python version with optimized detection
154
+ * @returns {string|null} Python version string or null
155
+ */
156
+ function getPythonVersion() {
157
+ const pythonPath = findPythonBinary();
158
+ if (pythonPath) {
159
+ const result = execFileSafe(pythonPath, ['--version']);
160
+ if (result) return result;
161
+ }
162
+
163
+ const commands = ['python3', 'python'];
164
+ for (const cmd of commands) {
165
+ const result = execFileSafe(cmd, ['--version']);
166
+ if (result) return result;
167
+ }
168
+
169
+ return null;
170
+ }
171
+
172
+ // ═══════════════════════════════════════════════════════════════════════════
173
+ // GIT DETECTION
174
+ // ═══════════════════════════════════════════════════════════════════════════
175
+
176
+ /**
177
+ * Check if current directory is inside a git repository (fast check)
178
+ * Uses filesystem traversal instead of git command to avoid command failures
179
+ * @param {string} [startDir] - Directory to check from (defaults to cwd)
180
+ * @returns {boolean}
181
+ */
182
+ function isGitRepo(startDir) {
183
+ let dir;
184
+ try {
185
+ dir = startDir || process.cwd();
186
+ } catch (e) {
187
+ // CWD deleted or inaccessible
188
+ return false;
189
+ }
190
+ const root = path.parse(dir).root;
191
+
192
+ while (dir !== root) {
193
+ if (fs.existsSync(path.join(dir, '.git'))) return true;
194
+ dir = path.dirname(dir);
195
+ }
196
+ return fs.existsSync(path.join(root, '.git'));
197
+ }
198
+
199
+ /**
200
+ * Get git remote URL
201
+ * @returns {string|null}
202
+ */
203
+ function getGitRemoteUrl() {
204
+ if (!isGitRepo()) return null;
205
+ return execSafe('git config --get remote.origin.url');
206
+ }
207
+
208
+ /**
209
+ * Get current git branch
210
+ * @returns {string|null}
211
+ */
212
+ function getGitBranch() {
213
+ if (!isGitRepo()) return null;
214
+ return execSafe('git branch --show-current');
215
+ }
216
+
217
+ /**
218
+ * Get git repository root
219
+ * @returns {string|null}
220
+ */
221
+ function getGitRoot() {
222
+ if (!isGitRepo()) return null;
223
+ return execSafe('git rev-parse --show-toplevel');
224
+ }
225
+
226
+ // ═══════════════════════════════════════════════════════════════════════════
227
+ // PROJECT DETECTION
228
+ // ═══════════════════════════════════════════════════════════════════════════
229
+
230
+ /**
231
+ * Detect project type based on workspace indicators
232
+ * @param {string} [configOverride] - Manual override from config
233
+ * @returns {'monorepo' | 'library' | 'single-repo'}
234
+ */
235
+ function detectProjectType(configOverride) {
236
+ if (configOverride && configOverride !== 'auto') return configOverride;
237
+
238
+ if (fs.existsSync('pnpm-workspace.yaml')) return 'monorepo';
239
+ if (fs.existsSync('lerna.json')) return 'monorepo';
240
+
241
+ if (fs.existsSync('package.json')) {
242
+ try {
243
+ const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
244
+ if (pkg.workspaces) return 'monorepo';
245
+ if (pkg.main || pkg.exports) return 'library';
246
+ } catch (e) { /* ignore */ }
247
+ }
248
+
249
+ return 'single-repo';
250
+ }
251
+
252
+ /**
253
+ * Detect package manager from lock files
254
+ * @param {string} [configOverride] - Manual override from config
255
+ * @returns {'npm' | 'pnpm' | 'yarn' | 'bun' | null}
256
+ */
257
+ function detectPackageManager(configOverride) {
258
+ if (configOverride && configOverride !== 'auto') return configOverride;
259
+
260
+ if (fs.existsSync('bun.lockb')) return 'bun';
261
+ if (fs.existsSync('pnpm-lock.yaml')) return 'pnpm';
262
+ if (fs.existsSync('yarn.lock')) return 'yarn';
263
+ if (fs.existsSync('package-lock.json')) return 'npm';
264
+
265
+ return null;
266
+ }
267
+
268
+ /**
269
+ * Detect framework from package.json dependencies
270
+ * @param {string} [configOverride] - Manual override from config
271
+ * @returns {string|null}
272
+ */
273
+ function detectFramework(configOverride) {
274
+ if (configOverride && configOverride !== 'auto') return configOverride;
275
+ if (!fs.existsSync('package.json')) return null;
276
+
277
+ try {
278
+ const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
279
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
280
+
281
+ if (deps['next']) return 'next';
282
+ if (deps['nuxt']) return 'nuxt';
283
+ if (deps['astro']) return 'astro';
284
+ if (deps['@remix-run/node'] || deps['@remix-run/react']) return 'remix';
285
+ if (deps['svelte'] || deps['@sveltejs/kit']) return 'svelte';
286
+ if (deps['vue']) return 'vue';
287
+ if (deps['react']) return 'react';
288
+ if (deps['express']) return 'express';
289
+ if (deps['fastify']) return 'fastify';
290
+ if (deps['hono']) return 'hono';
291
+ if (deps['elysia']) return 'elysia';
292
+
293
+ return null;
294
+ } catch (e) {
295
+ return null;
296
+ }
297
+ }
298
+
299
+ // ═══════════════════════════════════════════════════════════════════════════
300
+ // CODING LEVEL
301
+ // ═══════════════════════════════════════════════════════════════════════════
302
+
303
+ /**
304
+ * Get coding level style name mapping
305
+ * @param {number} level - Coding level (0-5)
306
+ * @returns {string} Style name
307
+ */
308
+ function getCodingLevelStyleName(level) {
309
+ const styleMap = {
310
+ 0: 'coding-level-0-eli5',
311
+ 1: 'coding-level-1-junior',
312
+ 2: 'coding-level-2-mid',
313
+ 3: 'coding-level-3-senior',
314
+ 4: 'coding-level-4-lead',
315
+ 5: 'coding-level-5-god'
316
+ };
317
+ return styleMap[level] || 'coding-level-5-god';
318
+ }
319
+
320
+ /**
321
+ * Get coding level guidelines by reading from output-styles .md files
322
+ * @param {number} level - Coding level (-1 to 5)
323
+ * @param {string} [configDir] - Config directory path
324
+ * @returns {string|null} Guidelines text or null if disabled
325
+ */
326
+ function getCodingLevelGuidelines(level, configDir) {
327
+ if (level === -1 || level === null || level === undefined) return null;
328
+
329
+ const styleName = getCodingLevelStyleName(level);
330
+ const basePath = configDir || path.join(process.cwd(), '.claude');
331
+ const stylePath = path.join(basePath, 'output-styles', `${styleName}.md`);
332
+
333
+ try {
334
+ if (!fs.existsSync(stylePath)) return null;
335
+ const content = fs.readFileSync(stylePath, 'utf8');
336
+ const withoutFrontmatter = content.replace(/^---[\s\S]*?---\n*/, '').trim();
337
+ return withoutFrontmatter;
338
+ } catch (e) {
339
+ return null;
340
+ }
341
+ }
342
+
343
+ // ═══════════════════════════════════════════════════════════════════════════
344
+ // CONTEXT OUTPUT
345
+ // ═══════════════════════════════════════════════════════════════════════════
346
+
347
+ /**
348
+ * Build context summary for output (compact, single line)
349
+ * @param {Object} config - Loaded config
350
+ * @param {Object} detections - Project detections
351
+ * @param {{ path: string|null, resolvedBy: string|null }} resolved - Plan resolution
352
+ * @param {string|null} gitRoot - Git repository root
353
+ * @returns {string}
354
+ */
355
+ function buildContextOutput(config, detections, resolved, gitRoot) {
356
+ const lines = [`Project: ${detections.type || 'unknown'}`];
357
+ if (detections.pm) lines.push(`PM: ${detections.pm}`);
358
+ lines.push(`Plan naming: ${config.plan.namingFormat}`);
359
+
360
+ if (gitRoot && gitRoot !== process.cwd()) {
361
+ lines.push(`Root: ${gitRoot}`);
362
+ }
363
+
364
+ if (resolved.path) {
365
+ if (resolved.resolvedBy === 'session') {
366
+ lines.push(`Plan: ${resolved.path}`);
367
+ } else {
368
+ lines.push(`Suggested: ${resolved.path}`);
369
+ }
370
+ }
371
+
372
+ return lines.join(' | ');
373
+ }
374
+
375
+ // ═══════════════════════════════════════════════════════════════════════════
376
+ // MAIN ENTRY POINT
377
+ // ═══════════════════════════════════════════════════════════════════════════
378
+
379
+ /**
380
+ * Detect all project information
381
+ *
382
+ * @param {Object} [options]
383
+ * @param {Object} [options.configOverrides] - Override auto-detection
384
+ * @returns {{
385
+ * type: 'monorepo' | 'library' | 'single-repo',
386
+ * packageManager: 'npm' | 'pnpm' | 'yarn' | 'bun' | null,
387
+ * framework: string | null,
388
+ * pythonVersion: string | null,
389
+ * nodeVersion: string,
390
+ * gitBranch: string | null,
391
+ * gitRoot: string | null,
392
+ * gitUrl: string | null,
393
+ * osPlatform: string,
394
+ * user: string,
395
+ * locale: string,
396
+ * timezone: string
397
+ * }}
398
+ */
399
+ function detectProject(options = {}) {
400
+ const { configOverrides = {} } = options;
401
+
402
+ return {
403
+ type: detectProjectType(configOverrides.type),
404
+ packageManager: detectPackageManager(configOverrides.packageManager),
405
+ framework: detectFramework(configOverrides.framework),
406
+ pythonVersion: getPythonVersion(),
407
+ nodeVersion: process.version,
408
+ gitBranch: getGitBranch(),
409
+ gitRoot: getGitRoot(),
410
+ gitUrl: getGitRemoteUrl(),
411
+ osPlatform: process.platform,
412
+ user: process.env.USERNAME || process.env.USER || process.env.LOGNAME || os.userInfo().username,
413
+ locale: process.env.LANG || '',
414
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
415
+ };
416
+ }
417
+
418
+ /**
419
+ * Build static environment info object
420
+ * @param {string} [configDir] - Config directory path
421
+ * @returns {Object} Static environment info
422
+ */
423
+ function buildStaticEnv(configDir) {
424
+ return {
425
+ nodeVersion: process.version,
426
+ pythonVersion: getPythonVersion(),
427
+ osPlatform: process.platform,
428
+ gitUrl: getGitRemoteUrl(),
429
+ gitBranch: getGitBranch(),
430
+ gitRoot: getGitRoot(),
431
+ user: process.env.USERNAME || process.env.USER || process.env.LOGNAME || os.userInfo().username,
432
+ locale: process.env.LANG || '',
433
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
434
+ configDir: configDir || path.join(process.cwd(), '.claude')
435
+ };
436
+ }
437
+
438
+ // ═══════════════════════════════════════════════════════════════════════════
439
+ // EXPORTS
440
+ // ═══════════════════════════════════════════════════════════════════════════
441
+
442
+ module.exports = {
443
+ // Main entry points
444
+ detectProject,
445
+ buildStaticEnv,
446
+
447
+ // Detection functions
448
+ detectProjectType,
449
+ detectPackageManager,
450
+ detectFramework,
451
+
452
+ // Python detection
453
+ getPythonVersion,
454
+ findPythonBinary,
455
+ getPythonPaths,
456
+ isValidPythonPath,
457
+
458
+ // Git detection
459
+ isGitRepo,
460
+ getGitRemoteUrl,
461
+ getGitBranch,
462
+ getGitRoot,
463
+
464
+ // Coding level
465
+ getCodingLevelStyleName,
466
+ getCodingLevelGuidelines,
467
+
468
+ // Output
469
+ buildContextOutput,
470
+
471
+ // Helpers
472
+ execSafe,
473
+ execFileSafe
474
+ };