@ngxtm/devkit 2.0.2 → 3.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 (534) hide show
  1. package/cli/detect.js +292 -0
  2. package/cli/index.js +205 -80
  3. package/cli/init.js +245 -0
  4. package/cli/install.js +231 -53
  5. package/cli/update.js +243 -0
  6. package/cli/utils.js +195 -0
  7. package/package.json +16 -20
  8. package/rules-index.json +76 -0
  9. package/scripts/generate-index.js +223 -0
  10. package/scripts/merge-commands.js +290 -0
  11. package/scripts/organize-rules.js +226 -0
  12. package/templates/base/hooks/lib/ck-config-utils.cjs +769 -0
  13. package/templates/base/hooks/lib/ck-paths.cjs +110 -0
  14. package/templates/base/hooks/lib/colors.cjs +95 -0
  15. package/templates/base/hooks/lib/config-counter.cjs +103 -0
  16. package/templates/base/hooks/lib/context-builder.cjs +600 -0
  17. package/templates/base/hooks/lib/context-tracker.cjs +335 -0
  18. package/templates/base/hooks/lib/privacy-checker.cjs +297 -0
  19. package/templates/base/hooks/lib/project-detector.cjs +430 -0
  20. package/templates/base/hooks/lib/scout-checker.cjs +172 -0
  21. package/templates/base/hooks/lib/transcript-parser.cjs +164 -0
  22. package/templates/base/hooks/privacy-block.cjs +145 -0
  23. package/agents/backend-engineer.md +0 -154
  24. package/agents/brainstormer.md +0 -169
  25. package/agents/business-analyst.md +0 -166
  26. package/agents/database-architect.md +0 -159
  27. package/agents/debugger.md +0 -155
  28. package/agents/designer.md +0 -150
  29. package/agents/devops-engineer.md +0 -155
  30. package/agents/docs-manager.md +0 -171
  31. package/agents/frontend-engineer.md +0 -159
  32. package/agents/game-engineer.md +0 -148
  33. package/agents/mobile-engineer.md +0 -149
  34. package/agents/performance-engineer.md +0 -152
  35. package/agents/planner.md +0 -161
  36. package/agents/project-manager.md +0 -160
  37. package/agents/researcher.md +0 -146
  38. package/agents/reviewer.md +0 -155
  39. package/agents/scouter.md +0 -157
  40. package/agents/security-engineer.md +0 -154
  41. package/agents/tech-lead.md +0 -159
  42. package/agents/tester.md +0 -157
  43. package/agents-claudekit/brainstormer.md +0 -113
  44. package/agents-claudekit/code-reviewer.md +0 -157
  45. package/agents-claudekit/code-simplifier.md +0 -42
  46. package/agents-claudekit/copywriter.md +0 -110
  47. package/agents-claudekit/database-admin.md +0 -92
  48. package/agents-claudekit/debugger.md +0 -137
  49. package/agents-claudekit/docs-manager.md +0 -208
  50. package/agents-claudekit/fullstack-developer.md +0 -95
  51. package/agents-claudekit/git-manager.md +0 -394
  52. package/agents-claudekit/journal-writer.md +0 -113
  53. package/agents-claudekit/mcp-manager.md +0 -93
  54. package/agents-claudekit/planner.md +0 -108
  55. package/agents-claudekit/project-manager.md +0 -125
  56. package/agents-claudekit/researcher.md +0 -38
  57. package/agents-claudekit/scout-external.md +0 -141
  58. package/agents-claudekit/scout.md +0 -107
  59. package/agents-claudekit/tester.md +0 -105
  60. package/agents-claudekit/ui-ux-designer.md +0 -236
  61. package/commands/ask.md +0 -64
  62. package/commands/brainstorm.md +0 -64
  63. package/commands/code.md +0 -64
  64. package/commands/cook.md +0 -64
  65. package/commands/debug.md +0 -64
  66. package/commands/design/fast.md +0 -134
  67. package/commands/fix/fast.md +0 -84
  68. package/commands/fix/hard.md +0 -116
  69. package/commands/fix.md +0 -64
  70. package/commands/plan/fast.md +0 -78
  71. package/commands/plan/hard.md +0 -131
  72. package/commands/plan.md +0 -64
  73. package/commands/test.md +0 -64
  74. package/matrix-skills/_index.yaml +0 -275
  75. package/matrix-skills/ai-ml.yaml +0 -353
  76. package/matrix-skills/architecture.yaml +0 -93
  77. package/matrix-skills/backend.yaml +0 -280
  78. package/matrix-skills/cloud.yaml +0 -112
  79. package/matrix-skills/data.yaml +0 -74
  80. package/matrix-skills/design.yaml +0 -98
  81. package/matrix-skills/devops.yaml +0 -200
  82. package/matrix-skills/frontend.yaml +0 -200
  83. package/matrix-skills/gaming.yaml +0 -39
  84. package/matrix-skills/languages.yaml +0 -160
  85. package/matrix-skills/management.yaml +0 -50
  86. package/matrix-skills/mcp.yaml +0 -82
  87. package/matrix-skills/mobile.yaml +0 -85
  88. package/matrix-skills/performance.yaml +0 -23
  89. package/matrix-skills/planning.yaml +0 -117
  90. package/matrix-skills/quality.yaml +0 -195
  91. package/matrix-skills/research.yaml +0 -106
  92. package/matrix-skills/security.yaml +0 -293
  93. package/matrix-skills/tools.yaml +0 -352
  94. package/output-styles/coding-level-0-eli5.md +0 -103
  95. package/output-styles/coding-level-1-junior.md +0 -124
  96. package/output-styles/coding-level-2-mid.md +0 -146
  97. package/output-styles/coding-level-3-senior.md +0 -148
  98. package/output-styles/coding-level-4-lead.md +0 -159
  99. package/output-styles/coding-level-5-god.md +0 -91
  100. package/rules/README.md +0 -141
  101. package/rules/metadata.json +0 -54
  102. package/settings.json +0 -3
  103. package/statusline.cjs +0 -500
  104. package/statusline.ps1 +0 -307
  105. package/statusline.sh +0 -237
  106. package/workflows/development-rules.md +0 -42
  107. package/workflows/documentation-management.md +0 -121
  108. package/workflows/orchestration-protocol.md +0 -16
  109. package/workflows/primary-workflow.md +0 -45
  110. /package/{commands → merged-commands}/ask/fast.md +0 -0
  111. /package/{commands → merged-commands}/ask/hard.md +0 -0
  112. /package/{commands-claudekit → merged-commands}/ask.md +0 -0
  113. /package/{commands → merged-commands}/auto.md +0 -0
  114. /package/{commands-claudekit → merged-commands}/bootstrap/auto/fast.md +0 -0
  115. /package/{commands-claudekit → merged-commands}/bootstrap/auto/parallel.md +0 -0
  116. /package/{commands-claudekit → merged-commands}/bootstrap/auto.md +0 -0
  117. /package/{commands-claudekit → merged-commands}/bootstrap.md +0 -0
  118. /package/{commands → merged-commands}/brainstorm/fast.md +0 -0
  119. /package/{commands → merged-commands}/brainstorm/hard.md +0 -0
  120. /package/{commands-claudekit → merged-commands}/brainstorm.md +0 -0
  121. /package/{commands-claudekit → merged-commands}/ck-help.md +0 -0
  122. /package/{commands-claudekit → merged-commands}/code/auto.md +0 -0
  123. /package/{commands → merged-commands}/code/fast.md +0 -0
  124. /package/{commands → merged-commands}/code/hard.md +0 -0
  125. /package/{commands-claudekit → merged-commands}/code/no-test.md +0 -0
  126. /package/{commands-claudekit → merged-commands}/code/parallel.md +0 -0
  127. /package/{commands-claudekit → merged-commands}/code.md +0 -0
  128. /package/{commands-claudekit → merged-commands}/coding-level.md +0 -0
  129. /package/{commands-claudekit → merged-commands}/content/cro.md +0 -0
  130. /package/{commands-claudekit → merged-commands}/content/enhance.md +0 -0
  131. /package/{commands-claudekit → merged-commands}/content/fast.md +0 -0
  132. /package/{commands-claudekit → merged-commands}/content/good.md +0 -0
  133. /package/{commands-claudekit → merged-commands}/cook/auto/fast.md +0 -0
  134. /package/{commands-claudekit → merged-commands}/cook/auto/parallel.md +0 -0
  135. /package/{commands-claudekit → merged-commands}/cook/auto.md +0 -0
  136. /package/{commands → merged-commands}/cook/fast.md +0 -0
  137. /package/{commands → merged-commands}/cook/hard.md +0 -0
  138. /package/{commands-claudekit → merged-commands}/cook.md +0 -0
  139. /package/{commands → merged-commands}/debug/fast.md +0 -0
  140. /package/{commands → merged-commands}/debug/hard.md +0 -0
  141. /package/{commands-claudekit → merged-commands}/debug.md +0 -0
  142. /package/{commands → merged-commands}/deploy/check.md +0 -0
  143. /package/{commands → merged-commands}/deploy/preview.md +0 -0
  144. /package/{commands → merged-commands}/deploy/production.md +0 -0
  145. /package/{commands → merged-commands}/deploy/rollback.md +0 -0
  146. /package/{commands → merged-commands}/deploy.md +0 -0
  147. /package/{commands-claudekit → merged-commands}/design/3d.md +0 -0
  148. /package/{commands-claudekit → merged-commands}/design/describe.md +0 -0
  149. /package/{commands-claudekit → merged-commands}/design/fast.md +0 -0
  150. /package/{commands-claudekit → merged-commands}/design/good.md +0 -0
  151. /package/{commands → merged-commands}/design/hard.md +0 -0
  152. /package/{commands-claudekit → merged-commands}/design/screenshot.md +0 -0
  153. /package/{commands-claudekit → merged-commands}/design/video.md +0 -0
  154. /package/{commands → merged-commands}/design.md +0 -0
  155. /package/{commands → merged-commands}/docs/audit.md +0 -0
  156. /package/{commands → merged-commands}/docs/business.md +0 -0
  157. /package/{commands → merged-commands}/docs/core.md +0 -0
  158. /package/{commands-claudekit → merged-commands}/docs/init.md +0 -0
  159. /package/{commands-claudekit → merged-commands}/docs/summarize.md +0 -0
  160. /package/{commands-claudekit → merged-commands}/docs/update.md +0 -0
  161. /package/{commands → merged-commands}/docs.md +0 -0
  162. /package/{commands-claudekit → merged-commands}/fix/ci.md +0 -0
  163. /package/{commands-claudekit → merged-commands}/fix/fast.md +0 -0
  164. /package/{commands-claudekit → merged-commands}/fix/hard.md +0 -0
  165. /package/{commands-claudekit → merged-commands}/fix/logs.md +0 -0
  166. /package/{commands-claudekit → merged-commands}/fix/parallel.md +0 -0
  167. /package/{commands-claudekit → merged-commands}/fix/test.md +0 -0
  168. /package/{commands-claudekit → merged-commands}/fix/types.md +0 -0
  169. /package/{commands-claudekit → merged-commands}/fix/ui.md +0 -0
  170. /package/{commands-claudekit → merged-commands}/fix.md +0 -0
  171. /package/{commands-claudekit → merged-commands}/git/cm.md +0 -0
  172. /package/{commands-claudekit → merged-commands}/git/cp.md +0 -0
  173. /package/{commands-claudekit → merged-commands}/git/merge.md +0 -0
  174. /package/{commands-claudekit → merged-commands}/git/pr.md +0 -0
  175. /package/{commands-claudekit → merged-commands}/integrate/polar.md +0 -0
  176. /package/{commands-claudekit → merged-commands}/integrate/sepay.md +0 -0
  177. /package/{commands-claudekit → merged-commands}/journal.md +0 -0
  178. /package/{commands-claudekit → merged-commands}/kanban.md +0 -0
  179. /package/{commands-claudekit → merged-commands}/plan/archive.md +0 -0
  180. /package/{commands-claudekit → merged-commands}/plan/ci.md +0 -0
  181. /package/{commands-claudekit → merged-commands}/plan/cro.md +0 -0
  182. /package/{commands-claudekit → merged-commands}/plan/fast.md +0 -0
  183. /package/{commands-claudekit → merged-commands}/plan/hard.md +0 -0
  184. /package/{commands-claudekit → merged-commands}/plan/parallel.md +0 -0
  185. /package/{commands-claudekit → merged-commands}/plan/two.md +0 -0
  186. /package/{commands-claudekit → merged-commands}/plan/validate.md +0 -0
  187. /package/{commands-claudekit → merged-commands}/plan.md +0 -0
  188. /package/{commands-claudekit → merged-commands}/preview.md +0 -0
  189. /package/{commands-claudekit → merged-commands}/review/codebase/parallel.md +0 -0
  190. /package/{commands-claudekit → merged-commands}/review/codebase.md +0 -0
  191. /package/{commands → merged-commands}/review/fast.md +0 -0
  192. /package/{commands → merged-commands}/review/hard.md +0 -0
  193. /package/{commands → merged-commands}/review.md +0 -0
  194. /package/{commands-claudekit → merged-commands}/scout/ext.md +0 -0
  195. /package/{commands-claudekit → merged-commands}/scout.md +0 -0
  196. /package/{commands-claudekit → merged-commands}/skill/add.md +0 -0
  197. /package/{commands-claudekit → merged-commands}/skill/create.md +0 -0
  198. /package/{commands-claudekit → merged-commands}/skill/fix-logs.md +0 -0
  199. /package/{commands-claudekit → merged-commands}/skill/optimize/auto.md +0 -0
  200. /package/{commands-claudekit → merged-commands}/skill/optimize.md +0 -0
  201. /package/{commands-claudekit → merged-commands}/skill/plan.md +0 -0
  202. /package/{commands-claudekit → merged-commands}/skill/update.md +0 -0
  203. /package/{commands → merged-commands}/test/fast.md +0 -0
  204. /package/{commands → merged-commands}/test/hard.md +0 -0
  205. /package/{commands-claudekit → merged-commands}/test/ui.md +0 -0
  206. /package/{commands-claudekit → merged-commands}/test.md +0 -0
  207. /package/{commands-claudekit → merged-commands}/use-mcp.md +0 -0
  208. /package/{commands-claudekit → merged-commands}/watzup.md +0 -0
  209. /package/{commands-claudekit → merged-commands}/worktree.md +0 -0
  210. /package/{rules → templates/dart/rules}/dart/best-practices/SKILL.md +0 -0
  211. /package/{rules → templates/dart/rules}/dart/language/SKILL.md +0 -0
  212. /package/{rules → templates/dart/rules}/dart/tooling/SKILL.md +0 -0
  213. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/SKILL.md +0 -0
  214. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/REFERENCE.md +0 -0
  215. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/router-config.md +0 -0
  216. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/SKILL.md +0 -0
  217. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/REFERENCE.md +0 -0
  218. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/auth-bloc-example.md +0 -0
  219. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/equatable-usage.md +0 -0
  220. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/property-based-state.md +0 -0
  221. /package/{rules → templates/flutter/rules}/flutter/bloc.rule.md +0 -0
  222. /package/{rules → templates/flutter/rules}/flutter/cicd/SKILL.md +0 -0
  223. /package/{rules → templates/flutter/rules}/flutter/cicd/references/advanced-workflow.md +0 -0
  224. /package/{rules → templates/flutter/rules}/flutter/cicd/references/fastlane.md +0 -0
  225. /package/{rules → templates/flutter/rules}/flutter/cicd/references/github-actions.md +0 -0
  226. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/SKILL.md +0 -0
  227. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/REFERENCE.md +0 -0
  228. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/modules.md +0 -0
  229. /package/{rules → templates/flutter/rules}/flutter/error-handling/SKILL.md +0 -0
  230. /package/{rules → templates/flutter/rules}/flutter/error-handling/references/REFERENCE.md +0 -0
  231. /package/{rules → templates/flutter/rules}/flutter/error-handling/references/error-mapping.md +0 -0
  232. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/SKILL.md +0 -0
  233. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/REFERENCE.md +0 -0
  234. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/folder-structure.md +0 -0
  235. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/SKILL.md +0 -0
  236. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/app-pages.md +0 -0
  237. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/middleware-example.md +0 -0
  238. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/SKILL.md +0 -0
  239. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/binding-example.md +0 -0
  240. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/reactive-vs-simple.md +0 -0
  241. /package/{rules → templates/flutter/rules}/flutter/go-router-navigation/SKILL.md +0 -0
  242. /package/{rules → templates/flutter/rules}/flutter/idiomatic-flutter/SKILL.md +0 -0
  243. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/SKILL.md +0 -0
  244. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/REFERENCE.md +0 -0
  245. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/repository-mapping.md +0 -0
  246. /package/{rules → templates/flutter/rules}/flutter/localization/SKILL.md +0 -0
  247. /package/{rules → templates/flutter/rules}/flutter/localization/references/REFERENCE.md +0 -0
  248. /package/{rules → templates/flutter/rules}/flutter/localization/references/sheet-loader.md +0 -0
  249. /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/SKILL.md +0 -0
  250. /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/references/on-generate-route.md +0 -0
  251. /package/{rules → templates/flutter/rules}/flutter/performance/SKILL.md +0 -0
  252. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/SKILL.md +0 -0
  253. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/REFERENCE.md +0 -0
  254. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/token-refresh.md +0 -0
  255. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/SKILL.md +0 -0
  256. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/architecture.md +0 -0
  257. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/best-practices.md +0 -0
  258. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/testing.md +0 -0
  259. /package/{rules → templates/flutter/rules}/flutter/riverpod.rule.md +0 -0
  260. /package/{rules → templates/flutter/rules}/flutter/security/SKILL.md +0 -0
  261. /package/{rules → templates/flutter/rules}/flutter/security/references/REFERENCE.md +0 -0
  262. /package/{rules → templates/flutter/rules}/flutter/security/references/network-security.md +0 -0
  263. /package/{rules → templates/flutter/rules}/flutter/testing/SKILL.md +0 -0
  264. /package/{rules → templates/flutter/rules}/flutter/testing/references/REFERENCE.md +0 -0
  265. /package/{rules → templates/flutter/rules}/flutter/testing/references/bloc-testing.md +0 -0
  266. /package/{rules → templates/flutter/rules}/flutter/testing/references/integration-testing.md +0 -0
  267. /package/{rules → templates/flutter/rules}/flutter/testing/references/robot-pattern.md +0 -0
  268. /package/{rules → templates/flutter/rules}/flutter/testing/references/unit-testing.md +0 -0
  269. /package/{rules → templates/flutter/rules}/flutter/testing/references/widget-testing.md +0 -0
  270. /package/{rules → templates/flutter/rules}/flutter/widgets/SKILL.md +0 -0
  271. /package/{rules → templates/golang/rules}/golang/chi-router/SKILL.md +0 -0
  272. /package/{rules → templates/golang/rules}/golang/chi-router/references/REFERENCE.md +0 -0
  273. /package/{rules → templates/golang/rules}/golang/chi-router/references/routing-patterns.md +0 -0
  274. /package/{rules → templates/golang/rules}/golang/cobra-cli/SKILL.md +0 -0
  275. /package/{rules → templates/golang/rules}/golang/cobra-cli/references/REFERENCE.md +0 -0
  276. /package/{rules → templates/golang/rules}/golang/cobra-cli/references/command-patterns.md +0 -0
  277. /package/{rules → templates/golang/rules}/golang/core/SKILL.md +0 -0
  278. /package/{rules → templates/golang/rules}/golang/core/references/REFERENCE.md +0 -0
  279. /package/{rules → templates/golang/rules}/golang/core/references/concurrency-patterns.md +0 -0
  280. /package/{rules → templates/golang/rules}/golang/core/references/error-handling.md +0 -0
  281. /package/{rules → templates/golang/rules}/golang/echo-framework/SKILL.md +0 -0
  282. /package/{rules → templates/golang/rules}/golang/echo-framework/references/REFERENCE.md +0 -0
  283. /package/{rules → templates/golang/rules}/golang/echo-framework/references/middleware-patterns.md +0 -0
  284. /package/{rules → templates/golang/rules}/golang/echo-framework/references/routing-patterns.md +0 -0
  285. /package/{rules → templates/golang/rules}/golang/ent-orm/SKILL.md +0 -0
  286. /package/{rules → templates/golang/rules}/golang/ent-orm/references/REFERENCE.md +0 -0
  287. /package/{rules → templates/golang/rules}/golang/ent-orm/references/schema-patterns.md +0 -0
  288. /package/{rules → templates/golang/rules}/golang/fiber-framework/SKILL.md +0 -0
  289. /package/{rules → templates/golang/rules}/golang/fiber-framework/references/REFERENCE.md +0 -0
  290. /package/{rules → templates/golang/rules}/golang/fiber-framework/references/routing-patterns.md +0 -0
  291. /package/{rules → templates/golang/rules}/golang/gin-framework/SKILL.md +0 -0
  292. /package/{rules → templates/golang/rules}/golang/gin-framework/references/REFERENCE.md +0 -0
  293. /package/{rules → templates/golang/rules}/golang/gin-framework/references/middleware-patterns.md +0 -0
  294. /package/{rules → templates/golang/rules}/golang/gorm-orm/SKILL.md +0 -0
  295. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/REFERENCE.md +0 -0
  296. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/model-definitions.md +0 -0
  297. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/query-patterns.md +0 -0
  298. /package/{rules → templates/golang/rules}/golang/grpc/SKILL.md +0 -0
  299. /package/{rules → templates/golang/rules}/golang/grpc/references/REFERENCE.md +0 -0
  300. /package/{rules → templates/golang/rules}/golang/grpc/references/service-patterns.md +0 -0
  301. /package/{rules → templates/golang/rules}/golang/testify/SKILL.md +0 -0
  302. /package/{rules → templates/golang/rules}/golang/testify/references/REFERENCE.md +0 -0
  303. /package/{rules → templates/golang/rules}/golang/testify/references/assert-patterns.md +0 -0
  304. /package/{rules → templates/golang/rules}/golang/validator/SKILL.md +0 -0
  305. /package/{rules → templates/golang/rules}/golang/validator/references/REFERENCE.md +0 -0
  306. /package/{rules → templates/golang/rules}/golang/validator/references/validation-tags.md +0 -0
  307. /package/{rules → templates/golang/rules}/golang/viper-config/SKILL.md +0 -0
  308. /package/{rules → templates/golang/rules}/golang/viper-config/references/REFERENCE.md +0 -0
  309. /package/{rules → templates/golang/rules}/golang/viper-config/references/config-loading.md +0 -0
  310. /package/{rules → templates/golang/rules}/golang/wire-di/SKILL.md +0 -0
  311. /package/{rules → templates/golang/rules}/golang/wire-di/references/REFERENCE.md +0 -0
  312. /package/{rules → templates/golang/rules}/golang/wire-di/references/provider-patterns.md +0 -0
  313. /package/{rules → templates/golang/rules}/golang/zap-logging/SKILL.md +0 -0
  314. /package/{rules → templates/golang/rules}/golang/zap-logging/references/REFERENCE.md +0 -0
  315. /package/{rules → templates/golang/rules}/golang/zap-logging/references/logger-config.md +0 -0
  316. /package/{rules → templates/java/rules}/java/build-gradle/SKILL.md +0 -0
  317. /package/{rules → templates/java/rules}/java/build-gradle/references/REFERENCE.md +0 -0
  318. /package/{rules → templates/java/rules}/java/build-gradle/references/kotlin-dsl.md +0 -0
  319. /package/{rules → templates/java/rules}/java/build-gradle/references/task-configuration.md +0 -0
  320. /package/{rules → templates/java/rules}/java/build-maven/SKILL.md +0 -0
  321. /package/{rules → templates/java/rules}/java/build-maven/references/REFERENCE.md +0 -0
  322. /package/{rules → templates/java/rules}/java/build-maven/references/dependency-management.md +0 -0
  323. /package/{rules → templates/java/rules}/java/build-maven/references/lifecycle-phases.md +0 -0
  324. /package/{rules → templates/java/rules}/java/graalvm-native/SKILL.md +0 -0
  325. /package/{rules → templates/java/rules}/java/graalvm-native/references/REFERENCE.md +0 -0
  326. /package/{rules → templates/java/rules}/java/java-collections-streams/SKILL.md +0 -0
  327. /package/{rules → templates/java/rules}/java/java-collections-streams/references/REFERENCE.md +0 -0
  328. /package/{rules → templates/java/rules}/java/java-collections-streams/references/collectors-patterns.md +0 -0
  329. /package/{rules → templates/java/rules}/java/java-collections-streams/references/stream-pipelines.md +0 -0
  330. /package/{rules → templates/java/rules}/java/java-concurrency/SKILL.md +0 -0
  331. /package/{rules → templates/java/rules}/java/java-concurrency/references/REFERENCE.md +0 -0
  332. /package/{rules → templates/java/rules}/java/java-concurrency/references/completable-future.md +0 -0
  333. /package/{rules → templates/java/rules}/java/java-concurrency/references/executor-patterns.md +0 -0
  334. /package/{rules → templates/java/rules}/java/java-concurrency/references/virtual-threads.md +0 -0
  335. /package/{rules → templates/java/rules}/java/java-core-language/SKILL.md +0 -0
  336. /package/{rules → templates/java/rules}/java/java-core-language/references/REFERENCE.md +0 -0
  337. /package/{rules → templates/java/rules}/java/java-core-language/references/jvm-memory-model.md +0 -0
  338. /package/{rules → templates/java/rules}/java/java-core-language/references/modern-java-features.md +0 -0
  339. /package/{rules → templates/java/rules}/java/java-project-structure/SKILL.md +0 -0
  340. /package/{rules → templates/java/rules}/java/java-project-structure/references/REFERENCE.md +0 -0
  341. /package/{rules → templates/java/rules}/java/java-project-structure/references/maven-project-layout.md +0 -0
  342. /package/{rules → templates/java/rules}/java/java-project-structure/references/module-system.md +0 -0
  343. /package/{rules → templates/java/rules}/java/micronaut-core/SKILL.md +0 -0
  344. /package/{rules → templates/java/rules}/java/micronaut-core/references/REFERENCE.md +0 -0
  345. /package/{rules → templates/java/rules}/java/micronaut-reactive/SKILL.md +0 -0
  346. /package/{rules → templates/java/rules}/java/micronaut-reactive/references/REFERENCE.md +0 -0
  347. /package/{rules → templates/java/rules}/java/quarkus-core/SKILL.md +0 -0
  348. /package/{rules → templates/java/rules}/java/quarkus-core/references/REFERENCE.md +0 -0
  349. /package/{rules → templates/java/rules}/java/quarkus-reactive/SKILL.md +0 -0
  350. /package/{rules → templates/java/rules}/java/quarkus-reactive/references/REFERENCE.md +0 -0
  351. /package/{rules → templates/java/rules}/java/spring-batch/SKILL.md +0 -0
  352. /package/{rules → templates/java/rules}/java/spring-batch/references/REFERENCE.md +0 -0
  353. /package/{rules → templates/java/rules}/java/spring-boot-architecture/SKILL.md +0 -0
  354. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/REFERENCE.md +0 -0
  355. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/auto-configuration.md +0 -0
  356. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/configuration-properties.md +0 -0
  357. /package/{rules → templates/java/rules}/java/spring-boot-web/SKILL.md +0 -0
  358. /package/{rules → templates/java/rules}/java/spring-boot-web/references/REFERENCE.md +0 -0
  359. /package/{rules → templates/java/rules}/java/spring-cloud/SKILL.md +0 -0
  360. /package/{rules → templates/java/rules}/java/spring-cloud/references/REFERENCE.md +0 -0
  361. /package/{rules → templates/java/rules}/java/spring-data-jpa/SKILL.md +0 -0
  362. /package/{rules → templates/java/rules}/java/spring-data-jpa/references/REFERENCE.md +0 -0
  363. /package/{rules → templates/java/rules}/java/spring-security/SKILL.md +0 -0
  364. /package/{rules → templates/java/rules}/java/spring-security/references/REFERENCE.md +0 -0
  365. /package/{rules → templates/java/rules}/java/spring-security/references/jwt-auth-flow.md +0 -0
  366. /package/{rules → templates/java/rules}/java/testing-junit-mockito/SKILL.md +0 -0
  367. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/REFERENCE.md +0 -0
  368. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/junit5-patterns.md +0 -0
  369. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/mockito-patterns.md +0 -0
  370. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/spring-boot-testing.md +0 -0
  371. /package/{rules → templates/javascript/rules}/javascript/best-practices/SKILL.md +0 -0
  372. /package/{rules → templates/javascript/rules}/javascript/best-practices/references/REFERENCE.md +0 -0
  373. /package/{rules → templates/javascript/rules}/javascript/language/SKILL.md +0 -0
  374. /package/{rules → templates/javascript/rules}/javascript/language/references/REFERENCE.md +0 -0
  375. /package/{rules → templates/javascript/rules}/javascript/tooling/SKILL.md +0 -0
  376. /package/{rules → templates/javascript/rules}/javascript/tooling/references/REFERENCE.md +0 -0
  377. /package/{rules → templates/nestjs/rules}/nestjs/api-standards/SKILL.md +0 -0
  378. /package/{rules → templates/nestjs/rules}/nestjs/api-standards/references/pagination-wrapper.md +0 -0
  379. /package/{rules → templates/nestjs/rules}/nestjs/architecture/SKILL.md +0 -0
  380. /package/{rules → templates/nestjs/rules}/nestjs/architecture/references/dynamic-module.md +0 -0
  381. /package/{rules → templates/nestjs/rules}/nestjs/caching/SKILL.md +0 -0
  382. /package/{rules → templates/nestjs/rules}/nestjs/caching/references/REFERENCE.md +0 -0
  383. /package/{rules → templates/nestjs/rules}/nestjs/caching/references/cache-patterns.md +0 -0
  384. /package/{rules → templates/nestjs/rules}/nestjs/configuration/SKILL.md +0 -0
  385. /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/REFERENCE.md +0 -0
  386. /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/config-patterns.md +0 -0
  387. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/SKILL.md +0 -0
  388. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/REFERENCE.md +0 -0
  389. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/controller-patterns.md +0 -0
  390. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/service-patterns.md +0 -0
  391. /package/{rules → templates/nestjs/rules}/nestjs/database/SKILL.md +0 -0
  392. /package/{rules → templates/nestjs/rules}/nestjs/database/references/REFERENCE.md +0 -0
  393. /package/{rules → templates/nestjs/rules}/nestjs/database/references/typeorm-patterns.md +0 -0
  394. /package/{rules → templates/nestjs/rules}/nestjs/deployment/SKILL.md +0 -0
  395. /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/REFERENCE.md +0 -0
  396. /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/deployment-patterns.md +0 -0
  397. /package/{rules → templates/nestjs/rules}/nestjs/documentation/SKILL.md +0 -0
  398. /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/REFERENCE.md +0 -0
  399. /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/swagger-patterns.md +0 -0
  400. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/SKILL.md +0 -0
  401. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/REFERENCE.md +0 -0
  402. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/exception-filters.md +0 -0
  403. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/SKILL.md +0 -0
  404. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/REFERENCE.md +0 -0
  405. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/upload-patterns.md +0 -0
  406. /package/{rules → templates/nestjs/rules}/nestjs/observability/SKILL.md +0 -0
  407. /package/{rules → templates/nestjs/rules}/nestjs/observability/references/REFERENCE.md +0 -0
  408. /package/{rules → templates/nestjs/rules}/nestjs/observability/references/logging-metrics.md +0 -0
  409. /package/{rules → templates/nestjs/rules}/nestjs/performance/SKILL.md +0 -0
  410. /package/{rules → templates/nestjs/rules}/nestjs/performance/references/REFERENCE.md +0 -0
  411. /package/{rules → templates/nestjs/rules}/nestjs/performance/references/performance-patterns.md +0 -0
  412. /package/{rules → templates/nestjs/rules}/nestjs/real-time/SKILL.md +0 -0
  413. /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/REFERENCE.md +0 -0
  414. /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/websocket-patterns.md +0 -0
  415. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/SKILL.md +0 -0
  416. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/REFERENCE.md +0 -0
  417. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/scheduling-patterns.md +0 -0
  418. /package/{rules → templates/nestjs/rules}/nestjs/search/SKILL.md +0 -0
  419. /package/{rules → templates/nestjs/rules}/nestjs/search/references/REFERENCE.md +0 -0
  420. /package/{rules → templates/nestjs/rules}/nestjs/search/references/search-patterns.md +0 -0
  421. /package/{rules → templates/nestjs/rules}/nestjs/security/SKILL.md +0 -0
  422. /package/{rules → templates/nestjs/rules}/nestjs/security/references/REFERENCE.md +0 -0
  423. /package/{rules → templates/nestjs/rules}/nestjs/security/references/authentication.md +0 -0
  424. /package/{rules → templates/nestjs/rules}/nestjs/testing/SKILL.md +0 -0
  425. /package/{rules → templates/nestjs/rules}/nestjs/testing/references/REFERENCE.md +0 -0
  426. /package/{rules → templates/nestjs/rules}/nestjs/testing/references/unit-testing.md +0 -0
  427. /package/{rules → templates/nestjs/rules}/nestjs/transport/SKILL.md +0 -0
  428. /package/{rules → templates/nestjs/rules}/nestjs/transport/references/REFERENCE.md +0 -0
  429. /package/{rules → templates/nestjs/rules}/nestjs/transport/references/microservices-patterns.md +0 -0
  430. /package/{rules → templates/nextjs/rules}/nextjs/app-router/SKILL.md +0 -0
  431. /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/REFERENCE.md +0 -0
  432. /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/routing-patterns.md +0 -0
  433. /package/{rules → templates/nextjs/rules}/nextjs/architecture/SKILL.md +0 -0
  434. /package/{rules → templates/nextjs/rules}/nextjs/architecture/references/fsd-structure.md +0 -0
  435. /package/{rules → templates/nextjs/rules}/nextjs/authentication/SKILL.md +0 -0
  436. /package/{rules → templates/nextjs/rules}/nextjs/authentication/references/auth-implementation.md +0 -0
  437. /package/{rules → templates/nextjs/rules}/nextjs/caching/SKILL.md +0 -0
  438. /package/{rules → templates/nextjs/rules}/nextjs/caching/references/REFERENCE.md +0 -0
  439. /package/{rules → templates/nextjs/rules}/nextjs/caching/references/cache-strategies.md +0 -0
  440. /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/SKILL.md +0 -0
  441. /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/references/patterns.md +0 -0
  442. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/SKILL.md +0 -0
  443. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/REFERENCE.md +0 -0
  444. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/fetch-patterns.md +0 -0
  445. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/SKILL.md +0 -0
  446. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/REFERENCE.md +0 -0
  447. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/i18n-patterns.md +0 -0
  448. /package/{rules → templates/nextjs/rules}/nextjs/optimization/SKILL.md +0 -0
  449. /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/REFERENCE.md +0 -0
  450. /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/optimization-patterns.md +0 -0
  451. /package/{rules → templates/nextjs/rules}/nextjs/rendering/SKILL.md +0 -0
  452. /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/REFERENCE.md +0 -0
  453. /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/rendering-modes.md +0 -0
  454. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/SKILL.md +0 -0
  455. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/REFERENCE.md +0 -0
  456. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/action-patterns.md +0 -0
  457. /package/{rules → templates/nextjs/rules}/nextjs/server-components/SKILL.md +0 -0
  458. /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/REFERENCE.md +0 -0
  459. /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/component-patterns.md +0 -0
  460. /package/{rules → templates/nextjs/rules}/nextjs/state-management/SKILL.md +0 -0
  461. /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/REFERENCE.md +0 -0
  462. /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/state-patterns.md +0 -0
  463. /package/{rules → templates/nextjs/rules}/nextjs/styling/SKILL.md +0 -0
  464. /package/{rules → templates/nextjs/rules}/nextjs/styling/references/implementation.md +0 -0
  465. /package/{rules → templates/react/rules}/react/component-patterns/SKILL.md +0 -0
  466. /package/{rules → templates/react/rules}/react/component-patterns/references/REFERENCE.md +0 -0
  467. /package/{rules → templates/react/rules}/react/hooks/SKILL.md +0 -0
  468. /package/{rules → templates/react/rules}/react/hooks/references/REFERENCE.md +0 -0
  469. /package/{rules → templates/react/rules}/react/hooks.rule.md +0 -0
  470. /package/{rules → templates/react/rules}/react/performance/SKILL.md +0 -0
  471. /package/{rules → templates/react/rules}/react/performance/references/REFERENCE.md +0 -0
  472. /package/{rules → templates/react/rules}/react/security/SKILL.md +0 -0
  473. /package/{rules → templates/react/rules}/react/security/references/REFERENCE.md +0 -0
  474. /package/{rules → templates/react/rules}/react/state-management/SKILL.md +0 -0
  475. /package/{rules → templates/react/rules}/react/state-management/references/REFERENCE.md +0 -0
  476. /package/{rules → templates/react/rules}/react/testing/SKILL.md +0 -0
  477. /package/{rules → templates/react/rules}/react/testing/references/REFERENCE.md +0 -0
  478. /package/{rules → templates/react/rules}/react/tooling/SKILL.md +0 -0
  479. /package/{rules → templates/react/rules}/react/typescript/SKILL.md +0 -0
  480. /package/{rules → templates/rust/rules}/rust/actix-web/SKILL.md +0 -0
  481. /package/{rules → templates/rust/rules}/rust/actix-web/references/REFERENCE.md +0 -0
  482. /package/{rules → templates/rust/rules}/rust/actix-web/references/handler-patterns.md +0 -0
  483. /package/{rules → templates/rust/rules}/rust/async-graphql/SKILL.md +0 -0
  484. /package/{rules → templates/rust/rules}/rust/async-graphql/references/REFERENCE.md +0 -0
  485. /package/{rules → templates/rust/rules}/rust/async-graphql/references/schema-patterns.md +0 -0
  486. /package/{rules → templates/rust/rules}/rust/axum/SKILL.md +0 -0
  487. /package/{rules → templates/rust/rules}/rust/axum/references/REFERENCE.md +0 -0
  488. /package/{rules → templates/rust/rules}/rust/axum/references/handler-patterns.md +0 -0
  489. /package/{rules → templates/rust/rules}/rust/bevy/SKILL.md +0 -0
  490. /package/{rules → templates/rust/rules}/rust/bevy/references/REFERENCE.md +0 -0
  491. /package/{rules → templates/rust/rules}/rust/bevy/references/ecs-patterns.md +0 -0
  492. /package/{rules → templates/rust/rules}/rust/clap/SKILL.md +0 -0
  493. /package/{rules → templates/rust/rules}/rust/clap/references/REFERENCE.md +0 -0
  494. /package/{rules → templates/rust/rules}/rust/clap/references/derive-patterns.md +0 -0
  495. /package/{rules → templates/rust/rules}/rust/core/SKILL.md +0 -0
  496. /package/{rules → templates/rust/rules}/rust/core/references/REFERENCE.md +0 -0
  497. /package/{rules → templates/rust/rules}/rust/core/references/error-handling.md +0 -0
  498. /package/{rules → templates/rust/rules}/rust/diesel-orm/SKILL.md +0 -0
  499. /package/{rules → templates/rust/rules}/rust/diesel-orm/references/REFERENCE.md +0 -0
  500. /package/{rules → templates/rust/rules}/rust/diesel-orm/references/schema-patterns.md +0 -0
  501. /package/{rules → templates/rust/rules}/rust/rocket/SKILL.md +0 -0
  502. /package/{rules → templates/rust/rules}/rust/rocket/references/REFERENCE.md +0 -0
  503. /package/{rules → templates/rust/rules}/rust/rocket/references/handler-patterns.md +0 -0
  504. /package/{rules → templates/rust/rules}/rust/sea-orm/SKILL.md +0 -0
  505. /package/{rules → templates/rust/rules}/rust/sea-orm/references/REFERENCE.md +0 -0
  506. /package/{rules → templates/rust/rules}/rust/sea-orm/references/entity-patterns.md +0 -0
  507. /package/{rules → templates/rust/rules}/rust/serde-serialization/SKILL.md +0 -0
  508. /package/{rules → templates/rust/rules}/rust/serde-serialization/references/REFERENCE.md +0 -0
  509. /package/{rules → templates/rust/rules}/rust/serde-serialization/references/serialization-patterns.md +0 -0
  510. /package/{rules → templates/rust/rules}/rust/sqlx-database/SKILL.md +0 -0
  511. /package/{rules → templates/rust/rules}/rust/sqlx-database/references/REFERENCE.md +0 -0
  512. /package/{rules → templates/rust/rules}/rust/sqlx-database/references/query-patterns.md +0 -0
  513. /package/{rules → templates/rust/rules}/rust/tauri/SKILL.md +0 -0
  514. /package/{rules → templates/rust/rules}/rust/tauri/references/REFERENCE.md +0 -0
  515. /package/{rules → templates/rust/rules}/rust/tauri/references/command-patterns.md +0 -0
  516. /package/{rules → templates/rust/rules}/rust/tokio-runtime/SKILL.md +0 -0
  517. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/REFERENCE.md +0 -0
  518. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/async-patterns.md +0 -0
  519. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/synchronization.md +0 -0
  520. /package/{rules → templates/rust/rules}/rust/tonic/SKILL.md +0 -0
  521. /package/{rules → templates/rust/rules}/rust/tonic/references/REFERENCE.md +0 -0
  522. /package/{rules → templates/rust/rules}/rust/tonic/references/service-patterns.md +0 -0
  523. /package/{rules → templates/rust/rules}/rust/tracing/SKILL.md +0 -0
  524. /package/{rules → templates/rust/rules}/rust/tracing/references/REFERENCE.md +0 -0
  525. /package/{rules → templates/rust/rules}/rust/tracing/references/instrumentation.md +0 -0
  526. /package/{rules → templates/typescript/rules}/typescript/best-practices/SKILL.md +0 -0
  527. /package/{rules → templates/typescript/rules}/typescript/best-practices/references/REFERENCE.md +0 -0
  528. /package/{rules → templates/typescript/rules}/typescript/language/SKILL.md +0 -0
  529. /package/{rules → templates/typescript/rules}/typescript/language/references/REFERENCE.md +0 -0
  530. /package/{rules → templates/typescript/rules}/typescript/patterns.rule.md +0 -0
  531. /package/{rules → templates/typescript/rules}/typescript/security/SKILL.md +0 -0
  532. /package/{rules → templates/typescript/rules}/typescript/security/references/REFERENCE.md +0 -0
  533. /package/{rules → templates/typescript/rules}/typescript/tooling/SKILL.md +0 -0
  534. /package/{rules → templates/typescript/rules}/typescript/tooling/references/REFERENCE.md +0 -0
package/cli/init.js ADDED
@@ -0,0 +1,245 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Devkit Init - Per-Project Installation
5
+ *
6
+ * Installs devkit to the current project's .claude/ directory with:
7
+ * - Merged commands (from both agent-assistant and claudekit)
8
+ * - Tech-specific rules (based on project detection)
9
+ * - Skills index (for on-demand loading)
10
+ * - Essential hooks
11
+ */
12
+
13
+ const fs = require('fs');
14
+ const path = require('path');
15
+
16
+ const { detectProjectType, getRulesForTypes, printDetectionResults } = require('./detect');
17
+ const { copyDir, getDirSize, validatePath } = require('./utils');
18
+
19
+ const VERSION = require('../package.json').version;
20
+ const PACKAGE_ROOT = path.join(__dirname, '..');
21
+
22
+ /**
23
+ * Initialize devkit in a project directory
24
+ */
25
+ function initProject(options = {}) {
26
+ const projectDir = options.path || process.cwd();
27
+ const claudeDir = path.join(projectDir, '.claude');
28
+ const isUpdate = options.update || false;
29
+
30
+ console.log('\n' + '='.repeat(60));
31
+ console.log(' DEVKIT v' + VERSION + (isUpdate ? ' - UPDATE' : ' - INIT'));
32
+ console.log('='.repeat(60));
33
+
34
+ // Check if .claude already exists
35
+ if (fs.existsSync(claudeDir) && !isUpdate && !options.force) {
36
+ console.log(`\n .claude/ folder already exists.`);
37
+ console.log(' Use --force to overwrite or --update to update.\n');
38
+ return { success: false, reason: 'exists' };
39
+ }
40
+
41
+ // 1. Detect project type
42
+ console.log('\n Detecting project type...');
43
+ const detectedTypes = detectProjectType(projectDir);
44
+ const rulesToInstall = getRulesForTypes(detectedTypes);
45
+
46
+ if (detectedTypes.length > 0) {
47
+ console.log(` Detected: ${detectedTypes.join(', ')}`);
48
+ console.log(` Rules: ${rulesToInstall.join(', ')}`);
49
+ } else {
50
+ console.log(' No specific technology detected.');
51
+ console.log(' Installing base commands only.');
52
+ }
53
+
54
+ // Create .claude directory
55
+ fs.mkdirSync(claudeDir, { recursive: true });
56
+
57
+ let totalFiles = 0;
58
+ const stats = {};
59
+
60
+ // 2. Install merged commands
61
+ console.log('\n Installing components...');
62
+ const mergedCommandsDir = path.join(PACKAGE_ROOT, 'merged-commands');
63
+ const commandsDir = path.join(claudeDir, 'commands');
64
+
65
+ if (fs.existsSync(mergedCommandsDir)) {
66
+ const count = copyDir(mergedCommandsDir, commandsDir);
67
+ stats.commands = count;
68
+ totalFiles += count;
69
+ console.log(` Commands: ${count} files`);
70
+ } else {
71
+ // Fallback to commands-claudekit if merged not available
72
+ const fallbackDir = path.join(PACKAGE_ROOT, 'commands-claudekit');
73
+ if (fs.existsSync(fallbackDir)) {
74
+ const count = copyDir(fallbackDir, commandsDir);
75
+ stats.commands = count;
76
+ totalFiles += count;
77
+ console.log(` Commands (claudekit): ${count} files`);
78
+ }
79
+ }
80
+
81
+ // 3. Install tech-specific rules
82
+ const rulesDir = path.join(claudeDir, 'rules');
83
+ let rulesCount = 0;
84
+
85
+ for (const ruleType of rulesToInstall) {
86
+ const srcRulesDir = path.join(PACKAGE_ROOT, 'templates', ruleType, 'rules');
87
+ if (fs.existsSync(srcRulesDir)) {
88
+ const destRulesDir = path.join(rulesDir, ruleType);
89
+ const count = copyDir(srcRulesDir, destRulesDir);
90
+ rulesCount += count;
91
+ }
92
+ }
93
+
94
+ if (rulesCount > 0) {
95
+ stats.rules = rulesCount;
96
+ totalFiles += rulesCount;
97
+ console.log(` Rules: ${rulesCount} files (${rulesToInstall.join(', ')})`);
98
+ }
99
+
100
+ // 4. Install essential hooks
101
+ const srcHooksDir = path.join(PACKAGE_ROOT, 'templates', 'base', 'hooks');
102
+ const hooksDir = path.join(claudeDir, 'hooks');
103
+
104
+ if (fs.existsSync(srcHooksDir)) {
105
+ const count = copyDir(srcHooksDir, hooksDir);
106
+ stats.hooks = count;
107
+ totalFiles += count;
108
+ console.log(` Hooks: ${count} files`);
109
+ } else {
110
+ // Fallback to main hooks directory (essential only)
111
+ const fallbackHooks = path.join(PACKAGE_ROOT, 'hooks');
112
+ if (fs.existsSync(fallbackHooks)) {
113
+ const count = copyDir(fallbackHooks, hooksDir);
114
+ stats.hooks = count;
115
+ totalFiles += count;
116
+ console.log(` Hooks: ${count} files`);
117
+ }
118
+ }
119
+
120
+ // 5. Install skills index
121
+ const skillsIndexSrc = path.join(PACKAGE_ROOT, 'skills-index.json');
122
+ const skillsIndexDest = path.join(claudeDir, 'skills-index.json');
123
+
124
+ if (fs.existsSync(skillsIndexSrc)) {
125
+ fs.copyFileSync(skillsIndexSrc, skillsIndexDest);
126
+ totalFiles++;
127
+ console.log(` Skills Index: 1 file`);
128
+ }
129
+
130
+ // 6. Create devkit.json tracking file
131
+ const devkitConfig = {
132
+ version: VERSION,
133
+ detectedTypes: detectedTypes,
134
+ installedRules: rulesToInstall,
135
+ installedAt: new Date().toISOString(),
136
+ updatedAt: isUpdate ? new Date().toISOString() : null,
137
+ stats: {
138
+ totalFiles: totalFiles,
139
+ sizeKB: Math.round(getDirSize(claudeDir) / 1024)
140
+ }
141
+ };
142
+
143
+ fs.writeFileSync(
144
+ path.join(claudeDir, 'devkit.json'),
145
+ JSON.stringify(devkitConfig, null, 2)
146
+ );
147
+ totalFiles++;
148
+
149
+ // 7. Create settings.json if not exists
150
+ const settingsPath = path.join(claudeDir, 'settings.json');
151
+ if (!fs.existsSync(settingsPath)) {
152
+ const settings = {
153
+ includeCoAuthoredBy: false
154
+ };
155
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
156
+ totalFiles++;
157
+ }
158
+
159
+ // Calculate total size
160
+ const totalSizeKB = Math.round(getDirSize(claudeDir) / 1024);
161
+
162
+ console.log('\n' + '='.repeat(60));
163
+ console.log(' INSTALLATION COMPLETE');
164
+ console.log('='.repeat(60));
165
+ console.log(`\n Total: ${totalFiles} files (${totalSizeKB} KB)`);
166
+ console.log(` Location: ${claudeDir}`);
167
+
168
+ console.log('\n Available commands:');
169
+ console.log(' /plan - Plan implementation');
170
+ console.log(' /cook - Build a feature');
171
+ console.log(' /fix - Fix issues');
172
+ console.log(' /code - Start coding');
173
+ console.log(' /brainstorm - Brainstorm ideas');
174
+
175
+ if (detectedTypes.length > 0) {
176
+ console.log(`\n Tech-specific rules loaded for: ${detectedTypes.join(', ')}`);
177
+ }
178
+
179
+ console.log('\n Restart Claude Code to use the new skills.\n');
180
+
181
+ return {
182
+ success: true,
183
+ detected: detectedTypes,
184
+ rules: rulesToInstall,
185
+ stats: {
186
+ files: totalFiles,
187
+ sizeKB: totalSizeKB
188
+ }
189
+ };
190
+ }
191
+
192
+ /**
193
+ * Uninstall devkit from project
194
+ */
195
+ function uninstallProject(options = {}) {
196
+ const projectDir = options.path || process.cwd();
197
+ const claudeDir = path.join(projectDir, '.claude');
198
+
199
+ console.log('\n' + '='.repeat(60));
200
+ console.log(' DEVKIT - UNINSTALL');
201
+ console.log('='.repeat(60));
202
+
203
+ if (!fs.existsSync(claudeDir)) {
204
+ console.log('\n No .claude/ folder found.\n');
205
+ return { success: false, reason: 'not_found' };
206
+ }
207
+
208
+ // Check if it's a devkit installation
209
+ const devkitConfig = path.join(claudeDir, 'devkit.json');
210
+ if (!fs.existsSync(devkitConfig)) {
211
+ console.log('\n .claude/ exists but is not a devkit installation.');
212
+ console.log(' Remove manually if needed.\n');
213
+ return { success: false, reason: 'not_devkit' };
214
+ }
215
+
216
+ // Remove the directory
217
+ fs.rmSync(claudeDir, { recursive: true, force: true });
218
+ console.log(`\n Removed: ${claudeDir}`);
219
+ console.log(' Devkit uninstalled successfully.\n');
220
+
221
+ return { success: true };
222
+ }
223
+
224
+ module.exports = {
225
+ initProject,
226
+ uninstallProject,
227
+ copyDir,
228
+ getDirSize
229
+ };
230
+
231
+ // Run if called directly
232
+ if (require.main === module) {
233
+ const args = process.argv.slice(2);
234
+ const options = {
235
+ force: args.includes('--force') || args.includes('-f'),
236
+ update: args.includes('--update') || args.includes('-u'),
237
+ path: args.find(a => !a.startsWith('-')) || process.cwd()
238
+ };
239
+
240
+ if (args.includes('--uninstall')) {
241
+ uninstallProject(options);
242
+ } else {
243
+ initProject(options);
244
+ }
245
+ }
package/cli/install.js CHANGED
@@ -122,9 +122,12 @@ function installToTool(toolId, tool, options = {}) {
122
122
  // Determine install mode
123
123
  const indexOnly = options.indexOnly !== false && !options.fullSkills;
124
124
  const isMinimal = options.minimal;
125
+ const isLite = options.lite; // New lite mode - commands only
125
126
  const hasCategories = options.categories && options.categories.length > 0;
126
127
 
127
- if (indexOnly && !isMinimal && !hasCategories) {
128
+ if (isLite) {
129
+ console.log(` Mode: LITE (commands only - minimal context usage)`);
130
+ } else if (indexOnly && !isMinimal && !hasCategories) {
128
131
  console.log(` Mode: INDEX-ONLY (recommended - minimal context usage)`);
129
132
  } else if (isMinimal) {
130
133
  console.log(` Mode: MINIMAL (${MINIMAL_SKILLS.length} core skills)`);
@@ -142,10 +145,13 @@ function installToTool(toolId, tool, options = {}) {
142
145
 
143
146
  let totalFiles = 0;
144
147
 
145
- // 1. Install skills - depends on mode
146
- const srcSkills = path.join(PACKAGE_ROOT, 'skills');
147
- if (fs.existsSync(srcSkills)) {
148
- if (indexOnly && !isMinimal && !hasCategories) {
148
+ // 1. Install skills - depends on mode (skip in lite mode)
149
+ if (isLite) {
150
+ console.log(` ⏭️ Skipping skills (lite mode)`);
151
+ } else {
152
+ const srcSkills = path.join(PACKAGE_ROOT, 'skills');
153
+ if (fs.existsSync(srcSkills)) {
154
+ if (indexOnly && !isMinimal && !hasCategories) {
149
155
  // Index-only mode: just copy the index files
150
156
  const indexFile = path.join(PACKAGE_ROOT, 'SKILLS_INDEX.md');
151
157
  const jsonFile = path.join(PACKAGE_ROOT, 'skills-index.json');
@@ -171,69 +177,96 @@ function installToTool(toolId, tool, options = {}) {
171
177
  totalFiles += count;
172
178
  }
173
179
  }
180
+ }
174
181
 
175
- // 2. Install commands to the official commands directory (for slash commands)
176
- if (tool.commandsPath) {
177
- // Install commands from commands/ folder
178
- const srcCommands = path.join(PACKAGE_ROOT, 'commands');
179
- if (fs.existsSync(srcCommands)) {
180
- const count = copyDir(srcCommands, tool.commandsPath, replacements, options);
181
- console.log(` ✅ Commands: ${count} files`);
182
- totalFiles += count;
182
+ // 2. Install commands - in lite mode, install only core commands
183
+ if (isLite) {
184
+ // Lite mode: install only essential claudekit commands
185
+ if (tool.commandsPath) {
186
+ const srcCommandsClaudekit = path.join(PACKAGE_ROOT, 'commands-claudekit');
187
+ if (fs.existsSync(srcCommandsClaudekit)) {
188
+ const count = copyDir(srcCommandsClaudekit, tool.commandsPath, replacements, options);
189
+ console.log(` ✅ Commands (claudekit): ${count} files`);
190
+ totalFiles += count;
191
+ }
183
192
  }
193
+ } else if (!indexOnly || isMinimal || hasCategories) {
194
+ if (tool.commandsPath) {
195
+ // Install commands from commands/ folder
196
+ const srcCommands = path.join(PACKAGE_ROOT, 'commands');
197
+ if (fs.existsSync(srcCommands)) {
198
+ const count = copyDir(srcCommands, tool.commandsPath, replacements, options);
199
+ console.log(` ✅ Commands: ${count} files`);
200
+ totalFiles += count;
201
+ }
184
202
 
185
- // Install commands from commands-claudekit/ folder (merged into same directory)
186
- const srcCommandsClaudekit = path.join(PACKAGE_ROOT, 'commands-claudekit');
187
- if (fs.existsSync(srcCommandsClaudekit)) {
188
- const count = copyDir(srcCommandsClaudekit, tool.commandsPath, replacements, options);
189
- console.log(` ✅ Commands (claudekit): ${count} files`);
190
- totalFiles += count;
203
+ // Install commands from commands-claudekit/ folder (merged into same directory)
204
+ const srcCommandsClaudekit = path.join(PACKAGE_ROOT, 'commands-claudekit');
205
+ if (fs.existsSync(srcCommandsClaudekit)) {
206
+ const count = copyDir(srcCommandsClaudekit, tool.commandsPath, replacements, options);
207
+ console.log(` ✅ Commands (claudekit): ${count} files`);
208
+ totalFiles += count;
209
+ }
191
210
  }
211
+ } else {
212
+ console.log(` ⏭️ Skipping commands (index-only mode - use --full to include)`);
192
213
  }
193
214
 
194
- // 3. Install core framework under agent-assistant subfolder (agents, matrix-skills only)
195
- const coreDir = path.join(tool.skillsPath, 'agent-assistant');
196
- const coreComponents = ['agents', 'matrix-skills'];
215
+ // 3. Install core framework (agents, matrix-skills) - SKIP in index-only/lite mode
216
+ if (!isLite && (!indexOnly || isMinimal || hasCategories)) {
217
+ const coreDir = path.join(tool.skillsPath, 'agent-assistant');
218
+ const coreComponents = ['agents', 'matrix-skills'];
219
+
220
+ for (const name of coreComponents) {
221
+ const srcPath = path.join(PACKAGE_ROOT, name);
222
+ if (fs.existsSync(srcPath)) {
223
+ const destPath = path.join(coreDir, name);
224
+ const count = copyDir(srcPath, destPath, replacements, options);
225
+ console.log(` ✅ ${name}: ${count} files`);
226
+ totalFiles += count;
227
+ }
228
+ }
197
229
 
198
- for (const name of coreComponents) {
199
- const srcPath = path.join(PACKAGE_ROOT, name);
200
- if (fs.existsSync(srcPath)) {
201
- const destPath = path.join(coreDir, name);
202
- const count = copyDir(srcPath, destPath, replacements, options);
203
- console.log(` ✅ ${name}: ${count} files`);
230
+ // 4. Install claudekit agents if available
231
+ const srcAgentsClaudekit = path.join(PACKAGE_ROOT, 'agents-claudekit');
232
+ if (fs.existsSync(srcAgentsClaudekit)) {
233
+ const destPath = path.join(coreDir, 'claudekit', 'agents');
234
+ const count = copyDir(srcAgentsClaudekit, destPath, replacements, options);
235
+ console.log(` ✅ claudekit/agents: ${count} files`);
204
236
  totalFiles += count;
205
237
  }
238
+ } else if (!isLite) {
239
+ console.log(` ⏭️ Skipping agents/matrix-skills (index-only mode)`);
206
240
  }
207
241
 
208
- // 4. Install claudekit agents if available
209
- const srcAgentsClaudekit = path.join(PACKAGE_ROOT, 'agents-claudekit');
210
- if (fs.existsSync(srcAgentsClaudekit)) {
211
- const destPath = path.join(coreDir, 'claudekit', 'agents');
212
- const count = copyDir(srcAgentsClaudekit, destPath, replacements, options);
213
- console.log(` ✅ claudekit/agents: ${count} files`);
214
- totalFiles += count;
215
- }
216
-
217
- // 5. Install rules
218
- const srcRules = path.join(PACKAGE_ROOT, 'rules');
219
- if (fs.existsSync(srcRules) && tool.rulesPath) {
220
- const count = copyDir(srcRules, tool.rulesPath, replacements, options);
221
- console.log(` ✅ Rules: ${count} files`);
222
- totalFiles += count;
242
+ // 5. Install rules - SKIP in index-only/lite mode (327 files = ~1.5MB, causes context limit)
243
+ if (!isLite && (!indexOnly || isMinimal || hasCategories)) {
244
+ const srcRules = path.join(PACKAGE_ROOT, 'rules');
245
+ if (fs.existsSync(srcRules) && tool.rulesPath) {
246
+ const count = copyDir(srcRules, tool.rulesPath, replacements, options);
247
+ console.log(` ✅ Rules: ${count} files`);
248
+ totalFiles += count;
249
+ }
250
+ } else if (!isLite) {
251
+ console.log(` ⏭️ Skipping rules (index-only mode - use --full to include)`);
223
252
  }
224
253
 
225
- // 6. Install hooks (Claude Code only)
226
- if (tool.supportsHooks && tool.hooksPath) {
227
- const srcHooks = path.join(PACKAGE_ROOT, 'hooks');
228
- if (fs.existsSync(srcHooks)) {
229
- const count = copyDir(srcHooks, tool.hooksPath, replacements, options);
230
- console.log(` ✅ Hooks: ${count} files`);
231
- totalFiles += count;
254
+ // 6. Install hooks (Claude Code only) - SKIP in index-only/lite mode
255
+ if (!isLite && (!indexOnly || isMinimal || hasCategories)) {
256
+ if (tool.supportsHooks && tool.hooksPath) {
257
+ const srcHooks = path.join(PACKAGE_ROOT, 'hooks');
258
+ if (fs.existsSync(srcHooks)) {
259
+ const count = copyDir(srcHooks, tool.hooksPath, replacements, options);
260
+ console.log(` ✅ Hooks: ${count} files`);
261
+ totalFiles += count;
262
+ }
232
263
  }
264
+ } else if (!isLite) {
265
+ console.log(` ⏭️ Skipping hooks (index-only mode)`);
233
266
  }
234
267
 
235
- // 7. Install output-styles (Claude Code only)
236
- if (toolId === 'claude') {
268
+ // 7. Install output-styles (Claude Code only) - SKIP in index-only/lite mode
269
+ if (!isLite && toolId === 'claude' && (!indexOnly || isMinimal || hasCategories)) {
237
270
  const srcStyles = path.join(PACKAGE_ROOT, 'output-styles');
238
271
  if (fs.existsSync(srcStyles)) {
239
272
  const destStyles = path.join(tool.basePath, 'output-styles');
@@ -246,7 +279,7 @@ function installToTool(toolId, tool, options = {}) {
246
279
  const srcWorkflows = path.join(PACKAGE_ROOT, 'workflows');
247
280
  if (fs.existsSync(srcWorkflows)) {
248
281
  const destWorkflows = path.join(tool.basePath, 'workflows');
249
- const count = copyDir(destWorkflows, destWorkflows, replacements, options);
282
+ const count = copyDir(srcWorkflows, destWorkflows, replacements, options);
250
283
  console.log(` ✅ Workflows: ${count} files`);
251
284
  totalFiles += count;
252
285
  }
@@ -513,12 +546,157 @@ function listCategories() {
513
546
  console.log(' devkit install --interactive\n');
514
547
  }
515
548
 
549
+ /**
550
+ * Initialize devkit in current project directory
551
+ * Creates .claude/ folder with commands, hooks, and lightweight rules
552
+ */
553
+ function initProject(options = {}) {
554
+ const projectDir = process.cwd();
555
+ const claudeDir = path.join(projectDir, '.claude');
556
+
557
+ console.log('\n' + '='.repeat(60));
558
+ console.log(' DEVKIT - PROJECT INIT');
559
+ console.log('='.repeat(60));
560
+ console.log(`\nInitializing devkit in: ${projectDir}`);
561
+
562
+ // Check if .claude already exists
563
+ if (fs.existsSync(claudeDir)) {
564
+ console.log(`\n⚠️ .claude/ folder already exists.`);
565
+ if (!options.force) {
566
+ console.log('Use --force to overwrite existing files.');
567
+ return;
568
+ }
569
+ console.log('--force specified, overwriting...');
570
+ }
571
+
572
+ fs.mkdirSync(claudeDir, { recursive: true });
573
+
574
+ let totalFiles = 0;
575
+
576
+ // 1. Copy commands (claudekit only - lightweight)
577
+ const srcCommands = path.join(PACKAGE_ROOT, 'commands-claudekit');
578
+ if (fs.existsSync(srcCommands)) {
579
+ const destCommands = path.join(claudeDir, 'commands');
580
+ const count = copyDir(srcCommands, destCommands, {}, {});
581
+ console.log(` ✅ Commands: ${count} files`);
582
+ totalFiles += count;
583
+ }
584
+
585
+ // 2. Copy hooks
586
+ const srcHooks = path.join(PACKAGE_ROOT, 'hooks');
587
+ if (fs.existsSync(srcHooks)) {
588
+ const destHooks = path.join(claudeDir, 'hooks');
589
+ const count = copyDir(srcHooks, destHooks, {}, {});
590
+ console.log(` ✅ Hooks: ${count} files`);
591
+ totalFiles += count;
592
+ }
593
+
594
+ // 3. Copy agents (claudekit only)
595
+ const srcAgents = path.join(PACKAGE_ROOT, 'agents-claudekit');
596
+ if (fs.existsSync(srcAgents)) {
597
+ const destAgents = path.join(claudeDir, 'agents');
598
+ const count = copyDir(srcAgents, destAgents, {}, {});
599
+ console.log(` ✅ Agents: ${count} files`);
600
+ totalFiles += count;
601
+ }
602
+
603
+ // 4. Copy output-styles
604
+ const srcStyles = path.join(PACKAGE_ROOT, 'output-styles');
605
+ if (fs.existsSync(srcStyles)) {
606
+ const destStyles = path.join(claudeDir, 'output-styles');
607
+ const count = copyDir(srcStyles, destStyles, {}, {});
608
+ console.log(` ✅ Output Styles: ${count} files`);
609
+ totalFiles += count;
610
+ }
611
+
612
+ // 5. Copy lightweight rules (create minimal rules, not the full 327 files)
613
+ const rulesDir = path.join(claudeDir, 'rules');
614
+ fs.mkdirSync(rulesDir, { recursive: true });
615
+
616
+ // Create minimal rule files similar to claudekit_engineer
617
+ const minimalRules = {
618
+ 'development-rules.md': `# Development Rules
619
+
620
+ ## Code Quality
621
+ - Write clean, readable code with meaningful names
622
+ - Follow project conventions and patterns
623
+ - Keep functions small and focused
624
+ - Add comments only where logic isn't self-evident
625
+
626
+ ## Testing
627
+ - Write tests for new features
628
+ - Ensure tests pass before committing
629
+ - Use descriptive test names
630
+
631
+ ## Git
632
+ - Write clear commit messages
633
+ - Keep commits focused and atomic
634
+ - Review changes before pushing
635
+ `,
636
+ 'orchestration-protocol.md': `# Orchestration Protocol
637
+
638
+ ## Workflow
639
+ 1. Understand the task completely before starting
640
+ 2. Break complex tasks into smaller steps
641
+ 3. Validate assumptions with the user
642
+ 4. Test changes incrementally
643
+
644
+ ## Communication
645
+ - Be concise and clear
646
+ - Ask clarifying questions when needed
647
+ - Report progress on long tasks
648
+ `
649
+ };
650
+
651
+ for (const [filename, content] of Object.entries(minimalRules)) {
652
+ fs.writeFileSync(path.join(rulesDir, filename), content);
653
+ totalFiles++;
654
+ }
655
+ console.log(` ✅ Rules: ${Object.keys(minimalRules).length} files (lightweight)`);
656
+
657
+ // 6. Copy statusline scripts
658
+ const statuslineFiles = ['statusline.cjs', 'statusline.ps1', 'statusline.sh'];
659
+ for (const file of statuslineFiles) {
660
+ const srcFile = path.join(PACKAGE_ROOT, file);
661
+ if (fs.existsSync(srcFile)) {
662
+ fs.copyFileSync(srcFile, path.join(claudeDir, file));
663
+ totalFiles++;
664
+ }
665
+ }
666
+
667
+ // 7. Create settings.json
668
+ const settings = {
669
+ includeCoAuthoredBy: false
670
+ };
671
+ fs.writeFileSync(
672
+ path.join(claudeDir, 'settings.json'),
673
+ JSON.stringify(settings, null, 2)
674
+ );
675
+ totalFiles++;
676
+ console.log(` ✅ Settings: created`);
677
+
678
+ console.log(`\n 📊 Total: ${totalFiles} files`);
679
+
680
+ console.log('\n' + '='.repeat(60));
681
+ console.log(' ✅ PROJECT INITIALIZED');
682
+ console.log('='.repeat(60));
683
+ console.log(`\nDevkit initialized in ${claudeDir}`);
684
+ console.log('\nAvailable commands:');
685
+ console.log(' /plan - Plan implementation');
686
+ console.log(' /brainstorm - Brainstorm ideas');
687
+ console.log(' /fix - Fix issues');
688
+ console.log(' /code - Start coding');
689
+ console.log(' /cook - Build a feature');
690
+ console.log('');
691
+ }
692
+
516
693
  // Export for CLI
517
694
  module.exports = {
518
695
  install,
519
696
  uninstall,
520
697
  update,
521
698
  interactiveInstall,
699
+ initProject,
522
700
  listSkills,
523
701
  listCategories,
524
702
  TOOLS