@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,215 @@
1
+ ---
2
+ name: Echo Framework
3
+ description: High-performance, minimalist Go web framework.
4
+ metadata:
5
+ labels: [golang, echo, web, framework]
6
+ triggers:
7
+ files: ['**/main.go']
8
+ keywords: [echo, echo.New, echo.Context, e.Start]
9
+ ---
10
+
11
+ # Echo Framework Standards
12
+
13
+ ## Application Setup
14
+
15
+ ```go
16
+ package main
17
+
18
+ import (
19
+ "github.com/labstack/echo/v4"
20
+ "github.com/labstack/echo/v4/middleware"
21
+ )
22
+
23
+ func main() {
24
+ e := echo.New()
25
+
26
+ // Middleware
27
+ e.Use(middleware.Logger())
28
+ e.Use(middleware.Recover())
29
+ e.Use(middleware.CORS())
30
+
31
+ // Routes
32
+ e.GET("/", homeHandler)
33
+ e.GET("/users/:id", getUser)
34
+ e.POST("/users", createUser)
35
+
36
+ // Groups
37
+ api := e.Group("/api/v1")
38
+ api.GET("/items", listItems)
39
+
40
+ e.Logger.Fatal(e.Start(":8080"))
41
+ }
42
+ ```
43
+
44
+ ## Handlers
45
+
46
+ ```go
47
+ // Path parameters
48
+ func getUser(c echo.Context) error {
49
+ id := c.Param("id")
50
+ user, err := findUser(id)
51
+ if err != nil {
52
+ return echo.NewHTTPError(404, "User not found")
53
+ }
54
+ return c.JSON(200, user)
55
+ }
56
+
57
+ // Query parameters
58
+ func listUsers(c echo.Context) error {
59
+ page := c.QueryParam("page")
60
+ limit := c.QueryParam("limit")
61
+ users := fetchUsers(page, limit)
62
+ return c.JSON(200, users)
63
+ }
64
+
65
+ // JSON body binding
66
+ type CreateUserRequest struct {
67
+ Name string `json:"name" validate:"required"`
68
+ Email string `json:"email" validate:"required,email"`
69
+ }
70
+
71
+ func createUser(c echo.Context) error {
72
+ var req CreateUserRequest
73
+ if err := c.Bind(&req); err != nil {
74
+ return echo.NewHTTPError(400, err.Error())
75
+ }
76
+ if err := c.Validate(&req); err != nil {
77
+ return err
78
+ }
79
+ user := insertUser(req)
80
+ return c.JSON(201, user)
81
+ }
82
+ ```
83
+
84
+ ## Validation
85
+
86
+ ```go
87
+ import "github.com/go-playground/validator/v10"
88
+
89
+ type CustomValidator struct {
90
+ validator *validator.Validate
91
+ }
92
+
93
+ func (cv *CustomValidator) Validate(i interface{}) error {
94
+ if err := cv.validator.Struct(i); err != nil {
95
+ return echo.NewHTTPError(400, err.Error())
96
+ }
97
+ return nil
98
+ }
99
+
100
+ func main() {
101
+ e := echo.New()
102
+ e.Validator = &CustomValidator{validator: validator.New()}
103
+ }
104
+ ```
105
+
106
+ ## Middleware
107
+
108
+ ```go
109
+ // Built-in middleware
110
+ e.Use(middleware.Logger())
111
+ e.Use(middleware.Recover())
112
+ e.Use(middleware.CORS())
113
+ e.Use(middleware.Gzip())
114
+ e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(20)))
115
+
116
+ // JWT middleware
117
+ e.Use(middleware.JWTWithConfig(middleware.JWTConfig{
118
+ SigningKey: []byte("secret"),
119
+ Claims: &JwtCustomClaims{},
120
+ }))
121
+
122
+ // Custom middleware
123
+ func authMiddleware(next echo.HandlerFunc) echo.HandlerFunc {
124
+ return func(c echo.Context) error {
125
+ token := c.Request().Header.Get("Authorization")
126
+ if token == "" {
127
+ return echo.NewHTTPError(401, "Unauthorized")
128
+ }
129
+
130
+ user, err := validateToken(token)
131
+ if err != nil {
132
+ return echo.NewHTTPError(401, "Invalid token")
133
+ }
134
+
135
+ c.Set("user", user)
136
+ return next(c)
137
+ }
138
+ }
139
+
140
+ // Apply middleware to group
141
+ api := e.Group("/api", authMiddleware)
142
+ ```
143
+
144
+ ## Error Handling
145
+
146
+ ```go
147
+ // Custom HTTP error handler
148
+ e.HTTPErrorHandler = func(err error, c echo.Context) {
149
+ code := 500
150
+ message := "Internal Server Error"
151
+
152
+ if he, ok := err.(*echo.HTTPError); ok {
153
+ code = he.Code
154
+ message = he.Message.(string)
155
+ }
156
+
157
+ c.JSON(code, map[string]string{
158
+ "error": message,
159
+ })
160
+ }
161
+
162
+ // In handlers
163
+ func handler(c echo.Context) error {
164
+ if notFound {
165
+ return echo.NewHTTPError(404, "Resource not found")
166
+ }
167
+ return c.JSON(200, data)
168
+ }
169
+ ```
170
+
171
+ ## Response Types
172
+
173
+ ```go
174
+ // JSON
175
+ c.JSON(200, user)
176
+
177
+ // String
178
+ c.String(200, "Hello, World!")
179
+
180
+ // HTML
181
+ c.HTML(200, "<h1>Hello</h1>")
182
+
183
+ // File
184
+ c.File("path/to/file.pdf")
185
+
186
+ // Stream
187
+ c.Stream(200, "text/csv", reader)
188
+
189
+ // Redirect
190
+ c.Redirect(301, "/new-location")
191
+
192
+ // No Content
193
+ c.NoContent(204)
194
+ ```
195
+
196
+ ## Context Values
197
+
198
+ ```go
199
+ // Set value
200
+ c.Set("user", user)
201
+
202
+ // Get value
203
+ user := c.Get("user").(*User)
204
+
205
+ // Request context
206
+ ctx := c.Request().Context()
207
+ ```
208
+
209
+ ## Best Practices
210
+
211
+ 1. **Validation**: Always validate input with custom validator
212
+ 2. **Error handling**: Use `echo.NewHTTPError` for HTTP errors
213
+ 3. **Context**: Don't store echo.Context outside request lifecycle
214
+ 4. **Middleware order**: Logger first, then Recover, then custom
215
+ 5. **Graceful shutdown**: Use `e.Shutdown(ctx)` for graceful shutdown
@@ -0,0 +1,14 @@
1
+ # Echo Framework References
2
+
3
+ ## References
4
+
5
+ - [**Routing Patterns**](routing-patterns.md) - Routes, groups, path parameters
6
+ - [**Middleware**](middleware-patterns.md) - Built-in and custom middleware
7
+
8
+ ## Quick Checks
9
+
10
+ - [ ] Use route groups for versioning
11
+ - [ ] Apply middleware at appropriate levels
12
+ - [ ] Custom context for request-scoped data
13
+ - [ ] Structured error handling with HTTPError
14
+ - [ ] Graceful shutdown handling
@@ -0,0 +1,141 @@
1
+ # Echo Middleware Patterns
2
+
3
+ ## Built-in Middleware
4
+
5
+ ```go
6
+ import (
7
+ "github.com/labstack/echo/v4"
8
+ "github.com/labstack/echo/v4/middleware"
9
+ )
10
+
11
+ func main() {
12
+ e := echo.New()
13
+
14
+ // Logger
15
+ e.Use(middleware.Logger())
16
+
17
+ // Recover from panics
18
+ e.Use(middleware.Recover())
19
+
20
+ // CORS
21
+ e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
22
+ AllowOrigins: []string{"https://example.com"},
23
+ AllowMethods: []string{http.MethodGet, http.MethodPost},
24
+ }))
25
+
26
+ // Request ID
27
+ e.Use(middleware.RequestID())
28
+
29
+ // Rate limiter
30
+ e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(20)))
31
+
32
+ // Gzip compression
33
+ e.Use(middleware.Gzip())
34
+ }
35
+ ```
36
+
37
+ ## Custom Middleware
38
+
39
+ ```go
40
+ // Timing middleware
41
+ func TimingMiddleware(next echo.HandlerFunc) echo.HandlerFunc {
42
+ return func(c echo.Context) error {
43
+ start := time.Now()
44
+
45
+ err := next(c)
46
+
47
+ duration := time.Since(start)
48
+ c.Response().Header().Set("X-Response-Time", duration.String())
49
+
50
+ return err
51
+ }
52
+ }
53
+
54
+ // Auth middleware
55
+ func AuthMiddleware(next echo.HandlerFunc) echo.HandlerFunc {
56
+ return func(c echo.Context) error {
57
+ token := c.Request().Header.Get("Authorization")
58
+ if token == "" {
59
+ return echo.NewHTTPError(http.StatusUnauthorized, "missing token")
60
+ }
61
+
62
+ // Validate token
63
+ claims, err := validateToken(token)
64
+ if err != nil {
65
+ return echo.NewHTTPError(http.StatusUnauthorized, "invalid token")
66
+ }
67
+
68
+ // Store in context
69
+ c.Set("user", claims.UserID)
70
+
71
+ return next(c)
72
+ }
73
+ }
74
+
75
+ // Usage
76
+ e.GET("/protected", handler, AuthMiddleware)
77
+ ```
78
+
79
+ ## Middleware with Config
80
+
81
+ ```go
82
+ type AuthConfig struct {
83
+ Skipper middleware.Skipper
84
+ TokenLookup string
85
+ AuthScheme string
86
+ }
87
+
88
+ func AuthWithConfig(config AuthConfig) echo.MiddlewareFunc {
89
+ return func(next echo.HandlerFunc) echo.HandlerFunc {
90
+ return func(c echo.Context) error {
91
+ if config.Skipper != nil && config.Skipper(c) {
92
+ return next(c)
93
+ }
94
+
95
+ // Auth logic using config...
96
+
97
+ return next(c)
98
+ }
99
+ }
100
+ }
101
+
102
+ // Skip auth for certain paths
103
+ e.Use(AuthWithConfig(AuthConfig{
104
+ Skipper: func(c echo.Context) bool {
105
+ return c.Path() == "/health" || c.Path() == "/login"
106
+ },
107
+ }))
108
+ ```
109
+
110
+ ## JWT Authentication
111
+
112
+ ```go
113
+ import "github.com/labstack/echo-jwt/v4"
114
+
115
+ func main() {
116
+ e := echo.New()
117
+
118
+ // JWT middleware
119
+ config := echojwt.Config{
120
+ SigningKey: []byte("secret"),
121
+ NewClaimsFunc: func(c echo.Context) jwt.Claims {
122
+ return new(JwtCustomClaims)
123
+ },
124
+ }
125
+
126
+ r := e.Group("/api")
127
+ r.Use(echojwt.WithConfig(config))
128
+
129
+ r.GET("/users", func(c echo.Context) error {
130
+ token := c.Get("user").(*jwt.Token)
131
+ claims := token.Claims.(*JwtCustomClaims)
132
+ return c.JSON(http.StatusOK, claims)
133
+ })
134
+ }
135
+
136
+ type JwtCustomClaims struct {
137
+ UserID string `json:"user_id"`
138
+ Role string `json:"role"`
139
+ jwt.RegisteredClaims
140
+ }
141
+ ```
@@ -0,0 +1,140 @@
1
+ # Echo Routing Patterns
2
+
3
+ ## Basic Routing
4
+
5
+ ```go
6
+ import (
7
+ "net/http"
8
+ "github.com/labstack/echo/v4"
9
+ )
10
+
11
+ func main() {
12
+ e := echo.New()
13
+
14
+ // Basic routes
15
+ e.GET("/users", listUsers)
16
+ e.POST("/users", createUser)
17
+ e.GET("/users/:id", getUser)
18
+ e.PUT("/users/:id", updateUser)
19
+ e.DELETE("/users/:id", deleteUser)
20
+
21
+ e.Logger.Fatal(e.Start(":8080"))
22
+ }
23
+
24
+ // Handler with path parameter
25
+ func getUser(c echo.Context) error {
26
+ id := c.Param("id")
27
+ return c.JSON(http.StatusOK, map[string]string{"id": id})
28
+ }
29
+
30
+ // Query parameters
31
+ func listUsers(c echo.Context) error {
32
+ page := c.QueryParam("page")
33
+ limit := c.QueryParam("limit")
34
+ return c.JSON(http.StatusOK, map[string]string{
35
+ "page": page,
36
+ "limit": limit,
37
+ })
38
+ }
39
+ ```
40
+
41
+ ## Route Groups
42
+
43
+ ```go
44
+ func main() {
45
+ e := echo.New()
46
+
47
+ // API versioning
48
+ v1 := e.Group("/api/v1")
49
+ {
50
+ v1.GET("/users", listUsersV1)
51
+ v1.POST("/users", createUserV1)
52
+ }
53
+
54
+ v2 := e.Group("/api/v2")
55
+ {
56
+ v2.GET("/users", listUsersV2)
57
+ }
58
+
59
+ // Group with middleware
60
+ admin := e.Group("/admin", middleware.BasicAuth(validateAdmin))
61
+ {
62
+ admin.GET("/stats", getStats)
63
+ admin.POST("/config", updateConfig)
64
+ }
65
+ }
66
+ ```
67
+
68
+ ## Request Binding
69
+
70
+ ```go
71
+ type CreateUserRequest struct {
72
+ Name string `json:"name" validate:"required"`
73
+ Email string `json:"email" validate:"required,email"`
74
+ Age int `json:"age" validate:"gte=0,lte=130"`
75
+ }
76
+
77
+ func createUser(c echo.Context) error {
78
+ req := new(CreateUserRequest)
79
+ if err := c.Bind(req); err != nil {
80
+ return echo.NewHTTPError(http.StatusBadRequest, err.Error())
81
+ }
82
+
83
+ // Validate
84
+ if err := c.Validate(req); err != nil {
85
+ return err
86
+ }
87
+
88
+ // Process...
89
+ return c.JSON(http.StatusCreated, req)
90
+ }
91
+
92
+ // Setup validator
93
+ func main() {
94
+ e := echo.New()
95
+ e.Validator = &CustomValidator{validator: validator.New()}
96
+ }
97
+
98
+ type CustomValidator struct {
99
+ validator *validator.Validate
100
+ }
101
+
102
+ func (cv *CustomValidator) Validate(i interface{}) error {
103
+ if err := cv.validator.Struct(i); err != nil {
104
+ return echo.NewHTTPError(http.StatusBadRequest, err.Error())
105
+ }
106
+ return nil
107
+ }
108
+ ```
109
+
110
+ ## Error Handling
111
+
112
+ ```go
113
+ // Custom HTTP error handler
114
+ e.HTTPErrorHandler = func(err error, c echo.Context) {
115
+ code := http.StatusInternalServerError
116
+ message := "Internal Server Error"
117
+
118
+ if he, ok := err.(*echo.HTTPError); ok {
119
+ code = he.Code
120
+ message = he.Message.(string)
121
+ }
122
+
123
+ c.JSON(code, map[string]string{
124
+ "error": message,
125
+ })
126
+ }
127
+
128
+ // In handlers
129
+ func getUser(c echo.Context) error {
130
+ id := c.Param("id")
131
+ user, err := userService.FindByID(id)
132
+ if err != nil {
133
+ if errors.Is(err, ErrNotFound) {
134
+ return echo.NewHTTPError(http.StatusNotFound, "user not found")
135
+ }
136
+ return echo.NewHTTPError(http.StatusInternalServerError, err.Error())
137
+ }
138
+ return c.JSON(http.StatusOK, user)
139
+ }
140
+ ```