@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
@@ -0,0 +1,196 @@
1
+ ---
2
+ name: GORM ORM
3
+ description: Full-featured Go ORM with associations, hooks, and migrations.
4
+ metadata:
5
+ labels: [golang, gorm, orm, database]
6
+ triggers:
7
+ files: ['**/models/*.go', '**/main.go']
8
+ keywords: [gorm, gorm.Model, gorm.Open, db.Create]
9
+ ---
10
+
11
+ # GORM Standards
12
+
13
+ ## Database Connection
14
+
15
+ ```go
16
+ import (
17
+ "gorm.io/gorm"
18
+ "gorm.io/driver/postgres"
19
+ )
20
+
21
+ func InitDB() (*gorm.DB, error) {
22
+ dsn := "host=localhost user=postgres password=pass dbname=app port=5432 sslmode=disable"
23
+ db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
24
+ Logger: logger.Default.LogMode(logger.Info),
25
+ })
26
+ if err != nil {
27
+ return nil, err
28
+ }
29
+
30
+ // Connection pool settings
31
+ sqlDB, _ := db.DB()
32
+ sqlDB.SetMaxIdleConns(10)
33
+ sqlDB.SetMaxOpenConns(100)
34
+ sqlDB.SetConnMaxLifetime(time.Hour)
35
+
36
+ return db, nil
37
+ }
38
+ ```
39
+
40
+ ## Models
41
+
42
+ ```go
43
+ type User struct {
44
+ gorm.Model // ID, CreatedAt, UpdatedAt, DeletedAt
45
+ Name string `gorm:"size:100;not null"`
46
+ Email string `gorm:"uniqueIndex;not null"`
47
+ Age int `gorm:"default:0"`
48
+ Profile Profile `gorm:"constraint:OnDelete:CASCADE;"`
49
+ Posts []Post `gorm:"foreignKey:AuthorID"`
50
+ }
51
+
52
+ type Profile struct {
53
+ ID uint
54
+ UserID uint `gorm:"uniqueIndex"`
55
+ Bio string `gorm:"type:text"`
56
+ }
57
+
58
+ type Post struct {
59
+ ID uint
60
+ Title string
61
+ AuthorID uint
62
+ Author User `gorm:"foreignKey:AuthorID"`
63
+ }
64
+ ```
65
+
66
+ ## CRUD Operations
67
+
68
+ ```go
69
+ // Create
70
+ user := User{Name: "John", Email: "john@example.com"}
71
+ result := db.Create(&user) // user.ID is set after insert
72
+
73
+ // Create in batches
74
+ users := []User{{Name: "A"}, {Name: "B"}, {Name: "C"}}
75
+ db.CreateInBatches(users, 100)
76
+
77
+ // Read
78
+ var user User
79
+ db.First(&user, 1) // By primary key
80
+ db.First(&user, "email = ?", "john@example.com")
81
+ db.Where("age > ?", 18).Find(&users) // Multiple results
82
+
83
+ // Update
84
+ db.Model(&user).Update("Name", "Jane")
85
+ db.Model(&user).Updates(User{Name: "Jane", Age: 25})
86
+ db.Model(&user).Updates(map[string]interface{}{"name": "Jane", "age": 25})
87
+
88
+ // Delete (soft delete with gorm.Model)
89
+ db.Delete(&user, 1)
90
+
91
+ // Permanent delete
92
+ db.Unscoped().Delete(&user, 1)
93
+ ```
94
+
95
+ ## Queries
96
+
97
+ ```go
98
+ // Conditions
99
+ db.Where("name = ?", "John").Find(&users)
100
+ db.Where("name IN ?", []string{"John", "Jane"}).Find(&users)
101
+ db.Where("age BETWEEN ? AND ?", 18, 65).Find(&users)
102
+
103
+ // Order, Limit, Offset
104
+ db.Order("created_at desc").Limit(10).Offset(20).Find(&users)
105
+
106
+ // Select specific columns
107
+ db.Select("name", "email").Find(&users)
108
+
109
+ // Group and Having
110
+ db.Model(&User{}).Select("name, sum(age)").Group("name").Having("sum(age) > ?", 100).Find(&results)
111
+
112
+ // Joins
113
+ db.Joins("Profile").Find(&users) // Preload with join
114
+
115
+ // Raw SQL
116
+ db.Raw("SELECT * FROM users WHERE age > ?", 18).Scan(&users)
117
+ ```
118
+
119
+ ## Associations
120
+
121
+ ```go
122
+ // Preload (eager loading)
123
+ db.Preload("Posts").Find(&users)
124
+ db.Preload("Posts.Comments").Find(&users) // Nested
125
+ db.Preload("Posts", "published = ?", true).Find(&users) // Conditional
126
+
127
+ // Association operations
128
+ db.Model(&user).Association("Posts").Append(&post)
129
+ db.Model(&user).Association("Posts").Delete(&post)
130
+ db.Model(&user).Association("Posts").Clear()
131
+ db.Model(&user).Association("Posts").Count()
132
+ ```
133
+
134
+ ## Transactions
135
+
136
+ ```go
137
+ // Automatic transaction
138
+ err := db.Transaction(func(tx *gorm.DB) error {
139
+ if err := tx.Create(&user).Error; err != nil {
140
+ return err // Rollback
141
+ }
142
+ if err := tx.Create(&profile).Error; err != nil {
143
+ return err // Rollback
144
+ }
145
+ return nil // Commit
146
+ })
147
+
148
+ // Manual transaction
149
+ tx := db.Begin()
150
+ if err := tx.Create(&user).Error; err != nil {
151
+ tx.Rollback()
152
+ return err
153
+ }
154
+ if err := tx.Create(&profile).Error; err != nil {
155
+ tx.Rollback()
156
+ return err
157
+ }
158
+ tx.Commit()
159
+ ```
160
+
161
+ ## Hooks
162
+
163
+ ```go
164
+ // BeforeCreate
165
+ func (u *User) BeforeCreate(tx *gorm.DB) error {
166
+ u.UUID = uuid.New()
167
+ return nil
168
+ }
169
+
170
+ // AfterCreate
171
+ func (u *User) AfterCreate(tx *gorm.DB) error {
172
+ // Send welcome email
173
+ return nil
174
+ }
175
+
176
+ // BeforeUpdate, AfterUpdate, BeforeDelete, AfterDelete, AfterFind
177
+ ```
178
+
179
+ ## Migrations
180
+
181
+ ```go
182
+ // Auto migrate (development only)
183
+ db.AutoMigrate(&User{}, &Post{}, &Profile{})
184
+
185
+ // For production, use golang-migrate/migrate
186
+ // migrations/000001_create_users.up.sql
187
+ // migrations/000001_create_users.down.sql
188
+ ```
189
+
190
+ ## Best Practices
191
+
192
+ 1. **Avoid N+1**: Use `Preload` or `Joins` for associations
193
+ 2. **Transactions**: Wrap related operations in transactions
194
+ 3. **Indexes**: Add `gorm:"index"` for frequently queried columns
195
+ 4. **Soft delete**: Use `gorm.Model` for soft delete, `Unscoped()` for hard delete
196
+ 5. **Migrations**: Use migration tools for production, not AutoMigrate
@@ -0,0 +1,14 @@
1
+ # GORM ORM References
2
+
3
+ ## References
4
+
5
+ - [**Model Definitions**](model-definitions.md) - Structs, tags, relationships
6
+ - [**Query Patterns**](query-patterns.md) - CRUD, conditions, preloading
7
+
8
+ ## Quick Checks
9
+
10
+ - [ ] Use appropriate field tags for constraints
11
+ - [ ] Define relationships with proper foreign keys
12
+ - [ ] Use Preload for eager loading associations
13
+ - [ ] Transaction for multi-operation consistency
14
+ - [ ] Soft delete with gorm.DeletedAt
@@ -0,0 +1,167 @@
1
+ # GORM Model Definitions
2
+
3
+ ## Basic Model
4
+
5
+ ```go
6
+ import (
7
+ "time"
8
+ "gorm.io/gorm"
9
+ )
10
+
11
+ type User struct {
12
+ ID uint `gorm:"primaryKey"`
13
+ CreatedAt time.Time
14
+ UpdatedAt time.Time
15
+ DeletedAt gorm.DeletedAt `gorm:"index"`
16
+
17
+ Name string `gorm:"size:255;not null"`
18
+ Email string `gorm:"uniqueIndex;size:255"`
19
+ Age int `gorm:"default:0"`
20
+ Active bool `gorm:"default:true"`
21
+ }
22
+
23
+ // Or embed gorm.Model for ID, CreatedAt, UpdatedAt, DeletedAt
24
+ type Post struct {
25
+ gorm.Model
26
+ Title string `gorm:"size:255;not null"`
27
+ Content string `gorm:"type:text"`
28
+ UserID uint
29
+ }
30
+ ```
31
+
32
+ ## Field Tags
33
+
34
+ ```go
35
+ type Product struct {
36
+ // Primary key
37
+ ID uint `gorm:"primaryKey;autoIncrement"`
38
+
39
+ // Column name
40
+ ProductName string `gorm:"column:name"`
41
+
42
+ // Size and type
43
+ Description string `gorm:"type:text"`
44
+ Code string `gorm:"size:50"`
45
+
46
+ // Constraints
47
+ SKU string `gorm:"uniqueIndex;not null"`
48
+ Price float64 `gorm:"not null;check:price >= 0"`
49
+ Stock int `gorm:"default:0"`
50
+
51
+ // Index
52
+ Category string `gorm:"index"`
53
+
54
+ // Composite index
55
+ TenantID uint `gorm:"uniqueIndex:idx_tenant_sku"`
56
+ ItemSKU string `gorm:"uniqueIndex:idx_tenant_sku"`
57
+
58
+ // Ignore field
59
+ TempData string `gorm:"-"`
60
+
61
+ // Read only
62
+ ViewCount int `gorm:"->"`
63
+ }
64
+ ```
65
+
66
+ ## Relationships
67
+
68
+ ```go
69
+ // One-to-Many
70
+ type User struct {
71
+ gorm.Model
72
+ Name string
73
+ Posts []Post `gorm:"foreignKey:AuthorID"`
74
+ }
75
+
76
+ type Post struct {
77
+ gorm.Model
78
+ Title string
79
+ AuthorID uint
80
+ Author User `gorm:"foreignKey:AuthorID"`
81
+ }
82
+
83
+ // Many-to-Many
84
+ type User struct {
85
+ gorm.Model
86
+ Name string
87
+ Roles []Role `gorm:"many2many:user_roles;"`
88
+ }
89
+
90
+ type Role struct {
91
+ gorm.Model
92
+ Name string
93
+ Users []User `gorm:"many2many:user_roles;"`
94
+ }
95
+
96
+ // Has One
97
+ type User struct {
98
+ gorm.Model
99
+ Name string
100
+ Profile Profile
101
+ }
102
+
103
+ type Profile struct {
104
+ gorm.Model
105
+ UserID uint `gorm:"uniqueIndex"`
106
+ Bio string
107
+ }
108
+
109
+ // Belongs To
110
+ type Post struct {
111
+ gorm.Model
112
+ Title string
113
+ CategoryID uint
114
+ Category Category
115
+ }
116
+
117
+ type Category struct {
118
+ gorm.Model
119
+ Name string
120
+ }
121
+ ```
122
+
123
+ ## Polymorphic Relations
124
+
125
+ ```go
126
+ type Comment struct {
127
+ gorm.Model
128
+ Content string
129
+ CommentableID uint
130
+ CommentableType string
131
+ }
132
+
133
+ type Post struct {
134
+ gorm.Model
135
+ Title string
136
+ Comments []Comment `gorm:"polymorphic:Commentable;"`
137
+ }
138
+
139
+ type Video struct {
140
+ gorm.Model
141
+ URL string
142
+ Comments []Comment `gorm:"polymorphic:Commentable;"`
143
+ }
144
+ ```
145
+
146
+ ## Custom Types
147
+
148
+ ```go
149
+ import "database/sql/driver"
150
+
151
+ type JSON map[string]interface{}
152
+
153
+ func (j JSON) Value() (driver.Value, error) {
154
+ return json.Marshal(j)
155
+ }
156
+
157
+ func (j *JSON) Scan(value interface{}) error {
158
+ bytes, _ := value.([]byte)
159
+ return json.Unmarshal(bytes, &j)
160
+ }
161
+
162
+ type Product struct {
163
+ gorm.Model
164
+ Name string
165
+ Metadata JSON `gorm:"type:jsonb"`
166
+ }
167
+ ```
@@ -0,0 +1,161 @@
1
+ # GORM Query Patterns
2
+
3
+ ## Basic CRUD
4
+
5
+ ```go
6
+ // Create
7
+ user := User{Name: "John", Email: "john@example.com"}
8
+ result := db.Create(&user) // user.ID populated after insert
9
+ if result.Error != nil {
10
+ return result.Error
11
+ }
12
+
13
+ // Batch create
14
+ users := []User{{Name: "A"}, {Name: "B"}, {Name: "C"}}
15
+ db.Create(&users)
16
+
17
+ // Read
18
+ var user User
19
+ db.First(&user, 1) // by primary key
20
+ db.First(&user, "id = ?", 1)
21
+ db.Find(&users) // all records
22
+
23
+ // Update
24
+ db.Model(&user).Update("Name", "Jane")
25
+ db.Model(&user).Updates(User{Name: "Jane", Age: 30})
26
+ db.Model(&user).Updates(map[string]interface{}{"name": "Jane", "age": 30})
27
+
28
+ // Delete
29
+ db.Delete(&user, 1)
30
+ db.Where("name = ?", "John").Delete(&User{})
31
+ ```
32
+
33
+ ## Conditions
34
+
35
+ ```go
36
+ // Where
37
+ db.Where("name = ?", "John").First(&user)
38
+ db.Where("name = ? AND age >= ?", "John", 18).Find(&users)
39
+ db.Where("name IN ?", []string{"John", "Jane"}).Find(&users)
40
+ db.Where("name LIKE ?", "%john%").Find(&users)
41
+
42
+ // Struct condition
43
+ db.Where(&User{Name: "John", Age: 30}).Find(&users)
44
+
45
+ // Map condition
46
+ db.Where(map[string]interface{}{"name": "John", "age": 30}).Find(&users)
47
+
48
+ // Or
49
+ db.Where("name = ?", "John").Or("name = ?", "Jane").Find(&users)
50
+
51
+ // Not
52
+ db.Not("name = ?", "John").Find(&users)
53
+
54
+ // Select specific fields
55
+ db.Select("name", "age").Find(&users)
56
+ db.Select("COALESCE(age, 0) as age").Find(&users)
57
+
58
+ // Order
59
+ db.Order("age desc, name").Find(&users)
60
+
61
+ // Limit & Offset
62
+ db.Limit(10).Offset(20).Find(&users)
63
+ ```
64
+
65
+ ## Preloading (Eager Loading)
66
+
67
+ ```go
68
+ // Preload associations
69
+ db.Preload("Posts").Find(&users)
70
+ db.Preload("Posts.Comments").Find(&users)
71
+
72
+ // Preload with conditions
73
+ db.Preload("Posts", "published = ?", true).Find(&users)
74
+
75
+ // Preload with custom query
76
+ db.Preload("Posts", func(db *gorm.DB) *gorm.DB {
77
+ return db.Order("posts.created_at DESC").Limit(5)
78
+ }).Find(&users)
79
+
80
+ // Preload all
81
+ db.Preload(clause.Associations).Find(&users)
82
+
83
+ // Joins
84
+ db.Joins("Profile").Find(&users)
85
+ db.Joins("JOIN posts ON posts.user_id = users.id").
86
+ Where("posts.title = ?", "Hello").
87
+ Find(&users)
88
+ ```
89
+
90
+ ## Transactions
91
+
92
+ ```go
93
+ // Automatic transaction
94
+ err := db.Transaction(func(tx *gorm.DB) error {
95
+ if err := tx.Create(&user).Error; err != nil {
96
+ return err // rollback
97
+ }
98
+
99
+ if err := tx.Create(&post).Error; err != nil {
100
+ return err // rollback
101
+ }
102
+
103
+ return nil // commit
104
+ })
105
+
106
+ // Manual transaction
107
+ tx := db.Begin()
108
+ if err := tx.Create(&user).Error; err != nil {
109
+ tx.Rollback()
110
+ return err
111
+ }
112
+ if err := tx.Create(&post).Error; err != nil {
113
+ tx.Rollback()
114
+ return err
115
+ }
116
+ tx.Commit()
117
+
118
+ // Nested transactions (savepoints)
119
+ db.Transaction(func(tx *gorm.DB) error {
120
+ tx.Create(&user)
121
+
122
+ tx.Transaction(func(tx2 *gorm.DB) error {
123
+ tx2.Create(&post)
124
+ return errors.New("rollback post only")
125
+ })
126
+
127
+ return nil // user is committed
128
+ })
129
+ ```
130
+
131
+ ## Scopes
132
+
133
+ ```go
134
+ // Define reusable scopes
135
+ func Active(db *gorm.DB) *gorm.DB {
136
+ return db.Where("active = ?", true)
137
+ }
138
+
139
+ func Paginate(page, size int) func(db *gorm.DB) *gorm.DB {
140
+ return func(db *gorm.DB) *gorm.DB {
141
+ offset := (page - 1) * size
142
+ return db.Offset(offset).Limit(size)
143
+ }
144
+ }
145
+
146
+ // Usage
147
+ db.Scopes(Active, Paginate(1, 10)).Find(&users)
148
+ ```
149
+
150
+ ## Raw SQL
151
+
152
+ ```go
153
+ // Raw query
154
+ db.Raw("SELECT * FROM users WHERE name = ?", "John").Scan(&users)
155
+
156
+ // Exec
157
+ db.Exec("UPDATE users SET age = ? WHERE name = ?", 30, "John")
158
+
159
+ // Named arguments
160
+ db.Where("name = @name OR age = @age", sql.Named("name", "John"), sql.Named("age", 30)).Find(&users)
161
+ ```