@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,239 @@
1
+ ---
2
+ name: Ent ORM
3
+ description: Facebook's entity framework for Go with code generation.
4
+ metadata:
5
+ labels: [golang, ent, orm, database]
6
+ triggers:
7
+ files: ['ent/schema/*.go', 'ent/generate.go']
8
+ keywords: [ent, entgo, schema, Field, Edge]
9
+ ---
10
+
11
+ # Ent ORM Standards
12
+
13
+ ## Schema Definition
14
+
15
+ ```go
16
+ // ent/schema/user.go
17
+ package schema
18
+
19
+ import (
20
+ "entgo.io/ent"
21
+ "entgo.io/ent/schema/field"
22
+ "entgo.io/ent/schema/edge"
23
+ )
24
+
25
+ type User struct {
26
+ ent.Schema
27
+ }
28
+
29
+ func (User) Fields() []ent.Field {
30
+ return []ent.Field{
31
+ field.String("name").NotEmpty(),
32
+ field.String("email").Unique(),
33
+ field.Int("age").Positive().Optional(),
34
+ field.Time("created_at").Default(time.Now),
35
+ field.Enum("role").Values("admin", "user").Default("user"),
36
+ }
37
+ }
38
+
39
+ func (User) Edges() []ent.Edge {
40
+ return []ent.Edge{
41
+ edge.To("posts", Post.Type),
42
+ edge.To("groups", Group.Type),
43
+ }
44
+ }
45
+ ```
46
+
47
+ ## Code Generation
48
+
49
+ ```bash
50
+ # Install
51
+ go install entgo.io/ent/cmd/ent@latest
52
+
53
+ # Generate
54
+ go generate ./ent
55
+
56
+ # New schema
57
+ ent new User
58
+ ent new Post
59
+ ```
60
+
61
+ ```go
62
+ // ent/generate.go
63
+ //go:generate go run -mod=mod entgo.io/ent/cmd/ent generate ./schema
64
+ package ent
65
+ ```
66
+
67
+ ## CRUD Operations
68
+
69
+ ```go
70
+ // Create
71
+ user, err := client.User.
72
+ Create().
73
+ SetName("John").
74
+ SetEmail("john@example.com").
75
+ Save(ctx)
76
+
77
+ // Create bulk
78
+ users, err := client.User.
79
+ CreateBulk(
80
+ client.User.Create().SetName("A").SetEmail("a@x.com"),
81
+ client.User.Create().SetName("B").SetEmail("b@x.com"),
82
+ ).
83
+ Save(ctx)
84
+
85
+ // Read
86
+ user, err := client.User.Get(ctx, id)
87
+ user, err := client.User.Query().
88
+ Where(user.Email("john@example.com")).
89
+ Only(ctx)
90
+
91
+ // Update
92
+ user, err := client.User.
93
+ UpdateOneID(id).
94
+ SetName("Jane").
95
+ Save(ctx)
96
+
97
+ // Delete
98
+ err := client.User.DeleteOneID(id).Exec(ctx)
99
+ ```
100
+
101
+ ## Queries
102
+
103
+ ```go
104
+ // Filter
105
+ users, err := client.User.Query().
106
+ Where(
107
+ user.AgeGT(18),
108
+ user.RoleEQ(user.RoleAdmin),
109
+ ).
110
+ All(ctx)
111
+
112
+ // Or conditions
113
+ users, err := client.User.Query().
114
+ Where(
115
+ user.Or(
116
+ user.RoleEQ(user.RoleAdmin),
117
+ user.AgeGT(30),
118
+ ),
119
+ ).
120
+ All(ctx)
121
+
122
+ // Order and limit
123
+ users, err := client.User.Query().
124
+ Order(ent.Desc(user.FieldCreatedAt)).
125
+ Limit(10).
126
+ Offset(20).
127
+ All(ctx)
128
+
129
+ // Select specific fields
130
+ names, err := client.User.Query().
131
+ Select(user.FieldName).
132
+ Strings(ctx)
133
+ ```
134
+
135
+ ## Edges (Relations)
136
+
137
+ ```go
138
+ // Schema with edges
139
+ func (Post) Edges() []ent.Edge {
140
+ return []ent.Edge{
141
+ edge.From("author", User.Type).
142
+ Ref("posts").
143
+ Unique().
144
+ Required(),
145
+ }
146
+ }
147
+
148
+ // Query with edges
149
+ posts, err := client.User.Query().
150
+ Where(user.ID(id)).
151
+ QueryPosts().
152
+ All(ctx)
153
+
154
+ // Eager loading
155
+ users, err := client.User.Query().
156
+ WithPosts().
157
+ WithGroups().
158
+ All(ctx)
159
+
160
+ for _, u := range users {
161
+ for _, p := range u.Edges.Posts {
162
+ fmt.Println(p.Title)
163
+ }
164
+ }
165
+ ```
166
+
167
+ ## Transactions
168
+
169
+ ```go
170
+ tx, err := client.Tx(ctx)
171
+ if err != nil {
172
+ return err
173
+ }
174
+ defer tx.Rollback()
175
+
176
+ user, err := tx.User.Create().
177
+ SetName("John").
178
+ Save(ctx)
179
+ if err != nil {
180
+ return err
181
+ }
182
+
183
+ _, err = tx.Post.Create().
184
+ SetTitle("First Post").
185
+ SetAuthor(user).
186
+ Save(ctx)
187
+ if err != nil {
188
+ return err
189
+ }
190
+
191
+ return tx.Commit()
192
+ ```
193
+
194
+ ## Hooks
195
+
196
+ ```go
197
+ func (User) Hooks() []ent.Hook {
198
+ return []ent.Hook{
199
+ hook.On(
200
+ func(next ent.Mutator) ent.Mutator {
201
+ return hook.UserFunc(func(ctx context.Context, m *ent.UserMutation) (ent.Value, error) {
202
+ // Before create/update
203
+ if name, ok := m.Name(); ok {
204
+ m.SetName(strings.TrimSpace(name))
205
+ }
206
+ return next.Mutate(ctx, m)
207
+ })
208
+ },
209
+ ent.OpCreate|ent.OpUpdate,
210
+ ),
211
+ }
212
+ }
213
+ ```
214
+
215
+ ## Migrations
216
+
217
+ ```go
218
+ // Auto migration (development)
219
+ if err := client.Schema.Create(ctx); err != nil {
220
+ log.Fatalf("failed creating schema: %v", err)
221
+ }
222
+
223
+ // With options
224
+ err := client.Schema.Create(ctx,
225
+ migrate.WithDropIndex(true),
226
+ migrate.WithDropColumn(true),
227
+ )
228
+
229
+ // Versioned migrations (production)
230
+ // Use Atlas: https://atlasgo.io/
231
+ ```
232
+
233
+ ## Best Practices
234
+
235
+ 1. **Code generation**: Run `go generate` after schema changes
236
+ 2. **Edges**: Define both sides of relationships
237
+ 3. **Transactions**: Use for related operations
238
+ 4. **Hooks**: For validation, normalization
239
+ 5. **Migrations**: Use Atlas for production
@@ -0,0 +1,13 @@
1
+ # Ent ORM References
2
+
3
+ ## References
4
+
5
+ - [**Schema Patterns**](schema-patterns.md) - Entity definitions, edges, hooks
6
+
7
+ ## Quick Checks
8
+
9
+ - [ ] Code-generated type-safe API
10
+ - [ ] Define schemas with ent CLI
11
+ - [ ] Edges for relationships
12
+ - [ ] Privacy policies for access control
13
+ - [ ] Hooks for side effects
@@ -0,0 +1,255 @@
1
+ # Ent Schema Patterns
2
+
3
+ ## Schema Definition
4
+
5
+ ```go
6
+ // ent/schema/user.go
7
+ package schema
8
+
9
+ import (
10
+ "time"
11
+ "entgo.io/ent"
12
+ "entgo.io/ent/schema/field"
13
+ "entgo.io/ent/schema/edge"
14
+ "entgo.io/ent/schema/index"
15
+ )
16
+
17
+ type User struct {
18
+ ent.Schema
19
+ }
20
+
21
+ func (User) Fields() []ent.Field {
22
+ return []ent.Field{
23
+ field.String("name").
24
+ NotEmpty().
25
+ MaxLen(100),
26
+ field.String("email").
27
+ Unique(),
28
+ field.Int("age").
29
+ Positive().
30
+ Optional(),
31
+ field.Bool("active").
32
+ Default(true),
33
+ field.Enum("role").
34
+ Values("admin", "user", "guest").
35
+ Default("user"),
36
+ field.Time("created_at").
37
+ Default(time.Now).
38
+ Immutable(),
39
+ field.Time("updated_at").
40
+ Default(time.Now).
41
+ UpdateDefault(time.Now),
42
+ }
43
+ }
44
+
45
+ func (User) Edges() []ent.Edge {
46
+ return []ent.Edge{
47
+ // One-to-many: User has many Posts
48
+ edge.To("posts", Post.Type),
49
+ // Many-to-many: User has many Groups
50
+ edge.To("groups", Group.Type),
51
+ // Inverse edge: User belongs to a Company
52
+ edge.From("company", Company.Type).
53
+ Ref("employees").
54
+ Unique(),
55
+ }
56
+ }
57
+
58
+ func (User) Indexes() []ent.Index {
59
+ return []ent.Index{
60
+ index.Fields("email").Unique(),
61
+ index.Fields("name", "created_at"),
62
+ }
63
+ }
64
+ ```
65
+
66
+ ## Edge Definitions
67
+
68
+ ```go
69
+ // Post schema
70
+ type Post struct {
71
+ ent.Schema
72
+ }
73
+
74
+ func (Post) Fields() []ent.Field {
75
+ return []ent.Field{
76
+ field.String("title"),
77
+ field.Text("content"),
78
+ }
79
+ }
80
+
81
+ func (Post) Edges() []ent.Edge {
82
+ return []ent.Edge{
83
+ // Inverse of User.posts
84
+ edge.From("author", User.Type).
85
+ Ref("posts").
86
+ Unique().
87
+ Required(),
88
+ // Self-referential: parent comment
89
+ edge.To("children", Post.Type).
90
+ From("parent").
91
+ Unique(),
92
+ }
93
+ }
94
+ ```
95
+
96
+ ## CRUD Operations
97
+
98
+ ```go
99
+ import "myapp/ent"
100
+
101
+ func main() {
102
+ client, _ := ent.Open("postgres", "...")
103
+ defer client.Close()
104
+ ctx := context.Background()
105
+
106
+ // Create
107
+ user, err := client.User.
108
+ Create().
109
+ SetName("John").
110
+ SetEmail("john@example.com").
111
+ SetAge(30).
112
+ Save(ctx)
113
+
114
+ // Create with edges
115
+ post, _ := client.Post.
116
+ Create().
117
+ SetTitle("Hello").
118
+ SetContent("World").
119
+ SetAuthor(user).
120
+ Save(ctx)
121
+
122
+ // Read
123
+ user, _ = client.User.Get(ctx, 1)
124
+ user, _ = client.User.
125
+ Query().
126
+ Where(user.EmailEQ("john@example.com")).
127
+ Only(ctx)
128
+
129
+ // Update
130
+ user, _ = client.User.
131
+ UpdateOne(user).
132
+ SetAge(31).
133
+ Save(ctx)
134
+
135
+ // Bulk update
136
+ affected, _ := client.User.
137
+ Update().
138
+ Where(user.AgeGT(18)).
139
+ SetActive(true).
140
+ Save(ctx)
141
+
142
+ // Delete
143
+ client.User.DeleteOne(user).Exec(ctx)
144
+ }
145
+ ```
146
+
147
+ ## Queries
148
+
149
+ ```go
150
+ // Eager loading edges
151
+ users, _ := client.User.
152
+ Query().
153
+ WithPosts().
154
+ WithGroups().
155
+ All(ctx)
156
+
157
+ for _, u := range users {
158
+ for _, p := range u.Edges.Posts {
159
+ fmt.Println(p.Title)
160
+ }
161
+ }
162
+
163
+ // Complex queries
164
+ users, _ := client.User.
165
+ Query().
166
+ Where(
167
+ user.And(
168
+ user.AgeGTE(18),
169
+ user.ActiveEQ(true),
170
+ ),
171
+ ).
172
+ Order(ent.Desc(user.FieldCreatedAt)).
173
+ Limit(10).
174
+ Offset(0).
175
+ All(ctx)
176
+
177
+ // Aggregations
178
+ count, _ := client.User.
179
+ Query().
180
+ Where(user.ActiveEQ(true)).
181
+ Count(ctx)
182
+
183
+ // Select specific fields
184
+ var v []struct {
185
+ Name string `json:"name"`
186
+ Email string `json:"email"`
187
+ }
188
+ client.User.
189
+ Query().
190
+ Select(user.FieldName, user.FieldEmail).
191
+ Scan(ctx, &v)
192
+ ```
193
+
194
+ ## Hooks
195
+
196
+ ```go
197
+ func (User) Hooks() []ent.Hook {
198
+ return []ent.Hook{
199
+ // Before create/update
200
+ hook.On(
201
+ func(next ent.Mutator) ent.Mutator {
202
+ return hook.UserFunc(func(ctx context.Context, m *ent.UserMutation) (ent.Value, error) {
203
+ // Validate or modify
204
+ if name, ok := m.Name(); ok && name == "" {
205
+ return nil, errors.New("name cannot be empty")
206
+ }
207
+ return next.Mutate(ctx, m)
208
+ })
209
+ },
210
+ ent.OpCreate|ent.OpUpdate,
211
+ ),
212
+ }
213
+ }
214
+ ```
215
+
216
+ ## Transactions
217
+
218
+ ```go
219
+ tx, err := client.Tx(ctx)
220
+ if err != nil {
221
+ return err
222
+ }
223
+
224
+ user, err := tx.User.Create().
225
+ SetName("John").
226
+ Save(ctx)
227
+ if err != nil {
228
+ tx.Rollback()
229
+ return err
230
+ }
231
+
232
+ _, err = tx.Post.Create().
233
+ SetTitle("First Post").
234
+ SetAuthor(user).
235
+ Save(ctx)
236
+ if err != nil {
237
+ tx.Rollback()
238
+ return err
239
+ }
240
+
241
+ return tx.Commit()
242
+ ```
243
+
244
+ ## Generate Commands
245
+
246
+ ```bash
247
+ # Initialize ent
248
+ go run -mod=mod entgo.io/ent/cmd/ent new User
249
+
250
+ # Generate code
251
+ go generate ./ent
252
+
253
+ # With features
254
+ go run -mod=mod entgo.io/ent/cmd/ent generate --feature sql/upsert ./ent/schema
255
+ ```
@@ -0,0 +1,196 @@
1
+ ---
2
+ name: Fiber Framework
3
+ description: Express-inspired Go web framework built on fasthttp.
4
+ metadata:
5
+ labels: [golang, fiber, web, framework, fasthttp]
6
+ triggers:
7
+ files: ['**/main.go']
8
+ keywords: [fiber, fiber.New, fiber.Ctx, app.Listen]
9
+ ---
10
+
11
+ # Fiber Framework Standards
12
+
13
+ ## Application Setup
14
+
15
+ ```go
16
+ package main
17
+
18
+ import (
19
+ "github.com/gofiber/fiber/v2"
20
+ "github.com/gofiber/fiber/v2/middleware/logger"
21
+ "github.com/gofiber/fiber/v2/middleware/recover"
22
+ )
23
+
24
+ func main() {
25
+ app := fiber.New(fiber.Config{
26
+ ErrorHandler: customErrorHandler,
27
+ ReadTimeout: 10 * time.Second,
28
+ WriteTimeout: 10 * time.Second,
29
+ })
30
+
31
+ // Middleware
32
+ app.Use(logger.New())
33
+ app.Use(recover.New())
34
+
35
+ // Routes
36
+ app.Get("/", homeHandler)
37
+ app.Get("/users/:id", getUser)
38
+ app.Post("/users", createUser)
39
+
40
+ // Route groups
41
+ api := app.Group("/api/v1")
42
+ api.Get("/items", listItems)
43
+
44
+ app.Listen(":3000")
45
+ }
46
+ ```
47
+
48
+ ## Handlers
49
+
50
+ ```go
51
+ // Path parameters
52
+ func getUser(c *fiber.Ctx) error {
53
+ id := c.Params("id")
54
+ user, err := findUser(id)
55
+ if err != nil {
56
+ return c.Status(404).JSON(fiber.Map{"error": "Not found"})
57
+ }
58
+ return c.JSON(user)
59
+ }
60
+
61
+ // Query parameters
62
+ func listUsers(c *fiber.Ctx) error {
63
+ page := c.QueryInt("page", 1)
64
+ limit := c.QueryInt("limit", 10)
65
+ users := fetchUsers(page, limit)
66
+ return c.JSON(users)
67
+ }
68
+
69
+ // JSON body
70
+ type CreateUserRequest struct {
71
+ Name string `json:"name"`
72
+ Email string `json:"email"`
73
+ }
74
+
75
+ func createUser(c *fiber.Ctx) error {
76
+ var req CreateUserRequest
77
+ if err := c.BodyParser(&req); err != nil {
78
+ return c.Status(400).JSON(fiber.Map{"error": "Invalid request"})
79
+ }
80
+ user := insertUser(req)
81
+ return c.Status(201).JSON(user)
82
+ }
83
+ ```
84
+
85
+ ## Middleware
86
+
87
+ ```go
88
+ // Built-in middleware
89
+ app.Use(logger.New())
90
+ app.Use(recover.New())
91
+ app.Use(cors.New())
92
+ app.Use(compress.New())
93
+ app.Use(limiter.New(limiter.Config{
94
+ Max: 100,
95
+ Expiration: 1 * time.Minute,
96
+ }))
97
+
98
+ // Custom middleware
99
+ func authMiddleware(c *fiber.Ctx) error {
100
+ token := c.Get("Authorization")
101
+ if token == "" {
102
+ return c.Status(401).JSON(fiber.Map{"error": "Unauthorized"})
103
+ }
104
+
105
+ user, err := validateToken(token)
106
+ if err != nil {
107
+ return c.Status(401).JSON(fiber.Map{"error": "Invalid token"})
108
+ }
109
+
110
+ c.Locals("user", user)
111
+ return c.Next()
112
+ }
113
+
114
+ // Apply middleware
115
+ api := app.Group("/api", authMiddleware)
116
+ ```
117
+
118
+ ## Error Handling
119
+
120
+ ```go
121
+ // Custom error handler
122
+ func customErrorHandler(c *fiber.Ctx, err error) error {
123
+ code := fiber.StatusInternalServerError
124
+ message := "Internal Server Error"
125
+
126
+ if e, ok := err.(*fiber.Error); ok {
127
+ code = e.Code
128
+ message = e.Message
129
+ }
130
+
131
+ return c.Status(code).JSON(fiber.Map{
132
+ "error": message,
133
+ })
134
+ }
135
+
136
+ // In handlers, return fiber.Error
137
+ func handler(c *fiber.Ctx) error {
138
+ if notFound {
139
+ return fiber.NewError(404, "Resource not found")
140
+ }
141
+ return c.JSON(data)
142
+ }
143
+ ```
144
+
145
+ ## Validation
146
+
147
+ ```go
148
+ import "github.com/go-playground/validator/v10"
149
+
150
+ var validate = validator.New()
151
+
152
+ type CreateItemRequest struct {
153
+ Name string `json:"name" validate:"required,min=1,max=100"`
154
+ Price int `json:"price" validate:"required,min=0"`
155
+ }
156
+
157
+ func createItem(c *fiber.Ctx) error {
158
+ var req CreateItemRequest
159
+ if err := c.BodyParser(&req); err != nil {
160
+ return c.Status(400).JSON(fiber.Map{"error": "Invalid JSON"})
161
+ }
162
+
163
+ if err := validate.Struct(&req); err != nil {
164
+ return c.Status(400).JSON(fiber.Map{"error": err.Error()})
165
+ }
166
+
167
+ item := insertItem(req)
168
+ return c.Status(201).JSON(item)
169
+ }
170
+ ```
171
+
172
+ ## WebSocket Support
173
+
174
+ ```go
175
+ import "github.com/gofiber/websocket/v2"
176
+
177
+ app.Get("/ws", websocket.New(func(c *websocket.Conn) {
178
+ for {
179
+ mt, msg, err := c.ReadMessage()
180
+ if err != nil {
181
+ break
182
+ }
183
+ if err := c.WriteMessage(mt, msg); err != nil {
184
+ break
185
+ }
186
+ }
187
+ }))
188
+ ```
189
+
190
+ ## Best Practices
191
+
192
+ 1. **fasthttp awareness**: Fiber uses fasthttp, not net/http - some incompatibilities
193
+ 2. **Context reuse**: Don't store `*fiber.Ctx` - it's reused across requests
194
+ 3. **Prefork**: Use `app.Listen(":3000", fiber.Config{Prefork: true})` for multi-core
195
+ 4. **Graceful shutdown**: Use `app.ShutdownWithTimeout(30 * time.Second)`
196
+ 5. **Memory**: fasthttp is optimized for low memory, high concurrency
@@ -0,0 +1,13 @@
1
+ # Fiber Framework References
2
+
3
+ ## References
4
+
5
+ - [**Routing Patterns**](routing-patterns.md) - Routes, middleware, groups
6
+
7
+ ## Quick Checks
8
+
9
+ - [ ] Use route groups for organization
10
+ - [ ] Built-in middleware for common tasks
11
+ - [ ] fiber.Ctx for request/response handling
12
+ - [ ] Prefork for multi-process mode
13
+ - [ ] Zero allocation router