@ngxtm/devkit 3.3.0 → 3.4.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 (345) hide show
  1. package/cli/index.js +59 -13
  2. package/cli/rules.js +248 -0
  3. package/package.json +2 -1
  4. package/rules/README.md +141 -0
  5. package/rules/dart/best-practices/SKILL.md +23 -0
  6. package/rules/dart/language/SKILL.md +52 -0
  7. package/rules/dart/tooling/SKILL.md +43 -0
  8. package/rules/dotnet/aspnet-core/SKILL.md +92 -0
  9. package/rules/dotnet/aspnet-core/references/REFERENCE.md +335 -0
  10. package/rules/dotnet/best-practices/SKILL.md +101 -0
  11. package/rules/dotnet/best-practices/references/REFERENCE.md +256 -0
  12. package/rules/dotnet/blazor/SKILL.md +146 -0
  13. package/rules/dotnet/blazor/references/REFERENCE.md +392 -0
  14. package/rules/dotnet/language/SKILL.md +82 -0
  15. package/rules/dotnet/language/references/REFERENCE.md +222 -0
  16. package/rules/dotnet/patterns.rule.md +388 -0
  17. package/rules/dotnet/razor-pages/SKILL.md +124 -0
  18. package/rules/dotnet/razor-pages/references/REFERENCE.md +321 -0
  19. package/rules/dotnet/security/SKILL.md +89 -0
  20. package/rules/dotnet/security/references/REFERENCE.md +295 -0
  21. package/rules/dotnet/tooling/SKILL.md +92 -0
  22. package/rules/dotnet/tooling/references/REFERENCE.md +300 -0
  23. package/rules/flutter/auto-route-navigation/SKILL.md +43 -0
  24. package/rules/flutter/auto-route-navigation/references/REFERENCE.md +19 -0
  25. package/rules/flutter/auto-route-navigation/references/router-config.md +62 -0
  26. package/rules/flutter/bloc-state-management/SKILL.md +64 -0
  27. package/rules/flutter/bloc-state-management/references/REFERENCE.md +20 -0
  28. package/rules/flutter/bloc-state-management/references/auth-bloc-example.md +52 -0
  29. package/rules/flutter/bloc-state-management/references/equatable-usage.md +56 -0
  30. package/rules/flutter/bloc-state-management/references/property-based-state.md +68 -0
  31. package/rules/flutter/bloc.rule.md +76 -0
  32. package/rules/flutter/cicd/SKILL.md +48 -0
  33. package/rules/flutter/cicd/references/advanced-workflow.md +66 -0
  34. package/rules/flutter/cicd/references/fastlane.md +139 -0
  35. package/rules/flutter/cicd/references/github-actions.md +59 -0
  36. package/rules/flutter/dependency-injection/SKILL.md +42 -0
  37. package/rules/flutter/dependency-injection/references/REFERENCE.md +15 -0
  38. package/rules/flutter/dependency-injection/references/modules.md +37 -0
  39. package/rules/flutter/error-handling/SKILL.md +32 -0
  40. package/rules/flutter/error-handling/references/REFERENCE.md +19 -0
  41. package/rules/flutter/error-handling/references/error-mapping.md +31 -0
  42. package/rules/flutter/feature-based-clean-architecture/SKILL.md +46 -0
  43. package/rules/flutter/feature-based-clean-architecture/references/REFERENCE.md +14 -0
  44. package/rules/flutter/feature-based-clean-architecture/references/folder-structure.md +36 -0
  45. package/rules/flutter/getx-navigation/SKILL.md +70 -0
  46. package/rules/flutter/getx-navigation/references/app-pages.md +40 -0
  47. package/rules/flutter/getx-navigation/references/middleware-example.md +29 -0
  48. package/rules/flutter/getx-state-management/SKILL.md +76 -0
  49. package/rules/flutter/getx-state-management/references/binding-example.md +32 -0
  50. package/rules/flutter/getx-state-management/references/reactive-vs-simple.md +39 -0
  51. package/rules/flutter/go-router-navigation/SKILL.md +57 -0
  52. package/rules/flutter/idiomatic-flutter/SKILL.md +20 -0
  53. package/rules/flutter/layer-based-clean-architecture/SKILL.md +50 -0
  54. package/rules/flutter/layer-based-clean-architecture/references/REFERENCE.md +60 -0
  55. package/rules/flutter/layer-based-clean-architecture/references/repository-mapping.md +50 -0
  56. package/rules/flutter/localization/SKILL.md +50 -0
  57. package/rules/flutter/localization/references/REFERENCE.md +48 -0
  58. package/rules/flutter/localization/references/sheet-loader.md +33 -0
  59. package/rules/flutter/navigator-v1-navigation/SKILL.md +71 -0
  60. package/rules/flutter/navigator-v1-navigation/references/on-generate-route.md +48 -0
  61. package/rules/flutter/performance/SKILL.md +24 -0
  62. package/rules/flutter/retrofit-networking/SKILL.md +51 -0
  63. package/rules/flutter/retrofit-networking/references/REFERENCE.md +19 -0
  64. package/rules/flutter/retrofit-networking/references/token-refresh.md +40 -0
  65. package/rules/flutter/riverpod-state-management/SKILL.md +53 -0
  66. package/rules/flutter/riverpod-state-management/references/architecture.md +124 -0
  67. package/rules/flutter/riverpod-state-management/references/best-practices.md +89 -0
  68. package/rules/flutter/riverpod-state-management/references/testing.md +73 -0
  69. package/rules/flutter/riverpod.rule.md +78 -0
  70. package/rules/flutter/security/SKILL.md +33 -0
  71. package/rules/flutter/security/references/REFERENCE.md +15 -0
  72. package/rules/flutter/security/references/network-security.md +28 -0
  73. package/rules/flutter/testing/SKILL.md +44 -0
  74. package/rules/flutter/testing/references/REFERENCE.md +21 -0
  75. package/rules/flutter/testing/references/bloc-testing.md +38 -0
  76. package/rules/flutter/testing/references/integration-testing.md +128 -0
  77. package/rules/flutter/testing/references/robot-pattern.md +82 -0
  78. package/rules/flutter/testing/references/unit-testing.md +130 -0
  79. package/rules/flutter/testing/references/widget-testing.md +120 -0
  80. package/rules/flutter/widgets/SKILL.md +37 -0
  81. package/rules/golang/chi-router/SKILL.md +219 -0
  82. package/rules/golang/chi-router/references/REFERENCE.md +13 -0
  83. package/rules/golang/chi-router/references/routing-patterns.md +205 -0
  84. package/rules/golang/cobra-cli/SKILL.md +227 -0
  85. package/rules/golang/cobra-cli/references/REFERENCE.md +13 -0
  86. package/rules/golang/cobra-cli/references/command-patterns.md +224 -0
  87. package/rules/golang/core/SKILL.md +210 -0
  88. package/rules/golang/core/references/REFERENCE.md +14 -0
  89. package/rules/golang/core/references/concurrency-patterns.md +114 -0
  90. package/rules/golang/core/references/error-handling.md +87 -0
  91. package/rules/golang/echo-framework/SKILL.md +215 -0
  92. package/rules/golang/echo-framework/references/REFERENCE.md +14 -0
  93. package/rules/golang/echo-framework/references/middleware-patterns.md +141 -0
  94. package/rules/golang/echo-framework/references/routing-patterns.md +140 -0
  95. package/rules/golang/ent-orm/SKILL.md +239 -0
  96. package/rules/golang/ent-orm/references/REFERENCE.md +13 -0
  97. package/rules/golang/ent-orm/references/schema-patterns.md +255 -0
  98. package/rules/golang/fiber-framework/SKILL.md +196 -0
  99. package/rules/golang/fiber-framework/references/REFERENCE.md +13 -0
  100. package/rules/golang/fiber-framework/references/routing-patterns.md +191 -0
  101. package/rules/golang/gin-framework/SKILL.md +205 -0
  102. package/rules/golang/gin-framework/references/REFERENCE.md +14 -0
  103. package/rules/golang/gin-framework/references/middleware-patterns.md +119 -0
  104. package/rules/golang/gorm-orm/SKILL.md +196 -0
  105. package/rules/golang/gorm-orm/references/REFERENCE.md +14 -0
  106. package/rules/golang/gorm-orm/references/model-definitions.md +167 -0
  107. package/rules/golang/gorm-orm/references/query-patterns.md +161 -0
  108. package/rules/golang/grpc/SKILL.md +231 -0
  109. package/rules/golang/grpc/references/REFERENCE.md +13 -0
  110. package/rules/golang/grpc/references/service-patterns.md +276 -0
  111. package/rules/golang/testify/SKILL.md +239 -0
  112. package/rules/golang/testify/references/REFERENCE.md +13 -0
  113. package/rules/golang/testify/references/assert-patterns.md +170 -0
  114. package/rules/golang/validator/SKILL.md +234 -0
  115. package/rules/golang/validator/references/REFERENCE.md +13 -0
  116. package/rules/golang/validator/references/validation-tags.md +211 -0
  117. package/rules/golang/viper-config/SKILL.md +244 -0
  118. package/rules/golang/viper-config/references/REFERENCE.md +13 -0
  119. package/rules/golang/viper-config/references/config-loading.md +181 -0
  120. package/rules/golang/wire-di/SKILL.md +243 -0
  121. package/rules/golang/wire-di/references/REFERENCE.md +13 -0
  122. package/rules/golang/wire-di/references/provider-patterns.md +193 -0
  123. package/rules/golang/zap-logging/SKILL.md +203 -0
  124. package/rules/golang/zap-logging/references/REFERENCE.md +13 -0
  125. package/rules/golang/zap-logging/references/logger-config.md +165 -0
  126. package/rules/java/build-gradle/SKILL.md +92 -0
  127. package/rules/java/build-gradle/references/REFERENCE.md +14 -0
  128. package/rules/java/build-gradle/references/kotlin-dsl.md +118 -0
  129. package/rules/java/build-gradle/references/task-configuration.md +132 -0
  130. package/rules/java/build-maven/SKILL.md +86 -0
  131. package/rules/java/build-maven/references/REFERENCE.md +14 -0
  132. package/rules/java/build-maven/references/dependency-management.md +111 -0
  133. package/rules/java/build-maven/references/lifecycle-phases.md +114 -0
  134. package/rules/java/graalvm-native/SKILL.md +105 -0
  135. package/rules/java/graalvm-native/references/REFERENCE.md +12 -0
  136. package/rules/java/java-collections-streams/SKILL.md +148 -0
  137. package/rules/java/java-collections-streams/references/REFERENCE.md +15 -0
  138. package/rules/java/java-collections-streams/references/collectors-patterns.md +178 -0
  139. package/rules/java/java-collections-streams/references/stream-pipelines.md +165 -0
  140. package/rules/java/java-concurrency/SKILL.md +187 -0
  141. package/rules/java/java-concurrency/references/REFERENCE.md +17 -0
  142. package/rules/java/java-concurrency/references/completable-future.md +165 -0
  143. package/rules/java/java-concurrency/references/executor-patterns.md +176 -0
  144. package/rules/java/java-concurrency/references/virtual-threads.md +190 -0
  145. package/rules/java/java-core-language/SKILL.md +121 -0
  146. package/rules/java/java-core-language/references/REFERENCE.md +15 -0
  147. package/rules/java/java-core-language/references/jvm-memory-model.md +160 -0
  148. package/rules/java/java-core-language/references/modern-java-features.md +168 -0
  149. package/rules/java/java-project-structure/SKILL.md +195 -0
  150. package/rules/java/java-project-structure/references/REFERENCE.md +15 -0
  151. package/rules/java/java-project-structure/references/maven-project-layout.md +199 -0
  152. package/rules/java/java-project-structure/references/module-system.md +159 -0
  153. package/rules/java/micronaut-core/SKILL.md +99 -0
  154. package/rules/java/micronaut-core/references/REFERENCE.md +12 -0
  155. package/rules/java/micronaut-reactive/SKILL.md +68 -0
  156. package/rules/java/micronaut-reactive/references/REFERENCE.md +12 -0
  157. package/rules/java/quarkus-core/SKILL.md +85 -0
  158. package/rules/java/quarkus-core/references/REFERENCE.md +12 -0
  159. package/rules/java/quarkus-reactive/SKILL.md +67 -0
  160. package/rules/java/quarkus-reactive/references/REFERENCE.md +12 -0
  161. package/rules/java/spring-batch/SKILL.md +102 -0
  162. package/rules/java/spring-batch/references/REFERENCE.md +12 -0
  163. package/rules/java/spring-boot-architecture/SKILL.md +206 -0
  164. package/rules/java/spring-boot-architecture/references/REFERENCE.md +15 -0
  165. package/rules/java/spring-boot-architecture/references/auto-configuration.md +158 -0
  166. package/rules/java/spring-boot-architecture/references/configuration-properties.md +202 -0
  167. package/rules/java/spring-boot-web/SKILL.md +217 -0
  168. package/rules/java/spring-boot-web/references/REFERENCE.md +17 -0
  169. package/rules/java/spring-cloud/SKILL.md +109 -0
  170. package/rules/java/spring-cloud/references/REFERENCE.md +13 -0
  171. package/rules/java/spring-data-jpa/SKILL.md +241 -0
  172. package/rules/java/spring-data-jpa/references/REFERENCE.md +16 -0
  173. package/rules/java/spring-security/SKILL.md +161 -0
  174. package/rules/java/spring-security/references/REFERENCE.md +16 -0
  175. package/rules/java/spring-security/references/jwt-auth-flow.md +213 -0
  176. package/rules/java/testing-junit-mockito/SKILL.md +135 -0
  177. package/rules/java/testing-junit-mockito/references/REFERENCE.md +15 -0
  178. package/rules/java/testing-junit-mockito/references/junit5-patterns.md +159 -0
  179. package/rules/java/testing-junit-mockito/references/mockito-patterns.md +148 -0
  180. package/rules/java/testing-junit-mockito/references/spring-boot-testing.md +152 -0
  181. package/rules/javascript/best-practices/SKILL.md +64 -0
  182. package/rules/javascript/best-practices/references/REFERENCE.md +91 -0
  183. package/rules/javascript/language/SKILL.md +71 -0
  184. package/rules/javascript/language/references/REFERENCE.md +106 -0
  185. package/rules/javascript/tooling/SKILL.md +60 -0
  186. package/rules/javascript/tooling/references/REFERENCE.md +107 -0
  187. package/rules/metadata.json +54 -0
  188. package/rules/nestjs/api-standards/SKILL.md +47 -0
  189. package/rules/nestjs/api-standards/references/pagination-wrapper.md +87 -0
  190. package/rules/nestjs/architecture/SKILL.md +68 -0
  191. package/rules/nestjs/architecture/references/dynamic-module.md +53 -0
  192. package/rules/nestjs/caching/SKILL.md +51 -0
  193. package/rules/nestjs/caching/references/REFERENCE.md +13 -0
  194. package/rules/nestjs/caching/references/cache-patterns.md +183 -0
  195. package/rules/nestjs/configuration/SKILL.md +41 -0
  196. package/rules/nestjs/configuration/references/REFERENCE.md +13 -0
  197. package/rules/nestjs/configuration/references/config-patterns.md +184 -0
  198. package/rules/nestjs/controllers-services/SKILL.md +63 -0
  199. package/rules/nestjs/controllers-services/references/REFERENCE.md +14 -0
  200. package/rules/nestjs/controllers-services/references/controller-patterns.md +119 -0
  201. package/rules/nestjs/controllers-services/references/service-patterns.md +129 -0
  202. package/rules/nestjs/database/SKILL.md +102 -0
  203. package/rules/nestjs/database/references/REFERENCE.md +14 -0
  204. package/rules/nestjs/database/references/typeorm-patterns.md +156 -0
  205. package/rules/nestjs/deployment/SKILL.md +36 -0
  206. package/rules/nestjs/deployment/references/REFERENCE.md +13 -0
  207. package/rules/nestjs/deployment/references/deployment-patterns.md +140 -0
  208. package/rules/nestjs/documentation/SKILL.md +64 -0
  209. package/rules/nestjs/documentation/references/REFERENCE.md +13 -0
  210. package/rules/nestjs/documentation/references/swagger-patterns.md +139 -0
  211. package/rules/nestjs/error-handling/SKILL.md +55 -0
  212. package/rules/nestjs/error-handling/references/REFERENCE.md +13 -0
  213. package/rules/nestjs/error-handling/references/exception-filters.md +152 -0
  214. package/rules/nestjs/file-uploads/SKILL.md +35 -0
  215. package/rules/nestjs/file-uploads/references/REFERENCE.md +13 -0
  216. package/rules/nestjs/file-uploads/references/upload-patterns.md +125 -0
  217. package/rules/nestjs/observability/SKILL.md +39 -0
  218. package/rules/nestjs/observability/references/REFERENCE.md +13 -0
  219. package/rules/nestjs/observability/references/logging-metrics.md +175 -0
  220. package/rules/nestjs/performance/SKILL.md +60 -0
  221. package/rules/nestjs/performance/references/REFERENCE.md +13 -0
  222. package/rules/nestjs/performance/references/performance-patterns.md +107 -0
  223. package/rules/nestjs/real-time/SKILL.md +45 -0
  224. package/rules/nestjs/real-time/references/REFERENCE.md +13 -0
  225. package/rules/nestjs/real-time/references/websocket-patterns.md +121 -0
  226. package/rules/nestjs/scheduling/SKILL.md +39 -0
  227. package/rules/nestjs/scheduling/references/REFERENCE.md +13 -0
  228. package/rules/nestjs/scheduling/references/scheduling-patterns.md +137 -0
  229. package/rules/nestjs/search/SKILL.md +41 -0
  230. package/rules/nestjs/search/references/REFERENCE.md +13 -0
  231. package/rules/nestjs/search/references/search-patterns.md +137 -0
  232. package/rules/nestjs/security/SKILL.md +87 -0
  233. package/rules/nestjs/security/references/REFERENCE.md +14 -0
  234. package/rules/nestjs/security/references/authentication.md +151 -0
  235. package/rules/nestjs/testing/SKILL.md +40 -0
  236. package/rules/nestjs/testing/references/REFERENCE.md +14 -0
  237. package/rules/nestjs/testing/references/unit-testing.md +179 -0
  238. package/rules/nestjs/transport/SKILL.md +45 -0
  239. package/rules/nestjs/transport/references/REFERENCE.md +13 -0
  240. package/rules/nestjs/transport/references/microservices-patterns.md +170 -0
  241. package/rules/nextjs/app-router/SKILL.md +46 -0
  242. package/rules/nextjs/app-router/references/REFERENCE.md +14 -0
  243. package/rules/nextjs/app-router/references/routing-patterns.md +182 -0
  244. package/rules/nextjs/architecture/SKILL.md +44 -0
  245. package/rules/nextjs/architecture/references/fsd-structure.md +77 -0
  246. package/rules/nextjs/authentication/SKILL.md +29 -0
  247. package/rules/nextjs/authentication/references/auth-implementation.md +73 -0
  248. package/rules/nextjs/caching/SKILL.md +66 -0
  249. package/rules/nextjs/caching/references/REFERENCE.md +13 -0
  250. package/rules/nextjs/caching/references/cache-strategies.md +168 -0
  251. package/rules/nextjs/data-access-layer/SKILL.md +33 -0
  252. package/rules/nextjs/data-access-layer/references/patterns.md +66 -0
  253. package/rules/nextjs/data-fetching/SKILL.md +59 -0
  254. package/rules/nextjs/data-fetching/references/REFERENCE.md +13 -0
  255. package/rules/nextjs/data-fetching/references/fetch-patterns.md +160 -0
  256. package/rules/nextjs/internationalization/SKILL.md +105 -0
  257. package/rules/nextjs/internationalization/references/REFERENCE.md +13 -0
  258. package/rules/nextjs/internationalization/references/i18n-patterns.md +180 -0
  259. package/rules/nextjs/optimization/SKILL.md +64 -0
  260. package/rules/nextjs/optimization/references/REFERENCE.md +13 -0
  261. package/rules/nextjs/optimization/references/optimization-patterns.md +190 -0
  262. package/rules/nextjs/rendering/SKILL.md +91 -0
  263. package/rules/nextjs/rendering/references/REFERENCE.md +13 -0
  264. package/rules/nextjs/rendering/references/rendering-modes.md +163 -0
  265. package/rules/nextjs/server-actions/SKILL.md +46 -0
  266. package/rules/nextjs/server-actions/references/REFERENCE.md +13 -0
  267. package/rules/nextjs/server-actions/references/action-patterns.md +188 -0
  268. package/rules/nextjs/server-components/SKILL.md +52 -0
  269. package/rules/nextjs/server-components/references/REFERENCE.md +13 -0
  270. package/rules/nextjs/server-components/references/component-patterns.md +175 -0
  271. package/rules/nextjs/state-management/SKILL.md +73 -0
  272. package/rules/nextjs/state-management/references/REFERENCE.md +13 -0
  273. package/rules/nextjs/state-management/references/state-patterns.md +218 -0
  274. package/rules/nextjs/styling/SKILL.md +31 -0
  275. package/rules/nextjs/styling/references/implementation.md +56 -0
  276. package/rules/react/component-patterns/SKILL.md +66 -0
  277. package/rules/react/component-patterns/references/REFERENCE.md +126 -0
  278. package/rules/react/hooks/SKILL.md +60 -0
  279. package/rules/react/hooks/references/REFERENCE.md +132 -0
  280. package/rules/react/hooks.rule.md +79 -0
  281. package/rules/react/performance/SKILL.md +69 -0
  282. package/rules/react/performance/references/REFERENCE.md +143 -0
  283. package/rules/react/security/SKILL.md +46 -0
  284. package/rules/react/security/references/REFERENCE.md +170 -0
  285. package/rules/react/state-management/SKILL.md +56 -0
  286. package/rules/react/state-management/references/REFERENCE.md +137 -0
  287. package/rules/react/testing/SKILL.md +45 -0
  288. package/rules/react/testing/references/REFERENCE.md +149 -0
  289. package/rules/react/tooling/SKILL.md +39 -0
  290. package/rules/react/typescript/SKILL.md +53 -0
  291. package/rules/rust/actix-web/SKILL.md +160 -0
  292. package/rules/rust/actix-web/references/REFERENCE.md +13 -0
  293. package/rules/rust/actix-web/references/handler-patterns.md +198 -0
  294. package/rules/rust/async-graphql/SKILL.md +228 -0
  295. package/rules/rust/async-graphql/references/REFERENCE.md +13 -0
  296. package/rules/rust/async-graphql/references/schema-patterns.md +215 -0
  297. package/rules/rust/axum/SKILL.md +161 -0
  298. package/rules/rust/axum/references/REFERENCE.md +14 -0
  299. package/rules/rust/axum/references/handler-patterns.md +97 -0
  300. package/rules/rust/bevy/SKILL.md +206 -0
  301. package/rules/rust/bevy/references/REFERENCE.md +13 -0
  302. package/rules/rust/bevy/references/ecs-patterns.md +226 -0
  303. package/rules/rust/clap/SKILL.md +217 -0
  304. package/rules/rust/clap/references/REFERENCE.md +13 -0
  305. package/rules/rust/clap/references/derive-patterns.md +205 -0
  306. package/rules/rust/core/SKILL.md +154 -0
  307. package/rules/rust/core/references/REFERENCE.md +14 -0
  308. package/rules/rust/core/references/error-handling.md +92 -0
  309. package/rules/rust/diesel-orm/SKILL.md +176 -0
  310. package/rules/rust/diesel-orm/references/REFERENCE.md +13 -0
  311. package/rules/rust/diesel-orm/references/schema-patterns.md +206 -0
  312. package/rules/rust/rocket/SKILL.md +182 -0
  313. package/rules/rust/rocket/references/REFERENCE.md +13 -0
  314. package/rules/rust/rocket/references/handler-patterns.md +209 -0
  315. package/rules/rust/sea-orm/SKILL.md +230 -0
  316. package/rules/rust/sea-orm/references/REFERENCE.md +13 -0
  317. package/rules/rust/sea-orm/references/entity-patterns.md +221 -0
  318. package/rules/rust/serde-serialization/SKILL.md +150 -0
  319. package/rules/rust/serde-serialization/references/REFERENCE.md +13 -0
  320. package/rules/rust/serde-serialization/references/serialization-patterns.md +199 -0
  321. package/rules/rust/sqlx-database/SKILL.md +140 -0
  322. package/rules/rust/sqlx-database/references/REFERENCE.md +13 -0
  323. package/rules/rust/sqlx-database/references/query-patterns.md +210 -0
  324. package/rules/rust/tauri/SKILL.md +180 -0
  325. package/rules/rust/tauri/references/REFERENCE.md +13 -0
  326. package/rules/rust/tauri/references/command-patterns.md +209 -0
  327. package/rules/rust/tokio-runtime/SKILL.md +167 -0
  328. package/rules/rust/tokio-runtime/references/REFERENCE.md +14 -0
  329. package/rules/rust/tokio-runtime/references/async-patterns.md +137 -0
  330. package/rules/rust/tokio-runtime/references/synchronization.md +152 -0
  331. package/rules/rust/tonic/SKILL.md +231 -0
  332. package/rules/rust/tonic/references/REFERENCE.md +13 -0
  333. package/rules/rust/tonic/references/service-patterns.md +213 -0
  334. package/rules/rust/tracing/SKILL.md +214 -0
  335. package/rules/rust/tracing/references/REFERENCE.md +13 -0
  336. package/rules/rust/tracing/references/instrumentation.md +187 -0
  337. package/rules/typescript/best-practices/SKILL.md +108 -0
  338. package/rules/typescript/best-practices/references/REFERENCE.md +68 -0
  339. package/rules/typescript/language/SKILL.md +72 -0
  340. package/rules/typescript/language/references/REFERENCE.md +67 -0
  341. package/rules/typescript/patterns.rule.md +85 -0
  342. package/rules/typescript/security/SKILL.md +59 -0
  343. package/rules/typescript/security/references/REFERENCE.md +113 -0
  344. package/rules/typescript/tooling/SKILL.md +52 -0
  345. package/rules/typescript/tooling/references/REFERENCE.md +110 -0
package/cli/index.js CHANGED
@@ -17,6 +17,7 @@ const { initProject, uninstallProject } = require('./init');
17
17
  const { updateProject, showStatus } = require('./update');
18
18
  const { detectProjectType, getRulesForTypes, printDetectionResults } = require('./detect');
19
19
  const { validatePath } = require('./utils');
20
+ const { listRules, addRules, removeRules } = require('./rules');
20
21
 
21
22
  // Legacy imports for backwards compatibility (will be deprecated)
22
23
  let legacyInstall = null;
@@ -38,6 +39,8 @@ function parseArgs(args) {
38
39
  update: false,
39
40
  clean: false,
40
41
  help: false,
42
+ installed: false,
43
+ ruleArgs: [],
41
44
  // Legacy options (deprecated)
42
45
  tool: null,
43
46
  minimal: false,
@@ -57,6 +60,8 @@ function parseArgs(args) {
57
60
  options.update = true;
58
61
  } else if (arg === '--clean' || arg === '-c') {
59
62
  options.clean = true;
63
+ } else if (arg === '--installed' || arg === '-i') {
64
+ options.installed = true;
60
65
  } else if (arg === '--status' || arg === '-s') {
61
66
  options.command = 'status';
62
67
  } else if (arg.startsWith('--path=')) {
@@ -65,21 +70,15 @@ function parseArgs(args) {
65
70
  // Handle legacy options for backwards compatibility
66
71
  if (arg === '--minimal' || arg === '-m') options.minimal = true;
67
72
  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
73
  if (arg.startsWith('--category=')) {
71
74
  const cats = arg.split('=')[1].split(',').map(c => c.trim());
72
75
  options.categories.push(...cats);
73
76
  }
74
77
  } else if (!options.command) {
75
78
  options.command = 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
- }
79
+ } else {
80
+ // Additional args (for add/remove commands)
81
+ options.ruleArgs.push(arg);
83
82
  }
84
83
  }
85
84
 
@@ -104,6 +103,15 @@ COMMANDS:
104
103
  detect Show detected technologies for current project
105
104
  Useful to see what devkit will install.
106
105
 
106
+ rules List all available rules
107
+ Use --installed to show only installed rules.
108
+
109
+ add <rule> Add rules manually (space-separated)
110
+ Example: devkit add golang docker
111
+
112
+ remove <rule> Remove rules from project
113
+ Example: devkit remove flutter
114
+
107
115
  status Show installation status
108
116
 
109
117
  uninstall Remove devkit from current project
@@ -115,10 +123,11 @@ COMMANDS:
115
123
  version Show version
116
124
 
117
125
  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
126
+ --force, -f Force overwrite existing installation
127
+ --clean, -c Remove rules for technologies no longer detected (with update)
128
+ --installed, -i Show only installed rules (with rules command)
129
+ --path=DIR Specify project directory (default: current directory)
130
+ --help, -h Show this help
122
131
 
123
132
  EXAMPLES:
124
133
  devkit init # Initialize in current project
@@ -126,6 +135,10 @@ EXAMPLES:
126
135
  devkit update # Update and re-detect technologies
127
136
  devkit update --clean # Update and remove old rules
128
137
  devkit detect # Show what would be detected
138
+ devkit rules # List all available rules
139
+ devkit rules --installed # Show installed rules
140
+ devkit add golang docker # Add golang and docker rules
141
+ devkit remove flutter # Remove flutter rule
129
142
  devkit status # Show current installation
130
143
  devkit uninstall # Remove from current project
131
144
 
@@ -211,6 +224,39 @@ const commands = {
211
224
  });
212
225
  },
213
226
 
227
+ // List available rules
228
+ rules: (options) => {
229
+ const projectPath = validatePath(options.path) || process.cwd();
230
+ return listRules({
231
+ path: projectPath,
232
+ installed: options.installed
233
+ });
234
+ },
235
+
236
+ // Add rules manually
237
+ add: (options) => {
238
+ const projectPath = validatePath(options.path) || process.cwd();
239
+ if (options.ruleArgs.length === 0) {
240
+ console.log('\n Usage: devkit add <rule> [rule2 ...]');
241
+ console.log(' Example: devkit add golang docker\n');
242
+ console.log(' Run "devkit rules" to see available rules.\n');
243
+ return { success: false, reason: 'no_rules' };
244
+ }
245
+ return addRules(options.ruleArgs, { path: projectPath });
246
+ },
247
+
248
+ // Remove rules
249
+ remove: (options) => {
250
+ const projectPath = validatePath(options.path) || process.cwd();
251
+ if (options.ruleArgs.length === 0) {
252
+ console.log('\n Usage: devkit remove <rule> [rule2 ...]');
253
+ console.log(' Example: devkit remove flutter\n');
254
+ console.log(' Run "devkit rules --installed" to see installed rules.\n');
255
+ return { success: false, reason: 'no_rules' };
256
+ }
257
+ return removeRules(options.ruleArgs, { path: projectPath });
258
+ },
259
+
214
260
  // List skills (from skills-index.json)
215
261
  list: () => {
216
262
  const indexPath = path.join(__dirname, '..', 'skills-index.json');
package/cli/rules.js ADDED
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Rules Management
3
+ *
4
+ * Add/remove rules manually for projects where auto-detection
5
+ * doesn't cover all needs.
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+ const { copyDir } = require('./utils');
11
+
12
+ const PACKAGE_ROOT = path.join(__dirname, '..');
13
+
14
+ /**
15
+ * Get all available rules from the rules/ directory
16
+ */
17
+ function getAvailableRules() {
18
+ const rulesDir = path.join(PACKAGE_ROOT, 'rules');
19
+
20
+ if (!fs.existsSync(rulesDir)) {
21
+ return [];
22
+ }
23
+
24
+ return fs.readdirSync(rulesDir).filter(item => {
25
+ const itemPath = path.join(rulesDir, item);
26
+ return fs.statSync(itemPath).isDirectory() && !item.startsWith('.');
27
+ });
28
+ }
29
+
30
+ /**
31
+ * Get installed rules from devkit.json
32
+ */
33
+ function getInstalledRules(projectDir) {
34
+ const configPath = path.join(projectDir, '.claude', 'devkit.json');
35
+
36
+ if (!fs.existsSync(configPath)) {
37
+ return { rules: [], manualRules: [] };
38
+ }
39
+
40
+ try {
41
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
42
+ return {
43
+ rules: config.installedRules || [],
44
+ manualRules: config.manualRules || [],
45
+ detectedTypes: config.detectedTypes || []
46
+ };
47
+ } catch (e) {
48
+ return { rules: [], manualRules: [] };
49
+ }
50
+ }
51
+
52
+ /**
53
+ * Update devkit.json with new rules
54
+ */
55
+ function updateDevkitConfig(projectDir, updates) {
56
+ const configPath = path.join(projectDir, '.claude', 'devkit.json');
57
+
58
+ if (!fs.existsSync(configPath)) {
59
+ console.log(' No devkit.json found. Run "devkit init" first.');
60
+ return false;
61
+ }
62
+
63
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
64
+ Object.assign(config, updates, { updatedAt: new Date().toISOString() });
65
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
66
+ return true;
67
+ }
68
+
69
+ /**
70
+ * List all available rules
71
+ */
72
+ function listRules(options = {}) {
73
+ const projectDir = options.path || process.cwd();
74
+ const available = getAvailableRules();
75
+ const { rules: installed, manualRules } = getInstalledRules(projectDir);
76
+ const allInstalled = [...new Set([...installed, ...manualRules])];
77
+
78
+ console.log('\n' + '='.repeat(50));
79
+ console.log(' AVAILABLE RULES');
80
+ console.log('='.repeat(50));
81
+
82
+ if (options.installed) {
83
+ // Show only installed rules
84
+ console.log('\nInstalled in this project:');
85
+ if (allInstalled.length === 0) {
86
+ console.log(' (none)');
87
+ } else {
88
+ allInstalled.forEach(rule => {
89
+ const isManual = manualRules.includes(rule);
90
+ console.log(` - ${rule}${isManual ? ' (manual)' : ' (auto-detected)'}`);
91
+ });
92
+ }
93
+ } else {
94
+ // Show all available rules
95
+ console.log(`\nTotal: ${available.length} rules\n`);
96
+ available.forEach(rule => {
97
+ const isInstalled = allInstalled.includes(rule);
98
+ const marker = isInstalled ? '[x]' : '[ ]';
99
+ console.log(` ${marker} ${rule}`);
100
+ });
101
+
102
+ console.log('\n [x] = installed in current project');
103
+ }
104
+
105
+ console.log('');
106
+ return { available, installed: allInstalled };
107
+ }
108
+
109
+ /**
110
+ * Add rules to project
111
+ */
112
+ function addRules(ruleNames, options = {}) {
113
+ const projectDir = options.path || process.cwd();
114
+ const claudeDir = path.join(projectDir, '.claude');
115
+
116
+ if (!fs.existsSync(claudeDir)) {
117
+ console.log('\n No .claude/ folder found. Run "devkit init" first.\n');
118
+ return { success: false, reason: 'not_initialized' };
119
+ }
120
+
121
+ const available = getAvailableRules();
122
+ const { rules: autoRules, manualRules = [] } = getInstalledRules(projectDir);
123
+ const allInstalled = [...new Set([...autoRules, ...manualRules])];
124
+
125
+ console.log('\n' + '='.repeat(50));
126
+ console.log(' ADD RULES');
127
+ console.log('='.repeat(50));
128
+
129
+ const added = [];
130
+ const skipped = [];
131
+ const notFound = [];
132
+
133
+ for (const ruleName of ruleNames) {
134
+ const rule = ruleName.toLowerCase();
135
+
136
+ if (!available.includes(rule)) {
137
+ notFound.push(rule);
138
+ console.log(` [!] ${rule} - not found`);
139
+ continue;
140
+ }
141
+
142
+ if (allInstalled.includes(rule)) {
143
+ skipped.push(rule);
144
+ console.log(` [-] ${rule} - already installed`);
145
+ continue;
146
+ }
147
+
148
+ // Copy rule files
149
+ const srcDir = path.join(PACKAGE_ROOT, 'rules', rule);
150
+ const destDir = path.join(claudeDir, 'rules', rule);
151
+
152
+ if (fs.existsSync(srcDir)) {
153
+ const count = copyDir(srcDir, destDir);
154
+ added.push(rule);
155
+ console.log(` [+] ${rule} - added (${count} files)`);
156
+ }
157
+ }
158
+
159
+ // Update devkit.json
160
+ if (added.length > 0) {
161
+ const newManualRules = [...new Set([...manualRules, ...added])];
162
+ updateDevkitConfig(projectDir, { manualRules: newManualRules });
163
+ }
164
+
165
+ // Summary
166
+ console.log('\n' + '-'.repeat(50));
167
+ if (added.length > 0) {
168
+ console.log(` Added: ${added.join(', ')}`);
169
+ }
170
+ if (skipped.length > 0) {
171
+ console.log(` Skipped (already installed): ${skipped.join(', ')}`);
172
+ }
173
+ if (notFound.length > 0) {
174
+ console.log(` Not found: ${notFound.join(', ')}`);
175
+ console.log(` Run "devkit rules" to see available rules.`);
176
+ }
177
+ console.log('');
178
+
179
+ return { success: true, added, skipped, notFound };
180
+ }
181
+
182
+ /**
183
+ * Remove rules from project
184
+ */
185
+ function removeRules(ruleNames, options = {}) {
186
+ const projectDir = options.path || process.cwd();
187
+ const claudeDir = path.join(projectDir, '.claude');
188
+
189
+ if (!fs.existsSync(claudeDir)) {
190
+ console.log('\n No .claude/ folder found.\n');
191
+ return { success: false, reason: 'not_initialized' };
192
+ }
193
+
194
+ const { rules: autoRules, manualRules = [] } = getInstalledRules(projectDir);
195
+
196
+ console.log('\n' + '='.repeat(50));
197
+ console.log(' REMOVE RULES');
198
+ console.log('='.repeat(50));
199
+
200
+ const removed = [];
201
+ const notInstalled = [];
202
+
203
+ for (const ruleName of ruleNames) {
204
+ const rule = ruleName.toLowerCase();
205
+ const ruleDir = path.join(claudeDir, 'rules', rule);
206
+
207
+ if (!fs.existsSync(ruleDir)) {
208
+ notInstalled.push(rule);
209
+ console.log(` [-] ${rule} - not installed`);
210
+ continue;
211
+ }
212
+
213
+ // Remove rule directory
214
+ fs.rmSync(ruleDir, { recursive: true, force: true });
215
+ removed.push(rule);
216
+ console.log(` [x] ${rule} - removed`);
217
+ }
218
+
219
+ // Update devkit.json
220
+ if (removed.length > 0) {
221
+ const newAutoRules = autoRules.filter(r => !removed.includes(r));
222
+ const newManualRules = manualRules.filter(r => !removed.includes(r));
223
+ updateDevkitConfig(projectDir, {
224
+ installedRules: newAutoRules,
225
+ manualRules: newManualRules
226
+ });
227
+ }
228
+
229
+ // Summary
230
+ console.log('\n' + '-'.repeat(50));
231
+ if (removed.length > 0) {
232
+ console.log(` Removed: ${removed.join(', ')}`);
233
+ }
234
+ if (notInstalled.length > 0) {
235
+ console.log(` Not installed: ${notInstalled.join(', ')}`);
236
+ }
237
+ console.log('');
238
+
239
+ return { success: true, removed, notInstalled };
240
+ }
241
+
242
+ module.exports = {
243
+ getAvailableRules,
244
+ getInstalledRules,
245
+ listRules,
246
+ addRules,
247
+ removeRules
248
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngxtm/devkit",
3
- "version": "3.3.0",
3
+ "version": "3.4.1",
4
4
  "description": "Per-project AI skills with smart tech detection - lightweight and context-optimized",
5
5
  "main": "cli/index.js",
6
6
  "bin": {
@@ -20,6 +20,7 @@
20
20
  "merged-commands/",
21
21
  "templates/",
22
22
  "skills/",
23
+ "rules/",
23
24
  "scripts/merge-commands.js",
24
25
  "scripts/organize-rules.js",
25
26
  "scripts/generate-index.js",
@@ -0,0 +1,141 @@
1
+ # Agent Skills Registry
2
+
3
+ This directory contains the source of truth for all AI agent skills. Skills are organized by **Category** (Language or Framework) and then by **Domain**.
4
+
5
+ ## 📂 Structure
6
+
7
+ Each skill must follow the standard directory structure:
8
+ `skills/{category}/{skill-name}/SKILL.md`
9
+
10
+ ## 🛠 Active Categories
11
+
12
+ ### 🎯 Flutter (Framework)
13
+
14
+ High-density standards for modern Flutter development.
15
+
16
+ - [**Layer-based Clean Architecture**](flutter/layer-based-clean-architecture/SKILL.md) (P0) - Dependency flow & modularity.
17
+ - [**BLoC State Management**](flutter/bloc-state-management/SKILL.md) (P0) - Predictable state flows.
18
+ - [**Security**](flutter/security/SKILL.md) (P0) - OWASP & data safety.
19
+ - [**Feature-based Clean Architecture**](flutter/feature-based-clean-architecture/SKILL.md) (P1) - Scalable directory structures.
20
+ - [**Idiomatic Flutter**](flutter/idiomatic-flutter/SKILL.md) (P1) - Modern layout & composition.
21
+ - [**Performance**](flutter/performance/SKILL.md) (P1) - 60fps & memory optimization.
22
+ - [**Widgets**](flutter/widgets/SKILL.md) (P1) - Reusable components.
23
+ - [**Error Handling**](flutter/error-handling/SKILL.md) (P1) - Functional error handling.
24
+ - [**Retrofit Networking**](flutter/retrofit-networking/SKILL.md) (P1) - API client standards.
25
+ - [**Dependency Injection**](flutter/dependency-injection/SKILL.md) (P1) - GetIt & Provider patterns.
26
+ - [**CI/CD**](flutter/cicd/SKILL.md) (P1) - GitHub Actions, Fastlane, Automation.
27
+ - [**Testing**](flutter/testing/SKILL.md) (P1) - Unit, Widget & Integration Strategies.
28
+ - [**AutoRoute Navigation**](flutter/auto-route-navigation/SKILL.md) (P2) - Type-safe routing.
29
+ - [**GoRouter Navigation**](flutter/go-router-navigation/SKILL.md) (P2) - URI-based routing.
30
+
31
+ ### 🔷 Dart (Language)
32
+
33
+ Core language idioms and patterns.
34
+
35
+ - [**Language Patterns**](dart/language/SKILL.md) (P0) - Records, Patterns, Sealed classes.
36
+ - [**Best Practices**](dart/best-practices/SKILL.md) (P1) - Scoping, Imports, Config.
37
+ - [**Tooling**](dart/tooling/SKILL.md) (P1) - Linting, Formatting, Analysis.
38
+
39
+ ### 🔷 TypeScript (Language)
40
+
41
+ Modern TypeScript standards for type-safe development.
42
+
43
+ - [**Language Patterns**](typescript/language/SKILL.md) (P0) - Types, Generics, Type Guards.
44
+ - [**Security**](typescript/security/SKILL.md) (P0) - Input Validation, Auth, Secrets.
45
+ - [**Best Practices**](typescript/best-practices/SKILL.md) (P1) - Naming, Modules, Conventions.
46
+ - [**Tooling**](typescript/tooling/SKILL.md) (P1) - ESLint, Testing, Build Tools.
47
+
48
+ ### 🟨 JavaScript (Language)
49
+
50
+ Modern JavaScript (ES2022+) patterns.
51
+
52
+ - [**Language Patterns**](javascript/language/SKILL.md) (P0) - Modern Syntax, Async/Await.
53
+ - [**Best Practices**](javascript/best-practices/SKILL.md) (P1) - Conventions, Error Handling.
54
+ - [**Tooling**](javascript/tooling/SKILL.md) (P1) - ESLint, Jest, Build Tools.
55
+
56
+ ### ⚛️ React (Framework)
57
+
58
+ Modern React development patterns.
59
+
60
+ - [**Component Patterns**](react/component-patterns/SKILL.md) (P0) - Function Components, Composition.
61
+ - [**State Management**](react/state-management/SKILL.md) (P0) - useState, Context, Zustand.
62
+ - [**TypeScript**](react/typescript/SKILL.md) (P0) - React-specific Types.
63
+ - [**Security**](react/security/SKILL.md) (P0) - XSS Prevention, Auth Patterns.
64
+ - [**Hooks**](react/hooks/SKILL.md) (P1) - Custom Hooks, Best Practices.
65
+ - [**Performance**](react/performance/SKILL.md) (P1) - Memoization, Code Splitting.
66
+ - [**Tooling**](react/tooling/SKILL.md) (P1) - Debugging & Profiling.
67
+ - [**Testing**](react/testing/SKILL.md) (P2) - React Testing Library, Jest.
68
+
69
+ ### 🦁 NestJS (Framework)
70
+
71
+ Enterprise-grade Node.js backend development.
72
+
73
+ - [**Architecture**](nestjs/architecture/SKILL.md) (P0) - Modules, DI, Scalability.
74
+ - [**Controllers & Services**](nestjs/controllers-services/SKILL.md) (P0) - Layer separation standards.
75
+ - [**Database**](nestjs/database/SKILL.md) (P0) - TypeORM, Prisma, Mongoose patterns.
76
+ - [**Security**](nestjs/security/SKILL.md) (P0) - Auth, Guards, Headers.
77
+ - [**Configuration**](nestjs/configuration/SKILL.md) (P1) - Environment management.
78
+ - [**Error Handling**](nestjs/error-handling/SKILL.md) (P1) - Global filters.
79
+ - [**Performance**](nestjs/performance/SKILL.md) (P1) - Fastify, Caching.
80
+ - [**Testing**](nestjs/testing/SKILL.md) (P2) - Unit & E2E strategies.
81
+
82
+ ### ▲ Next.js (Framework)
83
+
84
+ Modern fullstack React framework standards (App Router).
85
+
86
+ - [**App Router**](nextjs/app-router/SKILL.md) (P0) - Routing conventions, Layouts, Loading.
87
+ - [**Server Components**](nextjs/server-components/SKILL.md) (P0) - RSC patterns, "use client" boundaries.
88
+ - [**Rendering**](nextjs/rendering/SKILL.md) (P0) - SSG, SSR, PPR, Streaming.
89
+ - [**Data Fetching**](nextjs/data-fetching/SKILL.md) (P0) - Extended fetch, Caching control.
90
+ - [**Authentication**](nextjs/authentication/SKILL.md) (P0) - Auth.js / Middleware patterns.
91
+ - [**Data Access Layer**](nextjs/data-access-layer/SKILL.md) (P1) - DAL patterns & DTOs.
92
+ - [**Caching**](nextjs/caching/SKILL.md) (P1) - Request & Data caching layers.
93
+ - [**Styling**](nextjs/styling/SKILL.md) (P1) - Tailwind, Fonts, CSS-in-JS constraints.
94
+ - [**Optimization**](nextjs/optimization/SKILL.md) (P1) - Images, Scripts, Core Web Vitals.
95
+ - [**Server Actions**](nextjs/server-actions/SKILL.md) (P1) - Mutations & Forms.
96
+ - [**Internationalization**](nextjs/internationalization/SKILL.md) (P2) - i18n routing.
97
+ - [**Architecture**](nextjs/architecture/SKILL.md) (P2) - Feature-Sliced Design (FSD).
98
+ - [**State Management**](nextjs/state-management/SKILL.md) (P2) - URL-state, avoiding global stores.
99
+
100
+ ### ☕ Java (Language & Frameworks)
101
+
102
+ Modern Java development with Spring Boot, Quarkus, and Micronaut.
103
+
104
+ - [**Core Language**](java/java-core-language/SKILL.md) (P0) - Records, Sealed Classes, Pattern Matching.
105
+ - [**Collections & Streams**](java/java-collections-streams/SKILL.md) (P0) - Stream API, Collectors, Optional.
106
+ - [**Concurrency**](java/java-concurrency/SKILL.md) (P0) - Executors, CompletableFuture, Virtual Threads.
107
+ - [**Project Structure**](java/java-project-structure/SKILL.md) (P0) - Maven/Gradle layout, Modules.
108
+ - [**Spring Boot Architecture**](java/spring-boot-architecture/SKILL.md) (P0) - Auto-configuration, Profiles.
109
+ - [**Spring Boot Web**](java/spring-boot-web/SKILL.md) (P0) - REST Controllers, Validation.
110
+ - [**Spring Security**](java/spring-security/SKILL.md) (P0) - JWT, OAuth2, Method Security.
111
+ - [**Spring Data JPA**](java/spring-data-jpa/SKILL.md) (P0) - Entities, Repositories, Transactions.
112
+ - [**Spring Batch**](java/spring-batch/SKILL.md) (P1) - Job Configuration, Chunk Processing.
113
+ - [**Spring Cloud**](java/spring-cloud/SKILL.md) (P1) - Service Discovery, Circuit Breakers.
114
+ - [**Quarkus Core**](java/quarkus-core/SKILL.md) (P1) - CDI, Configuration, Dev Mode.
115
+ - [**Quarkus Reactive**](java/quarkus-reactive/SKILL.md) (P1) - Mutiny, Reactive Routes.
116
+ - [**Micronaut Core**](java/micronaut-core/SKILL.md) (P1) - Compile-time DI, Configuration.
117
+ - [**Micronaut Reactive**](java/micronaut-reactive/SKILL.md) (P1) - Reactive Types, HTTP Clients.
118
+ - [**GraalVM Native**](java/graalvm-native/SKILL.md) (P1) - Native Image, Reflection Config.
119
+ - [**Maven Build**](java/build-maven/SKILL.md) (P2) - POM, Dependency Management.
120
+ - [**Gradle Build**](java/build-gradle/SKILL.md) (P2) - Kotlin DSL, Tasks.
121
+ - [**Testing (JUnit & Mockito)**](java/testing-junit-mockito/SKILL.md) (P2) - JUnit 5, Test Slices.
122
+
123
+ ### 🚀 Coming Soon
124
+
125
+ - **Angular** (Framework)
126
+ - **Kotlin** (Language)
127
+
128
+ ---
129
+
130
+ ## ✍️ Contribution Guide
131
+
132
+ To add or update a skill:
133
+
134
+ 1. **Format**: Ensure the `SKILL.md` uses the high-density format (YAML frontmatter + concise Markdown).
135
+ 2. **Progressive Disclosure**: Move large code samples or templates to `references/REFERENCE.md` inside the skill folder. This keeps the primary context small and token-efficient.
136
+ 3. **Naming**: Category folders must be lowercase. Skill folders use `kebab-case`.
137
+ 4. **Discovery**: Ensure the `triggers` in the YAML frontmatter are accurate for the AI agent to pick it up.
138
+ 5. **Priority**:
139
+ - **P0**: Foundational (Architecture, Types, Security).
140
+ - **P1**: Operational (Performance, Idioms, UI).
141
+ - **P2**: Maintenance (Testing, Tooling, Docs).
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: Dart Best Practices
3
+ description: General purity standards for Dart development.
4
+ metadata:
5
+ labels: [dart, clean-code]
6
+ triggers:
7
+ files: ['**/*.dart']
8
+ keywords: [import, final, const, var, global]
9
+ ---
10
+
11
+ # Dart Best Practices (P1)
12
+
13
+ - **Scoping**:
14
+ - No global variables.
15
+ - Private globals (if required) must start with `_`.
16
+ - **Immutability**: Use `const` > `final` > `var`.
17
+ - **Config**: Use `--dart-define` for secrets. Never hardcode API keys.
18
+ - **Naming**: Follow [effective-dart](https://dart.dev/guides/language/effective-dart) (PascalCase classes, camelCase members).
19
+
20
+ ```dart
21
+ import 'models/user.dart'; // Good
22
+ import 'package:app/models/user.dart'; // Avoid local absolute
23
+ ```
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: Dart Language Patterns
3
+ description: Modern Dart standards (3.x+) including null safety and patterns.
4
+ metadata:
5
+ labels: [dart, language, idioms]
6
+ triggers:
7
+ files: ['**/*.dart']
8
+ keywords: [sealed, record, switch, pattern, extension, final, late, async, await]
9
+ ---
10
+
11
+ # Dart Language Patterns
12
+
13
+ ## **Priority: P0 (CRITICAL)**
14
+
15
+ Modern Dart standards for safety, performance, and readability.
16
+
17
+ ## Implementation Guidelines
18
+
19
+ - **Null Safety**: Avoid `!`. Use `?.`, `??`, or short-circuiting. Use `late` only if necessary.
20
+ - **Immutability**: Use `final` for all variables. Use `@freezed` for data classes.
21
+ - **Pattern Matching (3.x)**: Use `switch (value)` with patterns and destructuring.
22
+ - **Records**: Use Records (e.g., `(String, int)`) for returning multiple values.
23
+ - **Sealed Classes**: Use `sealed class` for exhaustive state handling in domain logic.
24
+ - **Extensions**: Use `extension` to add utility methods to third-party types.
25
+ - **Wildcards (3.7+)**: Use `_` for unused variables in declarations and patterns.
26
+ - **Tear-offs**: Prefer using tear-offs (e.g., `list.forEach(print)`) over anonymous lambdas (e.g., `list.forEach((e) => print(e))`).
27
+ - **Asynchrony**: Prefer `async/await` over raw `Future.then`. Use `unawaited` for fire-and-forget logic if necessary.
28
+ - **Collections**: Use `collection-if`, `collection-for`, and spread operators `...`.
29
+
30
+ ## Anti-Patterns
31
+
32
+ - **No ! Operator**: Do not use the bang operator `!` unless you can prove the value is non-null via `if` or `assert`.
33
+ - **No var for members**: Do not use `var` for class members; use `final` or explicit types.
34
+ - **No logic in constructors**: Do not perform complex calculations or async work inside constructors.
35
+
36
+ ## Code
37
+
38
+ ```dart
39
+ // Sealed class and Switch expression
40
+ sealed class Result {}
41
+ class Success extends Result { final String data; Success(this.data); }
42
+ class Failure extends Result {}
43
+
44
+ String message(Result r) => switch (r) {
45
+ Success(data: var d) => "Got $d",
46
+ Failure() => "Error",
47
+ };
48
+ ```
49
+
50
+ ## Related Topics
51
+
52
+ feature-based-clean-architecture | tooling
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: Dart Tooling & CI
3
+ description: Standards for analysis, linting, formatting, and automation.
4
+ metadata:
5
+ labels: [tooling, linting, automation]
6
+ triggers:
7
+ files: ['analysis_options.yaml', 'pubspec.yaml', 'build.yaml']
8
+ keywords: [analysis_options, lints, format, build_runner, cider, husky]
9
+ ---
10
+
11
+ # Tooling & CI
12
+
13
+ ## **Priority: P1 (HIGH)**
14
+
15
+ Standards for code quality, formatting, and generation.
16
+
17
+ ## Implementation Guidelines
18
+
19
+ - **Linter**: Use `analysis_options.yaml`. Enforce `always_use_package_imports` and `require_trailing_commas`.
20
+ - **Formatting**: Use `dart format . --line-length 80`. Run on every commit.
21
+ - **DCM**: Use `dart_code_metrics` for complexity checks (Max cyclomatic complexity: 15).
22
+ - **Build Runner**: Always use `--delete-conflicting-outputs` with code generation.
23
+ - **CI Pipeline**: All PRs MUST pass `analyze`, `format`, and `test` steps.
24
+ - **Imports**: Group imports: `dart:`, `package:`, then relative.
25
+ - **Documentation**: Use `///` for public APIs. Link symbols using `[Class]`.
26
+
27
+ ## Code
28
+
29
+ ```yaml
30
+ # analysis_options.yaml
31
+ analyzer:
32
+ errors:
33
+ todo: ignore
34
+ missing_required_param: error
35
+ linter:
36
+ rules:
37
+ - prefer_single_quotes
38
+ - unawaited_futures
39
+ ```
40
+
41
+ ## Related Topics
42
+
43
+ language | testing