@ngxtm/devkit 3.4.0 → 3.5.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 (344) hide show
  1. package/package.json +2 -1
  2. package/rules/README.md +141 -0
  3. package/rules/dart/best-practices/SKILL.md +23 -0
  4. package/rules/dart/language/SKILL.md +52 -0
  5. package/rules/dart/tooling/SKILL.md +43 -0
  6. package/rules/dotnet/aspnet-core/SKILL.md +92 -0
  7. package/rules/dotnet/aspnet-core/references/REFERENCE.md +335 -0
  8. package/rules/dotnet/best-practices/SKILL.md +101 -0
  9. package/rules/dotnet/best-practices/references/REFERENCE.md +256 -0
  10. package/rules/dotnet/blazor/SKILL.md +146 -0
  11. package/rules/dotnet/blazor/references/REFERENCE.md +392 -0
  12. package/rules/dotnet/language/SKILL.md +82 -0
  13. package/rules/dotnet/language/references/REFERENCE.md +222 -0
  14. package/rules/dotnet/patterns.rule.md +388 -0
  15. package/rules/dotnet/razor-pages/SKILL.md +124 -0
  16. package/rules/dotnet/razor-pages/references/REFERENCE.md +321 -0
  17. package/rules/dotnet/security/SKILL.md +89 -0
  18. package/rules/dotnet/security/references/REFERENCE.md +295 -0
  19. package/rules/dotnet/tooling/SKILL.md +92 -0
  20. package/rules/dotnet/tooling/references/REFERENCE.md +300 -0
  21. package/rules/flutter/auto-route-navigation/SKILL.md +43 -0
  22. package/rules/flutter/auto-route-navigation/references/REFERENCE.md +19 -0
  23. package/rules/flutter/auto-route-navigation/references/router-config.md +62 -0
  24. package/rules/flutter/bloc-state-management/SKILL.md +64 -0
  25. package/rules/flutter/bloc-state-management/references/REFERENCE.md +20 -0
  26. package/rules/flutter/bloc-state-management/references/auth-bloc-example.md +52 -0
  27. package/rules/flutter/bloc-state-management/references/equatable-usage.md +56 -0
  28. package/rules/flutter/bloc-state-management/references/property-based-state.md +68 -0
  29. package/rules/flutter/bloc.rule.md +76 -0
  30. package/rules/flutter/cicd/SKILL.md +48 -0
  31. package/rules/flutter/cicd/references/advanced-workflow.md +66 -0
  32. package/rules/flutter/cicd/references/fastlane.md +139 -0
  33. package/rules/flutter/cicd/references/github-actions.md +59 -0
  34. package/rules/flutter/dependency-injection/SKILL.md +42 -0
  35. package/rules/flutter/dependency-injection/references/REFERENCE.md +15 -0
  36. package/rules/flutter/dependency-injection/references/modules.md +37 -0
  37. package/rules/flutter/error-handling/SKILL.md +32 -0
  38. package/rules/flutter/error-handling/references/REFERENCE.md +19 -0
  39. package/rules/flutter/error-handling/references/error-mapping.md +31 -0
  40. package/rules/flutter/feature-based-clean-architecture/SKILL.md +46 -0
  41. package/rules/flutter/feature-based-clean-architecture/references/REFERENCE.md +14 -0
  42. package/rules/flutter/feature-based-clean-architecture/references/folder-structure.md +36 -0
  43. package/rules/flutter/getx-navigation/SKILL.md +70 -0
  44. package/rules/flutter/getx-navigation/references/app-pages.md +40 -0
  45. package/rules/flutter/getx-navigation/references/middleware-example.md +29 -0
  46. package/rules/flutter/getx-state-management/SKILL.md +76 -0
  47. package/rules/flutter/getx-state-management/references/binding-example.md +32 -0
  48. package/rules/flutter/getx-state-management/references/reactive-vs-simple.md +39 -0
  49. package/rules/flutter/go-router-navigation/SKILL.md +57 -0
  50. package/rules/flutter/idiomatic-flutter/SKILL.md +20 -0
  51. package/rules/flutter/layer-based-clean-architecture/SKILL.md +50 -0
  52. package/rules/flutter/layer-based-clean-architecture/references/REFERENCE.md +60 -0
  53. package/rules/flutter/layer-based-clean-architecture/references/repository-mapping.md +50 -0
  54. package/rules/flutter/localization/SKILL.md +50 -0
  55. package/rules/flutter/localization/references/REFERENCE.md +48 -0
  56. package/rules/flutter/localization/references/sheet-loader.md +33 -0
  57. package/rules/flutter/navigator-v1-navigation/SKILL.md +71 -0
  58. package/rules/flutter/navigator-v1-navigation/references/on-generate-route.md +48 -0
  59. package/rules/flutter/performance/SKILL.md +24 -0
  60. package/rules/flutter/retrofit-networking/SKILL.md +51 -0
  61. package/rules/flutter/retrofit-networking/references/REFERENCE.md +19 -0
  62. package/rules/flutter/retrofit-networking/references/token-refresh.md +40 -0
  63. package/rules/flutter/riverpod-state-management/SKILL.md +53 -0
  64. package/rules/flutter/riverpod-state-management/references/architecture.md +124 -0
  65. package/rules/flutter/riverpod-state-management/references/best-practices.md +89 -0
  66. package/rules/flutter/riverpod-state-management/references/testing.md +73 -0
  67. package/rules/flutter/riverpod.rule.md +78 -0
  68. package/rules/flutter/security/SKILL.md +33 -0
  69. package/rules/flutter/security/references/REFERENCE.md +15 -0
  70. package/rules/flutter/security/references/network-security.md +28 -0
  71. package/rules/flutter/testing/SKILL.md +44 -0
  72. package/rules/flutter/testing/references/REFERENCE.md +21 -0
  73. package/rules/flutter/testing/references/bloc-testing.md +38 -0
  74. package/rules/flutter/testing/references/integration-testing.md +128 -0
  75. package/rules/flutter/testing/references/robot-pattern.md +82 -0
  76. package/rules/flutter/testing/references/unit-testing.md +130 -0
  77. package/rules/flutter/testing/references/widget-testing.md +120 -0
  78. package/rules/flutter/widgets/SKILL.md +37 -0
  79. package/rules/golang/chi-router/SKILL.md +219 -0
  80. package/rules/golang/chi-router/references/REFERENCE.md +13 -0
  81. package/rules/golang/chi-router/references/routing-patterns.md +205 -0
  82. package/rules/golang/cobra-cli/SKILL.md +227 -0
  83. package/rules/golang/cobra-cli/references/REFERENCE.md +13 -0
  84. package/rules/golang/cobra-cli/references/command-patterns.md +224 -0
  85. package/rules/golang/core/SKILL.md +210 -0
  86. package/rules/golang/core/references/REFERENCE.md +14 -0
  87. package/rules/golang/core/references/concurrency-patterns.md +114 -0
  88. package/rules/golang/core/references/error-handling.md +87 -0
  89. package/rules/golang/echo-framework/SKILL.md +215 -0
  90. package/rules/golang/echo-framework/references/REFERENCE.md +14 -0
  91. package/rules/golang/echo-framework/references/middleware-patterns.md +141 -0
  92. package/rules/golang/echo-framework/references/routing-patterns.md +140 -0
  93. package/rules/golang/ent-orm/SKILL.md +239 -0
  94. package/rules/golang/ent-orm/references/REFERENCE.md +13 -0
  95. package/rules/golang/ent-orm/references/schema-patterns.md +255 -0
  96. package/rules/golang/fiber-framework/SKILL.md +196 -0
  97. package/rules/golang/fiber-framework/references/REFERENCE.md +13 -0
  98. package/rules/golang/fiber-framework/references/routing-patterns.md +191 -0
  99. package/rules/golang/gin-framework/SKILL.md +205 -0
  100. package/rules/golang/gin-framework/references/REFERENCE.md +14 -0
  101. package/rules/golang/gin-framework/references/middleware-patterns.md +119 -0
  102. package/rules/golang/gorm-orm/SKILL.md +196 -0
  103. package/rules/golang/gorm-orm/references/REFERENCE.md +14 -0
  104. package/rules/golang/gorm-orm/references/model-definitions.md +167 -0
  105. package/rules/golang/gorm-orm/references/query-patterns.md +161 -0
  106. package/rules/golang/grpc/SKILL.md +231 -0
  107. package/rules/golang/grpc/references/REFERENCE.md +13 -0
  108. package/rules/golang/grpc/references/service-patterns.md +276 -0
  109. package/rules/golang/testify/SKILL.md +239 -0
  110. package/rules/golang/testify/references/REFERENCE.md +13 -0
  111. package/rules/golang/testify/references/assert-patterns.md +170 -0
  112. package/rules/golang/validator/SKILL.md +234 -0
  113. package/rules/golang/validator/references/REFERENCE.md +13 -0
  114. package/rules/golang/validator/references/validation-tags.md +211 -0
  115. package/rules/golang/viper-config/SKILL.md +244 -0
  116. package/rules/golang/viper-config/references/REFERENCE.md +13 -0
  117. package/rules/golang/viper-config/references/config-loading.md +181 -0
  118. package/rules/golang/wire-di/SKILL.md +243 -0
  119. package/rules/golang/wire-di/references/REFERENCE.md +13 -0
  120. package/rules/golang/wire-di/references/provider-patterns.md +193 -0
  121. package/rules/golang/zap-logging/SKILL.md +203 -0
  122. package/rules/golang/zap-logging/references/REFERENCE.md +13 -0
  123. package/rules/golang/zap-logging/references/logger-config.md +165 -0
  124. package/rules/java/build-gradle/SKILL.md +92 -0
  125. package/rules/java/build-gradle/references/REFERENCE.md +14 -0
  126. package/rules/java/build-gradle/references/kotlin-dsl.md +118 -0
  127. package/rules/java/build-gradle/references/task-configuration.md +132 -0
  128. package/rules/java/build-maven/SKILL.md +86 -0
  129. package/rules/java/build-maven/references/REFERENCE.md +14 -0
  130. package/rules/java/build-maven/references/dependency-management.md +111 -0
  131. package/rules/java/build-maven/references/lifecycle-phases.md +114 -0
  132. package/rules/java/graalvm-native/SKILL.md +105 -0
  133. package/rules/java/graalvm-native/references/REFERENCE.md +12 -0
  134. package/rules/java/java-collections-streams/SKILL.md +148 -0
  135. package/rules/java/java-collections-streams/references/REFERENCE.md +15 -0
  136. package/rules/java/java-collections-streams/references/collectors-patterns.md +178 -0
  137. package/rules/java/java-collections-streams/references/stream-pipelines.md +165 -0
  138. package/rules/java/java-concurrency/SKILL.md +187 -0
  139. package/rules/java/java-concurrency/references/REFERENCE.md +17 -0
  140. package/rules/java/java-concurrency/references/completable-future.md +165 -0
  141. package/rules/java/java-concurrency/references/executor-patterns.md +176 -0
  142. package/rules/java/java-concurrency/references/virtual-threads.md +190 -0
  143. package/rules/java/java-core-language/SKILL.md +121 -0
  144. package/rules/java/java-core-language/references/REFERENCE.md +15 -0
  145. package/rules/java/java-core-language/references/jvm-memory-model.md +160 -0
  146. package/rules/java/java-core-language/references/modern-java-features.md +168 -0
  147. package/rules/java/java-project-structure/SKILL.md +195 -0
  148. package/rules/java/java-project-structure/references/REFERENCE.md +15 -0
  149. package/rules/java/java-project-structure/references/maven-project-layout.md +199 -0
  150. package/rules/java/java-project-structure/references/module-system.md +159 -0
  151. package/rules/java/micronaut-core/SKILL.md +99 -0
  152. package/rules/java/micronaut-core/references/REFERENCE.md +12 -0
  153. package/rules/java/micronaut-reactive/SKILL.md +68 -0
  154. package/rules/java/micronaut-reactive/references/REFERENCE.md +12 -0
  155. package/rules/java/quarkus-core/SKILL.md +85 -0
  156. package/rules/java/quarkus-core/references/REFERENCE.md +12 -0
  157. package/rules/java/quarkus-reactive/SKILL.md +67 -0
  158. package/rules/java/quarkus-reactive/references/REFERENCE.md +12 -0
  159. package/rules/java/spring-batch/SKILL.md +102 -0
  160. package/rules/java/spring-batch/references/REFERENCE.md +12 -0
  161. package/rules/java/spring-boot-architecture/SKILL.md +206 -0
  162. package/rules/java/spring-boot-architecture/references/REFERENCE.md +15 -0
  163. package/rules/java/spring-boot-architecture/references/auto-configuration.md +158 -0
  164. package/rules/java/spring-boot-architecture/references/configuration-properties.md +202 -0
  165. package/rules/java/spring-boot-web/SKILL.md +217 -0
  166. package/rules/java/spring-boot-web/references/REFERENCE.md +17 -0
  167. package/rules/java/spring-cloud/SKILL.md +109 -0
  168. package/rules/java/spring-cloud/references/REFERENCE.md +13 -0
  169. package/rules/java/spring-data-jpa/SKILL.md +241 -0
  170. package/rules/java/spring-data-jpa/references/REFERENCE.md +16 -0
  171. package/rules/java/spring-security/SKILL.md +161 -0
  172. package/rules/java/spring-security/references/REFERENCE.md +16 -0
  173. package/rules/java/spring-security/references/jwt-auth-flow.md +213 -0
  174. package/rules/java/testing-junit-mockito/SKILL.md +135 -0
  175. package/rules/java/testing-junit-mockito/references/REFERENCE.md +15 -0
  176. package/rules/java/testing-junit-mockito/references/junit5-patterns.md +159 -0
  177. package/rules/java/testing-junit-mockito/references/mockito-patterns.md +148 -0
  178. package/rules/java/testing-junit-mockito/references/spring-boot-testing.md +152 -0
  179. package/rules/javascript/best-practices/SKILL.md +64 -0
  180. package/rules/javascript/best-practices/references/REFERENCE.md +91 -0
  181. package/rules/javascript/language/SKILL.md +71 -0
  182. package/rules/javascript/language/references/REFERENCE.md +106 -0
  183. package/rules/javascript/tooling/SKILL.md +60 -0
  184. package/rules/javascript/tooling/references/REFERENCE.md +107 -0
  185. package/rules/metadata.json +54 -0
  186. package/rules/nestjs/api-standards/SKILL.md +47 -0
  187. package/rules/nestjs/api-standards/references/pagination-wrapper.md +87 -0
  188. package/rules/nestjs/architecture/SKILL.md +68 -0
  189. package/rules/nestjs/architecture/references/dynamic-module.md +53 -0
  190. package/rules/nestjs/caching/SKILL.md +51 -0
  191. package/rules/nestjs/caching/references/REFERENCE.md +13 -0
  192. package/rules/nestjs/caching/references/cache-patterns.md +183 -0
  193. package/rules/nestjs/configuration/SKILL.md +41 -0
  194. package/rules/nestjs/configuration/references/REFERENCE.md +13 -0
  195. package/rules/nestjs/configuration/references/config-patterns.md +184 -0
  196. package/rules/nestjs/controllers-services/SKILL.md +63 -0
  197. package/rules/nestjs/controllers-services/references/REFERENCE.md +14 -0
  198. package/rules/nestjs/controllers-services/references/controller-patterns.md +119 -0
  199. package/rules/nestjs/controllers-services/references/service-patterns.md +129 -0
  200. package/rules/nestjs/database/SKILL.md +102 -0
  201. package/rules/nestjs/database/references/REFERENCE.md +14 -0
  202. package/rules/nestjs/database/references/typeorm-patterns.md +156 -0
  203. package/rules/nestjs/deployment/SKILL.md +36 -0
  204. package/rules/nestjs/deployment/references/REFERENCE.md +13 -0
  205. package/rules/nestjs/deployment/references/deployment-patterns.md +140 -0
  206. package/rules/nestjs/documentation/SKILL.md +64 -0
  207. package/rules/nestjs/documentation/references/REFERENCE.md +13 -0
  208. package/rules/nestjs/documentation/references/swagger-patterns.md +139 -0
  209. package/rules/nestjs/error-handling/SKILL.md +55 -0
  210. package/rules/nestjs/error-handling/references/REFERENCE.md +13 -0
  211. package/rules/nestjs/error-handling/references/exception-filters.md +152 -0
  212. package/rules/nestjs/file-uploads/SKILL.md +35 -0
  213. package/rules/nestjs/file-uploads/references/REFERENCE.md +13 -0
  214. package/rules/nestjs/file-uploads/references/upload-patterns.md +125 -0
  215. package/rules/nestjs/observability/SKILL.md +39 -0
  216. package/rules/nestjs/observability/references/REFERENCE.md +13 -0
  217. package/rules/nestjs/observability/references/logging-metrics.md +175 -0
  218. package/rules/nestjs/performance/SKILL.md +60 -0
  219. package/rules/nestjs/performance/references/REFERENCE.md +13 -0
  220. package/rules/nestjs/performance/references/performance-patterns.md +107 -0
  221. package/rules/nestjs/real-time/SKILL.md +45 -0
  222. package/rules/nestjs/real-time/references/REFERENCE.md +13 -0
  223. package/rules/nestjs/real-time/references/websocket-patterns.md +121 -0
  224. package/rules/nestjs/scheduling/SKILL.md +39 -0
  225. package/rules/nestjs/scheduling/references/REFERENCE.md +13 -0
  226. package/rules/nestjs/scheduling/references/scheduling-patterns.md +137 -0
  227. package/rules/nestjs/search/SKILL.md +41 -0
  228. package/rules/nestjs/search/references/REFERENCE.md +13 -0
  229. package/rules/nestjs/search/references/search-patterns.md +137 -0
  230. package/rules/nestjs/security/SKILL.md +87 -0
  231. package/rules/nestjs/security/references/REFERENCE.md +14 -0
  232. package/rules/nestjs/security/references/authentication.md +151 -0
  233. package/rules/nestjs/testing/SKILL.md +40 -0
  234. package/rules/nestjs/testing/references/REFERENCE.md +14 -0
  235. package/rules/nestjs/testing/references/unit-testing.md +179 -0
  236. package/rules/nestjs/transport/SKILL.md +45 -0
  237. package/rules/nestjs/transport/references/REFERENCE.md +13 -0
  238. package/rules/nestjs/transport/references/microservices-patterns.md +170 -0
  239. package/rules/nextjs/app-router/SKILL.md +46 -0
  240. package/rules/nextjs/app-router/references/REFERENCE.md +14 -0
  241. package/rules/nextjs/app-router/references/routing-patterns.md +182 -0
  242. package/rules/nextjs/architecture/SKILL.md +44 -0
  243. package/rules/nextjs/architecture/references/fsd-structure.md +77 -0
  244. package/rules/nextjs/authentication/SKILL.md +29 -0
  245. package/rules/nextjs/authentication/references/auth-implementation.md +73 -0
  246. package/rules/nextjs/caching/SKILL.md +66 -0
  247. package/rules/nextjs/caching/references/REFERENCE.md +13 -0
  248. package/rules/nextjs/caching/references/cache-strategies.md +168 -0
  249. package/rules/nextjs/data-access-layer/SKILL.md +33 -0
  250. package/rules/nextjs/data-access-layer/references/patterns.md +66 -0
  251. package/rules/nextjs/data-fetching/SKILL.md +59 -0
  252. package/rules/nextjs/data-fetching/references/REFERENCE.md +13 -0
  253. package/rules/nextjs/data-fetching/references/fetch-patterns.md +160 -0
  254. package/rules/nextjs/internationalization/SKILL.md +105 -0
  255. package/rules/nextjs/internationalization/references/REFERENCE.md +13 -0
  256. package/rules/nextjs/internationalization/references/i18n-patterns.md +180 -0
  257. package/rules/nextjs/optimization/SKILL.md +64 -0
  258. package/rules/nextjs/optimization/references/REFERENCE.md +13 -0
  259. package/rules/nextjs/optimization/references/optimization-patterns.md +190 -0
  260. package/rules/nextjs/rendering/SKILL.md +91 -0
  261. package/rules/nextjs/rendering/references/REFERENCE.md +13 -0
  262. package/rules/nextjs/rendering/references/rendering-modes.md +163 -0
  263. package/rules/nextjs/server-actions/SKILL.md +46 -0
  264. package/rules/nextjs/server-actions/references/REFERENCE.md +13 -0
  265. package/rules/nextjs/server-actions/references/action-patterns.md +188 -0
  266. package/rules/nextjs/server-components/SKILL.md +52 -0
  267. package/rules/nextjs/server-components/references/REFERENCE.md +13 -0
  268. package/rules/nextjs/server-components/references/component-patterns.md +175 -0
  269. package/rules/nextjs/state-management/SKILL.md +73 -0
  270. package/rules/nextjs/state-management/references/REFERENCE.md +13 -0
  271. package/rules/nextjs/state-management/references/state-patterns.md +218 -0
  272. package/rules/nextjs/styling/SKILL.md +31 -0
  273. package/rules/nextjs/styling/references/implementation.md +56 -0
  274. package/rules/react/component-patterns/SKILL.md +66 -0
  275. package/rules/react/component-patterns/references/REFERENCE.md +126 -0
  276. package/rules/react/hooks/SKILL.md +60 -0
  277. package/rules/react/hooks/references/REFERENCE.md +132 -0
  278. package/rules/react/hooks.rule.md +79 -0
  279. package/rules/react/performance/SKILL.md +69 -0
  280. package/rules/react/performance/references/REFERENCE.md +143 -0
  281. package/rules/react/security/SKILL.md +46 -0
  282. package/rules/react/security/references/REFERENCE.md +170 -0
  283. package/rules/react/state-management/SKILL.md +56 -0
  284. package/rules/react/state-management/references/REFERENCE.md +137 -0
  285. package/rules/react/testing/SKILL.md +45 -0
  286. package/rules/react/testing/references/REFERENCE.md +149 -0
  287. package/rules/react/tooling/SKILL.md +39 -0
  288. package/rules/react/typescript/SKILL.md +53 -0
  289. package/rules/rust/actix-web/SKILL.md +160 -0
  290. package/rules/rust/actix-web/references/REFERENCE.md +13 -0
  291. package/rules/rust/actix-web/references/handler-patterns.md +198 -0
  292. package/rules/rust/async-graphql/SKILL.md +228 -0
  293. package/rules/rust/async-graphql/references/REFERENCE.md +13 -0
  294. package/rules/rust/async-graphql/references/schema-patterns.md +215 -0
  295. package/rules/rust/axum/SKILL.md +161 -0
  296. package/rules/rust/axum/references/REFERENCE.md +14 -0
  297. package/rules/rust/axum/references/handler-patterns.md +97 -0
  298. package/rules/rust/bevy/SKILL.md +206 -0
  299. package/rules/rust/bevy/references/REFERENCE.md +13 -0
  300. package/rules/rust/bevy/references/ecs-patterns.md +226 -0
  301. package/rules/rust/clap/SKILL.md +217 -0
  302. package/rules/rust/clap/references/REFERENCE.md +13 -0
  303. package/rules/rust/clap/references/derive-patterns.md +205 -0
  304. package/rules/rust/core/SKILL.md +154 -0
  305. package/rules/rust/core/references/REFERENCE.md +14 -0
  306. package/rules/rust/core/references/error-handling.md +92 -0
  307. package/rules/rust/diesel-orm/SKILL.md +176 -0
  308. package/rules/rust/diesel-orm/references/REFERENCE.md +13 -0
  309. package/rules/rust/diesel-orm/references/schema-patterns.md +206 -0
  310. package/rules/rust/rocket/SKILL.md +182 -0
  311. package/rules/rust/rocket/references/REFERENCE.md +13 -0
  312. package/rules/rust/rocket/references/handler-patterns.md +209 -0
  313. package/rules/rust/sea-orm/SKILL.md +230 -0
  314. package/rules/rust/sea-orm/references/REFERENCE.md +13 -0
  315. package/rules/rust/sea-orm/references/entity-patterns.md +221 -0
  316. package/rules/rust/serde-serialization/SKILL.md +150 -0
  317. package/rules/rust/serde-serialization/references/REFERENCE.md +13 -0
  318. package/rules/rust/serde-serialization/references/serialization-patterns.md +199 -0
  319. package/rules/rust/sqlx-database/SKILL.md +140 -0
  320. package/rules/rust/sqlx-database/references/REFERENCE.md +13 -0
  321. package/rules/rust/sqlx-database/references/query-patterns.md +210 -0
  322. package/rules/rust/tauri/SKILL.md +180 -0
  323. package/rules/rust/tauri/references/REFERENCE.md +13 -0
  324. package/rules/rust/tauri/references/command-patterns.md +209 -0
  325. package/rules/rust/tokio-runtime/SKILL.md +167 -0
  326. package/rules/rust/tokio-runtime/references/REFERENCE.md +14 -0
  327. package/rules/rust/tokio-runtime/references/async-patterns.md +137 -0
  328. package/rules/rust/tokio-runtime/references/synchronization.md +152 -0
  329. package/rules/rust/tonic/SKILL.md +231 -0
  330. package/rules/rust/tonic/references/REFERENCE.md +13 -0
  331. package/rules/rust/tonic/references/service-patterns.md +213 -0
  332. package/rules/rust/tracing/SKILL.md +214 -0
  333. package/rules/rust/tracing/references/REFERENCE.md +13 -0
  334. package/rules/rust/tracing/references/instrumentation.md +187 -0
  335. package/rules/typescript/best-practices/SKILL.md +108 -0
  336. package/rules/typescript/best-practices/references/REFERENCE.md +68 -0
  337. package/rules/typescript/language/SKILL.md +72 -0
  338. package/rules/typescript/language/references/REFERENCE.md +67 -0
  339. package/rules/typescript/patterns.rule.md +85 -0
  340. package/rules/typescript/security/SKILL.md +59 -0
  341. package/rules/typescript/security/references/REFERENCE.md +113 -0
  342. package/rules/typescript/tooling/SKILL.md +52 -0
  343. package/rules/typescript/tooling/references/REFERENCE.md +110 -0
  344. package/skills/learn/SKILL.md +476 -0
@@ -0,0 +1,91 @@
1
+ # JavaScript Best Practices Reference
2
+
3
+ Module patterns and project organization.
4
+
5
+ ## References
6
+
7
+ - [**Module Patterns**](module-patterns.md) - ES6 modules and organization.
8
+ - [**Project Structure**](project-structure.md) - Directory organization.
9
+
10
+ ## Module Patterns
11
+
12
+ ```javascript
13
+ // Public API with index.js
14
+ // src/users/index.js
15
+ export { UserService } from './user-service.js';
16
+ export { UserRepository } from './user-repository.js';
17
+ export { createUser, updateUser } from './user-operations.js';
18
+
19
+ // Private implementation
20
+ // src/users/user-service.js
21
+ import { UserRepository } from './user-repository.js';
22
+ import { validateUser } from './validators.js';
23
+
24
+ export class UserService {
25
+ constructor(repository = new UserRepository()) {
26
+ this.repository = repository;
27
+ }
28
+
29
+ async createUser(data) {
30
+ validateUser(data);
31
+ return this.repository.save(data);
32
+ }
33
+ }
34
+
35
+ // Singleton pattern
36
+ // src/utils/logger.js
37
+ class Logger {
38
+ #instance;
39
+
40
+ constructor() {
41
+ if (Logger.#instance) {
42
+ return Logger.#instance;
43
+ }
44
+ Logger.#instance = this;
45
+ }
46
+
47
+ log(message) {
48
+ console.log(`[${new Date().toISOString()}] ${message}`);
49
+ }
50
+ }
51
+
52
+ export const logger = new Logger();
53
+ ```
54
+
55
+ ## Project Structure
56
+
57
+ ```
58
+ src/
59
+ ├── domain/ # Business logic
60
+ │ └── user/
61
+ │ ├── user.js
62
+ │ └── user-repository.js
63
+ ├── services/ # Application services
64
+ │ └── user-service.js
65
+ ├── utils/ # Utilities
66
+ │ ├── logger.js
67
+ │ └── validation.js
68
+ ├── config/ # Configuration
69
+ │ └── database.js
70
+ └── index.js # Entry point
71
+ ```
72
+
73
+ ## Configuration Management
74
+
75
+ ```javascript
76
+ // config/index.js
77
+ const config = {
78
+ development: {
79
+ apiUrl: 'http://localhost:3000',
80
+ logLevel: 'debug',
81
+ },
82
+ production: {
83
+ apiUrl: process.env.API_URL,
84
+ logLevel: 'error',
85
+ },
86
+ };
87
+
88
+ const env = process.env.NODE_ENV || 'development';
89
+
90
+ export default config[env];
91
+ ```
@@ -0,0 +1,71 @@
1
+ ---
2
+ name: JavaScript Language Patterns
3
+ description: Modern JavaScript (ES2022+) patterns for clean, maintainable code.
4
+ metadata:
5
+ labels: [javascript, language, es6, modern-js]
6
+ triggers:
7
+ files: ['**/*.js', '**/*.mjs', '**/*.cjs']
8
+ keywords:
9
+ [const, let, arrow, async, await, promise, destructuring, spread, class]
10
+ ---
11
+
12
+ # JavaScript Language Patterns
13
+
14
+ ## **Priority: P0 (CRITICAL)**
15
+
16
+ Modern JavaScript standards for clean, maintainable code.
17
+
18
+ ## Implementation Guidelines
19
+
20
+ - **Variables**: `const` default. `let` if needed. No `var`.
21
+ - **Functions**: Arrows for callbacks. Declarations for top-level.
22
+ - **Async**: `async/await` + `try/catch`.
23
+ - **Objects**: Destructuring, Spread `...`, Optional Chain `?.`, Nullish `??`.
24
+ - **Strings**: Template literals `${}`.
25
+ - **Arrays**: `map`, `filter`, `reduce`. No loops.
26
+ - **Modules**: ESM `import`/`export`.
27
+ - **Classes**: Use `#private` fields.
28
+
29
+ ## Anti-Patterns
30
+
31
+ - **No `var`**: Block scope only.
32
+ - **No `==`**: Strict `===`.
33
+ - **No `new Object()`**: Use literals `{}`.
34
+ - **No Callbacks**: Promisify everything.
35
+ - **No Mutation**: Immutability first.
36
+
37
+ ## Code
38
+
39
+ ```javascript
40
+ // Modern Syntax
41
+ const [x, ...rest] = items;
42
+ const name = user?.profile?.name ?? 'Guest';
43
+
44
+ // Async
45
+ async function getUser(id) {
46
+ try {
47
+ const res = await fetch(`/api/${id}`);
48
+ return res.json();
49
+ } catch (err) {
50
+ console.error(err);
51
+ throw err;
52
+ }
53
+ }
54
+
55
+ // Class + Private
56
+ class Service {
57
+ #key;
58
+ constructor(k) {
59
+ this.#key = k;
60
+ }
61
+ }
62
+ ```
63
+
64
+ ## Reference & Examples
65
+
66
+ For advanced patterns and functional programming:
67
+ See [references/REFERENCE.md](references/REFERENCE.md).
68
+
69
+ ## Related Topics
70
+
71
+ best-practices | tooling
@@ -0,0 +1,106 @@
1
+ # JavaScript Language Patterns Reference
2
+
3
+ Advanced patterns and functional programming techniques.
4
+
5
+ ## References
6
+
7
+ - [**Functional Programming**](functional-programming.md) - Immutability and pure functions.
8
+ - [**Promises & Async**](promises-async.md) - Advanced async patterns.
9
+
10
+ ## Functional Programming Patterns
11
+
12
+ ```javascript
13
+ // Pure functions
14
+ const add = (a, b) => a + b;
15
+ const multiply = (a, b) => a * b;
16
+
17
+ // Function composition
18
+ const compose = (...fns) => x => fns.reduceRight((v, f) => f(v), x);
19
+ const pipe = (...fns) => x => fns.reduce((v, f) => f(v), x);
20
+
21
+ // Example usage
22
+ const addOne = x => x + 1;
23
+ const double = x => x * 2;
24
+ const addOneThenDouble = pipe(addOne, double);
25
+ console.log(addOneThenDouble(3)); // 8
26
+
27
+ // Immutable data updates
28
+ const updateUser = (user, updates) => ({
29
+ ...user,
30
+ ...updates,
31
+ updatedAt: new Date(),
32
+ });
33
+
34
+ // Deep cloning
35
+ const deepClone = obj => structuredClone(obj);
36
+
37
+ // Currying
38
+ const curry = (fn) => {
39
+ return function curried(...args) {
40
+ if (args.length >= fn.length) {
41
+ return fn.apply(this, args);
42
+ }
43
+ return (...args2) => curried.apply(this, args.concat(args2));
44
+ };
45
+ };
46
+
47
+ const add3 = curry((a, b, c) => a + b + c);
48
+ console.log(add3(1)(2)(3)); // 6
49
+ console.log(add3(1, 2)(3)); // 6
50
+ ```
51
+
52
+ ## Advanced Async Patterns
53
+
54
+ ```javascript
55
+ // Promise.all for parallel execution
56
+ async function fetchAllUsers(ids) {
57
+ const promises = ids.map(id => fetch(`/api/users/${id}`));
58
+ const responses = await Promise.all(promises);
59
+ return Promise.all(responses.map(r => r.json()));
60
+ }
61
+
62
+ // Promise.allSettled for handling partial failures
63
+ async function fetchWithFallback(urls) {
64
+ const results = await Promise.allSettled(
65
+ urls.map(url => fetch(url))
66
+ );
67
+
68
+ return results
69
+ .filter(result => result.status === 'fulfilled')
70
+ .map(result => result.value);
71
+ }
72
+
73
+ // Retry with exponential backoff
74
+ async function retryWithBackoff(fn, maxRetries = 3, baseDelay = 1000) {
75
+ for (let i = 0; i < maxRetries; i++) {
76
+ try {
77
+ return await fn();
78
+ } catch (error) {
79
+ if (i === maxRetries - 1) throw error;
80
+ const delay = baseDelay * Math.pow(2, i);
81
+ await new Promise(resolve => setTimeout(resolve, delay));
82
+ }
83
+ }
84
+ }
85
+
86
+ // Debounce
87
+ function debounce(fn, delay) {
88
+ let timeoutId;
89
+ return (...args) => {
90
+ clearTimeout(timeoutId);
91
+ timeoutId = setTimeout(() => fn(...args), delay);
92
+ };
93
+ }
94
+
95
+ // Throttle
96
+ function throttle(fn, limit) {
97
+ let inThrottle;
98
+ return (...args) => {
99
+ if (!inThrottle) {
100
+ fn(...args);
101
+ inThrottle = true;
102
+ setTimeout(() => inThrottle = false, limit);
103
+ }
104
+ };
105
+ }
106
+ ```
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: JavaScript Tooling
3
+ description: Development tools, linting, and testing for JavaScript projects.
4
+ metadata:
5
+ labels: [tooling, javascript, eslint, prettier, testing]
6
+ triggers:
7
+ files: ['.eslintrc.*', 'jest.config.*', 'package.json']
8
+ keywords: [eslint, prettier, jest, test, lint, build]
9
+ ---
10
+
11
+ # JavaScript Tooling
12
+
13
+ ## **Priority: P1 (OPERATIONAL)**
14
+
15
+ Essential tooling for JavaScript development.
16
+
17
+ ## Implementation Guidelines
18
+
19
+ - **Linting**: ESLint (Rec + Prettier). Fix on save.
20
+ - **Formatting**: Prettier. Run on save/commit.
21
+ - **Testing**: Jest/Vitest. Co-locate tests. >80% cov.
22
+ - **Build**: Vite (Apps), Rollup (Libs).
23
+ - **Pkg Manager**: Sync versions (`npm`/`yarn`/`pnpm`).
24
+
25
+ ## Anti-Patterns
26
+
27
+ - **No Formatting Wars**: Prettier rules.
28
+ - **No Untested Code**: TDD/Post-code tests.
29
+ - **No Dirty Commits**: Lint before push.
30
+
31
+ ## Configuration
32
+
33
+ ```javascript
34
+ // .eslintrc.js
35
+ module.exports = {
36
+ extends: ['eslint:recommended', 'prettier'],
37
+ rules: { 'no-console': 'warn', 'prefer-const': 'error' },
38
+ };
39
+ ```
40
+
41
+ ```json
42
+ // .prettierrc
43
+ { "semi": true, "singleQuote": true, "printWidth": 80 }
44
+ ```
45
+
46
+ ```javascript
47
+ // jest.config.js
48
+ export default {
49
+ coverageThreshold: { global: { lines: 80 } },
50
+ };
51
+ ```
52
+
53
+ ## Reference & Examples
54
+
55
+ For testing patterns and CI/CD:
56
+ See [references/REFERENCE.md](references/REFERENCE.md).
57
+
58
+ ## Related Topics
59
+
60
+ best-practices | language
@@ -0,0 +1,107 @@
1
+ # JavaScript Tooling Reference
2
+
3
+ Testing patterns and CI/CD configuration.
4
+
5
+ ## References
6
+
7
+ - [**Testing Patterns**](testing-patterns.md) - Unit and integration testing.
8
+ - [**CI/CD**](ci-cd.md) - Continuous integration setup.
9
+
10
+ ## Jest Testing Patterns
11
+
12
+ ```javascript
13
+ // user-service.test.js
14
+ import { UserService } from './user-service.js';
15
+
16
+ describe('UserService', () => {
17
+ let service;
18
+ let mockRepository;
19
+
20
+ beforeEach(() => {
21
+ mockRepository = {
22
+ findById: jest.fn(),
23
+ save: jest.fn(),
24
+ };
25
+ service = new UserService(mockRepository);
26
+ });
27
+
28
+ describe('createUser', () => {
29
+ it('should create a user with valid data', async () => {
30
+ const userData = { name: 'John', email: 'john@example.com' };
31
+ mockRepository.save.mockResolvedValue({ id: '1', ...userData });
32
+
33
+ const result = await service.createUser(userData);
34
+
35
+ expect(result).toEqual({ id: '1', ...userData });
36
+ expect(mockRepository.save).toHaveBeenCalledWith(userData);
37
+ });
38
+
39
+ it('should throw error for invalid data', async () => {
40
+ const invalidData = { name: '' };
41
+
42
+ await expect(service.createUser(invalidData))
43
+ .rejects
44
+ .toThrow('Name is required');
45
+ });
46
+ });
47
+ });
48
+ ```
49
+
50
+ ## Integration Testing
51
+
52
+ ```javascript
53
+ // api.integration.test.js
54
+ import request from 'supertest';
55
+ import { app } from '../app.js';
56
+
57
+ describe('User API', () => {
58
+ it('GET /api/users/:id returns user', async () => {
59
+ const response = await request(app)
60
+ .get('/api/users/1')
61
+ .expect(200);
62
+
63
+ expect(response.body).toHaveProperty('id', '1');
64
+ expect(response.body).toHaveProperty('name');
65
+ });
66
+
67
+ it('POST /api/users creates user', async () => {
68
+ const newUser = { name: 'Jane', email: 'jane@example.com' };
69
+
70
+ const response = await request(app)
71
+ .post('/api/users')
72
+ .send(newUser)
73
+ .expect(201);
74
+
75
+ expect(response.body).toHaveProperty('id');
76
+ expect(response.body.name).toBe(newUser.name);
77
+ });
78
+ });
79
+ ```
80
+
81
+ ## GitHub Actions CI
82
+
83
+ ```yaml
84
+ # .github/workflows/ci.yml
85
+ name: CI
86
+
87
+ on: [push, pull_request]
88
+
89
+ jobs:
90
+ test:
91
+ runs-on: ubuntu-latest
92
+
93
+ strategy:
94
+ matrix:
95
+ node-version: [18, 20]
96
+
97
+ steps:
98
+ - uses: actions/checkout@v3
99
+ - uses: actions/setup-node@v3
100
+ with:
101
+ node-version: ${{ matrix.node-version }}
102
+ cache: 'npm'
103
+ - run: npm ci
104
+ - run: npm run lint
105
+ - run: npm test -- --coverage
106
+ - run: npm run build
107
+ ```
@@ -0,0 +1,54 @@
1
+ {
2
+ "global": {
3
+ "author": "Minh",
4
+ "repository": "https://github.com/ngxtm/ags"
5
+ },
6
+ "categories": {
7
+ "flutter": {
8
+ "version": "1.1.0",
9
+ "last_updated": "2026-01-19",
10
+ "tag_prefix": "flutter-v"
11
+ },
12
+ "dart": {
13
+ "version": "1.0.1",
14
+ "last_updated": "2026-01-17",
15
+ "tag_prefix": "dart-v"
16
+ },
17
+ "typescript": {
18
+ "version": "1.0.0",
19
+ "last_updated": "2026-01-17",
20
+ "tag_prefix": "typescript-v"
21
+ },
22
+ "javascript": {
23
+ "version": "1.0.0",
24
+ "last_updated": "2026-01-17",
25
+ "tag_prefix": "javascript-v"
26
+ },
27
+ "react": {
28
+ "version": "1.0.0",
29
+ "last_updated": "2026-01-17",
30
+ "tag_prefix": "react-v"
31
+ },
32
+ "nestjs": {
33
+ "version": "1.0.0",
34
+ "last_updated": "2026-01-17",
35
+ "tag_prefix": "nestjs-v"
36
+ },
37
+ "rust": {
38
+ "version": "1.1.0",
39
+ "last_updated": "2026-01-20",
40
+ "tag_prefix": "rust-v"
41
+ },
42
+ "golang": {
43
+ "version": "1.1.0",
44
+ "last_updated": "2026-01-20",
45
+ "tag_prefix": "golang-v"
46
+ },
47
+ "nextjs": {
48
+ "version": "1.0.0",
49
+ "last_updated": "2026-01-18",
50
+ "tag_prefix": "nextjs-v"
51
+ },
52
+ "angular": {}
53
+ }
54
+ }
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: NestJS API Standards
3
+ description: Response wrapping, pagination, and error standardization.
4
+ metadata:
5
+ labels: [nestjs, api, pagination, response]
6
+ triggers:
7
+ files: ['**/*.controller.ts', '**/*.dto.ts']
8
+ keywords: [ApiResponse, Pagination, TransformInterceptor]
9
+ ---
10
+
11
+ # NestJS API Standards & Common Patterns
12
+
13
+ ## Generic Response Wrapper
14
+
15
+ - **Concept**: Standardize all successful API responses.
16
+ - **Implementation**: Use `TransformInterceptor` to wrap data in `{ statusCode, data, meta }`.
17
+
18
+ ## Pagination Standards (Pro)
19
+
20
+ - **DTOs**: Use strict `PageOptionsDto` (page/take/order) and `PageDto<T>` (data/meta).
21
+ - **Swagger Logic**: Generics require `ApiExtraModels` and schema path resolution.
22
+ - **Reference**: See [Pagination Wrapper Implementation](references/pagination-wrapper.md) for the complete `ApiPaginatedResponse` decorator code.
23
+
24
+ ## Custom Error Response
25
+
26
+ - **Standard Error Object**:
27
+
28
+ ```typescript
29
+ export class ApiErrorResponse {
30
+ @ApiProperty()
31
+ statusCode: number;
32
+
33
+ @ApiProperty()
34
+ message: string;
35
+
36
+ @ApiProperty()
37
+ error: string;
38
+
39
+ @ApiProperty()
40
+ timestamp: string;
41
+
42
+ @ApiProperty()
43
+ path: string;
44
+ }
45
+ ```
46
+
47
+ - **Docs**: Apply `@ApiBadRequestResponse({ type: ApiErrorResponse })` globally or per controller.
@@ -0,0 +1,87 @@
1
+ # NestJS API Standards Patterns
2
+
3
+ ## Generic Response & Pagination
4
+
5
+ This reference implements the standard `PageDto`, `PageMetaDto`, and the `ApiPaginatedResponse` decorator for Swagger.
6
+
7
+ ### Page Options DTO
8
+
9
+ Standard query parameters for list endpoints.
10
+
11
+ ```typescript
12
+ // dtos/page-options.dto.ts
13
+ export class PageOptionsDto {
14
+ @ApiPropertyOptional({ enum: Order, default: Order.ASC })
15
+ @IsEnum(Order)
16
+ @IsOptional()
17
+ readonly order?: Order = Order.ASC;
18
+
19
+ @ApiPropertyOptional({ minimum: 1, default: 1 })
20
+ @Type(() => Number)
21
+ @IsInt()
22
+ @Min(1)
23
+ readonly page?: number = 1;
24
+
25
+ @ApiPropertyOptional({ minimum: 1, maximum: 50, default: 10 })
26
+ @Type(() => Number)
27
+ @IsInt()
28
+ @Min(1)
29
+ @Max(50)
30
+ readonly take?: number = 10;
31
+
32
+ get skip(): number {
33
+ return (this.page - 1) * this.take;
34
+ }
35
+ }
36
+ ```
37
+
38
+ ### Page DTO
39
+
40
+ Generic wrapper for paginated data.
41
+
42
+ ```typescript
43
+ // dtos/page.dto.ts
44
+ export class PageDto<T> {
45
+ @ApiProperty({ isArray: true })
46
+ readonly data: T[];
47
+
48
+ @ApiProperty({ type: () => PageMetaDto })
49
+ readonly meta: PageMetaDto;
50
+
51
+ constructor(data: T[], meta: PageMetaDto) {
52
+ this.data = data;
53
+ this.meta = meta;
54
+ }
55
+ }
56
+ ```
57
+
58
+ ### Swagger Decorator
59
+
60
+ Magical decorator to expose `PageDto<UserDto>` correctly in Swagger UI.
61
+
62
+ ```typescript
63
+ // decorators/api-paginated-response.decorator.ts
64
+ export const ApiPaginatedResponse = <TModel extends Type<any>>(
65
+ model: TModel,
66
+ ) => {
67
+ return applyDecorators(
68
+ ApiExtraModels(PageDto, model),
69
+ ApiOkResponse({
70
+ description: 'Successfully received model list',
71
+ schema: {
72
+ allOf: [
73
+ { $ref: getSchemaPath(PageDto) },
74
+ {
75
+ properties: {
76
+ data: {
77
+ type: 'array',
78
+ items: { $ref: getSchemaPath(model) },
79
+ },
80
+ },
81
+ },
82
+ ],
83
+ },
84
+ }),
85
+ );
86
+ };
87
+ ```
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: NestJS Architecture
3
+ description: Module organization, Dependency Injection patterns, and Project Structure.
4
+ metadata:
5
+ labels: [nestjs, architecture, modularity]
6
+ triggers:
7
+ files: ['**/*.module.ts', 'main.ts']
8
+ keywords: [Module, forRoot, forFeature, Dependency Injection]
9
+ ---
10
+
11
+ # NestJS Architecture Standards
12
+
13
+ ## Core Principles
14
+
15
+ 1. **Modularity**: Every feature **must** be encapsulated in its own `@Module`.
16
+ - **Do**: `users.module.ts`, `auth.module.ts`.
17
+ - **Don't**: Everything in `app.module.ts`.
18
+ 2. **Dependency Injection (DI)**: Invert control. Never manually instantiate classes (e.g., `new Service()`).
19
+ - **Use**: Constructor injection `constructor(private readonly service: Service)`.
20
+ 3. **Scalability**: Use **Feature Modules** for domain logic and **Core/Shared Modules** for reusable utilities.
21
+
22
+ ## Module Configuration
23
+
24
+ ### Dynamic Modules
25
+
26
+ - **Modern Pattern**: Use `ConfigurableModuleBuilder` class to auto-generate `forRoot`/`register` methods properly.
27
+ - **Reference**: See [Dynamic Module Builder Implementation](references/dynamic-module.md) for the boilerplate code.
28
+ - **Conventions**:
29
+ - `forRoot`: Global configurations (Db, Config).
30
+ - `register`: Per-instance configurations.
31
+ - `forFeature`: Extending a module with specific providers/entities.
32
+
33
+ ### Circular Dependencies
34
+
35
+ - **Avoid**: Re-architect to move shared logic to a common module.
36
+ - **Constraint**: If unavoidable, use `forwardRef(() => ModuleName)` on **both** sides of the import.
37
+
38
+ ## Advanced Providers
39
+
40
+ - **Factory Providers**: Use `useFactory` heavily for providers dependent on configuration or async operations.
41
+ - **Aliasing**: Use `useExisting` to provide backward compatibility or abstract different implementations.
42
+
43
+ ## Scopes & Lifecycle
44
+
45
+ - **Default**: **Singleton**. Best performance.
46
+ - **Request Scope**: Use `Scope.REQUEST` sparingly.
47
+ - **Performance Warning**: Request scope **bubbles up**. If a Service is request-scoped, every controller injecting it becomes request-scoped, triggering re-instantiation per request (~5-10% latency overhead).
48
+ - **Multi-tenancy**: If request-scope is needed (e.g. Tenant ID header), use **Durable Providers** (`durable: true`) with `ContextIdFactory` to reuse DI sub-trees.
49
+ - **Shutdown**: `SIGTERM` doesn't trigger cleanup by default.
50
+ - **Mandatory**: Call `app.enableShutdownHooks()` in `main.ts`.
51
+
52
+ ## Structure & Organization
53
+
54
+ - **Feature Modules**: Domain logic (`ShopModule`, `AuthModule`). Encapsulated.
55
+ - **Shared Module**: Reusable providers (`DateService`, `MathService`) exported to other modules. **Stateless**.
56
+ - **Core Module**:
57
+ - **Role**: Global infrastructure setup ONE TIME (Interceptors, Filters, Loggers).
58
+ - **Rule**: Import `CoreModule` **only** in `AppModule`.
59
+ - **Contents**: `APP_INTERCEPTOR`, `APP_FILTER`, `APP_GUARD` providers.
60
+
61
+ ## Reliability & Observability
62
+
63
+ - **Health Checks**: Mandatory for K8s/Docker.
64
+ - **Tool**: Use `@nestjs/terminus`. Expose `/health` endpoint checking DB, Cache (Redis), and Memory.
65
+ - **Structured Logging**:
66
+ - **Warning**: Default NestJS logger is unstructured text.
67
+ - **Standard**: Use `nestjs-pino` for JSON-formatted logs with automatic `req-id` correlation and request duration tracking.
68
+ - **Context**: Inject `Logger` into services to keep traces connected.