@ngxtm/devkit 2.1.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/README.md +57 -197
  2. package/cli/detect.js +292 -0
  3. package/cli/index.js +204 -92
  4. package/cli/init.js +245 -0
  5. package/cli/update.js +243 -0
  6. package/cli/utils.js +195 -0
  7. package/hooks/lib/__tests__/ck-config-utils.test.cjs +10 -0
  8. package/hooks/lib/__tests__/statusline-integration.test.cjs +46 -75
  9. package/hooks/scout-block/tests/test-monorepo-scenarios.cjs +2 -2
  10. package/hooks/tests/test-ckignore.cjs +7 -2
  11. package/package.json +16 -20
  12. package/rules-index.json +76 -0
  13. package/scripts/generate-index.js +223 -0
  14. package/scripts/merge-commands.js +290 -0
  15. package/scripts/organize-rules.js +226 -0
  16. package/templates/base/hooks/lib/ck-config-utils.cjs +769 -0
  17. package/templates/base/hooks/lib/ck-paths.cjs +110 -0
  18. package/templates/base/hooks/lib/colors.cjs +95 -0
  19. package/templates/base/hooks/lib/config-counter.cjs +103 -0
  20. package/templates/base/hooks/lib/context-builder.cjs +600 -0
  21. package/templates/base/hooks/lib/context-tracker.cjs +335 -0
  22. package/templates/base/hooks/lib/privacy-checker.cjs +297 -0
  23. package/templates/base/hooks/lib/project-detector.cjs +430 -0
  24. package/templates/base/hooks/lib/scout-checker.cjs +172 -0
  25. package/templates/base/hooks/lib/transcript-parser.cjs +164 -0
  26. package/templates/base/hooks/privacy-block.cjs +145 -0
  27. package/agents/backend-engineer.md +0 -154
  28. package/agents/brainstormer.md +0 -169
  29. package/agents/business-analyst.md +0 -166
  30. package/agents/database-architect.md +0 -159
  31. package/agents/debugger.md +0 -155
  32. package/agents/designer.md +0 -150
  33. package/agents/devops-engineer.md +0 -155
  34. package/agents/docs-manager.md +0 -171
  35. package/agents/frontend-engineer.md +0 -159
  36. package/agents/game-engineer.md +0 -148
  37. package/agents/mobile-engineer.md +0 -149
  38. package/agents/performance-engineer.md +0 -152
  39. package/agents/planner.md +0 -161
  40. package/agents/project-manager.md +0 -160
  41. package/agents/researcher.md +0 -146
  42. package/agents/reviewer.md +0 -155
  43. package/agents/scouter.md +0 -157
  44. package/agents/security-engineer.md +0 -154
  45. package/agents/tech-lead.md +0 -159
  46. package/agents/tester.md +0 -157
  47. package/agents-claudekit/brainstormer.md +0 -113
  48. package/agents-claudekit/code-reviewer.md +0 -157
  49. package/agents-claudekit/code-simplifier.md +0 -42
  50. package/agents-claudekit/copywriter.md +0 -110
  51. package/agents-claudekit/database-admin.md +0 -92
  52. package/agents-claudekit/debugger.md +0 -137
  53. package/agents-claudekit/docs-manager.md +0 -208
  54. package/agents-claudekit/fullstack-developer.md +0 -95
  55. package/agents-claudekit/git-manager.md +0 -394
  56. package/agents-claudekit/journal-writer.md +0 -113
  57. package/agents-claudekit/mcp-manager.md +0 -93
  58. package/agents-claudekit/planner.md +0 -108
  59. package/agents-claudekit/project-manager.md +0 -125
  60. package/agents-claudekit/researcher.md +0 -38
  61. package/agents-claudekit/scout-external.md +0 -141
  62. package/agents-claudekit/scout.md +0 -107
  63. package/agents-claudekit/tester.md +0 -105
  64. package/agents-claudekit/ui-ux-designer.md +0 -236
  65. package/commands/ask.md +0 -64
  66. package/commands/brainstorm.md +0 -64
  67. package/commands/code.md +0 -64
  68. package/commands/cook.md +0 -64
  69. package/commands/debug.md +0 -64
  70. package/commands/design/fast.md +0 -134
  71. package/commands/fix/fast.md +0 -84
  72. package/commands/fix/hard.md +0 -116
  73. package/commands/fix.md +0 -64
  74. package/commands/plan/fast.md +0 -78
  75. package/commands/plan/hard.md +0 -131
  76. package/commands/plan.md +0 -64
  77. package/commands/test.md +0 -64
  78. package/hooks/tests/test-modularization-hook.cjs +0 -126
  79. package/matrix-skills/_index.yaml +0 -275
  80. package/matrix-skills/ai-ml.yaml +0 -353
  81. package/matrix-skills/architecture.yaml +0 -93
  82. package/matrix-skills/backend.yaml +0 -280
  83. package/matrix-skills/cloud.yaml +0 -112
  84. package/matrix-skills/data.yaml +0 -74
  85. package/matrix-skills/design.yaml +0 -98
  86. package/matrix-skills/devops.yaml +0 -200
  87. package/matrix-skills/frontend.yaml +0 -200
  88. package/matrix-skills/gaming.yaml +0 -39
  89. package/matrix-skills/languages.yaml +0 -160
  90. package/matrix-skills/management.yaml +0 -50
  91. package/matrix-skills/mcp.yaml +0 -82
  92. package/matrix-skills/mobile.yaml +0 -85
  93. package/matrix-skills/performance.yaml +0 -23
  94. package/matrix-skills/planning.yaml +0 -117
  95. package/matrix-skills/quality.yaml +0 -195
  96. package/matrix-skills/research.yaml +0 -106
  97. package/matrix-skills/security.yaml +0 -293
  98. package/matrix-skills/tools.yaml +0 -352
  99. package/output-styles/coding-level-0-eli5.md +0 -103
  100. package/output-styles/coding-level-1-junior.md +0 -124
  101. package/output-styles/coding-level-2-mid.md +0 -146
  102. package/output-styles/coding-level-3-senior.md +0 -148
  103. package/output-styles/coding-level-4-lead.md +0 -159
  104. package/output-styles/coding-level-5-god.md +0 -91
  105. package/rules/README.md +0 -141
  106. package/rules/metadata.json +0 -54
  107. package/settings.json +0 -3
  108. package/statusline.cjs +0 -500
  109. package/statusline.ps1 +0 -307
  110. package/statusline.sh +0 -237
  111. package/workflows/development-rules.md +0 -42
  112. package/workflows/documentation-management.md +0 -121
  113. package/workflows/orchestration-protocol.md +0 -16
  114. package/workflows/primary-workflow.md +0 -45
  115. /package/{commands → merged-commands}/ask/fast.md +0 -0
  116. /package/{commands → merged-commands}/ask/hard.md +0 -0
  117. /package/{commands-claudekit → merged-commands}/ask.md +0 -0
  118. /package/{commands → merged-commands}/auto.md +0 -0
  119. /package/{commands-claudekit → merged-commands}/bootstrap/auto/fast.md +0 -0
  120. /package/{commands-claudekit → merged-commands}/bootstrap/auto/parallel.md +0 -0
  121. /package/{commands-claudekit → merged-commands}/bootstrap/auto.md +0 -0
  122. /package/{commands-claudekit → merged-commands}/bootstrap.md +0 -0
  123. /package/{commands → merged-commands}/brainstorm/fast.md +0 -0
  124. /package/{commands → merged-commands}/brainstorm/hard.md +0 -0
  125. /package/{commands-claudekit → merged-commands}/brainstorm.md +0 -0
  126. /package/{commands-claudekit → merged-commands}/ck-help.md +0 -0
  127. /package/{commands-claudekit → merged-commands}/code/auto.md +0 -0
  128. /package/{commands → merged-commands}/code/fast.md +0 -0
  129. /package/{commands → merged-commands}/code/hard.md +0 -0
  130. /package/{commands-claudekit → merged-commands}/code/no-test.md +0 -0
  131. /package/{commands-claudekit → merged-commands}/code/parallel.md +0 -0
  132. /package/{commands-claudekit → merged-commands}/code.md +0 -0
  133. /package/{commands-claudekit → merged-commands}/coding-level.md +0 -0
  134. /package/{commands-claudekit → merged-commands}/content/cro.md +0 -0
  135. /package/{commands-claudekit → merged-commands}/content/enhance.md +0 -0
  136. /package/{commands-claudekit → merged-commands}/content/fast.md +0 -0
  137. /package/{commands-claudekit → merged-commands}/content/good.md +0 -0
  138. /package/{commands-claudekit → merged-commands}/cook/auto/fast.md +0 -0
  139. /package/{commands-claudekit → merged-commands}/cook/auto/parallel.md +0 -0
  140. /package/{commands-claudekit → merged-commands}/cook/auto.md +0 -0
  141. /package/{commands → merged-commands}/cook/fast.md +0 -0
  142. /package/{commands → merged-commands}/cook/hard.md +0 -0
  143. /package/{commands-claudekit → merged-commands}/cook.md +0 -0
  144. /package/{commands → merged-commands}/debug/fast.md +0 -0
  145. /package/{commands → merged-commands}/debug/hard.md +0 -0
  146. /package/{commands-claudekit → merged-commands}/debug.md +0 -0
  147. /package/{commands → merged-commands}/deploy/check.md +0 -0
  148. /package/{commands → merged-commands}/deploy/preview.md +0 -0
  149. /package/{commands → merged-commands}/deploy/production.md +0 -0
  150. /package/{commands → merged-commands}/deploy/rollback.md +0 -0
  151. /package/{commands → merged-commands}/deploy.md +0 -0
  152. /package/{commands-claudekit → merged-commands}/design/3d.md +0 -0
  153. /package/{commands-claudekit → merged-commands}/design/describe.md +0 -0
  154. /package/{commands-claudekit → merged-commands}/design/fast.md +0 -0
  155. /package/{commands-claudekit → merged-commands}/design/good.md +0 -0
  156. /package/{commands → merged-commands}/design/hard.md +0 -0
  157. /package/{commands-claudekit → merged-commands}/design/screenshot.md +0 -0
  158. /package/{commands-claudekit → merged-commands}/design/video.md +0 -0
  159. /package/{commands → merged-commands}/design.md +0 -0
  160. /package/{commands → merged-commands}/docs/audit.md +0 -0
  161. /package/{commands → merged-commands}/docs/business.md +0 -0
  162. /package/{commands → merged-commands}/docs/core.md +0 -0
  163. /package/{commands-claudekit → merged-commands}/docs/init.md +0 -0
  164. /package/{commands-claudekit → merged-commands}/docs/summarize.md +0 -0
  165. /package/{commands-claudekit → merged-commands}/docs/update.md +0 -0
  166. /package/{commands → merged-commands}/docs.md +0 -0
  167. /package/{commands-claudekit → merged-commands}/fix/ci.md +0 -0
  168. /package/{commands-claudekit → merged-commands}/fix/fast.md +0 -0
  169. /package/{commands-claudekit → merged-commands}/fix/hard.md +0 -0
  170. /package/{commands-claudekit → merged-commands}/fix/logs.md +0 -0
  171. /package/{commands-claudekit → merged-commands}/fix/parallel.md +0 -0
  172. /package/{commands-claudekit → merged-commands}/fix/test.md +0 -0
  173. /package/{commands-claudekit → merged-commands}/fix/types.md +0 -0
  174. /package/{commands-claudekit → merged-commands}/fix/ui.md +0 -0
  175. /package/{commands-claudekit → merged-commands}/fix.md +0 -0
  176. /package/{commands-claudekit → merged-commands}/git/cm.md +0 -0
  177. /package/{commands-claudekit → merged-commands}/git/cp.md +0 -0
  178. /package/{commands-claudekit → merged-commands}/git/merge.md +0 -0
  179. /package/{commands-claudekit → merged-commands}/git/pr.md +0 -0
  180. /package/{commands-claudekit → merged-commands}/integrate/polar.md +0 -0
  181. /package/{commands-claudekit → merged-commands}/integrate/sepay.md +0 -0
  182. /package/{commands-claudekit → merged-commands}/journal.md +0 -0
  183. /package/{commands-claudekit → merged-commands}/kanban.md +0 -0
  184. /package/{commands-claudekit → merged-commands}/plan/archive.md +0 -0
  185. /package/{commands-claudekit → merged-commands}/plan/ci.md +0 -0
  186. /package/{commands-claudekit → merged-commands}/plan/cro.md +0 -0
  187. /package/{commands-claudekit → merged-commands}/plan/fast.md +0 -0
  188. /package/{commands-claudekit → merged-commands}/plan/hard.md +0 -0
  189. /package/{commands-claudekit → merged-commands}/plan/parallel.md +0 -0
  190. /package/{commands-claudekit → merged-commands}/plan/two.md +0 -0
  191. /package/{commands-claudekit → merged-commands}/plan/validate.md +0 -0
  192. /package/{commands-claudekit → merged-commands}/plan.md +0 -0
  193. /package/{commands-claudekit → merged-commands}/preview.md +0 -0
  194. /package/{commands-claudekit → merged-commands}/review/codebase/parallel.md +0 -0
  195. /package/{commands-claudekit → merged-commands}/review/codebase.md +0 -0
  196. /package/{commands → merged-commands}/review/fast.md +0 -0
  197. /package/{commands → merged-commands}/review/hard.md +0 -0
  198. /package/{commands → merged-commands}/review.md +0 -0
  199. /package/{commands-claudekit → merged-commands}/scout/ext.md +0 -0
  200. /package/{commands-claudekit → merged-commands}/scout.md +0 -0
  201. /package/{commands-claudekit → merged-commands}/skill/add.md +0 -0
  202. /package/{commands-claudekit → merged-commands}/skill/create.md +0 -0
  203. /package/{commands-claudekit → merged-commands}/skill/fix-logs.md +0 -0
  204. /package/{commands-claudekit → merged-commands}/skill/optimize/auto.md +0 -0
  205. /package/{commands-claudekit → merged-commands}/skill/optimize.md +0 -0
  206. /package/{commands-claudekit → merged-commands}/skill/plan.md +0 -0
  207. /package/{commands-claudekit → merged-commands}/skill/update.md +0 -0
  208. /package/{commands → merged-commands}/test/fast.md +0 -0
  209. /package/{commands → merged-commands}/test/hard.md +0 -0
  210. /package/{commands-claudekit → merged-commands}/test/ui.md +0 -0
  211. /package/{commands-claudekit → merged-commands}/test.md +0 -0
  212. /package/{commands-claudekit → merged-commands}/use-mcp.md +0 -0
  213. /package/{commands-claudekit → merged-commands}/watzup.md +0 -0
  214. /package/{commands-claudekit → merged-commands}/worktree.md +0 -0
  215. /package/{rules → templates/dart/rules}/dart/best-practices/SKILL.md +0 -0
  216. /package/{rules → templates/dart/rules}/dart/language/SKILL.md +0 -0
  217. /package/{rules → templates/dart/rules}/dart/tooling/SKILL.md +0 -0
  218. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/SKILL.md +0 -0
  219. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/REFERENCE.md +0 -0
  220. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/router-config.md +0 -0
  221. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/SKILL.md +0 -0
  222. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/REFERENCE.md +0 -0
  223. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/auth-bloc-example.md +0 -0
  224. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/equatable-usage.md +0 -0
  225. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/property-based-state.md +0 -0
  226. /package/{rules → templates/flutter/rules}/flutter/bloc.rule.md +0 -0
  227. /package/{rules → templates/flutter/rules}/flutter/cicd/SKILL.md +0 -0
  228. /package/{rules → templates/flutter/rules}/flutter/cicd/references/advanced-workflow.md +0 -0
  229. /package/{rules → templates/flutter/rules}/flutter/cicd/references/fastlane.md +0 -0
  230. /package/{rules → templates/flutter/rules}/flutter/cicd/references/github-actions.md +0 -0
  231. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/SKILL.md +0 -0
  232. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/REFERENCE.md +0 -0
  233. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/modules.md +0 -0
  234. /package/{rules → templates/flutter/rules}/flutter/error-handling/SKILL.md +0 -0
  235. /package/{rules → templates/flutter/rules}/flutter/error-handling/references/REFERENCE.md +0 -0
  236. /package/{rules → templates/flutter/rules}/flutter/error-handling/references/error-mapping.md +0 -0
  237. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/SKILL.md +0 -0
  238. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/REFERENCE.md +0 -0
  239. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/folder-structure.md +0 -0
  240. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/SKILL.md +0 -0
  241. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/app-pages.md +0 -0
  242. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/middleware-example.md +0 -0
  243. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/SKILL.md +0 -0
  244. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/binding-example.md +0 -0
  245. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/reactive-vs-simple.md +0 -0
  246. /package/{rules → templates/flutter/rules}/flutter/go-router-navigation/SKILL.md +0 -0
  247. /package/{rules → templates/flutter/rules}/flutter/idiomatic-flutter/SKILL.md +0 -0
  248. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/SKILL.md +0 -0
  249. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/REFERENCE.md +0 -0
  250. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/repository-mapping.md +0 -0
  251. /package/{rules → templates/flutter/rules}/flutter/localization/SKILL.md +0 -0
  252. /package/{rules → templates/flutter/rules}/flutter/localization/references/REFERENCE.md +0 -0
  253. /package/{rules → templates/flutter/rules}/flutter/localization/references/sheet-loader.md +0 -0
  254. /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/SKILL.md +0 -0
  255. /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/references/on-generate-route.md +0 -0
  256. /package/{rules → templates/flutter/rules}/flutter/performance/SKILL.md +0 -0
  257. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/SKILL.md +0 -0
  258. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/REFERENCE.md +0 -0
  259. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/token-refresh.md +0 -0
  260. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/SKILL.md +0 -0
  261. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/architecture.md +0 -0
  262. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/best-practices.md +0 -0
  263. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/testing.md +0 -0
  264. /package/{rules → templates/flutter/rules}/flutter/riverpod.rule.md +0 -0
  265. /package/{rules → templates/flutter/rules}/flutter/security/SKILL.md +0 -0
  266. /package/{rules → templates/flutter/rules}/flutter/security/references/REFERENCE.md +0 -0
  267. /package/{rules → templates/flutter/rules}/flutter/security/references/network-security.md +0 -0
  268. /package/{rules → templates/flutter/rules}/flutter/testing/SKILL.md +0 -0
  269. /package/{rules → templates/flutter/rules}/flutter/testing/references/REFERENCE.md +0 -0
  270. /package/{rules → templates/flutter/rules}/flutter/testing/references/bloc-testing.md +0 -0
  271. /package/{rules → templates/flutter/rules}/flutter/testing/references/integration-testing.md +0 -0
  272. /package/{rules → templates/flutter/rules}/flutter/testing/references/robot-pattern.md +0 -0
  273. /package/{rules → templates/flutter/rules}/flutter/testing/references/unit-testing.md +0 -0
  274. /package/{rules → templates/flutter/rules}/flutter/testing/references/widget-testing.md +0 -0
  275. /package/{rules → templates/flutter/rules}/flutter/widgets/SKILL.md +0 -0
  276. /package/{rules → templates/golang/rules}/golang/chi-router/SKILL.md +0 -0
  277. /package/{rules → templates/golang/rules}/golang/chi-router/references/REFERENCE.md +0 -0
  278. /package/{rules → templates/golang/rules}/golang/chi-router/references/routing-patterns.md +0 -0
  279. /package/{rules → templates/golang/rules}/golang/cobra-cli/SKILL.md +0 -0
  280. /package/{rules → templates/golang/rules}/golang/cobra-cli/references/REFERENCE.md +0 -0
  281. /package/{rules → templates/golang/rules}/golang/cobra-cli/references/command-patterns.md +0 -0
  282. /package/{rules → templates/golang/rules}/golang/core/SKILL.md +0 -0
  283. /package/{rules → templates/golang/rules}/golang/core/references/REFERENCE.md +0 -0
  284. /package/{rules → templates/golang/rules}/golang/core/references/concurrency-patterns.md +0 -0
  285. /package/{rules → templates/golang/rules}/golang/core/references/error-handling.md +0 -0
  286. /package/{rules → templates/golang/rules}/golang/echo-framework/SKILL.md +0 -0
  287. /package/{rules → templates/golang/rules}/golang/echo-framework/references/REFERENCE.md +0 -0
  288. /package/{rules → templates/golang/rules}/golang/echo-framework/references/middleware-patterns.md +0 -0
  289. /package/{rules → templates/golang/rules}/golang/echo-framework/references/routing-patterns.md +0 -0
  290. /package/{rules → templates/golang/rules}/golang/ent-orm/SKILL.md +0 -0
  291. /package/{rules → templates/golang/rules}/golang/ent-orm/references/REFERENCE.md +0 -0
  292. /package/{rules → templates/golang/rules}/golang/ent-orm/references/schema-patterns.md +0 -0
  293. /package/{rules → templates/golang/rules}/golang/fiber-framework/SKILL.md +0 -0
  294. /package/{rules → templates/golang/rules}/golang/fiber-framework/references/REFERENCE.md +0 -0
  295. /package/{rules → templates/golang/rules}/golang/fiber-framework/references/routing-patterns.md +0 -0
  296. /package/{rules → templates/golang/rules}/golang/gin-framework/SKILL.md +0 -0
  297. /package/{rules → templates/golang/rules}/golang/gin-framework/references/REFERENCE.md +0 -0
  298. /package/{rules → templates/golang/rules}/golang/gin-framework/references/middleware-patterns.md +0 -0
  299. /package/{rules → templates/golang/rules}/golang/gorm-orm/SKILL.md +0 -0
  300. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/REFERENCE.md +0 -0
  301. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/model-definitions.md +0 -0
  302. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/query-patterns.md +0 -0
  303. /package/{rules → templates/golang/rules}/golang/grpc/SKILL.md +0 -0
  304. /package/{rules → templates/golang/rules}/golang/grpc/references/REFERENCE.md +0 -0
  305. /package/{rules → templates/golang/rules}/golang/grpc/references/service-patterns.md +0 -0
  306. /package/{rules → templates/golang/rules}/golang/testify/SKILL.md +0 -0
  307. /package/{rules → templates/golang/rules}/golang/testify/references/REFERENCE.md +0 -0
  308. /package/{rules → templates/golang/rules}/golang/testify/references/assert-patterns.md +0 -0
  309. /package/{rules → templates/golang/rules}/golang/validator/SKILL.md +0 -0
  310. /package/{rules → templates/golang/rules}/golang/validator/references/REFERENCE.md +0 -0
  311. /package/{rules → templates/golang/rules}/golang/validator/references/validation-tags.md +0 -0
  312. /package/{rules → templates/golang/rules}/golang/viper-config/SKILL.md +0 -0
  313. /package/{rules → templates/golang/rules}/golang/viper-config/references/REFERENCE.md +0 -0
  314. /package/{rules → templates/golang/rules}/golang/viper-config/references/config-loading.md +0 -0
  315. /package/{rules → templates/golang/rules}/golang/wire-di/SKILL.md +0 -0
  316. /package/{rules → templates/golang/rules}/golang/wire-di/references/REFERENCE.md +0 -0
  317. /package/{rules → templates/golang/rules}/golang/wire-di/references/provider-patterns.md +0 -0
  318. /package/{rules → templates/golang/rules}/golang/zap-logging/SKILL.md +0 -0
  319. /package/{rules → templates/golang/rules}/golang/zap-logging/references/REFERENCE.md +0 -0
  320. /package/{rules → templates/golang/rules}/golang/zap-logging/references/logger-config.md +0 -0
  321. /package/{rules → templates/java/rules}/java/build-gradle/SKILL.md +0 -0
  322. /package/{rules → templates/java/rules}/java/build-gradle/references/REFERENCE.md +0 -0
  323. /package/{rules → templates/java/rules}/java/build-gradle/references/kotlin-dsl.md +0 -0
  324. /package/{rules → templates/java/rules}/java/build-gradle/references/task-configuration.md +0 -0
  325. /package/{rules → templates/java/rules}/java/build-maven/SKILL.md +0 -0
  326. /package/{rules → templates/java/rules}/java/build-maven/references/REFERENCE.md +0 -0
  327. /package/{rules → templates/java/rules}/java/build-maven/references/dependency-management.md +0 -0
  328. /package/{rules → templates/java/rules}/java/build-maven/references/lifecycle-phases.md +0 -0
  329. /package/{rules → templates/java/rules}/java/graalvm-native/SKILL.md +0 -0
  330. /package/{rules → templates/java/rules}/java/graalvm-native/references/REFERENCE.md +0 -0
  331. /package/{rules → templates/java/rules}/java/java-collections-streams/SKILL.md +0 -0
  332. /package/{rules → templates/java/rules}/java/java-collections-streams/references/REFERENCE.md +0 -0
  333. /package/{rules → templates/java/rules}/java/java-collections-streams/references/collectors-patterns.md +0 -0
  334. /package/{rules → templates/java/rules}/java/java-collections-streams/references/stream-pipelines.md +0 -0
  335. /package/{rules → templates/java/rules}/java/java-concurrency/SKILL.md +0 -0
  336. /package/{rules → templates/java/rules}/java/java-concurrency/references/REFERENCE.md +0 -0
  337. /package/{rules → templates/java/rules}/java/java-concurrency/references/completable-future.md +0 -0
  338. /package/{rules → templates/java/rules}/java/java-concurrency/references/executor-patterns.md +0 -0
  339. /package/{rules → templates/java/rules}/java/java-concurrency/references/virtual-threads.md +0 -0
  340. /package/{rules → templates/java/rules}/java/java-core-language/SKILL.md +0 -0
  341. /package/{rules → templates/java/rules}/java/java-core-language/references/REFERENCE.md +0 -0
  342. /package/{rules → templates/java/rules}/java/java-core-language/references/jvm-memory-model.md +0 -0
  343. /package/{rules → templates/java/rules}/java/java-core-language/references/modern-java-features.md +0 -0
  344. /package/{rules → templates/java/rules}/java/java-project-structure/SKILL.md +0 -0
  345. /package/{rules → templates/java/rules}/java/java-project-structure/references/REFERENCE.md +0 -0
  346. /package/{rules → templates/java/rules}/java/java-project-structure/references/maven-project-layout.md +0 -0
  347. /package/{rules → templates/java/rules}/java/java-project-structure/references/module-system.md +0 -0
  348. /package/{rules → templates/java/rules}/java/micronaut-core/SKILL.md +0 -0
  349. /package/{rules → templates/java/rules}/java/micronaut-core/references/REFERENCE.md +0 -0
  350. /package/{rules → templates/java/rules}/java/micronaut-reactive/SKILL.md +0 -0
  351. /package/{rules → templates/java/rules}/java/micronaut-reactive/references/REFERENCE.md +0 -0
  352. /package/{rules → templates/java/rules}/java/quarkus-core/SKILL.md +0 -0
  353. /package/{rules → templates/java/rules}/java/quarkus-core/references/REFERENCE.md +0 -0
  354. /package/{rules → templates/java/rules}/java/quarkus-reactive/SKILL.md +0 -0
  355. /package/{rules → templates/java/rules}/java/quarkus-reactive/references/REFERENCE.md +0 -0
  356. /package/{rules → templates/java/rules}/java/spring-batch/SKILL.md +0 -0
  357. /package/{rules → templates/java/rules}/java/spring-batch/references/REFERENCE.md +0 -0
  358. /package/{rules → templates/java/rules}/java/spring-boot-architecture/SKILL.md +0 -0
  359. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/REFERENCE.md +0 -0
  360. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/auto-configuration.md +0 -0
  361. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/configuration-properties.md +0 -0
  362. /package/{rules → templates/java/rules}/java/spring-boot-web/SKILL.md +0 -0
  363. /package/{rules → templates/java/rules}/java/spring-boot-web/references/REFERENCE.md +0 -0
  364. /package/{rules → templates/java/rules}/java/spring-cloud/SKILL.md +0 -0
  365. /package/{rules → templates/java/rules}/java/spring-cloud/references/REFERENCE.md +0 -0
  366. /package/{rules → templates/java/rules}/java/spring-data-jpa/SKILL.md +0 -0
  367. /package/{rules → templates/java/rules}/java/spring-data-jpa/references/REFERENCE.md +0 -0
  368. /package/{rules → templates/java/rules}/java/spring-security/SKILL.md +0 -0
  369. /package/{rules → templates/java/rules}/java/spring-security/references/REFERENCE.md +0 -0
  370. /package/{rules → templates/java/rules}/java/spring-security/references/jwt-auth-flow.md +0 -0
  371. /package/{rules → templates/java/rules}/java/testing-junit-mockito/SKILL.md +0 -0
  372. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/REFERENCE.md +0 -0
  373. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/junit5-patterns.md +0 -0
  374. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/mockito-patterns.md +0 -0
  375. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/spring-boot-testing.md +0 -0
  376. /package/{rules → templates/javascript/rules}/javascript/best-practices/SKILL.md +0 -0
  377. /package/{rules → templates/javascript/rules}/javascript/best-practices/references/REFERENCE.md +0 -0
  378. /package/{rules → templates/javascript/rules}/javascript/language/SKILL.md +0 -0
  379. /package/{rules → templates/javascript/rules}/javascript/language/references/REFERENCE.md +0 -0
  380. /package/{rules → templates/javascript/rules}/javascript/tooling/SKILL.md +0 -0
  381. /package/{rules → templates/javascript/rules}/javascript/tooling/references/REFERENCE.md +0 -0
  382. /package/{rules → templates/nestjs/rules}/nestjs/api-standards/SKILL.md +0 -0
  383. /package/{rules → templates/nestjs/rules}/nestjs/api-standards/references/pagination-wrapper.md +0 -0
  384. /package/{rules → templates/nestjs/rules}/nestjs/architecture/SKILL.md +0 -0
  385. /package/{rules → templates/nestjs/rules}/nestjs/architecture/references/dynamic-module.md +0 -0
  386. /package/{rules → templates/nestjs/rules}/nestjs/caching/SKILL.md +0 -0
  387. /package/{rules → templates/nestjs/rules}/nestjs/caching/references/REFERENCE.md +0 -0
  388. /package/{rules → templates/nestjs/rules}/nestjs/caching/references/cache-patterns.md +0 -0
  389. /package/{rules → templates/nestjs/rules}/nestjs/configuration/SKILL.md +0 -0
  390. /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/REFERENCE.md +0 -0
  391. /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/config-patterns.md +0 -0
  392. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/SKILL.md +0 -0
  393. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/REFERENCE.md +0 -0
  394. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/controller-patterns.md +0 -0
  395. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/service-patterns.md +0 -0
  396. /package/{rules → templates/nestjs/rules}/nestjs/database/SKILL.md +0 -0
  397. /package/{rules → templates/nestjs/rules}/nestjs/database/references/REFERENCE.md +0 -0
  398. /package/{rules → templates/nestjs/rules}/nestjs/database/references/typeorm-patterns.md +0 -0
  399. /package/{rules → templates/nestjs/rules}/nestjs/deployment/SKILL.md +0 -0
  400. /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/REFERENCE.md +0 -0
  401. /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/deployment-patterns.md +0 -0
  402. /package/{rules → templates/nestjs/rules}/nestjs/documentation/SKILL.md +0 -0
  403. /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/REFERENCE.md +0 -0
  404. /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/swagger-patterns.md +0 -0
  405. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/SKILL.md +0 -0
  406. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/REFERENCE.md +0 -0
  407. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/exception-filters.md +0 -0
  408. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/SKILL.md +0 -0
  409. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/REFERENCE.md +0 -0
  410. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/upload-patterns.md +0 -0
  411. /package/{rules → templates/nestjs/rules}/nestjs/observability/SKILL.md +0 -0
  412. /package/{rules → templates/nestjs/rules}/nestjs/observability/references/REFERENCE.md +0 -0
  413. /package/{rules → templates/nestjs/rules}/nestjs/observability/references/logging-metrics.md +0 -0
  414. /package/{rules → templates/nestjs/rules}/nestjs/performance/SKILL.md +0 -0
  415. /package/{rules → templates/nestjs/rules}/nestjs/performance/references/REFERENCE.md +0 -0
  416. /package/{rules → templates/nestjs/rules}/nestjs/performance/references/performance-patterns.md +0 -0
  417. /package/{rules → templates/nestjs/rules}/nestjs/real-time/SKILL.md +0 -0
  418. /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/REFERENCE.md +0 -0
  419. /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/websocket-patterns.md +0 -0
  420. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/SKILL.md +0 -0
  421. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/REFERENCE.md +0 -0
  422. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/scheduling-patterns.md +0 -0
  423. /package/{rules → templates/nestjs/rules}/nestjs/search/SKILL.md +0 -0
  424. /package/{rules → templates/nestjs/rules}/nestjs/search/references/REFERENCE.md +0 -0
  425. /package/{rules → templates/nestjs/rules}/nestjs/search/references/search-patterns.md +0 -0
  426. /package/{rules → templates/nestjs/rules}/nestjs/security/SKILL.md +0 -0
  427. /package/{rules → templates/nestjs/rules}/nestjs/security/references/REFERENCE.md +0 -0
  428. /package/{rules → templates/nestjs/rules}/nestjs/security/references/authentication.md +0 -0
  429. /package/{rules → templates/nestjs/rules}/nestjs/testing/SKILL.md +0 -0
  430. /package/{rules → templates/nestjs/rules}/nestjs/testing/references/REFERENCE.md +0 -0
  431. /package/{rules → templates/nestjs/rules}/nestjs/testing/references/unit-testing.md +0 -0
  432. /package/{rules → templates/nestjs/rules}/nestjs/transport/SKILL.md +0 -0
  433. /package/{rules → templates/nestjs/rules}/nestjs/transport/references/REFERENCE.md +0 -0
  434. /package/{rules → templates/nestjs/rules}/nestjs/transport/references/microservices-patterns.md +0 -0
  435. /package/{rules → templates/nextjs/rules}/nextjs/app-router/SKILL.md +0 -0
  436. /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/REFERENCE.md +0 -0
  437. /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/routing-patterns.md +0 -0
  438. /package/{rules → templates/nextjs/rules}/nextjs/architecture/SKILL.md +0 -0
  439. /package/{rules → templates/nextjs/rules}/nextjs/architecture/references/fsd-structure.md +0 -0
  440. /package/{rules → templates/nextjs/rules}/nextjs/authentication/SKILL.md +0 -0
  441. /package/{rules → templates/nextjs/rules}/nextjs/authentication/references/auth-implementation.md +0 -0
  442. /package/{rules → templates/nextjs/rules}/nextjs/caching/SKILL.md +0 -0
  443. /package/{rules → templates/nextjs/rules}/nextjs/caching/references/REFERENCE.md +0 -0
  444. /package/{rules → templates/nextjs/rules}/nextjs/caching/references/cache-strategies.md +0 -0
  445. /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/SKILL.md +0 -0
  446. /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/references/patterns.md +0 -0
  447. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/SKILL.md +0 -0
  448. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/REFERENCE.md +0 -0
  449. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/fetch-patterns.md +0 -0
  450. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/SKILL.md +0 -0
  451. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/REFERENCE.md +0 -0
  452. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/i18n-patterns.md +0 -0
  453. /package/{rules → templates/nextjs/rules}/nextjs/optimization/SKILL.md +0 -0
  454. /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/REFERENCE.md +0 -0
  455. /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/optimization-patterns.md +0 -0
  456. /package/{rules → templates/nextjs/rules}/nextjs/rendering/SKILL.md +0 -0
  457. /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/REFERENCE.md +0 -0
  458. /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/rendering-modes.md +0 -0
  459. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/SKILL.md +0 -0
  460. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/REFERENCE.md +0 -0
  461. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/action-patterns.md +0 -0
  462. /package/{rules → templates/nextjs/rules}/nextjs/server-components/SKILL.md +0 -0
  463. /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/REFERENCE.md +0 -0
  464. /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/component-patterns.md +0 -0
  465. /package/{rules → templates/nextjs/rules}/nextjs/state-management/SKILL.md +0 -0
  466. /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/REFERENCE.md +0 -0
  467. /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/state-patterns.md +0 -0
  468. /package/{rules → templates/nextjs/rules}/nextjs/styling/SKILL.md +0 -0
  469. /package/{rules → templates/nextjs/rules}/nextjs/styling/references/implementation.md +0 -0
  470. /package/{rules → templates/react/rules}/react/component-patterns/SKILL.md +0 -0
  471. /package/{rules → templates/react/rules}/react/component-patterns/references/REFERENCE.md +0 -0
  472. /package/{rules → templates/react/rules}/react/hooks/SKILL.md +0 -0
  473. /package/{rules → templates/react/rules}/react/hooks/references/REFERENCE.md +0 -0
  474. /package/{rules → templates/react/rules}/react/hooks.rule.md +0 -0
  475. /package/{rules → templates/react/rules}/react/performance/SKILL.md +0 -0
  476. /package/{rules → templates/react/rules}/react/performance/references/REFERENCE.md +0 -0
  477. /package/{rules → templates/react/rules}/react/security/SKILL.md +0 -0
  478. /package/{rules → templates/react/rules}/react/security/references/REFERENCE.md +0 -0
  479. /package/{rules → templates/react/rules}/react/state-management/SKILL.md +0 -0
  480. /package/{rules → templates/react/rules}/react/state-management/references/REFERENCE.md +0 -0
  481. /package/{rules → templates/react/rules}/react/testing/SKILL.md +0 -0
  482. /package/{rules → templates/react/rules}/react/testing/references/REFERENCE.md +0 -0
  483. /package/{rules → templates/react/rules}/react/tooling/SKILL.md +0 -0
  484. /package/{rules → templates/react/rules}/react/typescript/SKILL.md +0 -0
  485. /package/{rules → templates/rust/rules}/rust/actix-web/SKILL.md +0 -0
  486. /package/{rules → templates/rust/rules}/rust/actix-web/references/REFERENCE.md +0 -0
  487. /package/{rules → templates/rust/rules}/rust/actix-web/references/handler-patterns.md +0 -0
  488. /package/{rules → templates/rust/rules}/rust/async-graphql/SKILL.md +0 -0
  489. /package/{rules → templates/rust/rules}/rust/async-graphql/references/REFERENCE.md +0 -0
  490. /package/{rules → templates/rust/rules}/rust/async-graphql/references/schema-patterns.md +0 -0
  491. /package/{rules → templates/rust/rules}/rust/axum/SKILL.md +0 -0
  492. /package/{rules → templates/rust/rules}/rust/axum/references/REFERENCE.md +0 -0
  493. /package/{rules → templates/rust/rules}/rust/axum/references/handler-patterns.md +0 -0
  494. /package/{rules → templates/rust/rules}/rust/bevy/SKILL.md +0 -0
  495. /package/{rules → templates/rust/rules}/rust/bevy/references/REFERENCE.md +0 -0
  496. /package/{rules → templates/rust/rules}/rust/bevy/references/ecs-patterns.md +0 -0
  497. /package/{rules → templates/rust/rules}/rust/clap/SKILL.md +0 -0
  498. /package/{rules → templates/rust/rules}/rust/clap/references/REFERENCE.md +0 -0
  499. /package/{rules → templates/rust/rules}/rust/clap/references/derive-patterns.md +0 -0
  500. /package/{rules → templates/rust/rules}/rust/core/SKILL.md +0 -0
  501. /package/{rules → templates/rust/rules}/rust/core/references/REFERENCE.md +0 -0
  502. /package/{rules → templates/rust/rules}/rust/core/references/error-handling.md +0 -0
  503. /package/{rules → templates/rust/rules}/rust/diesel-orm/SKILL.md +0 -0
  504. /package/{rules → templates/rust/rules}/rust/diesel-orm/references/REFERENCE.md +0 -0
  505. /package/{rules → templates/rust/rules}/rust/diesel-orm/references/schema-patterns.md +0 -0
  506. /package/{rules → templates/rust/rules}/rust/rocket/SKILL.md +0 -0
  507. /package/{rules → templates/rust/rules}/rust/rocket/references/REFERENCE.md +0 -0
  508. /package/{rules → templates/rust/rules}/rust/rocket/references/handler-patterns.md +0 -0
  509. /package/{rules → templates/rust/rules}/rust/sea-orm/SKILL.md +0 -0
  510. /package/{rules → templates/rust/rules}/rust/sea-orm/references/REFERENCE.md +0 -0
  511. /package/{rules → templates/rust/rules}/rust/sea-orm/references/entity-patterns.md +0 -0
  512. /package/{rules → templates/rust/rules}/rust/serde-serialization/SKILL.md +0 -0
  513. /package/{rules → templates/rust/rules}/rust/serde-serialization/references/REFERENCE.md +0 -0
  514. /package/{rules → templates/rust/rules}/rust/serde-serialization/references/serialization-patterns.md +0 -0
  515. /package/{rules → templates/rust/rules}/rust/sqlx-database/SKILL.md +0 -0
  516. /package/{rules → templates/rust/rules}/rust/sqlx-database/references/REFERENCE.md +0 -0
  517. /package/{rules → templates/rust/rules}/rust/sqlx-database/references/query-patterns.md +0 -0
  518. /package/{rules → templates/rust/rules}/rust/tauri/SKILL.md +0 -0
  519. /package/{rules → templates/rust/rules}/rust/tauri/references/REFERENCE.md +0 -0
  520. /package/{rules → templates/rust/rules}/rust/tauri/references/command-patterns.md +0 -0
  521. /package/{rules → templates/rust/rules}/rust/tokio-runtime/SKILL.md +0 -0
  522. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/REFERENCE.md +0 -0
  523. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/async-patterns.md +0 -0
  524. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/synchronization.md +0 -0
  525. /package/{rules → templates/rust/rules}/rust/tonic/SKILL.md +0 -0
  526. /package/{rules → templates/rust/rules}/rust/tonic/references/REFERENCE.md +0 -0
  527. /package/{rules → templates/rust/rules}/rust/tonic/references/service-patterns.md +0 -0
  528. /package/{rules → templates/rust/rules}/rust/tracing/SKILL.md +0 -0
  529. /package/{rules → templates/rust/rules}/rust/tracing/references/REFERENCE.md +0 -0
  530. /package/{rules → templates/rust/rules}/rust/tracing/references/instrumentation.md +0 -0
  531. /package/{rules → templates/typescript/rules}/typescript/best-practices/SKILL.md +0 -0
  532. /package/{rules → templates/typescript/rules}/typescript/best-practices/references/REFERENCE.md +0 -0
  533. /package/{rules → templates/typescript/rules}/typescript/language/SKILL.md +0 -0
  534. /package/{rules → templates/typescript/rules}/typescript/language/references/REFERENCE.md +0 -0
  535. /package/{rules → templates/typescript/rules}/typescript/patterns.rule.md +0 -0
  536. /package/{rules → templates/typescript/rules}/typescript/security/SKILL.md +0 -0
  537. /package/{rules → templates/typescript/rules}/typescript/security/references/REFERENCE.md +0 -0
  538. /package/{rules → templates/typescript/rules}/typescript/tooling/SKILL.md +0 -0
  539. /package/{rules → templates/typescript/rules}/typescript/tooling/references/REFERENCE.md +0 -0
package/cli/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * Devkit Agent Assistant CLI
4
+ * Devkit CLI v3
5
5
  *
6
+ * Per-project installation with smart tech detection.
6
7
  * Main entry point for the CLI tool.
7
8
  */
8
9
 
@@ -10,15 +11,21 @@ const path = require('path');
10
11
  const fs = require('fs');
11
12
 
12
13
  const VERSION = require('../package.json').version;
13
- const {
14
- install,
15
- uninstall,
16
- update,
17
- interactiveInstall,
18
- listSkills,
19
- listCategories,
20
- initProject
21
- } = require('./install');
14
+
15
+ // New modular imports
16
+ const { initProject, uninstallProject } = require('./init');
17
+ const { updateProject, showStatus } = require('./update');
18
+ const { detectProjectType, getRulesForTypes, printDetectionResults } = require('./detect');
19
+ const { validatePath } = require('./utils');
20
+
21
+ // Legacy imports for backwards compatibility (will be deprecated)
22
+ let legacyInstall = null;
23
+ try {
24
+ const legacy = require('./install');
25
+ legacyInstall = legacy;
26
+ } catch (e) {
27
+ // Legacy install not available, that's fine
28
+ }
22
29
 
23
30
  /**
24
31
  * Parse command line arguments
@@ -26,40 +33,53 @@ const {
26
33
  function parseArgs(args) {
27
34
  const options = {
28
35
  command: null,
36
+ path: null,
37
+ force: false,
38
+ update: false,
39
+ clean: false,
40
+ help: false,
41
+ // Legacy options (deprecated)
29
42
  tool: null,
30
43
  minimal: false,
31
- lite: false, // New: commands only, no skills/rules/hooks
44
+ lite: false,
32
45
  categories: [],
33
46
  interactive: false,
34
47
  fullSkills: false,
35
- indexOnly: true, // Default: index-only mode
36
- help: false
48
+ indexOnly: true
37
49
  };
38
50
 
39
51
  for (const arg of args) {
40
52
  if (arg === '--help' || arg === '-h') {
41
53
  options.help = true;
42
- } else if (arg === '--minimal' || arg === '-m') {
43
- options.minimal = true;
44
- options.indexOnly = false;
45
- } else if (arg === '--lite' || arg === '-l') {
46
- options.lite = true;
47
- options.indexOnly = false;
48
- } else if (arg === '--interactive' || arg === '-i') {
49
- options.interactive = true;
50
- } else if (arg === '--full' || arg === '-f') {
51
- options.fullSkills = true;
52
- options.indexOnly = false;
53
- } else if (arg.startsWith('--category=') || arg.startsWith('-c=')) {
54
- const cats = arg.split('=')[1].split(',').map(c => c.trim());
55
- options.categories.push(...cats);
56
- options.indexOnly = false;
54
+ } else if (arg === '--force' || arg === '-f') {
55
+ options.force = true;
56
+ } else if (arg === '--update' || arg === '-u') {
57
+ options.update = true;
58
+ } else if (arg === '--clean' || arg === '-c') {
59
+ options.clean = true;
60
+ } else if (arg === '--status' || arg === '-s') {
61
+ options.command = 'status';
62
+ } else if (arg.startsWith('--path=')) {
63
+ options.path = arg.split('=')[1];
57
64
  } else if (arg.startsWith('--')) {
58
- // Unknown flag, ignore
65
+ // Handle legacy options for backwards compatibility
66
+ if (arg === '--minimal' || arg === '-m') options.minimal = true;
67
+ if (arg === '--lite' || arg === '-l') options.lite = true;
68
+ if (arg === '--interactive' || arg === '-i') options.interactive = true;
69
+ if (arg === '--full') options.fullSkills = true;
70
+ if (arg.startsWith('--category=')) {
71
+ const cats = arg.split('=')[1].split(',').map(c => c.trim());
72
+ options.categories.push(...cats);
73
+ }
59
74
  } else if (!options.command) {
60
75
  options.command = arg;
61
- } else if (!options.tool) {
62
- options.tool = arg;
76
+ } else if (!options.path && !options.tool) {
77
+ // Could be a path or a tool name (legacy)
78
+ if (['claude', 'cursor', 'copilot', 'gemini'].includes(arg)) {
79
+ options.tool = arg;
80
+ } else {
81
+ options.path = arg;
82
+ }
63
83
  }
64
84
  }
65
85
 
@@ -68,95 +88,187 @@ function parseArgs(args) {
68
88
 
69
89
  function showHelp() {
70
90
  console.log(`
71
- Devkit v${VERSION}
91
+ Devkit v${VERSION} - Per-Project AI Skills
72
92
 
73
93
  USAGE:
74
- devkit <command> [tool] [options]
94
+ devkit <command> [options]
75
95
 
76
96
  COMMANDS:
77
- install Install skills and rules to AI tools (global ~/.claude/)
78
- init Initialize devkit in current project (.claude/ folder)
79
- uninstall Remove all installed skills and rules
80
- update Check for updates and reinstall
81
- list List all available skills
82
- categories List available skill categories
83
- version Show version
84
- help Show this help
85
-
86
- TOOLS:
87
- claude Claude Code (~/.claude/)
88
- cursor Cursor (~/.cursor/)
89
- copilot GitHub Copilot (~/.copilot/)
90
- gemini Gemini / Antigravity (~/.gemini/)
97
+ init Initialize devkit in current project (.claude/ folder)
98
+ Auto-detects tech stack and installs relevant rules only.
99
+ This is the PRIMARY command - use this for new projects.
91
100
 
92
- OPTIONS:
93
- --lite, -l LITE mode - commands only, no skills/rules/hooks
94
- Best for avoiding context limit issues
95
- Installs: /brainstorm, /plan, /fix, /code, etc.
101
+ update Update existing installation
102
+ Re-detects project type and updates rules accordingly.
103
+
104
+ detect Show detected technologies for current project
105
+ Useful to see what devkit will install.
96
106
 
97
- (default) Index-only mode - installs skills index file only
98
- Commands and agents are always fully installed
99
- May still cause context issues with some models
107
+ status Show installation status
100
108
 
101
- --minimal, -m Install ~20 core skills (instead of index)
109
+ uninstall Remove devkit from current project
102
110
 
103
- --category=CATS, -c= Install specific categories
104
- Example: --category=react,typescript,testing
111
+ list List all available skills
105
112
 
106
- --full, -f Install ALL 413+ skills (may cause context limit)
107
- Only use if you need full skill content locally
113
+ help Show this help
108
114
 
109
- --interactive, -i Interactive mode - choose categories
115
+ version Show version
110
116
 
111
- --help, -h Show this help
117
+ OPTIONS:
118
+ --force, -f Force overwrite existing installation
119
+ --clean, -c Remove rules for technologies no longer detected (with update)
120
+ --path=DIR Specify project directory (default: current directory)
121
+ --help, -h Show this help
112
122
 
113
123
  EXAMPLES:
114
- devkit install --lite # Commands only (recommended for context limit)
115
- devkit install # Index-only (default)
116
- devkit install claude # Index-only to Claude Code
117
- devkit install --minimal # Install ~20 core skills
118
- devkit install --category=react # Install React-related skills
119
- devkit install --full # Install all skills (large)
120
- devkit install --interactive # Choose interactively
121
- devkit uninstall # Remove from all tools
124
+ devkit init # Initialize in current project
125
+ devkit init --force # Overwrite existing installation
126
+ devkit update # Update and re-detect technologies
127
+ devkit update --clean # Update and remove old rules
128
+ devkit detect # Show what would be detected
129
+ devkit status # Show current installation
130
+ devkit uninstall # Remove from current project
122
131
 
123
132
  HOW IT WORKS:
124
- By default, devkit installs:
125
- - SKILLS_INDEX.md (29KB summary of 411 skills)
126
- - All commands (/plan, /cook, /brainstorm, etc.)
127
- - All agents (planner, debugger, reviewer, etc.)
128
- - Hooks, rules, output-styles
133
+ 1. devkit init analyzes your project files:
134
+ - package.json React, Next.js, NestJS, etc.
135
+ - pubspec.yaml Flutter
136
+ - go.mod Golang
137
+ - pyproject.toml Python
129
138
 
130
- When you need a specific skill, Claude reads it on-demand from
131
- the skills-index.json or loads the full skill file.
139
+ 2. Installs ONLY relevant content:
140
+ - Merged commands (~100 commands, ~150KB)
141
+ - Tech-specific rules (based on detection)
142
+ - Skills index (for on-demand loading)
143
+ - Essential hooks
132
144
 
133
- This reduces context usage from ~59MB to ~30KB for skills.
145
+ 3. Total size: ~300-500KB (vs 59MB for global install)
146
+
147
+ This ensures best practices for your tech stack without
148
+ overwhelming Claude with irrelevant rules.
134
149
 
135
150
  For more info: https://github.com/ngxtm/devkit
136
151
  `);
137
152
  }
138
153
 
154
+ function showDeprecationWarning(cmd) {
155
+ console.log(`
156
+ ⚠️ DEPRECATION WARNING
157
+ ========================
158
+ The 'devkit ${cmd}' command is deprecated in v3.
159
+
160
+ Global installation caused context limit issues (~59MB).
161
+ Use per-project installation instead:
162
+
163
+ devkit init # Initialize in current project (~300-500KB)
164
+
165
+ This auto-detects your tech stack and installs only relevant rules.
166
+ `);
167
+ }
168
+
139
169
  // Command handlers
140
170
  const commands = {
141
- install: (options) => {
142
- if (options.interactive) {
143
- return interactiveInstall(options.tool);
144
- }
145
- install(options.tool, {
146
- minimal: options.minimal,
147
- lite: options.lite,
148
- categories: options.categories,
149
- fullSkills: options.fullSkills,
150
- indexOnly: options.indexOnly
171
+ // Primary command - per-project init
172
+ init: (options) => {
173
+ const projectPath = validatePath(options.path) || process.cwd();
174
+ return initProject({
175
+ path: projectPath,
176
+ force: options.force,
177
+ update: options.update
151
178
  });
152
179
  },
153
- init: (options) => initProject(options),
154
- uninstall: (options) => uninstall(options.tool),
155
- update: () => update(),
156
- list: () => listSkills(),
157
- categories: () => listCategories(),
180
+
181
+ // Update existing installation
182
+ update: (options) => {
183
+ const projectPath = validatePath(options.path) || process.cwd();
184
+ return updateProject({
185
+ path: projectPath,
186
+ force: options.force,
187
+ clean: options.clean
188
+ });
189
+ },
190
+
191
+ // Detect project type
192
+ detect: (options) => {
193
+ const projectDir = validatePath(options.path) || process.cwd();
194
+ printDetectionResults(projectDir);
195
+ return { success: true };
196
+ },
197
+
198
+ // Show status
199
+ status: (options) => {
200
+ const projectPath = validatePath(options.path) || process.cwd();
201
+ return showStatus({
202
+ path: projectPath
203
+ });
204
+ },
205
+
206
+ // Uninstall
207
+ uninstall: (options) => {
208
+ const projectPath = validatePath(options.path) || process.cwd();
209
+ return uninstallProject({
210
+ path: projectPath
211
+ });
212
+ },
213
+
214
+ // List skills (from skills-index.json)
215
+ list: () => {
216
+ const indexPath = path.join(__dirname, '..', 'skills-index.json');
217
+ if (!fs.existsSync(indexPath)) {
218
+ console.log('Skills index not found.');
219
+ return;
220
+ }
221
+
222
+ const index = JSON.parse(fs.readFileSync(indexPath, 'utf-8'));
223
+ console.log(`\nAvailable Skills (${index.skills?.length || 0} total):\n`);
224
+
225
+ // Group by category
226
+ const categories = {};
227
+ for (const skill of (index.skills || [])) {
228
+ const cat = skill.category || 'other';
229
+ categories[cat] = categories[cat] || [];
230
+ categories[cat].push(skill.name);
231
+ }
232
+
233
+ for (const [cat, skills] of Object.entries(categories).sort()) {
234
+ console.log(` ${cat} (${skills.length}):`);
235
+ skills.slice(0, 5).forEach(s => console.log(` - ${s}`));
236
+ if (skills.length > 5) {
237
+ console.log(` ... and ${skills.length - 5} more`);
238
+ }
239
+ console.log('');
240
+ }
241
+ },
242
+
243
+ // Help
158
244
  help: () => showHelp(),
245
+
246
+ // Version
159
247
  version: () => console.log(`v${VERSION}`),
248
+
249
+ // Legacy commands (deprecated) - redirect with warning
250
+ install: (options) => {
251
+ showDeprecationWarning('install');
252
+
253
+ // Still try to run if legacy module available
254
+ if (legacyInstall && legacyInstall.install) {
255
+ console.log('Running legacy install anyway...\n');
256
+ return legacyInstall.install(options.tool, {
257
+ minimal: options.minimal,
258
+ lite: options.lite,
259
+ categories: options.categories,
260
+ fullSkills: options.fullSkills,
261
+ indexOnly: options.indexOnly
262
+ });
263
+ }
264
+ },
265
+
266
+ categories: () => {
267
+ if (legacyInstall && legacyInstall.listCategories) {
268
+ return legacyInstall.listCategories();
269
+ }
270
+ console.log('Use: devkit list');
271
+ }
160
272
  };
161
273
 
162
274
  // Main execution
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
+ }