@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,108 @@
1
+ ---
2
+ name: TypeScript Best Practices
3
+ description: Idiomatic TypeScript patterns for clean, maintainable code.
4
+ metadata:
5
+ labels: [typescript, best-practices, idioms, conventions]
6
+ triggers:
7
+ files: ['**/*.ts', '**/*.tsx']
8
+ keywords: [class, function, module, import, export, async, promise]
9
+ ---
10
+
11
+ # TypeScript Best Practices
12
+
13
+ ## **Priority: P1 (OPERATIONAL)**
14
+
15
+ Idiomatic patterns for writing clean, maintainable TypeScript code.
16
+
17
+ ## Implementation Guidelines
18
+
19
+ - **Naming Conventions**:
20
+ - PascalCase for classes, interfaces, types, enums
21
+ - camelCase for variables, functions, methods, parameters
22
+ - UPPER_SNAKE_CASE for constants
23
+ - Prefix interfaces with `I` only when necessary for disambiguation
24
+ - **Functions**:
25
+ - Prefer arrow functions for callbacks and short functions
26
+ - Use regular functions for methods and exported functions
27
+ - Always specify return types for public APIs
28
+ - **Modules**:
29
+ - One export per file for major components/classes
30
+ - Use named exports over default exports for better refactoring
31
+ - Organize imports: external -> internal -> relative
32
+ - **Async/Await**:
33
+ - Prefer `async/await` over raw Promises
34
+ - Always handle errors with try/catch in async functions
35
+ - Use `Promise.all()` for parallel operations
36
+ - **Classes**:
37
+ - Use `private`/`protected`/`public` modifiers explicitly
38
+ - Prefer composition over inheritance
39
+ - Use `readonly` for properties that don't change after construction
40
+ - **Exhaustiveness Checking**: Use `never` type in `switch` cases.
41
+ - **Assertion Functions**: Use `asserts` for runtime type validation.
42
+ - **Optional Properties**: Use `?:`, not `| undefined`.
43
+ - **Type Imports**: Use `import type` for tree-shaking.
44
+
45
+ ## Anti-Patterns
46
+
47
+ - **No Default Exports**: Use named exports.
48
+ - **No Implicit Returns**: Specify return types.
49
+ - **No Unused Variables**: Enable `noUnusedLocals`.
50
+ - **No `require`**: Use ES6 `import`.
51
+ - **No Empty Interfaces**: Use `type` or non-empty interface.
52
+
53
+ ## Code
54
+
55
+ ````typescript
56
+ // Named Export + Immutable Interface
57
+ export interface User {
58
+ readonly id: string;
59
+ name: string;
60
+ }
61
+
62
+ // Exhaustive Check
63
+ function getStatus(s: 'ok' | 'fail') {
64
+ switch (s) {
65
+ case 'ok': return 'OK';
66
+ case 'fail': return 'Fail';
67
+ default: const _chk: never = s; return _chk;
68
+ }
69
+ }
70
+
71
+ // Assertion
72
+ function assertDefined<T>(val: T): asserts val is NonNullable<T> {
73
+ if (val == null) throw new Error("Defined expected");
74
+ }
75
+ ``` private readonly repository: UserRepository;
76
+
77
+ constructor(repository: UserRepository) {
78
+ this.repository = repository;
79
+ }
80
+
81
+ async getUser(id: string): Promise<UserProfile> {
82
+ try {
83
+ return await this.repository.findById(id);
84
+ } catch (error) {
85
+ throw new Error(`Failed to get user: ${error.message}`);
86
+ }
87
+ }
88
+ }
89
+
90
+ // Organize imports
91
+ import { Injectable } from '@nestjs/common';
92
+ import { ConfigService } from '@nestjs/config';
93
+
94
+ import { UserRepository } from '@/repositories/user.repository';
95
+ import { Logger } from '@/utils/logger';
96
+
97
+ // Type-only imports
98
+ import type { Request, Response } from 'express';
99
+ ````
100
+
101
+ ## Reference & Examples
102
+
103
+ For project structure and module organization:
104
+ See [references/REFERENCE.md](references/REFERENCE.md).
105
+
106
+ ## Related Topics
107
+
108
+ language | tooling | security
@@ -0,0 +1,68 @@
1
+ # TypeScript Best Practices Reference
2
+
3
+ Project structure and advanced patterns.
4
+
5
+ ## References
6
+
7
+ - [**Project Structure**](project-structure.md) - Scalable directory organization.
8
+ - [**Configuration**](configuration.md) - TSConfig best practices.
9
+
10
+ ## Project Structure
11
+
12
+ ```
13
+ src/
14
+ ├── domain/ # Business logic (entities, value objects)
15
+ │ ├── user/
16
+ │ │ ├── user.entity.ts
17
+ │ │ └── user.repository.interface.ts
18
+ ├── application/ # Use cases
19
+ │ └── user/
20
+ │ └── create-user.usecase.ts
21
+ ├── infrastructure/ # External concerns
22
+ │ ├── database/
23
+ │ └── http/
24
+ ├── presentation/ # Controllers, DTOs
25
+ │ └── user/
26
+ │ ├── user.controller.ts
27
+ │ └── user.dto.ts
28
+ └── shared/ # Shared utilities
29
+ ├── types/
30
+ └── utils/
31
+ ```
32
+
33
+ ## TSConfig Best Practices
34
+
35
+ ```json
36
+ {
37
+ "compilerOptions": {
38
+ "target": "ES2022",
39
+ "module": "commonjs",
40
+ "lib": ["ES2022"],
41
+ "strict": true,
42
+ "esModuleInterop": true,
43
+ "skipLibCheck": true,
44
+ "forceConsistentCasingInFileNames": true,
45
+ "resolveJsonModule": true,
46
+ "noUnusedLocals": true,
47
+ "noUnusedParameters": true,
48
+ "noImplicitReturns": true,
49
+ "noFallthroughCasesInSwitch": true,
50
+ "moduleResolution": "node",
51
+ "baseUrl": "./",
52
+ "paths": {
53
+ "@/*": ["src/*"]
54
+ }
55
+ }
56
+ }
57
+ ```
58
+
59
+ ## Barrel Exports (Use Sparingly)
60
+
61
+ ```typescript
62
+ // index.ts - Barrel file
63
+ export * from './user.service';
64
+ export * from './user.repository';
65
+ export type { UserDTO } from './user.dto';
66
+ ```
67
+
68
+ Note: Avoid deep barrel exports as they can impact build performance.
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: TypeScript Language Patterns
3
+ description: Modern TypeScript standards for type safety, performance, and maintainability.
4
+ metadata:
5
+ labels: [typescript, language, types, generics]
6
+ triggers:
7
+ files: ['**/*.ts', '**/*.tsx', 'tsconfig.json']
8
+ keywords:
9
+ [
10
+ type,
11
+ interface,
12
+ generic,
13
+ enum,
14
+ union,
15
+ intersection,
16
+ readonly,
17
+ const,
18
+ namespace,
19
+ ]
20
+ ---
21
+
22
+ # TypeScript Language Patterns
23
+
24
+ ## **Priority: P0 (CRITICAL)**
25
+
26
+ Modern TypeScript standards for type-safe, maintainable code.
27
+
28
+ ## Implementation Guidelines
29
+
30
+ - **Type Annotations**: Explicit params/returns. Infer locals.
31
+ - **Interfaces vs Types**: `interface` for APIs. `type` for unions.
32
+ - **Strict Mode**: `strict: true`.
33
+ - **Null Safety**: `?.` and `??`.
34
+ - **Enums**: Literal unions or `as const`.
35
+ - **Generics**: Reusable, type-safe code.
36
+ - **Type Guards**: `typeof`, `instanceof`, predicates.
37
+ - **Utility Types**: `Partial`, `Pick`, `Omit`, `Record`.
38
+ - **Immutability**: `readonly` arrays/objects.
39
+ - **Const Assertions**: `as const` and `satisfies`.
40
+ - **Template Literals**: `on${Capitalize<string>}`.
41
+ - **Discriminated Unions**: Literal `kind` property.
42
+ - **Advanced**: Mapped, Conditional, Indexed types.
43
+ - **Branded Types**: `string & { __brand: 'Id' }`.
44
+
45
+ ## Anti-Patterns
46
+
47
+ - **No `any`**: Use `unknown`.
48
+ - **No `Function`**: Use signature `() => void`.
49
+ - **No `enum`**: Runtime cost.
50
+ - **No `!`**: Use narrowing.
51
+
52
+ ## Code
53
+
54
+ ```typescript
55
+ // Branded Type
56
+ type UserId = string & { __brand: 'Id' };
57
+
58
+ // Satisfies (Validate + Infer)
59
+ const cfg = { port: 3000 } satisfies Record<string, number>;
60
+
61
+ // Discriminated Union
62
+ type Result<T> = { kind: 'ok'; data: T } | { kind: 'err'; error: Error };
63
+ ```
64
+
65
+ ## Reference & Examples
66
+
67
+ For advanced type patterns and utility types:
68
+ See [references/REFERENCE.md](references/REFERENCE.md).
69
+
70
+ ## Related Topics
71
+
72
+ best-practices | security | tooling
@@ -0,0 +1,67 @@
1
+ # TypeScript Language Patterns Reference
2
+
3
+ Advanced type patterns and utility implementations.
4
+
5
+ ## References
6
+
7
+ - [**Advanced Types**](advanced-types.md) - Conditional types, mapped types, and template literals.
8
+ - [**Type Guards**](type-guards.md) - Custom type guard patterns.
9
+ - [**Utility Types**](utility-types.md) - Custom utility type implementations.
10
+
11
+ ## Advanced Generic Patterns
12
+
13
+ ```typescript
14
+ // Conditional types
15
+ type NonNullable<T> = T extends null | undefined ? never : T;
16
+
17
+ // Mapped types
18
+ type Readonly<T> = {
19
+ readonly [P in keyof T]: T[P];
20
+ };
21
+
22
+ // Template literal types
23
+ type EventName<T extends string> = `on${Capitalize<T>}`;
24
+
25
+ // Recursive types
26
+ type DeepReadonly<T> = {
27
+ readonly [P in keyof T]: T[P] extends object
28
+ ? DeepReadonly<T[P]>
29
+ : T[P];
30
+ };
31
+ ```
32
+
33
+ ## Branded Types for Type Safety
34
+
35
+ ```typescript
36
+ type UserId = string & { readonly __brand: 'UserId' };
37
+ type OrderId = string & { readonly __brand: 'OrderId' };
38
+
39
+ function createUserId(id: string): UserId {
40
+ return id as UserId;
41
+ }
42
+
43
+ // Prevents mixing IDs at compile time
44
+ function getUser(id: UserId) { /* ... */ }
45
+ getUser(createUserId('123')); // OK
46
+ // getUser('123'); // Error: Type 'string' is not assignable to type 'UserId'
47
+ ```
48
+
49
+ ## Discriminated Unions
50
+
51
+ ```typescript
52
+ type Shape =
53
+ | { kind: 'circle'; radius: number }
54
+ | { kind: 'rectangle'; width: number; height: number }
55
+ | { kind: 'square'; size: number };
56
+
57
+ function area(shape: Shape): number {
58
+ switch (shape.kind) {
59
+ case 'circle':
60
+ return Math.PI * shape.radius ** 2;
61
+ case 'rectangle':
62
+ return shape.width * shape.height;
63
+ case 'square':
64
+ return shape.size ** 2;
65
+ }
66
+ }
67
+ ```
@@ -0,0 +1,85 @@
1
+ ---
2
+ id: typescript-patterns
3
+ version: 1.0.0
4
+ triggers: [typescript, types, patterns]
5
+ ---
6
+
7
+ # TypeScript Patterns
8
+
9
+ Type-safe patterns for robust code.
10
+
11
+ ## Discriminated Unions
12
+
13
+ ```typescript
14
+ type Result<T, E = Error> =
15
+ | { ok: true; value: T }
16
+ | { ok: false; error: E };
17
+
18
+ function handle(result: Result<User>) {
19
+ if (result.ok) {
20
+ console.log(result.value.name);
21
+ } else {
22
+ console.error(result.error.message);
23
+ }
24
+ }
25
+ ```
26
+
27
+ ## Branded Types
28
+
29
+ ```typescript
30
+ type UserId = string & { readonly __brand: 'UserId' };
31
+
32
+ function createUserId(id: string): UserId {
33
+ return id as UserId;
34
+ }
35
+
36
+ function getUser(id: UserId) { /* ... */ }
37
+
38
+ // Prevents accidental mixing
39
+ const userId = createUserId('123');
40
+ const orderId = '456';
41
+
42
+ getUser(userId); // OK
43
+ getUser(orderId); // Type error
44
+ ```
45
+
46
+ ## Exhaustive Checks
47
+
48
+ ```typescript
49
+ type Status = 'pending' | 'active' | 'closed';
50
+
51
+ function assertNever(x: never): never {
52
+ throw new Error(`Unexpected: ${x}`);
53
+ }
54
+
55
+ function getLabel(status: Status): string {
56
+ switch (status) {
57
+ case 'pending': return 'Pending';
58
+ case 'active': return 'Active';
59
+ case 'closed': return 'Closed';
60
+ default: return assertNever(status);
61
+ }
62
+ }
63
+ ```
64
+
65
+ ## Builder Pattern
66
+
67
+ ```typescript
68
+ class QueryBuilder {
69
+ private filters: string[] = [];
70
+
71
+ where(field: string, value: unknown): this {
72
+ this.filters.push(`${field} = ${value}`);
73
+ return this;
74
+ }
75
+
76
+ build(): string {
77
+ return this.filters.join(' AND ');
78
+ }
79
+ }
80
+
81
+ new QueryBuilder()
82
+ .where('status', 'active')
83
+ .where('age', 18)
84
+ .build();
85
+ ```
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: TypeScript Security
3
+ description: Secure coding practices for building safe TypeScript applications.
4
+ metadata:
5
+ labels: [security, typescript, validation, sanitization]
6
+ triggers:
7
+ files: ['**/*.ts', '**/*.tsx']
8
+ keywords:
9
+ [validate, sanitize, xss, injection, auth, password, secret, token]
10
+ ---
11
+
12
+ # TypeScript Security
13
+
14
+ ## **Priority: P0 (CRITICAL)**
15
+
16
+ Security standards for TypeScript applications based on OWASP guidelines.
17
+
18
+ ## Implementation Guidelines
19
+
20
+ - **Validation**: Validate all inputs with `zod`/`joi`/`class-validator`.
21
+ - **Sanitization**: Use `DOMPurify` for HTML. Prevent XSS.
22
+ - **Secrets**: Use env vars. Never hardcode.
23
+ - **SQL Injection**: Use parameterized queries or ORMs (Prisma/TypeORM).
24
+ - **Auth**: Use `bcrypt` for hashing. Implement strict RBAC.
25
+ - **HTTPS**: Enforce HTTPS. Set `secure`, `httpOnly`, `sameSite` cookies.
26
+ - **Rate Limit**: Prevent brute-force/DDoS.
27
+ - **Deps**: Audit with `npm audit`.
28
+
29
+ ## Anti-Patterns
30
+
31
+ - **No `eval()`**: Avoid dynamic execution.
32
+ - **No Plaintext**: Never commit secrets.
33
+ - **No Trust**: Validate everything server-side.
34
+
35
+ ## Code
36
+
37
+ ```typescript
38
+ // Validation (Zod)
39
+ const UserSchema = z.object({
40
+ email: z.string().email(),
41
+ pass: z.string().min(8),
42
+ });
43
+
44
+ // Secure Cookie
45
+ const cookieOpts = {
46
+ httpOnly: true,
47
+ secure: process.env.NODE_ENV === 'prod',
48
+ sameSite: 'strict' as const,
49
+ };
50
+ ```
51
+
52
+ ## Reference & Examples
53
+
54
+ For authentication patterns and security headers:
55
+ See [references/REFERENCE.md](references/REFERENCE.md).
56
+
57
+ ## Related Topics
58
+
59
+ best-practices | language
@@ -0,0 +1,113 @@
1
+ # TypeScript Security Reference
2
+
3
+ Authentication, authorization, and security patterns.
4
+
5
+ ## References
6
+
7
+ - [**Authentication**](authentication.md) - JWT and session management.
8
+ - [**Security Headers**](security-headers.md) - HTTP security headers configuration.
9
+
10
+ ## JWT Authentication Pattern
11
+
12
+ ```typescript
13
+ import jwt from 'jsonwebtoken';
14
+
15
+ interface JWTPayload {
16
+ userId: string;
17
+ role: string;
18
+ }
19
+
20
+ export class AuthService {
21
+ private readonly secret: string;
22
+
23
+ constructor() {
24
+ this.secret = process.env.JWT_SECRET!;
25
+ if (!this.secret) {
26
+ throw new Error('JWT_SECRET environment variable is required');
27
+ }
28
+ }
29
+
30
+ generateToken(payload: JWTPayload): string {
31
+ return jwt.sign(payload, this.secret, {
32
+ expiresIn: '1h',
33
+ issuer: 'your-app',
34
+ audience: 'your-api',
35
+ });
36
+ }
37
+
38
+ verifyToken(token: string): JWTPayload {
39
+ try {
40
+ return jwt.verify(token, this.secret) as JWTPayload;
41
+ } catch (error) {
42
+ throw new Error('Invalid token');
43
+ }
44
+ }
45
+ }
46
+ ```
47
+
48
+ ## Security Headers (Express)
49
+
50
+ ```typescript
51
+ import helmet from 'helmet';
52
+ import express from 'express';
53
+
54
+ const app = express();
55
+
56
+ // Security headers
57
+ app.use(helmet({
58
+ contentSecurityPolicy: {
59
+ directives: {
60
+ defaultSrc: ["'self'"],
61
+ scriptSrc: ["'self'"],
62
+ styleSrc: ["'self'", "'unsafe-inline'"],
63
+ imgSrc: ["'self'", 'data:', 'https:'],
64
+ },
65
+ },
66
+ hsts: {
67
+ maxAge: 31536000,
68
+ includeSubDomains: true,
69
+ preload: true,
70
+ },
71
+ }));
72
+
73
+ // CORS configuration
74
+ app.use(cors({
75
+ origin: process.env.ALLOWED_ORIGINS?.split(',') || [],
76
+ credentials: true,
77
+ }));
78
+ ```
79
+
80
+ ## Role-Based Access Control
81
+
82
+ ```typescript
83
+ enum Role {
84
+ ADMIN = 'admin',
85
+ USER = 'user',
86
+ GUEST = 'guest',
87
+ }
88
+
89
+ type Permission = 'read' | 'write' | 'delete';
90
+
91
+ const rolePermissions: Record<Role, Permission[]> = {
92
+ [Role.ADMIN]: ['read', 'write', 'delete'],
93
+ [Role.USER]: ['read', 'write'],
94
+ [Role.GUEST]: ['read'],
95
+ };
96
+
97
+ function hasPermission(role: Role, permission: Permission): boolean {
98
+ return rolePermissions[role].includes(permission);
99
+ }
100
+
101
+ // Middleware
102
+ function requirePermission(permission: Permission) {
103
+ return (req: Request, res: Response, next: NextFunction) => {
104
+ const user = req.user; // Assume user is set by auth middleware
105
+
106
+ if (!user || !hasPermission(user.role, permission)) {
107
+ return res.status(403).json({ error: 'Forbidden' });
108
+ }
109
+
110
+ next();
111
+ };
112
+ }
113
+ ```
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: TypeScript Tooling
3
+ description: Development tools, linting, and build configuration for TypeScript projects.
4
+ metadata:
5
+ labels: [tooling, typescript, eslint, prettier, testing]
6
+ triggers:
7
+ files: ['tsconfig.json', '.eslintrc.*', 'jest.config.*', 'package.json']
8
+ keywords: [eslint, prettier, jest, vitest, build, compile, lint]
9
+ ---
10
+
11
+ # TypeScript Tooling
12
+
13
+ ## **Priority: P1 (OPERATIONAL)**
14
+
15
+ Essential tooling for TypeScript development and maintenance.
16
+
17
+ ## Implementation Guidelines
18
+
19
+ - **Compiler**: `tsc` for CI. `ts-node`/`esbuild` for dev.
20
+ - **Lint**: ESLint + `@typescript-eslint`. Strict type checking.
21
+ - **Format**: Prettier (on save + commit).
22
+ - **Test**: Jest/Vitest > 80% coverage.
23
+ - **Build**: `tsup` (libs), Vite/Webpack (apps).
24
+ - **Check**: `tsc --noEmit` in CI.
25
+
26
+ ## Anti-Patterns
27
+
28
+ - **No Disable**: Avoid `// eslint-disable`.
29
+ - **No Skip**: Avoid `skipLibCheck: true` if possible.
30
+ - **No Ignore**: Use `@ts-expect-error` > `@ts-ignore`.
31
+
32
+ ## Configuration
33
+
34
+ ```json
35
+ // tsconfig.json
36
+ {
37
+ "compilerOptions": {
38
+ "strict": true,
39
+ "noImplicitReturns": true,
40
+ "noUnusedLocals": true
41
+ }
42
+ }
43
+ ```
44
+
45
+ ## Reference & Examples
46
+
47
+ For testing configuration and CI/CD setup:
48
+ See [references/REFERENCE.md](references/REFERENCE.md).
49
+
50
+ ## Related Topics
51
+
52
+ best-practices | language