@ngxtm/devkit 2.1.0 → 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 (533) hide show
  1. package/cli/detect.js +292 -0
  2. package/cli/index.js +204 -92
  3. package/cli/init.js +245 -0
  4. package/cli/update.js +243 -0
  5. package/cli/utils.js +195 -0
  6. package/package.json +16 -20
  7. package/rules-index.json +76 -0
  8. package/scripts/generate-index.js +223 -0
  9. package/scripts/merge-commands.js +290 -0
  10. package/scripts/organize-rules.js +226 -0
  11. package/templates/base/hooks/lib/ck-config-utils.cjs +769 -0
  12. package/templates/base/hooks/lib/ck-paths.cjs +110 -0
  13. package/templates/base/hooks/lib/colors.cjs +95 -0
  14. package/templates/base/hooks/lib/config-counter.cjs +103 -0
  15. package/templates/base/hooks/lib/context-builder.cjs +600 -0
  16. package/templates/base/hooks/lib/context-tracker.cjs +335 -0
  17. package/templates/base/hooks/lib/privacy-checker.cjs +297 -0
  18. package/templates/base/hooks/lib/project-detector.cjs +430 -0
  19. package/templates/base/hooks/lib/scout-checker.cjs +172 -0
  20. package/templates/base/hooks/lib/transcript-parser.cjs +164 -0
  21. package/templates/base/hooks/privacy-block.cjs +145 -0
  22. package/agents/backend-engineer.md +0 -154
  23. package/agents/brainstormer.md +0 -169
  24. package/agents/business-analyst.md +0 -166
  25. package/agents/database-architect.md +0 -159
  26. package/agents/debugger.md +0 -155
  27. package/agents/designer.md +0 -150
  28. package/agents/devops-engineer.md +0 -155
  29. package/agents/docs-manager.md +0 -171
  30. package/agents/frontend-engineer.md +0 -159
  31. package/agents/game-engineer.md +0 -148
  32. package/agents/mobile-engineer.md +0 -149
  33. package/agents/performance-engineer.md +0 -152
  34. package/agents/planner.md +0 -161
  35. package/agents/project-manager.md +0 -160
  36. package/agents/researcher.md +0 -146
  37. package/agents/reviewer.md +0 -155
  38. package/agents/scouter.md +0 -157
  39. package/agents/security-engineer.md +0 -154
  40. package/agents/tech-lead.md +0 -159
  41. package/agents/tester.md +0 -157
  42. package/agents-claudekit/brainstormer.md +0 -113
  43. package/agents-claudekit/code-reviewer.md +0 -157
  44. package/agents-claudekit/code-simplifier.md +0 -42
  45. package/agents-claudekit/copywriter.md +0 -110
  46. package/agents-claudekit/database-admin.md +0 -92
  47. package/agents-claudekit/debugger.md +0 -137
  48. package/agents-claudekit/docs-manager.md +0 -208
  49. package/agents-claudekit/fullstack-developer.md +0 -95
  50. package/agents-claudekit/git-manager.md +0 -394
  51. package/agents-claudekit/journal-writer.md +0 -113
  52. package/agents-claudekit/mcp-manager.md +0 -93
  53. package/agents-claudekit/planner.md +0 -108
  54. package/agents-claudekit/project-manager.md +0 -125
  55. package/agents-claudekit/researcher.md +0 -38
  56. package/agents-claudekit/scout-external.md +0 -141
  57. package/agents-claudekit/scout.md +0 -107
  58. package/agents-claudekit/tester.md +0 -105
  59. package/agents-claudekit/ui-ux-designer.md +0 -236
  60. package/commands/ask.md +0 -64
  61. package/commands/brainstorm.md +0 -64
  62. package/commands/code.md +0 -64
  63. package/commands/cook.md +0 -64
  64. package/commands/debug.md +0 -64
  65. package/commands/design/fast.md +0 -134
  66. package/commands/fix/fast.md +0 -84
  67. package/commands/fix/hard.md +0 -116
  68. package/commands/fix.md +0 -64
  69. package/commands/plan/fast.md +0 -78
  70. package/commands/plan/hard.md +0 -131
  71. package/commands/plan.md +0 -64
  72. package/commands/test.md +0 -64
  73. package/matrix-skills/_index.yaml +0 -275
  74. package/matrix-skills/ai-ml.yaml +0 -353
  75. package/matrix-skills/architecture.yaml +0 -93
  76. package/matrix-skills/backend.yaml +0 -280
  77. package/matrix-skills/cloud.yaml +0 -112
  78. package/matrix-skills/data.yaml +0 -74
  79. package/matrix-skills/design.yaml +0 -98
  80. package/matrix-skills/devops.yaml +0 -200
  81. package/matrix-skills/frontend.yaml +0 -200
  82. package/matrix-skills/gaming.yaml +0 -39
  83. package/matrix-skills/languages.yaml +0 -160
  84. package/matrix-skills/management.yaml +0 -50
  85. package/matrix-skills/mcp.yaml +0 -82
  86. package/matrix-skills/mobile.yaml +0 -85
  87. package/matrix-skills/performance.yaml +0 -23
  88. package/matrix-skills/planning.yaml +0 -117
  89. package/matrix-skills/quality.yaml +0 -195
  90. package/matrix-skills/research.yaml +0 -106
  91. package/matrix-skills/security.yaml +0 -293
  92. package/matrix-skills/tools.yaml +0 -352
  93. package/output-styles/coding-level-0-eli5.md +0 -103
  94. package/output-styles/coding-level-1-junior.md +0 -124
  95. package/output-styles/coding-level-2-mid.md +0 -146
  96. package/output-styles/coding-level-3-senior.md +0 -148
  97. package/output-styles/coding-level-4-lead.md +0 -159
  98. package/output-styles/coding-level-5-god.md +0 -91
  99. package/rules/README.md +0 -141
  100. package/rules/metadata.json +0 -54
  101. package/settings.json +0 -3
  102. package/statusline.cjs +0 -500
  103. package/statusline.ps1 +0 -307
  104. package/statusline.sh +0 -237
  105. package/workflows/development-rules.md +0 -42
  106. package/workflows/documentation-management.md +0 -121
  107. package/workflows/orchestration-protocol.md +0 -16
  108. package/workflows/primary-workflow.md +0 -45
  109. /package/{commands → merged-commands}/ask/fast.md +0 -0
  110. /package/{commands → merged-commands}/ask/hard.md +0 -0
  111. /package/{commands-claudekit → merged-commands}/ask.md +0 -0
  112. /package/{commands → merged-commands}/auto.md +0 -0
  113. /package/{commands-claudekit → merged-commands}/bootstrap/auto/fast.md +0 -0
  114. /package/{commands-claudekit → merged-commands}/bootstrap/auto/parallel.md +0 -0
  115. /package/{commands-claudekit → merged-commands}/bootstrap/auto.md +0 -0
  116. /package/{commands-claudekit → merged-commands}/bootstrap.md +0 -0
  117. /package/{commands → merged-commands}/brainstorm/fast.md +0 -0
  118. /package/{commands → merged-commands}/brainstorm/hard.md +0 -0
  119. /package/{commands-claudekit → merged-commands}/brainstorm.md +0 -0
  120. /package/{commands-claudekit → merged-commands}/ck-help.md +0 -0
  121. /package/{commands-claudekit → merged-commands}/code/auto.md +0 -0
  122. /package/{commands → merged-commands}/code/fast.md +0 -0
  123. /package/{commands → merged-commands}/code/hard.md +0 -0
  124. /package/{commands-claudekit → merged-commands}/code/no-test.md +0 -0
  125. /package/{commands-claudekit → merged-commands}/code/parallel.md +0 -0
  126. /package/{commands-claudekit → merged-commands}/code.md +0 -0
  127. /package/{commands-claudekit → merged-commands}/coding-level.md +0 -0
  128. /package/{commands-claudekit → merged-commands}/content/cro.md +0 -0
  129. /package/{commands-claudekit → merged-commands}/content/enhance.md +0 -0
  130. /package/{commands-claudekit → merged-commands}/content/fast.md +0 -0
  131. /package/{commands-claudekit → merged-commands}/content/good.md +0 -0
  132. /package/{commands-claudekit → merged-commands}/cook/auto/fast.md +0 -0
  133. /package/{commands-claudekit → merged-commands}/cook/auto/parallel.md +0 -0
  134. /package/{commands-claudekit → merged-commands}/cook/auto.md +0 -0
  135. /package/{commands → merged-commands}/cook/fast.md +0 -0
  136. /package/{commands → merged-commands}/cook/hard.md +0 -0
  137. /package/{commands-claudekit → merged-commands}/cook.md +0 -0
  138. /package/{commands → merged-commands}/debug/fast.md +0 -0
  139. /package/{commands → merged-commands}/debug/hard.md +0 -0
  140. /package/{commands-claudekit → merged-commands}/debug.md +0 -0
  141. /package/{commands → merged-commands}/deploy/check.md +0 -0
  142. /package/{commands → merged-commands}/deploy/preview.md +0 -0
  143. /package/{commands → merged-commands}/deploy/production.md +0 -0
  144. /package/{commands → merged-commands}/deploy/rollback.md +0 -0
  145. /package/{commands → merged-commands}/deploy.md +0 -0
  146. /package/{commands-claudekit → merged-commands}/design/3d.md +0 -0
  147. /package/{commands-claudekit → merged-commands}/design/describe.md +0 -0
  148. /package/{commands-claudekit → merged-commands}/design/fast.md +0 -0
  149. /package/{commands-claudekit → merged-commands}/design/good.md +0 -0
  150. /package/{commands → merged-commands}/design/hard.md +0 -0
  151. /package/{commands-claudekit → merged-commands}/design/screenshot.md +0 -0
  152. /package/{commands-claudekit → merged-commands}/design/video.md +0 -0
  153. /package/{commands → merged-commands}/design.md +0 -0
  154. /package/{commands → merged-commands}/docs/audit.md +0 -0
  155. /package/{commands → merged-commands}/docs/business.md +0 -0
  156. /package/{commands → merged-commands}/docs/core.md +0 -0
  157. /package/{commands-claudekit → merged-commands}/docs/init.md +0 -0
  158. /package/{commands-claudekit → merged-commands}/docs/summarize.md +0 -0
  159. /package/{commands-claudekit → merged-commands}/docs/update.md +0 -0
  160. /package/{commands → merged-commands}/docs.md +0 -0
  161. /package/{commands-claudekit → merged-commands}/fix/ci.md +0 -0
  162. /package/{commands-claudekit → merged-commands}/fix/fast.md +0 -0
  163. /package/{commands-claudekit → merged-commands}/fix/hard.md +0 -0
  164. /package/{commands-claudekit → merged-commands}/fix/logs.md +0 -0
  165. /package/{commands-claudekit → merged-commands}/fix/parallel.md +0 -0
  166. /package/{commands-claudekit → merged-commands}/fix/test.md +0 -0
  167. /package/{commands-claudekit → merged-commands}/fix/types.md +0 -0
  168. /package/{commands-claudekit → merged-commands}/fix/ui.md +0 -0
  169. /package/{commands-claudekit → merged-commands}/fix.md +0 -0
  170. /package/{commands-claudekit → merged-commands}/git/cm.md +0 -0
  171. /package/{commands-claudekit → merged-commands}/git/cp.md +0 -0
  172. /package/{commands-claudekit → merged-commands}/git/merge.md +0 -0
  173. /package/{commands-claudekit → merged-commands}/git/pr.md +0 -0
  174. /package/{commands-claudekit → merged-commands}/integrate/polar.md +0 -0
  175. /package/{commands-claudekit → merged-commands}/integrate/sepay.md +0 -0
  176. /package/{commands-claudekit → merged-commands}/journal.md +0 -0
  177. /package/{commands-claudekit → merged-commands}/kanban.md +0 -0
  178. /package/{commands-claudekit → merged-commands}/plan/archive.md +0 -0
  179. /package/{commands-claudekit → merged-commands}/plan/ci.md +0 -0
  180. /package/{commands-claudekit → merged-commands}/plan/cro.md +0 -0
  181. /package/{commands-claudekit → merged-commands}/plan/fast.md +0 -0
  182. /package/{commands-claudekit → merged-commands}/plan/hard.md +0 -0
  183. /package/{commands-claudekit → merged-commands}/plan/parallel.md +0 -0
  184. /package/{commands-claudekit → merged-commands}/plan/two.md +0 -0
  185. /package/{commands-claudekit → merged-commands}/plan/validate.md +0 -0
  186. /package/{commands-claudekit → merged-commands}/plan.md +0 -0
  187. /package/{commands-claudekit → merged-commands}/preview.md +0 -0
  188. /package/{commands-claudekit → merged-commands}/review/codebase/parallel.md +0 -0
  189. /package/{commands-claudekit → merged-commands}/review/codebase.md +0 -0
  190. /package/{commands → merged-commands}/review/fast.md +0 -0
  191. /package/{commands → merged-commands}/review/hard.md +0 -0
  192. /package/{commands → merged-commands}/review.md +0 -0
  193. /package/{commands-claudekit → merged-commands}/scout/ext.md +0 -0
  194. /package/{commands-claudekit → merged-commands}/scout.md +0 -0
  195. /package/{commands-claudekit → merged-commands}/skill/add.md +0 -0
  196. /package/{commands-claudekit → merged-commands}/skill/create.md +0 -0
  197. /package/{commands-claudekit → merged-commands}/skill/fix-logs.md +0 -0
  198. /package/{commands-claudekit → merged-commands}/skill/optimize/auto.md +0 -0
  199. /package/{commands-claudekit → merged-commands}/skill/optimize.md +0 -0
  200. /package/{commands-claudekit → merged-commands}/skill/plan.md +0 -0
  201. /package/{commands-claudekit → merged-commands}/skill/update.md +0 -0
  202. /package/{commands → merged-commands}/test/fast.md +0 -0
  203. /package/{commands → merged-commands}/test/hard.md +0 -0
  204. /package/{commands-claudekit → merged-commands}/test/ui.md +0 -0
  205. /package/{commands-claudekit → merged-commands}/test.md +0 -0
  206. /package/{commands-claudekit → merged-commands}/use-mcp.md +0 -0
  207. /package/{commands-claudekit → merged-commands}/watzup.md +0 -0
  208. /package/{commands-claudekit → merged-commands}/worktree.md +0 -0
  209. /package/{rules → templates/dart/rules}/dart/best-practices/SKILL.md +0 -0
  210. /package/{rules → templates/dart/rules}/dart/language/SKILL.md +0 -0
  211. /package/{rules → templates/dart/rules}/dart/tooling/SKILL.md +0 -0
  212. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/SKILL.md +0 -0
  213. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/REFERENCE.md +0 -0
  214. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/router-config.md +0 -0
  215. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/SKILL.md +0 -0
  216. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/REFERENCE.md +0 -0
  217. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/auth-bloc-example.md +0 -0
  218. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/equatable-usage.md +0 -0
  219. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/property-based-state.md +0 -0
  220. /package/{rules → templates/flutter/rules}/flutter/bloc.rule.md +0 -0
  221. /package/{rules → templates/flutter/rules}/flutter/cicd/SKILL.md +0 -0
  222. /package/{rules → templates/flutter/rules}/flutter/cicd/references/advanced-workflow.md +0 -0
  223. /package/{rules → templates/flutter/rules}/flutter/cicd/references/fastlane.md +0 -0
  224. /package/{rules → templates/flutter/rules}/flutter/cicd/references/github-actions.md +0 -0
  225. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/SKILL.md +0 -0
  226. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/REFERENCE.md +0 -0
  227. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/modules.md +0 -0
  228. /package/{rules → templates/flutter/rules}/flutter/error-handling/SKILL.md +0 -0
  229. /package/{rules → templates/flutter/rules}/flutter/error-handling/references/REFERENCE.md +0 -0
  230. /package/{rules → templates/flutter/rules}/flutter/error-handling/references/error-mapping.md +0 -0
  231. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/SKILL.md +0 -0
  232. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/REFERENCE.md +0 -0
  233. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/folder-structure.md +0 -0
  234. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/SKILL.md +0 -0
  235. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/app-pages.md +0 -0
  236. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/middleware-example.md +0 -0
  237. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/SKILL.md +0 -0
  238. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/binding-example.md +0 -0
  239. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/reactive-vs-simple.md +0 -0
  240. /package/{rules → templates/flutter/rules}/flutter/go-router-navigation/SKILL.md +0 -0
  241. /package/{rules → templates/flutter/rules}/flutter/idiomatic-flutter/SKILL.md +0 -0
  242. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/SKILL.md +0 -0
  243. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/REFERENCE.md +0 -0
  244. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/repository-mapping.md +0 -0
  245. /package/{rules → templates/flutter/rules}/flutter/localization/SKILL.md +0 -0
  246. /package/{rules → templates/flutter/rules}/flutter/localization/references/REFERENCE.md +0 -0
  247. /package/{rules → templates/flutter/rules}/flutter/localization/references/sheet-loader.md +0 -0
  248. /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/SKILL.md +0 -0
  249. /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/references/on-generate-route.md +0 -0
  250. /package/{rules → templates/flutter/rules}/flutter/performance/SKILL.md +0 -0
  251. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/SKILL.md +0 -0
  252. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/REFERENCE.md +0 -0
  253. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/token-refresh.md +0 -0
  254. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/SKILL.md +0 -0
  255. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/architecture.md +0 -0
  256. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/best-practices.md +0 -0
  257. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/testing.md +0 -0
  258. /package/{rules → templates/flutter/rules}/flutter/riverpod.rule.md +0 -0
  259. /package/{rules → templates/flutter/rules}/flutter/security/SKILL.md +0 -0
  260. /package/{rules → templates/flutter/rules}/flutter/security/references/REFERENCE.md +0 -0
  261. /package/{rules → templates/flutter/rules}/flutter/security/references/network-security.md +0 -0
  262. /package/{rules → templates/flutter/rules}/flutter/testing/SKILL.md +0 -0
  263. /package/{rules → templates/flutter/rules}/flutter/testing/references/REFERENCE.md +0 -0
  264. /package/{rules → templates/flutter/rules}/flutter/testing/references/bloc-testing.md +0 -0
  265. /package/{rules → templates/flutter/rules}/flutter/testing/references/integration-testing.md +0 -0
  266. /package/{rules → templates/flutter/rules}/flutter/testing/references/robot-pattern.md +0 -0
  267. /package/{rules → templates/flutter/rules}/flutter/testing/references/unit-testing.md +0 -0
  268. /package/{rules → templates/flutter/rules}/flutter/testing/references/widget-testing.md +0 -0
  269. /package/{rules → templates/flutter/rules}/flutter/widgets/SKILL.md +0 -0
  270. /package/{rules → templates/golang/rules}/golang/chi-router/SKILL.md +0 -0
  271. /package/{rules → templates/golang/rules}/golang/chi-router/references/REFERENCE.md +0 -0
  272. /package/{rules → templates/golang/rules}/golang/chi-router/references/routing-patterns.md +0 -0
  273. /package/{rules → templates/golang/rules}/golang/cobra-cli/SKILL.md +0 -0
  274. /package/{rules → templates/golang/rules}/golang/cobra-cli/references/REFERENCE.md +0 -0
  275. /package/{rules → templates/golang/rules}/golang/cobra-cli/references/command-patterns.md +0 -0
  276. /package/{rules → templates/golang/rules}/golang/core/SKILL.md +0 -0
  277. /package/{rules → templates/golang/rules}/golang/core/references/REFERENCE.md +0 -0
  278. /package/{rules → templates/golang/rules}/golang/core/references/concurrency-patterns.md +0 -0
  279. /package/{rules → templates/golang/rules}/golang/core/references/error-handling.md +0 -0
  280. /package/{rules → templates/golang/rules}/golang/echo-framework/SKILL.md +0 -0
  281. /package/{rules → templates/golang/rules}/golang/echo-framework/references/REFERENCE.md +0 -0
  282. /package/{rules → templates/golang/rules}/golang/echo-framework/references/middleware-patterns.md +0 -0
  283. /package/{rules → templates/golang/rules}/golang/echo-framework/references/routing-patterns.md +0 -0
  284. /package/{rules → templates/golang/rules}/golang/ent-orm/SKILL.md +0 -0
  285. /package/{rules → templates/golang/rules}/golang/ent-orm/references/REFERENCE.md +0 -0
  286. /package/{rules → templates/golang/rules}/golang/ent-orm/references/schema-patterns.md +0 -0
  287. /package/{rules → templates/golang/rules}/golang/fiber-framework/SKILL.md +0 -0
  288. /package/{rules → templates/golang/rules}/golang/fiber-framework/references/REFERENCE.md +0 -0
  289. /package/{rules → templates/golang/rules}/golang/fiber-framework/references/routing-patterns.md +0 -0
  290. /package/{rules → templates/golang/rules}/golang/gin-framework/SKILL.md +0 -0
  291. /package/{rules → templates/golang/rules}/golang/gin-framework/references/REFERENCE.md +0 -0
  292. /package/{rules → templates/golang/rules}/golang/gin-framework/references/middleware-patterns.md +0 -0
  293. /package/{rules → templates/golang/rules}/golang/gorm-orm/SKILL.md +0 -0
  294. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/REFERENCE.md +0 -0
  295. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/model-definitions.md +0 -0
  296. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/query-patterns.md +0 -0
  297. /package/{rules → templates/golang/rules}/golang/grpc/SKILL.md +0 -0
  298. /package/{rules → templates/golang/rules}/golang/grpc/references/REFERENCE.md +0 -0
  299. /package/{rules → templates/golang/rules}/golang/grpc/references/service-patterns.md +0 -0
  300. /package/{rules → templates/golang/rules}/golang/testify/SKILL.md +0 -0
  301. /package/{rules → templates/golang/rules}/golang/testify/references/REFERENCE.md +0 -0
  302. /package/{rules → templates/golang/rules}/golang/testify/references/assert-patterns.md +0 -0
  303. /package/{rules → templates/golang/rules}/golang/validator/SKILL.md +0 -0
  304. /package/{rules → templates/golang/rules}/golang/validator/references/REFERENCE.md +0 -0
  305. /package/{rules → templates/golang/rules}/golang/validator/references/validation-tags.md +0 -0
  306. /package/{rules → templates/golang/rules}/golang/viper-config/SKILL.md +0 -0
  307. /package/{rules → templates/golang/rules}/golang/viper-config/references/REFERENCE.md +0 -0
  308. /package/{rules → templates/golang/rules}/golang/viper-config/references/config-loading.md +0 -0
  309. /package/{rules → templates/golang/rules}/golang/wire-di/SKILL.md +0 -0
  310. /package/{rules → templates/golang/rules}/golang/wire-di/references/REFERENCE.md +0 -0
  311. /package/{rules → templates/golang/rules}/golang/wire-di/references/provider-patterns.md +0 -0
  312. /package/{rules → templates/golang/rules}/golang/zap-logging/SKILL.md +0 -0
  313. /package/{rules → templates/golang/rules}/golang/zap-logging/references/REFERENCE.md +0 -0
  314. /package/{rules → templates/golang/rules}/golang/zap-logging/references/logger-config.md +0 -0
  315. /package/{rules → templates/java/rules}/java/build-gradle/SKILL.md +0 -0
  316. /package/{rules → templates/java/rules}/java/build-gradle/references/REFERENCE.md +0 -0
  317. /package/{rules → templates/java/rules}/java/build-gradle/references/kotlin-dsl.md +0 -0
  318. /package/{rules → templates/java/rules}/java/build-gradle/references/task-configuration.md +0 -0
  319. /package/{rules → templates/java/rules}/java/build-maven/SKILL.md +0 -0
  320. /package/{rules → templates/java/rules}/java/build-maven/references/REFERENCE.md +0 -0
  321. /package/{rules → templates/java/rules}/java/build-maven/references/dependency-management.md +0 -0
  322. /package/{rules → templates/java/rules}/java/build-maven/references/lifecycle-phases.md +0 -0
  323. /package/{rules → templates/java/rules}/java/graalvm-native/SKILL.md +0 -0
  324. /package/{rules → templates/java/rules}/java/graalvm-native/references/REFERENCE.md +0 -0
  325. /package/{rules → templates/java/rules}/java/java-collections-streams/SKILL.md +0 -0
  326. /package/{rules → templates/java/rules}/java/java-collections-streams/references/REFERENCE.md +0 -0
  327. /package/{rules → templates/java/rules}/java/java-collections-streams/references/collectors-patterns.md +0 -0
  328. /package/{rules → templates/java/rules}/java/java-collections-streams/references/stream-pipelines.md +0 -0
  329. /package/{rules → templates/java/rules}/java/java-concurrency/SKILL.md +0 -0
  330. /package/{rules → templates/java/rules}/java/java-concurrency/references/REFERENCE.md +0 -0
  331. /package/{rules → templates/java/rules}/java/java-concurrency/references/completable-future.md +0 -0
  332. /package/{rules → templates/java/rules}/java/java-concurrency/references/executor-patterns.md +0 -0
  333. /package/{rules → templates/java/rules}/java/java-concurrency/references/virtual-threads.md +0 -0
  334. /package/{rules → templates/java/rules}/java/java-core-language/SKILL.md +0 -0
  335. /package/{rules → templates/java/rules}/java/java-core-language/references/REFERENCE.md +0 -0
  336. /package/{rules → templates/java/rules}/java/java-core-language/references/jvm-memory-model.md +0 -0
  337. /package/{rules → templates/java/rules}/java/java-core-language/references/modern-java-features.md +0 -0
  338. /package/{rules → templates/java/rules}/java/java-project-structure/SKILL.md +0 -0
  339. /package/{rules → templates/java/rules}/java/java-project-structure/references/REFERENCE.md +0 -0
  340. /package/{rules → templates/java/rules}/java/java-project-structure/references/maven-project-layout.md +0 -0
  341. /package/{rules → templates/java/rules}/java/java-project-structure/references/module-system.md +0 -0
  342. /package/{rules → templates/java/rules}/java/micronaut-core/SKILL.md +0 -0
  343. /package/{rules → templates/java/rules}/java/micronaut-core/references/REFERENCE.md +0 -0
  344. /package/{rules → templates/java/rules}/java/micronaut-reactive/SKILL.md +0 -0
  345. /package/{rules → templates/java/rules}/java/micronaut-reactive/references/REFERENCE.md +0 -0
  346. /package/{rules → templates/java/rules}/java/quarkus-core/SKILL.md +0 -0
  347. /package/{rules → templates/java/rules}/java/quarkus-core/references/REFERENCE.md +0 -0
  348. /package/{rules → templates/java/rules}/java/quarkus-reactive/SKILL.md +0 -0
  349. /package/{rules → templates/java/rules}/java/quarkus-reactive/references/REFERENCE.md +0 -0
  350. /package/{rules → templates/java/rules}/java/spring-batch/SKILL.md +0 -0
  351. /package/{rules → templates/java/rules}/java/spring-batch/references/REFERENCE.md +0 -0
  352. /package/{rules → templates/java/rules}/java/spring-boot-architecture/SKILL.md +0 -0
  353. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/REFERENCE.md +0 -0
  354. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/auto-configuration.md +0 -0
  355. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/configuration-properties.md +0 -0
  356. /package/{rules → templates/java/rules}/java/spring-boot-web/SKILL.md +0 -0
  357. /package/{rules → templates/java/rules}/java/spring-boot-web/references/REFERENCE.md +0 -0
  358. /package/{rules → templates/java/rules}/java/spring-cloud/SKILL.md +0 -0
  359. /package/{rules → templates/java/rules}/java/spring-cloud/references/REFERENCE.md +0 -0
  360. /package/{rules → templates/java/rules}/java/spring-data-jpa/SKILL.md +0 -0
  361. /package/{rules → templates/java/rules}/java/spring-data-jpa/references/REFERENCE.md +0 -0
  362. /package/{rules → templates/java/rules}/java/spring-security/SKILL.md +0 -0
  363. /package/{rules → templates/java/rules}/java/spring-security/references/REFERENCE.md +0 -0
  364. /package/{rules → templates/java/rules}/java/spring-security/references/jwt-auth-flow.md +0 -0
  365. /package/{rules → templates/java/rules}/java/testing-junit-mockito/SKILL.md +0 -0
  366. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/REFERENCE.md +0 -0
  367. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/junit5-patterns.md +0 -0
  368. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/mockito-patterns.md +0 -0
  369. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/spring-boot-testing.md +0 -0
  370. /package/{rules → templates/javascript/rules}/javascript/best-practices/SKILL.md +0 -0
  371. /package/{rules → templates/javascript/rules}/javascript/best-practices/references/REFERENCE.md +0 -0
  372. /package/{rules → templates/javascript/rules}/javascript/language/SKILL.md +0 -0
  373. /package/{rules → templates/javascript/rules}/javascript/language/references/REFERENCE.md +0 -0
  374. /package/{rules → templates/javascript/rules}/javascript/tooling/SKILL.md +0 -0
  375. /package/{rules → templates/javascript/rules}/javascript/tooling/references/REFERENCE.md +0 -0
  376. /package/{rules → templates/nestjs/rules}/nestjs/api-standards/SKILL.md +0 -0
  377. /package/{rules → templates/nestjs/rules}/nestjs/api-standards/references/pagination-wrapper.md +0 -0
  378. /package/{rules → templates/nestjs/rules}/nestjs/architecture/SKILL.md +0 -0
  379. /package/{rules → templates/nestjs/rules}/nestjs/architecture/references/dynamic-module.md +0 -0
  380. /package/{rules → templates/nestjs/rules}/nestjs/caching/SKILL.md +0 -0
  381. /package/{rules → templates/nestjs/rules}/nestjs/caching/references/REFERENCE.md +0 -0
  382. /package/{rules → templates/nestjs/rules}/nestjs/caching/references/cache-patterns.md +0 -0
  383. /package/{rules → templates/nestjs/rules}/nestjs/configuration/SKILL.md +0 -0
  384. /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/REFERENCE.md +0 -0
  385. /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/config-patterns.md +0 -0
  386. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/SKILL.md +0 -0
  387. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/REFERENCE.md +0 -0
  388. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/controller-patterns.md +0 -0
  389. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/service-patterns.md +0 -0
  390. /package/{rules → templates/nestjs/rules}/nestjs/database/SKILL.md +0 -0
  391. /package/{rules → templates/nestjs/rules}/nestjs/database/references/REFERENCE.md +0 -0
  392. /package/{rules → templates/nestjs/rules}/nestjs/database/references/typeorm-patterns.md +0 -0
  393. /package/{rules → templates/nestjs/rules}/nestjs/deployment/SKILL.md +0 -0
  394. /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/REFERENCE.md +0 -0
  395. /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/deployment-patterns.md +0 -0
  396. /package/{rules → templates/nestjs/rules}/nestjs/documentation/SKILL.md +0 -0
  397. /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/REFERENCE.md +0 -0
  398. /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/swagger-patterns.md +0 -0
  399. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/SKILL.md +0 -0
  400. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/REFERENCE.md +0 -0
  401. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/exception-filters.md +0 -0
  402. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/SKILL.md +0 -0
  403. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/REFERENCE.md +0 -0
  404. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/upload-patterns.md +0 -0
  405. /package/{rules → templates/nestjs/rules}/nestjs/observability/SKILL.md +0 -0
  406. /package/{rules → templates/nestjs/rules}/nestjs/observability/references/REFERENCE.md +0 -0
  407. /package/{rules → templates/nestjs/rules}/nestjs/observability/references/logging-metrics.md +0 -0
  408. /package/{rules → templates/nestjs/rules}/nestjs/performance/SKILL.md +0 -0
  409. /package/{rules → templates/nestjs/rules}/nestjs/performance/references/REFERENCE.md +0 -0
  410. /package/{rules → templates/nestjs/rules}/nestjs/performance/references/performance-patterns.md +0 -0
  411. /package/{rules → templates/nestjs/rules}/nestjs/real-time/SKILL.md +0 -0
  412. /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/REFERENCE.md +0 -0
  413. /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/websocket-patterns.md +0 -0
  414. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/SKILL.md +0 -0
  415. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/REFERENCE.md +0 -0
  416. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/scheduling-patterns.md +0 -0
  417. /package/{rules → templates/nestjs/rules}/nestjs/search/SKILL.md +0 -0
  418. /package/{rules → templates/nestjs/rules}/nestjs/search/references/REFERENCE.md +0 -0
  419. /package/{rules → templates/nestjs/rules}/nestjs/search/references/search-patterns.md +0 -0
  420. /package/{rules → templates/nestjs/rules}/nestjs/security/SKILL.md +0 -0
  421. /package/{rules → templates/nestjs/rules}/nestjs/security/references/REFERENCE.md +0 -0
  422. /package/{rules → templates/nestjs/rules}/nestjs/security/references/authentication.md +0 -0
  423. /package/{rules → templates/nestjs/rules}/nestjs/testing/SKILL.md +0 -0
  424. /package/{rules → templates/nestjs/rules}/nestjs/testing/references/REFERENCE.md +0 -0
  425. /package/{rules → templates/nestjs/rules}/nestjs/testing/references/unit-testing.md +0 -0
  426. /package/{rules → templates/nestjs/rules}/nestjs/transport/SKILL.md +0 -0
  427. /package/{rules → templates/nestjs/rules}/nestjs/transport/references/REFERENCE.md +0 -0
  428. /package/{rules → templates/nestjs/rules}/nestjs/transport/references/microservices-patterns.md +0 -0
  429. /package/{rules → templates/nextjs/rules}/nextjs/app-router/SKILL.md +0 -0
  430. /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/REFERENCE.md +0 -0
  431. /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/routing-patterns.md +0 -0
  432. /package/{rules → templates/nextjs/rules}/nextjs/architecture/SKILL.md +0 -0
  433. /package/{rules → templates/nextjs/rules}/nextjs/architecture/references/fsd-structure.md +0 -0
  434. /package/{rules → templates/nextjs/rules}/nextjs/authentication/SKILL.md +0 -0
  435. /package/{rules → templates/nextjs/rules}/nextjs/authentication/references/auth-implementation.md +0 -0
  436. /package/{rules → templates/nextjs/rules}/nextjs/caching/SKILL.md +0 -0
  437. /package/{rules → templates/nextjs/rules}/nextjs/caching/references/REFERENCE.md +0 -0
  438. /package/{rules → templates/nextjs/rules}/nextjs/caching/references/cache-strategies.md +0 -0
  439. /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/SKILL.md +0 -0
  440. /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/references/patterns.md +0 -0
  441. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/SKILL.md +0 -0
  442. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/REFERENCE.md +0 -0
  443. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/fetch-patterns.md +0 -0
  444. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/SKILL.md +0 -0
  445. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/REFERENCE.md +0 -0
  446. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/i18n-patterns.md +0 -0
  447. /package/{rules → templates/nextjs/rules}/nextjs/optimization/SKILL.md +0 -0
  448. /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/REFERENCE.md +0 -0
  449. /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/optimization-patterns.md +0 -0
  450. /package/{rules → templates/nextjs/rules}/nextjs/rendering/SKILL.md +0 -0
  451. /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/REFERENCE.md +0 -0
  452. /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/rendering-modes.md +0 -0
  453. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/SKILL.md +0 -0
  454. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/REFERENCE.md +0 -0
  455. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/action-patterns.md +0 -0
  456. /package/{rules → templates/nextjs/rules}/nextjs/server-components/SKILL.md +0 -0
  457. /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/REFERENCE.md +0 -0
  458. /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/component-patterns.md +0 -0
  459. /package/{rules → templates/nextjs/rules}/nextjs/state-management/SKILL.md +0 -0
  460. /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/REFERENCE.md +0 -0
  461. /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/state-patterns.md +0 -0
  462. /package/{rules → templates/nextjs/rules}/nextjs/styling/SKILL.md +0 -0
  463. /package/{rules → templates/nextjs/rules}/nextjs/styling/references/implementation.md +0 -0
  464. /package/{rules → templates/react/rules}/react/component-patterns/SKILL.md +0 -0
  465. /package/{rules → templates/react/rules}/react/component-patterns/references/REFERENCE.md +0 -0
  466. /package/{rules → templates/react/rules}/react/hooks/SKILL.md +0 -0
  467. /package/{rules → templates/react/rules}/react/hooks/references/REFERENCE.md +0 -0
  468. /package/{rules → templates/react/rules}/react/hooks.rule.md +0 -0
  469. /package/{rules → templates/react/rules}/react/performance/SKILL.md +0 -0
  470. /package/{rules → templates/react/rules}/react/performance/references/REFERENCE.md +0 -0
  471. /package/{rules → templates/react/rules}/react/security/SKILL.md +0 -0
  472. /package/{rules → templates/react/rules}/react/security/references/REFERENCE.md +0 -0
  473. /package/{rules → templates/react/rules}/react/state-management/SKILL.md +0 -0
  474. /package/{rules → templates/react/rules}/react/state-management/references/REFERENCE.md +0 -0
  475. /package/{rules → templates/react/rules}/react/testing/SKILL.md +0 -0
  476. /package/{rules → templates/react/rules}/react/testing/references/REFERENCE.md +0 -0
  477. /package/{rules → templates/react/rules}/react/tooling/SKILL.md +0 -0
  478. /package/{rules → templates/react/rules}/react/typescript/SKILL.md +0 -0
  479. /package/{rules → templates/rust/rules}/rust/actix-web/SKILL.md +0 -0
  480. /package/{rules → templates/rust/rules}/rust/actix-web/references/REFERENCE.md +0 -0
  481. /package/{rules → templates/rust/rules}/rust/actix-web/references/handler-patterns.md +0 -0
  482. /package/{rules → templates/rust/rules}/rust/async-graphql/SKILL.md +0 -0
  483. /package/{rules → templates/rust/rules}/rust/async-graphql/references/REFERENCE.md +0 -0
  484. /package/{rules → templates/rust/rules}/rust/async-graphql/references/schema-patterns.md +0 -0
  485. /package/{rules → templates/rust/rules}/rust/axum/SKILL.md +0 -0
  486. /package/{rules → templates/rust/rules}/rust/axum/references/REFERENCE.md +0 -0
  487. /package/{rules → templates/rust/rules}/rust/axum/references/handler-patterns.md +0 -0
  488. /package/{rules → templates/rust/rules}/rust/bevy/SKILL.md +0 -0
  489. /package/{rules → templates/rust/rules}/rust/bevy/references/REFERENCE.md +0 -0
  490. /package/{rules → templates/rust/rules}/rust/bevy/references/ecs-patterns.md +0 -0
  491. /package/{rules → templates/rust/rules}/rust/clap/SKILL.md +0 -0
  492. /package/{rules → templates/rust/rules}/rust/clap/references/REFERENCE.md +0 -0
  493. /package/{rules → templates/rust/rules}/rust/clap/references/derive-patterns.md +0 -0
  494. /package/{rules → templates/rust/rules}/rust/core/SKILL.md +0 -0
  495. /package/{rules → templates/rust/rules}/rust/core/references/REFERENCE.md +0 -0
  496. /package/{rules → templates/rust/rules}/rust/core/references/error-handling.md +0 -0
  497. /package/{rules → templates/rust/rules}/rust/diesel-orm/SKILL.md +0 -0
  498. /package/{rules → templates/rust/rules}/rust/diesel-orm/references/REFERENCE.md +0 -0
  499. /package/{rules → templates/rust/rules}/rust/diesel-orm/references/schema-patterns.md +0 -0
  500. /package/{rules → templates/rust/rules}/rust/rocket/SKILL.md +0 -0
  501. /package/{rules → templates/rust/rules}/rust/rocket/references/REFERENCE.md +0 -0
  502. /package/{rules → templates/rust/rules}/rust/rocket/references/handler-patterns.md +0 -0
  503. /package/{rules → templates/rust/rules}/rust/sea-orm/SKILL.md +0 -0
  504. /package/{rules → templates/rust/rules}/rust/sea-orm/references/REFERENCE.md +0 -0
  505. /package/{rules → templates/rust/rules}/rust/sea-orm/references/entity-patterns.md +0 -0
  506. /package/{rules → templates/rust/rules}/rust/serde-serialization/SKILL.md +0 -0
  507. /package/{rules → templates/rust/rules}/rust/serde-serialization/references/REFERENCE.md +0 -0
  508. /package/{rules → templates/rust/rules}/rust/serde-serialization/references/serialization-patterns.md +0 -0
  509. /package/{rules → templates/rust/rules}/rust/sqlx-database/SKILL.md +0 -0
  510. /package/{rules → templates/rust/rules}/rust/sqlx-database/references/REFERENCE.md +0 -0
  511. /package/{rules → templates/rust/rules}/rust/sqlx-database/references/query-patterns.md +0 -0
  512. /package/{rules → templates/rust/rules}/rust/tauri/SKILL.md +0 -0
  513. /package/{rules → templates/rust/rules}/rust/tauri/references/REFERENCE.md +0 -0
  514. /package/{rules → templates/rust/rules}/rust/tauri/references/command-patterns.md +0 -0
  515. /package/{rules → templates/rust/rules}/rust/tokio-runtime/SKILL.md +0 -0
  516. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/REFERENCE.md +0 -0
  517. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/async-patterns.md +0 -0
  518. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/synchronization.md +0 -0
  519. /package/{rules → templates/rust/rules}/rust/tonic/SKILL.md +0 -0
  520. /package/{rules → templates/rust/rules}/rust/tonic/references/REFERENCE.md +0 -0
  521. /package/{rules → templates/rust/rules}/rust/tonic/references/service-patterns.md +0 -0
  522. /package/{rules → templates/rust/rules}/rust/tracing/SKILL.md +0 -0
  523. /package/{rules → templates/rust/rules}/rust/tracing/references/REFERENCE.md +0 -0
  524. /package/{rules → templates/rust/rules}/rust/tracing/references/instrumentation.md +0 -0
  525. /package/{rules → templates/typescript/rules}/typescript/best-practices/SKILL.md +0 -0
  526. /package/{rules → templates/typescript/rules}/typescript/best-practices/references/REFERENCE.md +0 -0
  527. /package/{rules → templates/typescript/rules}/typescript/language/SKILL.md +0 -0
  528. /package/{rules → templates/typescript/rules}/typescript/language/references/REFERENCE.md +0 -0
  529. /package/{rules → templates/typescript/rules}/typescript/patterns.rule.md +0 -0
  530. /package/{rules → templates/typescript/rules}/typescript/security/SKILL.md +0 -0
  531. /package/{rules → templates/typescript/rules}/typescript/security/references/REFERENCE.md +0 -0
  532. /package/{rules → templates/typescript/rules}/typescript/tooling/SKILL.md +0 -0
  533. /package/{rules → templates/typescript/rules}/typescript/tooling/references/REFERENCE.md +0 -0
package/package.json CHANGED
@@ -1,36 +1,32 @@
1
1
  {
2
2
  "name": "@ngxtm/devkit",
3
- "version": "2.1.0",
4
- "description": "Unified multi-agent system with auto-synced skills from multiple sources",
5
- "main": "cli/install.js",
3
+ "version": "3.0.0",
4
+ "description": "Per-project AI skills with smart tech detection - lightweight and context-optimized",
5
+ "main": "cli/index.js",
6
6
  "bin": {
7
7
  "devkit": "cli/index.js"
8
8
  },
9
9
  "scripts": {
10
- "install-global": "node cli/install.js",
10
+ "build": "npm run merge-commands && npm run organize-rules && npm run generate-index",
11
+ "merge-commands": "node scripts/merge-commands.js",
12
+ "organize-rules": "node scripts/organize-rules.js",
11
13
  "generate-index": "node scripts/generate-index.js",
14
+ "test": "node cli/index.js detect",
12
15
  "sync": "python scripts/sync_all.py",
13
- "validate": "python scripts/validate_skills.py",
14
- "update-matrix": "python scripts/update_matrix.py"
16
+ "validate": "python scripts/validate_skills.py"
15
17
  },
16
18
  "files": [
17
19
  "cli/",
18
- "agents/",
19
- "agents-claudekit/",
20
- "commands/",
21
- "commands-claudekit/",
20
+ "merged-commands/",
21
+ "templates/",
22
22
  "skills/",
23
- "matrix-skills/",
24
- "rules/",
23
+ "scripts/merge-commands.js",
24
+ "scripts/organize-rules.js",
25
+ "scripts/generate-index.js",
25
26
  "hooks/",
26
- "output-styles/",
27
- "workflows/",
28
- "settings.json",
29
- "statusline.cjs",
30
- "statusline.ps1",
31
- "statusline.sh",
32
- "SKILLS_INDEX.md",
33
- "skills-index.json"
27
+ "skills-index.json",
28
+ "rules-index.json",
29
+ "SKILLS_INDEX.md"
34
30
  ],
35
31
  "keywords": [
36
32
  "ai",
@@ -0,0 +1,76 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "generatedAt": "2026-01-28T15:40:42.094Z",
4
+ "templates": {
5
+ "dart": {
6
+ "path": "templates/dart/rules",
7
+ "rules": [
8
+ "dart"
9
+ ],
10
+ "sizeKB": 4
11
+ },
12
+ "flutter": {
13
+ "path": "templates/flutter/rules",
14
+ "rules": [
15
+ "flutter"
16
+ ],
17
+ "sizeKB": 89
18
+ },
19
+ "golang": {
20
+ "path": "templates/golang/rules",
21
+ "rules": [
22
+ "golang"
23
+ ],
24
+ "sizeKB": 141
25
+ },
26
+ "java": {
27
+ "path": "templates/java/rules",
28
+ "rules": [
29
+ "java"
30
+ ],
31
+ "sizeKB": 150
32
+ },
33
+ "javascript": {
34
+ "path": "templates/javascript/rules",
35
+ "rules": [
36
+ "javascript"
37
+ ],
38
+ "sizeKB": 12
39
+ },
40
+ "nestjs": {
41
+ "path": "templates/nestjs/rules",
42
+ "rules": [
43
+ "nestjs"
44
+ ],
45
+ "sizeKB": 105
46
+ },
47
+ "nextjs": {
48
+ "path": "templates/nextjs/rules",
49
+ "rules": [
50
+ "nextjs"
51
+ ],
52
+ "sizeKB": 74
53
+ },
54
+ "react": {
55
+ "path": "templates/react/rules",
56
+ "rules": [
57
+ "react"
58
+ ],
59
+ "sizeKB": 34
60
+ },
61
+ "rust": {
62
+ "path": "templates/rust/rules",
63
+ "rules": [
64
+ "rust"
65
+ ],
66
+ "sizeKB": 134
67
+ },
68
+ "typescript": {
69
+ "path": "templates/typescript/rules",
70
+ "rules": [
71
+ "typescript"
72
+ ],
73
+ "sizeKB": 17
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,223 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Generate Skills Index
5
+ *
6
+ * Scans all skills and creates a single SKILLS_INDEX.md file
7
+ * containing summaries of all available skills.
8
+ *
9
+ * This allows Claude to know what skills exist without loading
10
+ * all 3500+ files into context.
11
+ */
12
+
13
+ const fs = require('fs');
14
+ const path = require('path');
15
+
16
+ const SKILLS_DIR = path.join(__dirname, '..', 'skills');
17
+ const OUTPUT_FILE = path.join(__dirname, '..', 'SKILLS_INDEX.md');
18
+
19
+ /**
20
+ * Parse YAML frontmatter from markdown file
21
+ */
22
+ function parseFrontmatter(content) {
23
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
24
+ if (!match) return {};
25
+
26
+ const yaml = match[1];
27
+ const result = {};
28
+
29
+ // Simple YAML parser for name/description
30
+ const lines = yaml.split('\n');
31
+ for (const line of lines) {
32
+ const colonIndex = line.indexOf(':');
33
+ if (colonIndex > 0) {
34
+ const key = line.slice(0, colonIndex).trim();
35
+ let value = line.slice(colonIndex + 1).trim();
36
+ // Remove quotes if present
37
+ if ((value.startsWith('"') && value.endsWith('"')) ||
38
+ (value.startsWith("'") && value.endsWith("'"))) {
39
+ value = value.slice(1, -1);
40
+ }
41
+ result[key] = value;
42
+ }
43
+ }
44
+
45
+ return result;
46
+ }
47
+
48
+ /**
49
+ * Get first paragraph after frontmatter as description fallback
50
+ */
51
+ function getFirstParagraph(content) {
52
+ // Remove frontmatter
53
+ const withoutFrontmatter = content.replace(/^---[\s\S]*?---\n*/, '');
54
+ // Remove title
55
+ const withoutTitle = withoutFrontmatter.replace(/^#[^\n]*\n*/, '');
56
+ // Get first non-empty paragraph
57
+ const paragraphs = withoutTitle.split(/\n\n+/);
58
+ for (const p of paragraphs) {
59
+ const trimmed = p.trim();
60
+ if (trimmed && !trimmed.startsWith('#') && !trimmed.startsWith('```')) {
61
+ // Limit to 200 chars
62
+ return trimmed.slice(0, 200) + (trimmed.length > 200 ? '...' : '');
63
+ }
64
+ }
65
+ return '';
66
+ }
67
+
68
+ /**
69
+ * Scan a skill directory and extract metadata
70
+ */
71
+ function scanSkill(skillPath, skillName) {
72
+ const skillFile = path.join(skillPath, 'SKILL.md');
73
+ const agentsFile = path.join(skillPath, 'AGENTS.md');
74
+
75
+ let content = '';
76
+ let sourceFile = '';
77
+
78
+ if (fs.existsSync(skillFile)) {
79
+ content = fs.readFileSync(skillFile, 'utf-8');
80
+ sourceFile = 'SKILL.md';
81
+ } else if (fs.existsSync(agentsFile)) {
82
+ content = fs.readFileSync(agentsFile, 'utf-8');
83
+ sourceFile = 'AGENTS.md';
84
+ } else {
85
+ // Try to find any .md file
86
+ const files = fs.readdirSync(skillPath).filter(f => f.endsWith('.md'));
87
+ if (files.length > 0) {
88
+ content = fs.readFileSync(path.join(skillPath, files[0]), 'utf-8');
89
+ sourceFile = files[0];
90
+ }
91
+ }
92
+
93
+ if (!content) {
94
+ return null;
95
+ }
96
+
97
+ const frontmatter = parseFrontmatter(content);
98
+
99
+ return {
100
+ name: frontmatter.name || skillName,
101
+ description: frontmatter.description || getFirstParagraph(content),
102
+ path: `skills/${skillName}`,
103
+ sourceFile
104
+ };
105
+ }
106
+
107
+ /**
108
+ * Categorize skills based on name patterns
109
+ */
110
+ function categorizeSkill(name) {
111
+ const lowerName = name.toLowerCase();
112
+
113
+ if (/react|next|remix|vue|angular|svelte/.test(lowerName)) return 'Frontend Frameworks';
114
+ if (/node|express|nest|fastify|hono/.test(lowerName)) return 'Backend/Node.js';
115
+ if (/python|django|flask|fastapi/.test(lowerName)) return 'Python';
116
+ if (/database|postgres|mysql|mongo|redis|sql/.test(lowerName)) return 'Databases';
117
+ if (/docker|kubernetes|k8s|ci|cd|deploy|aws|cloud|terraform/.test(lowerName)) return 'DevOps/Cloud';
118
+ if (/test|jest|playwright|cypress|vitest/.test(lowerName)) return 'Testing';
119
+ if (/security|auth|owasp|crypto/.test(lowerName)) return 'Security';
120
+ if (/ai|agent|llm|mcp|prompt|openai|anthropic/.test(lowerName)) return 'AI/Agents';
121
+ if (/mobile|react-native|flutter|ios|android/.test(lowerName)) return 'Mobile';
122
+ if (/git|review|debug|refactor|documentation/.test(lowerName)) return 'Development Tools';
123
+ if (/api|rest|graphql|grpc/.test(lowerName)) return 'API Design';
124
+ if (/css|tailwind|style|animation|ui|ux/.test(lowerName)) return 'UI/Styling';
125
+ if (/typescript|javascript|js|ts/.test(lowerName)) return 'TypeScript/JavaScript';
126
+
127
+ return 'Other';
128
+ }
129
+
130
+ /**
131
+ * Main function
132
+ */
133
+ function generateIndex() {
134
+ console.log('Scanning skills directory...');
135
+
136
+ if (!fs.existsSync(SKILLS_DIR)) {
137
+ console.error('Skills directory not found:', SKILLS_DIR);
138
+ process.exit(1);
139
+ }
140
+
141
+ const skillDirs = fs.readdirSync(SKILLS_DIR, { withFileTypes: true })
142
+ .filter(d => d.isDirectory() && !d.name.startsWith('.'))
143
+ .map(d => d.name)
144
+ .sort();
145
+
146
+ console.log(`Found ${skillDirs.length} skill directories`);
147
+
148
+ const skills = [];
149
+ const categorized = {};
150
+
151
+ for (const skillName of skillDirs) {
152
+ const skillPath = path.join(SKILLS_DIR, skillName);
153
+ const skillInfo = scanSkill(skillPath, skillName);
154
+
155
+ if (skillInfo) {
156
+ skills.push(skillInfo);
157
+
158
+ const category = categorizeSkill(skillName);
159
+ if (!categorized[category]) {
160
+ categorized[category] = [];
161
+ }
162
+ categorized[category].push(skillInfo);
163
+ }
164
+ }
165
+
166
+ console.log(`Extracted metadata from ${skills.length} skills`);
167
+
168
+ // Generate markdown
169
+ let output = `# Skills Index
170
+
171
+ > Auto-generated index of ${skills.length} available skills.
172
+ > Use this to discover skills without loading all files into context.
173
+ >
174
+ > **To use a skill**: Read the full skill at \`~/.claude/skills/<skill-name>/SKILL.md\`
175
+
176
+ ## Quick Reference
177
+
178
+ | Category | Count |
179
+ |----------|-------|
180
+ `;
181
+
182
+ // Sort categories by count
183
+ const sortedCategories = Object.entries(categorized)
184
+ .sort((a, b) => b[1].length - a[1].length);
185
+
186
+ for (const [category, categorySkills] of sortedCategories) {
187
+ output += `| ${category} | ${categorySkills.length} |\n`;
188
+ }
189
+
190
+ output += `\n---\n\n`;
191
+
192
+ // Output by category
193
+ for (const [category, categorySkills] of sortedCategories) {
194
+ output += `## ${category}\n\n`;
195
+
196
+ for (const skill of categorySkills) {
197
+ const desc = skill.description
198
+ ? skill.description.replace(/\n/g, ' ').slice(0, 150)
199
+ : 'No description';
200
+ output += `### ${skill.name}\n`;
201
+ output += `\`${skill.path}\`\n\n`;
202
+ output += `${desc}${skill.description && skill.description.length > 150 ? '...' : ''}\n\n`;
203
+ }
204
+ }
205
+
206
+ // Write output
207
+ fs.writeFileSync(OUTPUT_FILE, output);
208
+ console.log(`\nGenerated: ${OUTPUT_FILE}`);
209
+ console.log(`File size: ${(fs.statSync(OUTPUT_FILE).size / 1024).toFixed(1)} KB`);
210
+
211
+ // Also generate a compact JSON version for programmatic use
212
+ const jsonOutput = path.join(__dirname, '..', 'skills-index.json');
213
+ const jsonData = skills.map(s => ({
214
+ name: s.name,
215
+ path: s.path,
216
+ description: s.description ? s.description.slice(0, 200) : ''
217
+ }));
218
+ fs.writeFileSync(jsonOutput, JSON.stringify(jsonData, null, 2));
219
+ console.log(`Generated: ${jsonOutput}`);
220
+ }
221
+
222
+ // Run
223
+ generateIndex();
@@ -0,0 +1,290 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Merge Commands Script
5
+ *
6
+ * Merges commands from two sources:
7
+ * - commands/ (agent-assistant style)
8
+ * - commands-claudekit/ (claudekit style)
9
+ *
10
+ * Strategy:
11
+ * 1. For conflicting commands, prefer claudekit (more sophisticated)
12
+ * 2. For sub-commands, merge all unique sub-commands from both sources
13
+ * 3. For unique commands, copy as-is
14
+ */
15
+
16
+ const fs = require('fs');
17
+ const path = require('path');
18
+
19
+ const PACKAGE_ROOT = path.join(__dirname, '..');
20
+ const COMMANDS_DIR = path.join(PACKAGE_ROOT, 'commands');
21
+ const COMMANDS_CLAUDEKIT_DIR = path.join(PACKAGE_ROOT, 'commands-claudekit');
22
+ const MERGED_DIR = path.join(PACKAGE_ROOT, 'merged-commands');
23
+
24
+ /**
25
+ * Merge strategy for conflicting commands
26
+ * - 'claudekit': Use claudekit version
27
+ * - 'agent': Use agent-assistant version
28
+ * - 'merge': Merge both (claudekit base, add agent sub-commands)
29
+ */
30
+ const MERGE_STRATEGY = {
31
+ // Prefer claudekit for these (more sophisticated)
32
+ 'ask.md': 'claudekit',
33
+ 'bootstrap.md': 'claudekit',
34
+ 'ck-help.md': 'claudekit',
35
+ 'coding-level.md': 'claudekit',
36
+ 'debug.md': 'claudekit',
37
+ 'journal.md': 'claudekit',
38
+ 'kanban.md': 'claudekit',
39
+ 'preview.md': 'claudekit',
40
+ 'scout.md': 'claudekit',
41
+ 'use-mcp.md': 'claudekit',
42
+ 'watzup.md': 'claudekit',
43
+ 'worktree.md': 'claudekit',
44
+
45
+ // Prefer agent-assistant for these
46
+ 'auto.md': 'agent',
47
+ 'deploy.md': 'agent',
48
+
49
+ // Merge both for these (combine sub-commands)
50
+ 'brainstorm.md': 'merge',
51
+ 'code.md': 'merge',
52
+ 'cook.md': 'merge',
53
+ 'design.md': 'merge',
54
+ 'docs.md': 'merge',
55
+ 'fix.md': 'merge',
56
+ 'plan.md': 'merge',
57
+ 'review.md': 'merge',
58
+ 'test.md': 'merge'
59
+ };
60
+
61
+ /**
62
+ * For merged commands, which source provides the base .md file
63
+ */
64
+ const MERGE_BASE = {
65
+ 'brainstorm.md': 'claudekit',
66
+ 'code.md': 'claudekit',
67
+ 'cook.md': 'claudekit',
68
+ 'design.md': 'agent',
69
+ 'docs.md': 'claudekit',
70
+ 'fix.md': 'claudekit',
71
+ 'plan.md': 'claudekit',
72
+ 'review.md': 'agent',
73
+ 'test.md': 'claudekit'
74
+ };
75
+
76
+ /**
77
+ * Get all files and directories from a path recursively
78
+ */
79
+ function getAllEntries(dir, basePath = '') {
80
+ const entries = { files: [], dirs: [] };
81
+
82
+ if (!fs.existsSync(dir)) return entries;
83
+
84
+ const items = fs.readdirSync(dir, { withFileTypes: true });
85
+
86
+ for (const item of items) {
87
+ const relativePath = path.join(basePath, item.name);
88
+
89
+ if (item.isDirectory()) {
90
+ entries.dirs.push(relativePath);
91
+ const subEntries = getAllEntries(path.join(dir, item.name), relativePath);
92
+ entries.files.push(...subEntries.files);
93
+ entries.dirs.push(...subEntries.dirs);
94
+ } else {
95
+ entries.files.push(relativePath);
96
+ }
97
+ }
98
+
99
+ return entries;
100
+ }
101
+
102
+ /**
103
+ * Copy file with directory creation
104
+ */
105
+ function copyFile(src, dest) {
106
+ const destDir = path.dirname(dest);
107
+ fs.mkdirSync(destDir, { recursive: true });
108
+ fs.copyFileSync(src, dest);
109
+ }
110
+
111
+ /**
112
+ * Copy directory recursively
113
+ */
114
+ function copyDir(src, dest) {
115
+ if (!fs.existsSync(src)) return 0;
116
+
117
+ fs.mkdirSync(dest, { recursive: true });
118
+ let count = 0;
119
+
120
+ const entries = fs.readdirSync(src, { withFileTypes: true });
121
+
122
+ for (const entry of entries) {
123
+ const srcPath = path.join(src, entry.name);
124
+ const destPath = path.join(dest, entry.name);
125
+
126
+ if (entry.isDirectory()) {
127
+ count += copyDir(srcPath, destPath);
128
+ } else {
129
+ fs.copyFileSync(srcPath, destPath);
130
+ count++;
131
+ }
132
+ }
133
+
134
+ return count;
135
+ }
136
+
137
+ /**
138
+ * Merge commands from both sources
139
+ */
140
+ function mergeCommands() {
141
+ console.log('\n' + '='.repeat(60));
142
+ console.log(' MERGE COMMANDS');
143
+ console.log('='.repeat(60));
144
+
145
+ // Clean merged directory
146
+ if (fs.existsSync(MERGED_DIR)) {
147
+ fs.rmSync(MERGED_DIR, { recursive: true, force: true });
148
+ }
149
+ fs.mkdirSync(MERGED_DIR, { recursive: true });
150
+
151
+ const agentEntries = getAllEntries(COMMANDS_DIR);
152
+ const claudekitEntries = getAllEntries(COMMANDS_CLAUDEKIT_DIR);
153
+
154
+ // Collect all unique files and dirs
155
+ const allFiles = new Set([...agentEntries.files, ...claudekitEntries.files]);
156
+ const processedDirs = new Set();
157
+
158
+ let copiedFromAgent = 0;
159
+ let copiedFromClaudekit = 0;
160
+ let merged = 0;
161
+
162
+ // Process each file
163
+ for (const relativePath of allFiles) {
164
+ const fileName = path.basename(relativePath);
165
+ const dirName = path.dirname(relativePath);
166
+
167
+ // Check if this is a root-level command file
168
+ const isRootCommand = dirName === '.';
169
+ const commandName = isRootCommand ? fileName : path.basename(dirName) + '.md';
170
+
171
+ const agentPath = path.join(COMMANDS_DIR, relativePath);
172
+ const claudekitPath = path.join(COMMANDS_CLAUDEKIT_DIR, relativePath);
173
+ const mergedPath = path.join(MERGED_DIR, relativePath);
174
+
175
+ const existsInAgent = fs.existsSync(agentPath);
176
+ const existsInClaudekit = fs.existsSync(claudekitPath);
177
+
178
+ // Determine source
179
+ if (existsInAgent && existsInClaudekit) {
180
+ // Both have this file - apply strategy
181
+ const strategy = MERGE_STRATEGY[fileName] || MERGE_STRATEGY[commandName];
182
+
183
+ if (strategy === 'agent') {
184
+ copyFile(agentPath, mergedPath);
185
+ copiedFromAgent++;
186
+ } else if (strategy === 'claudekit' || strategy === 'merge' || !strategy) {
187
+ // Default to claudekit for conflicts
188
+ copyFile(claudekitPath, mergedPath);
189
+ copiedFromClaudekit++;
190
+ if (strategy === 'merge') merged++;
191
+ }
192
+ } else if (existsInAgent) {
193
+ copyFile(agentPath, mergedPath);
194
+ copiedFromAgent++;
195
+ } else if (existsInClaudekit) {
196
+ copyFile(claudekitPath, mergedPath);
197
+ copiedFromClaudekit++;
198
+ }
199
+ }
200
+
201
+ // Copy unique subdirectories from both sources
202
+ const agentDirs = new Set(agentEntries.dirs.map(d => d.split(path.sep)[0]));
203
+ const claudekitDirs = new Set(claudekitEntries.dirs.map(d => d.split(path.sep)[0]));
204
+
205
+ // For directories that exist in both, we need to merge their contents
206
+ for (const dir of agentDirs) {
207
+ const agentSubDir = path.join(COMMANDS_DIR, dir);
208
+ const claudekitSubDir = path.join(COMMANDS_CLAUDEKIT_DIR, dir);
209
+ const mergedSubDir = path.join(MERGED_DIR, dir);
210
+
211
+ if (claudekitDirs.has(dir)) {
212
+ // Both have this directory - merge contents
213
+ // Claudekit files already copied above, add agent-only files
214
+ if (fs.existsSync(agentSubDir)) {
215
+ const agentFiles = fs.readdirSync(agentSubDir, { withFileTypes: true });
216
+ for (const entry of agentFiles) {
217
+ const mergedEntryPath = path.join(mergedSubDir, entry.name);
218
+ if (!fs.existsSync(mergedEntryPath)) {
219
+ const agentEntryPath = path.join(agentSubDir, entry.name);
220
+ if (entry.isDirectory()) {
221
+ copyDir(agentEntryPath, mergedEntryPath);
222
+ } else {
223
+ copyFile(agentEntryPath, mergedEntryPath);
224
+ }
225
+ }
226
+ }
227
+ }
228
+ }
229
+ }
230
+
231
+ // Count final files
232
+ const finalEntries = getAllEntries(MERGED_DIR);
233
+
234
+ console.log(`\n From agent-assistant: ${copiedFromAgent} files`);
235
+ console.log(` From claudekit: ${copiedFromClaudekit} files`);
236
+ console.log(` Merged conflicts: ${merged} files`);
237
+ console.log(` Total merged: ${finalEntries.files.length} files`);
238
+ console.log('\n' + '='.repeat(60));
239
+
240
+ return finalEntries.files.length;
241
+ }
242
+
243
+ /**
244
+ * List merged commands
245
+ */
246
+ function listMergedCommands() {
247
+ if (!fs.existsSync(MERGED_DIR)) {
248
+ console.log('No merged commands. Run: npm run merge-commands');
249
+ return;
250
+ }
251
+
252
+ const entries = getAllEntries(MERGED_DIR);
253
+ console.log('\nMerged Commands:\n');
254
+
255
+ // Get root-level commands
256
+ const rootCommands = entries.files
257
+ .filter(f => !f.includes(path.sep))
258
+ .map(f => f.replace('.md', ''))
259
+ .sort();
260
+
261
+ for (const cmd of rootCommands) {
262
+ console.log(` /${cmd}`);
263
+
264
+ // Check for sub-commands
265
+ const subDir = cmd;
266
+ const subCommands = entries.files
267
+ .filter(f => f.startsWith(subDir + path.sep))
268
+ .map(f => f.replace(subDir + path.sep, '').replace('.md', '').replace(/\\/g, ':'))
269
+ .sort();
270
+
271
+ for (const sub of subCommands) {
272
+ console.log(` /${cmd}:${sub}`);
273
+ }
274
+ }
275
+
276
+ console.log(`\nTotal: ${entries.files.length} command files\n`);
277
+ }
278
+
279
+ // Run if called directly
280
+ if (require.main === module) {
281
+ const arg = process.argv[2];
282
+
283
+ if (arg === 'list') {
284
+ listMergedCommands();
285
+ } else {
286
+ mergeCommands();
287
+ }
288
+ }
289
+
290
+ module.exports = { mergeCommands, listMergedCommands };