@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,256 @@
1
+ # C# Best Practices Reference
2
+
3
+ Project structure, dependency injection, and configuration patterns.
4
+
5
+ ## References
6
+
7
+ - [**Project Structure**](project-structure.md) - Clean Architecture layout.
8
+ - [**DI Lifetimes**](di-lifetimes.md) - Transient, Scoped, Singleton comparison.
9
+ - [**Logging**](logging.md) - Structured logging best practices.
10
+
11
+ ## Project Structure (Clean Architecture)
12
+
13
+ ```
14
+ src/
15
+ ├── Domain/ # Core business logic (no dependencies)
16
+ │ ├── Entities/
17
+ │ │ ├── User.cs
18
+ │ │ └── Order.cs
19
+ │ ├── ValueObjects/
20
+ │ │ └── Money.cs
21
+ │ ├── Enums/
22
+ │ │ └── OrderStatus.cs
23
+ │ └── Interfaces/
24
+ │ ├── IUserRepository.cs
25
+ │ └── IOrderRepository.cs
26
+
27
+ ├── Application/ # Use cases (depends on Domain)
28
+ │ ├── Common/
29
+ │ │ ├── Interfaces/
30
+ │ │ │ └── IEmailService.cs
31
+ │ │ └── Behaviors/
32
+ │ │ └── ValidationBehavior.cs
33
+ │ ├── Users/
34
+ │ │ ├── Commands/
35
+ │ │ │ └── CreateUserCommand.cs
36
+ │ │ └── Queries/
37
+ │ │ └── GetUserQuery.cs
38
+ │ └── DependencyInjection.cs
39
+
40
+ ├── Infrastructure/ # External concerns (DB, Email, etc.)
41
+ │ ├── Data/
42
+ │ │ ├── AppDbContext.cs
43
+ │ │ └── Repositories/
44
+ │ │ └── UserRepository.cs
45
+ │ ├── Services/
46
+ │ │ └── EmailService.cs
47
+ │ └── DependencyInjection.cs
48
+
49
+ └── WebApi/ # Presentation layer
50
+ ├── Controllers/
51
+ │ └── UsersController.cs
52
+ ├── Middleware/
53
+ │ └── ExceptionMiddleware.cs
54
+ └── Program.cs
55
+ ```
56
+
57
+ ## DI Lifetime Comparison
58
+
59
+ | Lifetime | Created | Disposed | Use Case |
60
+ |----------|---------|----------|----------|
61
+ | **Transient** | Every request | After use | Lightweight, stateless services |
62
+ | **Scoped** | Once per HTTP request | End of request | DbContext, UnitOfWork |
63
+ | **Singleton** | Once per app | App shutdown | Caches, HttpClientFactory |
64
+
65
+ ```csharp
66
+ // Registration examples
67
+ services.AddTransient<IEmailSender, EmailSender>(); // New instance each time
68
+ services.AddScoped<IUserRepository, UserRepository>(); // Per HTTP request
69
+ services.AddSingleton<ICacheService, MemoryCacheService>(); // App lifetime
70
+
71
+ // Common mistake: Scoped in Singleton (captive dependency)
72
+ // ❌ DON'T: Singleton depending on Scoped
73
+ public class SingletonService(IScopedService scoped) { } // Runtime error!
74
+
75
+ // ✅ DO: Use IServiceScopeFactory for scoped in singleton
76
+ public class SingletonService(IServiceScopeFactory scopeFactory)
77
+ {
78
+ public async Task DoWork()
79
+ {
80
+ using var scope = scopeFactory.CreateScope();
81
+ var scoped = scope.ServiceProvider.GetRequiredService<IScopedService>();
82
+ await scoped.ProcessAsync();
83
+ }
84
+ }
85
+ ```
86
+
87
+ ## Logging Best Practices
88
+
89
+ ```csharp
90
+ // Log levels usage
91
+ public class OrderProcessor(ILogger<OrderProcessor> logger)
92
+ {
93
+ public async Task ProcessAsync(Order order)
94
+ {
95
+ // Trace: Very detailed, only for debugging specific issues
96
+ logger.LogTrace("Processing order with data: {@Order}", order);
97
+
98
+ // Debug: Development diagnostics
99
+ logger.LogDebug("Starting order processing for {OrderId}", order.Id);
100
+
101
+ // Information: Normal operation milestones
102
+ logger.LogInformation("Order {OrderId} processed successfully", order.Id);
103
+
104
+ // Warning: Unexpected but handled situations
105
+ if (order.Items.Count == 0)
106
+ logger.LogWarning("Order {OrderId} has no items", order.Id);
107
+
108
+ // Error: Failures that need attention
109
+ try { await SendEmailAsync(order); }
110
+ catch (Exception ex)
111
+ {
112
+ logger.LogError(ex, "Failed to send email for order {OrderId}", order.Id);
113
+ }
114
+
115
+ // Critical: App-breaking failures
116
+ // logger.LogCritical("Database connection lost");
117
+ }
118
+ }
119
+
120
+ // High-performance logging with source generators
121
+ public static partial class LogMessages
122
+ {
123
+ [LoggerMessage(Level = LogLevel.Information, Message = "Order {OrderId} created by {UserId}")]
124
+ public static partial void OrderCreated(this ILogger logger, int orderId, int userId);
125
+
126
+ [LoggerMessage(Level = LogLevel.Error, Message = "Payment failed for order {OrderId}")]
127
+ public static partial void PaymentFailed(this ILogger logger, int orderId, Exception ex);
128
+ }
129
+
130
+ // Usage
131
+ logger.OrderCreated(order.Id, user.Id);
132
+ ```
133
+
134
+ ## Configuration Patterns
135
+
136
+ ```csharp
137
+ // appsettings.json structure
138
+ {
139
+ "Database": {
140
+ "ConnectionString": "...",
141
+ "CommandTimeout": 30
142
+ },
143
+ "Email": {
144
+ "SmtpHost": "smtp.example.com",
145
+ "SmtpPort": 587,
146
+ "FromAddress": "noreply@example.com"
147
+ },
148
+ "Features": {
149
+ "EnableNewDashboard": true
150
+ }
151
+ }
152
+
153
+ // Strongly-typed options
154
+ public class DatabaseSettings
155
+ {
156
+ public const string SectionName = "Database";
157
+
158
+ [Required]
159
+ public string ConnectionString { get; init; } = string.Empty;
160
+
161
+ [Range(1, 300)]
162
+ public int CommandTimeout { get; init; } = 30;
163
+ }
164
+
165
+ // Registration with validation
166
+ builder.Services.AddOptions<DatabaseSettings>()
167
+ .BindConfiguration(DatabaseSettings.SectionName)
168
+ .ValidateDataAnnotations()
169
+ .ValidateOnStart(); // Fail fast at startup
170
+
171
+ // Usage patterns
172
+ public class DataService(IOptions<DatabaseSettings> options)
173
+ {
174
+ // IOptions<T> - Singleton, read once at startup
175
+ private readonly DatabaseSettings _settings = options.Value;
176
+ }
177
+
178
+ public class FeatureService(IOptionsSnapshot<DatabaseSettings> options)
179
+ {
180
+ // IOptionsSnapshot<T> - Scoped, re-reads on each request
181
+ public void DoWork() => Console.WriteLine(options.Value.CommandTimeout);
182
+ }
183
+
184
+ public class BackgroundService(IOptionsMonitor<DatabaseSettings> options)
185
+ {
186
+ // IOptionsMonitor<T> - Singleton with change notifications
187
+ public BackgroundService()
188
+ {
189
+ options.OnChange(settings => Console.WriteLine("Config changed!"));
190
+ }
191
+ }
192
+ ```
193
+
194
+ ## Extension Method Patterns
195
+
196
+ ```csharp
197
+ // Service registration extensions
198
+ public static class ServiceCollectionExtensions
199
+ {
200
+ public static IServiceCollection AddInfrastructure(
201
+ this IServiceCollection services,
202
+ IConfiguration configuration)
203
+ {
204
+ // Database
205
+ services.AddDbContext<AppDbContext>(options =>
206
+ options.UseSqlServer(configuration.GetConnectionString("Default")));
207
+
208
+ // Repositories
209
+ services.AddScoped<IUserRepository, UserRepository>();
210
+ services.AddScoped<IOrderRepository, OrderRepository>();
211
+
212
+ // External services
213
+ services.AddHttpClient<IPaymentClient, PaymentClient>(client =>
214
+ {
215
+ client.BaseAddress = new Uri(configuration["Payment:BaseUrl"]!);
216
+ client.Timeout = TimeSpan.FromSeconds(30);
217
+ });
218
+
219
+ return services;
220
+ }
221
+ }
222
+
223
+ // Usage in Program.cs
224
+ builder.Services
225
+ .AddInfrastructure(builder.Configuration)
226
+ .AddApplication();
227
+ ```
228
+
229
+ ## Naming Convention Examples
230
+
231
+ ```csharp
232
+ // ✅ Correct naming
233
+ public interface IUserRepository { } // Interface: IPascalCase
234
+ public class UserRepository : IUserRepository // Class: PascalCase
235
+ {
236
+ private readonly DbContext _context; // Private field: _camelCase
237
+ private readonly ILogger<UserRepository> _logger;
238
+
239
+ public string ConnectionString { get; } // Property: PascalCase
240
+ public event EventHandler? UserCreated; // Event: PascalCase
241
+
242
+ public async Task<User?> GetByIdAsync( // Method: PascalCase
243
+ int userId, // Parameter: camelCase
244
+ CancellationToken cancellationToken)
245
+ {
246
+ var user = await _context.Users // Local: camelCase
247
+ .FindAsync(userId, cancellationToken);
248
+ return user;
249
+ }
250
+ }
251
+
252
+ public class Repository<TEntity> // Type parameter: TPascalCase
253
+ where TEntity : class { }
254
+
255
+ public const string DefaultRole = "User"; // Constant: PascalCase
256
+ ```
@@ -0,0 +1,146 @@
1
+ ---
2
+ name: Blazor
3
+ description: Blazor component patterns for interactive web UIs.
4
+ metadata:
5
+ labels: [blazor, components, wasm, server]
6
+ triggers:
7
+ files: ['**/*.razor', '**/*.razor.cs']
8
+ keywords: [Component, Parameter, CascadingParameter, EventCallback, StateHasChanged]
9
+ ---
10
+
11
+ # Blazor
12
+
13
+ ## **Priority: P1 (OPERATIONAL)**
14
+
15
+ Blazor component patterns for interactive web UIs.
16
+
17
+ ## Implementation Guidelines
18
+
19
+ - **Components**: Keep components focused. Split large components into smaller ones.
20
+ - **Parameters**: Use `[Parameter]` for one-way, `EventCallback` for two-way binding.
21
+ - **Cascading Values**: Use for app-wide state (theme, user context).
22
+ - **State Management**: Component state for local, Fluxor/custom service for global.
23
+ - **Forms**: `EditForm` with `DataAnnotationsValidator` or FluentValidation.
24
+ - **JS Interop**: Use `IJSRuntime` sparingly. Prefer Blazor bindings.
25
+ - **Render Modes**: Choose based on requirements (Server, WASM, Auto in .NET 8+).
26
+ - **Streaming**: Use `[StreamRendering]` for long-loading components.
27
+
28
+ ## Anti-Patterns
29
+
30
+ - **No direct DOM manipulation**: Use Blazor bindings and refs.
31
+ - **No `StateHasChanged()` in lifecycle**: Called automatically after lifecycle methods.
32
+ - **No heavy computation in render**: Move to `OnInitialized` or background task.
33
+ - **No sync JS interop in Server mode**: Causes UI blocking.
34
+
35
+ ## Code
36
+
37
+ ```razor
38
+ @* UserList.razor *@
39
+ @page "/users"
40
+ @attribute [StreamRendering]
41
+ @inject IUserService UserService
42
+
43
+ <PageTitle>Users</PageTitle>
44
+
45
+ <h3>Users</h3>
46
+
47
+ @if (_users is null)
48
+ {
49
+ <p><em>Loading...</em></p>
50
+ }
51
+ else if (_users.Count == 0)
52
+ {
53
+ <p>No users found.</p>
54
+ }
55
+ else
56
+ {
57
+ <div class="user-grid">
58
+ @foreach (var user in _users)
59
+ {
60
+ <UserCard User="user" OnDelete="HandleDelete" />
61
+ }
62
+ </div>
63
+ }
64
+
65
+ @code {
66
+ private List<User>? _users;
67
+
68
+ protected override async Task OnInitializedAsync()
69
+ {
70
+ _users = await UserService.GetAllAsync();
71
+ }
72
+
73
+ private async Task HandleDelete(int userId)
74
+ {
75
+ await UserService.DeleteAsync(userId);
76
+ _users = await UserService.GetAllAsync();
77
+ }
78
+ }
79
+ ```
80
+
81
+ ```razor
82
+ @* UserCard.razor - Reusable component *@
83
+ <div class="card">
84
+ <h5>@User.Name</h5>
85
+ <p>@User.Email</p>
86
+ <button @onclick="() => OnDelete.InvokeAsync(User.Id)">Delete</button>
87
+ </div>
88
+
89
+ @code {
90
+ [Parameter, EditorRequired]
91
+ public User User { get; set; } = default!;
92
+
93
+ [Parameter]
94
+ public EventCallback<int> OnDelete { get; set; }
95
+ }
96
+ ```
97
+
98
+ ```razor
99
+ @* EditForm with validation *@
100
+ <EditForm Model="@_model" OnValidSubmit="HandleSubmit" FormName="CreateUser">
101
+ <DataAnnotationsValidator />
102
+ <ValidationSummary class="text-danger" />
103
+
104
+ <div class="mb-3">
105
+ <label class="form-label">Name</label>
106
+ <InputText @bind-Value="_model.Name" class="form-control" />
107
+ <ValidationMessage For="@(() => _model.Name)" />
108
+ </div>
109
+
110
+ <div class="mb-3">
111
+ <label class="form-label">Email</label>
112
+ <InputText @bind-Value="_model.Email" class="form-control" type="email" />
113
+ <ValidationMessage For="@(() => _model.Email)" />
114
+ </div>
115
+
116
+ <button type="submit" class="btn btn-primary" disabled="@_isSubmitting">
117
+ @if (_isSubmitting)
118
+ {
119
+ <span class="spinner-border spinner-border-sm"></span>
120
+ }
121
+ Submit
122
+ </button>
123
+ </EditForm>
124
+
125
+ @code {
126
+ private CreateUserModel _model = new();
127
+ private bool _isSubmitting;
128
+
129
+ private async Task HandleSubmit()
130
+ {
131
+ _isSubmitting = true;
132
+ await UserService.CreateAsync(_model);
133
+ _isSubmitting = false;
134
+ NavigationManager.NavigateTo("/users");
135
+ }
136
+ }
137
+ ```
138
+
139
+ ## Reference & Examples
140
+
141
+ For lifecycle, state management, and JS interop:
142
+ See [references/REFERENCE.md](references/REFERENCE.md).
143
+
144
+ ## Related Topics
145
+
146
+ aspnet-core | razor-pages | security