@the-bearded-bear/claude-craft 7.19.0 → 7.21.0-next.07db57b

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 (467) hide show
  1. package/Dev/i18n/de/Angular/agents/angular-reviewer.md +497 -142
  2. package/Dev/i18n/de/CSharp/agents/csharp-reviewer.md +457 -119
  3. package/Dev/i18n/de/Common/commands/setup-rtk.md +78 -0
  4. package/Dev/i18n/de/Flutter/agents/flutter-reviewer.md +529 -463
  5. package/Dev/i18n/de/Laravel/agents/laravel-reviewer.md +703 -149
  6. package/Dev/i18n/de/PHP/agents/php-reviewer.md +554 -0
  7. package/Dev/i18n/de/Python/agents/python-reviewer.md +598 -98
  8. package/Dev/i18n/de/React/agents/react-reviewer.md +411 -297
  9. package/Dev/i18n/de/ReactNative/agents/reactnative-reviewer.md +488 -354
  10. package/Dev/i18n/de/Symfony/agents/symfony-reviewer.md +505 -376
  11. package/Dev/i18n/de/VueJS/agents/vuejs-reviewer.md +629 -148
  12. package/Dev/i18n/en/Angular/agents/angular-reviewer.md +500 -157
  13. package/Dev/i18n/en/CSharp/agents/csharp-reviewer.md +460 -134
  14. package/Dev/i18n/en/Common/commands/setup-rtk.md +99 -0
  15. package/Dev/i18n/en/Flutter/agents/flutter-reviewer.md +532 -478
  16. package/Dev/i18n/en/Laravel/agents/laravel-reviewer.md +706 -164
  17. package/Dev/i18n/en/PHP/agents/php-reviewer.md +554 -0
  18. package/Dev/i18n/en/Python/agents/python-reviewer.md +600 -112
  19. package/Dev/i18n/en/React/agents/react-reviewer.md +407 -305
  20. package/Dev/i18n/en/ReactNative/agents/reactnative-reviewer.md +487 -365
  21. package/Dev/i18n/en/Symfony/agents/symfony-reviewer.md +503 -384
  22. package/Dev/i18n/en/VueJS/agents/vuejs-reviewer.md +628 -147
  23. package/Dev/i18n/es/Angular/agents/angular-reviewer.md +497 -142
  24. package/Dev/i18n/es/CSharp/agents/csharp-reviewer.md +457 -119
  25. package/Dev/i18n/es/Common/commands/setup-rtk.md +78 -0
  26. package/Dev/i18n/es/Flutter/agents/flutter-reviewer.md +529 -463
  27. package/Dev/i18n/es/Laravel/agents/laravel-reviewer.md +703 -149
  28. package/Dev/i18n/es/PHP/agents/php-reviewer.md +554 -0
  29. package/Dev/i18n/es/Python/agents/python-reviewer.md +598 -98
  30. package/Dev/i18n/es/React/agents/react-reviewer.md +416 -302
  31. package/Dev/i18n/es/ReactNative/agents/reactnative-reviewer.md +490 -356
  32. package/Dev/i18n/es/Symfony/agents/symfony-reviewer.md +509 -378
  33. package/Dev/i18n/es/VueJS/agents/vuejs-reviewer.md +629 -148
  34. package/Dev/i18n/fr/Angular/agents/angular-reviewer.md +497 -142
  35. package/Dev/i18n/fr/CSharp/agents/csharp-reviewer.md +457 -119
  36. package/Dev/i18n/fr/Common/commands/setup-rtk.md +94 -0
  37. package/Dev/i18n/fr/Flutter/agents/flutter-reviewer.md +529 -463
  38. package/Dev/i18n/fr/Laravel/agents/laravel-reviewer.md +702 -148
  39. package/Dev/i18n/fr/PHP/agents/php-reviewer.md +554 -0
  40. package/Dev/i18n/fr/Python/agents/python-reviewer.md +554 -332
  41. package/Dev/i18n/fr/React/agents/react-reviewer.md +404 -290
  42. package/Dev/i18n/fr/ReactNative/agents/reactnative-reviewer.md +490 -356
  43. package/Dev/i18n/fr/Symfony/agents/symfony-reviewer.md +509 -378
  44. package/Dev/i18n/fr/VueJS/agents/vuejs-reviewer.md +628 -147
  45. package/Dev/i18n/pt/Angular/agents/angular-reviewer.md +497 -142
  46. package/Dev/i18n/pt/CSharp/agents/csharp-reviewer.md +457 -119
  47. package/Dev/i18n/pt/Common/commands/setup-rtk.md +78 -0
  48. package/Dev/i18n/pt/Flutter/agents/flutter-reviewer.md +529 -463
  49. package/Dev/i18n/pt/Laravel/agents/laravel-reviewer.md +703 -149
  50. package/Dev/i18n/pt/PHP/agents/php-reviewer.md +554 -0
  51. package/Dev/i18n/pt/Python/agents/python-reviewer.md +598 -98
  52. package/Dev/i18n/pt/React/agents/react-reviewer.md +414 -240
  53. package/Dev/i18n/pt/ReactNative/agents/reactnative-reviewer.md +503 -156
  54. package/Dev/i18n/pt/Symfony/agents/symfony-reviewer.md +512 -381
  55. package/Dev/i18n/pt/VueJS/agents/vuejs-reviewer.md +629 -148
  56. package/Dev/scripts/install-from-config.sh +33 -6
  57. package/Infra/i18n/de/Ansible/agents/ansible-architect.md +302 -0
  58. package/Infra/i18n/de/Ansible/agents/ansible-debug.md +308 -0
  59. package/Infra/i18n/de/Ansible/agents/ansible-deployment.md +292 -0
  60. package/Infra/i18n/de/Ansible/agents/ansible-quality.md +307 -0
  61. package/Infra/i18n/de/Ansible/agents/ansible-security.md +290 -0
  62. package/Infra/i18n/de/Ansible/commands/architecture.md +175 -0
  63. package/Infra/i18n/de/Ansible/commands/debug.md +152 -0
  64. package/Infra/i18n/de/Ansible/commands/deploy-setup.md +162 -0
  65. package/Infra/i18n/de/Ansible/commands/optimize.md +165 -0
  66. package/Infra/i18n/de/Ansible/commands/security-audit.md +178 -0
  67. package/Infra/i18n/de/FrankenPHP/agents/frankenphp-architect.md +342 -0
  68. package/Infra/i18n/de/FrankenPHP/agents/frankenphp-debug.md +277 -0
  69. package/Infra/i18n/de/FrankenPHP/agents/frankenphp-deployment.md +337 -0
  70. package/Infra/i18n/de/FrankenPHP/agents/frankenphp-performance.md +300 -0
  71. package/Infra/i18n/de/FrankenPHP/agents/frankenphp-security.md +289 -0
  72. package/Infra/i18n/de/FrankenPHP/commands/architecture.md +137 -0
  73. package/Infra/i18n/de/FrankenPHP/commands/debug.md +139 -0
  74. package/Infra/i18n/de/FrankenPHP/commands/deploy-setup.md +117 -0
  75. package/Infra/i18n/de/FrankenPHP/commands/optimize.md +156 -0
  76. package/Infra/i18n/de/FrankenPHP/commands/security-audit.md +171 -0
  77. package/Infra/i18n/de/Hcloud/agents/hcloud-architect.md +288 -0
  78. package/Infra/i18n/de/Hcloud/agents/hcloud-cost.md +242 -0
  79. package/Infra/i18n/de/Hcloud/agents/hcloud-debug.md +309 -0
  80. package/Infra/i18n/de/Hcloud/agents/hcloud-deployment.md +334 -0
  81. package/Infra/i18n/de/Hcloud/agents/hcloud-security.md +294 -0
  82. package/Infra/i18n/de/Hcloud/commands/architecture.md +158 -0
  83. package/Infra/i18n/de/Hcloud/commands/debug.md +157 -0
  84. package/Infra/i18n/de/Hcloud/commands/deploy-setup.md +139 -0
  85. package/Infra/i18n/de/Hcloud/commands/optimize.md +149 -0
  86. package/Infra/i18n/de/Hcloud/commands/security-audit.md +169 -0
  87. package/Infra/i18n/de/Kubernetes/agents/kubernetes-architect.md +303 -0
  88. package/Infra/i18n/de/Kubernetes/agents/kubernetes-debug.md +229 -0
  89. package/Infra/i18n/de/Kubernetes/agents/kubernetes-deployment.md +214 -0
  90. package/Infra/i18n/de/Kubernetes/agents/kubernetes-monitoring.md +272 -0
  91. package/Infra/i18n/de/Kubernetes/agents/kubernetes-security.md +306 -0
  92. package/Infra/i18n/de/Kubernetes/commands/architecture.md +180 -0
  93. package/Infra/i18n/de/Kubernetes/commands/debug.md +119 -0
  94. package/Infra/i18n/de/Kubernetes/commands/deploy-setup.md +115 -0
  95. package/Infra/i18n/de/Kubernetes/commands/optimize.md +166 -0
  96. package/Infra/i18n/de/Kubernetes/commands/security-audit.md +156 -0
  97. package/Infra/i18n/de/OpenTofu/agents/opentofu-architect.md +328 -0
  98. package/Infra/i18n/de/OpenTofu/agents/opentofu-cost.md +241 -0
  99. package/Infra/i18n/de/OpenTofu/agents/opentofu-debug.md +248 -0
  100. package/Infra/i18n/de/OpenTofu/agents/opentofu-deployment.md +237 -0
  101. package/Infra/i18n/de/OpenTofu/agents/opentofu-security.md +271 -0
  102. package/Infra/i18n/de/OpenTofu/commands/architecture.md +186 -0
  103. package/Infra/i18n/de/OpenTofu/commands/debug.md +115 -0
  104. package/Infra/i18n/de/OpenTofu/commands/deploy-setup.md +121 -0
  105. package/Infra/i18n/de/OpenTofu/commands/optimize.md +135 -0
  106. package/Infra/i18n/de/OpenTofu/commands/security-audit.md +139 -0
  107. package/Infra/i18n/de/PgBouncer/agents/pgbouncer-architect.md +311 -0
  108. package/Infra/i18n/de/PgBouncer/agents/pgbouncer-debug.md +302 -0
  109. package/Infra/i18n/de/PgBouncer/agents/pgbouncer-deployment.md +339 -0
  110. package/Infra/i18n/de/PgBouncer/agents/pgbouncer-monitoring.md +298 -0
  111. package/Infra/i18n/de/PgBouncer/agents/pgbouncer-security.md +265 -0
  112. package/Infra/i18n/de/PgBouncer/commands/architecture.md +138 -0
  113. package/Infra/i18n/de/PgBouncer/commands/debug.md +147 -0
  114. package/Infra/i18n/de/PgBouncer/commands/deploy-setup.md +118 -0
  115. package/Infra/i18n/de/PgBouncer/commands/optimize.md +155 -0
  116. package/Infra/i18n/de/PgBouncer/commands/security-audit.md +167 -0
  117. package/Infra/i18n/en/Ansible/agents/ansible-architect.md +302 -0
  118. package/Infra/i18n/en/Ansible/agents/ansible-debug.md +308 -0
  119. package/Infra/i18n/en/Ansible/agents/ansible-deployment.md +292 -0
  120. package/Infra/i18n/en/Ansible/agents/ansible-quality.md +307 -0
  121. package/Infra/i18n/en/Ansible/agents/ansible-security.md +290 -0
  122. package/Infra/i18n/en/Ansible/commands/architecture.md +175 -0
  123. package/Infra/i18n/en/Ansible/commands/debug.md +152 -0
  124. package/Infra/i18n/en/Ansible/commands/deploy-setup.md +162 -0
  125. package/Infra/i18n/en/Ansible/commands/optimize.md +165 -0
  126. package/Infra/i18n/en/Ansible/commands/security-audit.md +178 -0
  127. package/Infra/i18n/en/FrankenPHP/agents/frankenphp-architect.md +342 -0
  128. package/Infra/i18n/en/FrankenPHP/agents/frankenphp-debug.md +277 -0
  129. package/Infra/i18n/en/FrankenPHP/agents/frankenphp-deployment.md +337 -0
  130. package/Infra/i18n/en/FrankenPHP/agents/frankenphp-performance.md +300 -0
  131. package/Infra/i18n/en/FrankenPHP/agents/frankenphp-security.md +289 -0
  132. package/Infra/i18n/en/FrankenPHP/commands/architecture.md +137 -0
  133. package/Infra/i18n/en/FrankenPHP/commands/debug.md +139 -0
  134. package/Infra/i18n/en/FrankenPHP/commands/deploy-setup.md +117 -0
  135. package/Infra/i18n/en/FrankenPHP/commands/optimize.md +156 -0
  136. package/Infra/i18n/en/FrankenPHP/commands/security-audit.md +171 -0
  137. package/Infra/i18n/en/Hcloud/agents/hcloud-architect.md +288 -0
  138. package/Infra/i18n/en/Hcloud/agents/hcloud-cost.md +242 -0
  139. package/Infra/i18n/en/Hcloud/agents/hcloud-debug.md +309 -0
  140. package/Infra/i18n/en/Hcloud/agents/hcloud-deployment.md +334 -0
  141. package/Infra/i18n/en/Hcloud/agents/hcloud-security.md +294 -0
  142. package/Infra/i18n/en/Hcloud/commands/architecture.md +158 -0
  143. package/Infra/i18n/en/Hcloud/commands/debug.md +157 -0
  144. package/Infra/i18n/en/Hcloud/commands/deploy-setup.md +139 -0
  145. package/Infra/i18n/en/Hcloud/commands/optimize.md +149 -0
  146. package/Infra/i18n/en/Hcloud/commands/security-audit.md +169 -0
  147. package/Infra/i18n/en/Kubernetes/agents/kubernetes-architect.md +303 -0
  148. package/Infra/i18n/en/Kubernetes/agents/kubernetes-debug.md +229 -0
  149. package/Infra/i18n/en/Kubernetes/agents/kubernetes-deployment.md +214 -0
  150. package/Infra/i18n/en/Kubernetes/agents/kubernetes-monitoring.md +272 -0
  151. package/Infra/i18n/en/Kubernetes/agents/kubernetes-security.md +306 -0
  152. package/Infra/i18n/en/Kubernetes/commands/architecture.md +180 -0
  153. package/Infra/i18n/en/Kubernetes/commands/debug.md +119 -0
  154. package/Infra/i18n/en/Kubernetes/commands/deploy-setup.md +115 -0
  155. package/Infra/i18n/en/Kubernetes/commands/optimize.md +166 -0
  156. package/Infra/i18n/en/Kubernetes/commands/security-audit.md +156 -0
  157. package/Infra/i18n/en/OpenTofu/agents/opentofu-architect.md +328 -0
  158. package/Infra/i18n/en/OpenTofu/agents/opentofu-cost.md +241 -0
  159. package/Infra/i18n/en/OpenTofu/agents/opentofu-debug.md +248 -0
  160. package/Infra/i18n/en/OpenTofu/agents/opentofu-deployment.md +237 -0
  161. package/Infra/i18n/en/OpenTofu/agents/opentofu-security.md +271 -0
  162. package/Infra/i18n/en/OpenTofu/commands/architecture.md +186 -0
  163. package/Infra/i18n/en/OpenTofu/commands/debug.md +115 -0
  164. package/Infra/i18n/en/OpenTofu/commands/deploy-setup.md +121 -0
  165. package/Infra/i18n/en/OpenTofu/commands/optimize.md +135 -0
  166. package/Infra/i18n/en/OpenTofu/commands/security-audit.md +139 -0
  167. package/Infra/i18n/en/PgBouncer/agents/pgbouncer-architect.md +311 -0
  168. package/Infra/i18n/en/PgBouncer/agents/pgbouncer-debug.md +302 -0
  169. package/Infra/i18n/en/PgBouncer/agents/pgbouncer-deployment.md +339 -0
  170. package/Infra/i18n/en/PgBouncer/agents/pgbouncer-monitoring.md +298 -0
  171. package/Infra/i18n/en/PgBouncer/agents/pgbouncer-security.md +265 -0
  172. package/Infra/i18n/en/PgBouncer/commands/architecture.md +138 -0
  173. package/Infra/i18n/en/PgBouncer/commands/debug.md +147 -0
  174. package/Infra/i18n/en/PgBouncer/commands/deploy-setup.md +118 -0
  175. package/Infra/i18n/en/PgBouncer/commands/optimize.md +155 -0
  176. package/Infra/i18n/en/PgBouncer/commands/security-audit.md +167 -0
  177. package/Infra/i18n/es/Ansible/agents/ansible-architect.md +302 -0
  178. package/Infra/i18n/es/Ansible/agents/ansible-debug.md +308 -0
  179. package/Infra/i18n/es/Ansible/agents/ansible-deployment.md +292 -0
  180. package/Infra/i18n/es/Ansible/agents/ansible-quality.md +307 -0
  181. package/Infra/i18n/es/Ansible/agents/ansible-security.md +290 -0
  182. package/Infra/i18n/es/Ansible/commands/architecture.md +175 -0
  183. package/Infra/i18n/es/Ansible/commands/debug.md +152 -0
  184. package/Infra/i18n/es/Ansible/commands/deploy-setup.md +162 -0
  185. package/Infra/i18n/es/Ansible/commands/optimize.md +165 -0
  186. package/Infra/i18n/es/Ansible/commands/security-audit.md +178 -0
  187. package/Infra/i18n/es/FrankenPHP/agents/frankenphp-architect.md +342 -0
  188. package/Infra/i18n/es/FrankenPHP/agents/frankenphp-debug.md +277 -0
  189. package/Infra/i18n/es/FrankenPHP/agents/frankenphp-deployment.md +337 -0
  190. package/Infra/i18n/es/FrankenPHP/agents/frankenphp-performance.md +300 -0
  191. package/Infra/i18n/es/FrankenPHP/agents/frankenphp-security.md +289 -0
  192. package/Infra/i18n/es/FrankenPHP/commands/architecture.md +137 -0
  193. package/Infra/i18n/es/FrankenPHP/commands/debug.md +139 -0
  194. package/Infra/i18n/es/FrankenPHP/commands/deploy-setup.md +117 -0
  195. package/Infra/i18n/es/FrankenPHP/commands/optimize.md +156 -0
  196. package/Infra/i18n/es/FrankenPHP/commands/security-audit.md +171 -0
  197. package/Infra/i18n/es/Hcloud/agents/hcloud-architect.md +288 -0
  198. package/Infra/i18n/es/Hcloud/agents/hcloud-cost.md +242 -0
  199. package/Infra/i18n/es/Hcloud/agents/hcloud-debug.md +309 -0
  200. package/Infra/i18n/es/Hcloud/agents/hcloud-deployment.md +334 -0
  201. package/Infra/i18n/es/Hcloud/agents/hcloud-security.md +294 -0
  202. package/Infra/i18n/es/Hcloud/commands/architecture.md +158 -0
  203. package/Infra/i18n/es/Hcloud/commands/debug.md +157 -0
  204. package/Infra/i18n/es/Hcloud/commands/deploy-setup.md +139 -0
  205. package/Infra/i18n/es/Hcloud/commands/optimize.md +149 -0
  206. package/Infra/i18n/es/Hcloud/commands/security-audit.md +169 -0
  207. package/Infra/i18n/es/Kubernetes/agents/kubernetes-architect.md +303 -0
  208. package/Infra/i18n/es/Kubernetes/agents/kubernetes-debug.md +229 -0
  209. package/Infra/i18n/es/Kubernetes/agents/kubernetes-deployment.md +214 -0
  210. package/Infra/i18n/es/Kubernetes/agents/kubernetes-monitoring.md +272 -0
  211. package/Infra/i18n/es/Kubernetes/agents/kubernetes-security.md +306 -0
  212. package/Infra/i18n/es/Kubernetes/commands/architecture.md +180 -0
  213. package/Infra/i18n/es/Kubernetes/commands/debug.md +119 -0
  214. package/Infra/i18n/es/Kubernetes/commands/deploy-setup.md +115 -0
  215. package/Infra/i18n/es/Kubernetes/commands/optimize.md +166 -0
  216. package/Infra/i18n/es/Kubernetes/commands/security-audit.md +156 -0
  217. package/Infra/i18n/es/OpenTofu/agents/opentofu-architect.md +328 -0
  218. package/Infra/i18n/es/OpenTofu/agents/opentofu-cost.md +241 -0
  219. package/Infra/i18n/es/OpenTofu/agents/opentofu-debug.md +248 -0
  220. package/Infra/i18n/es/OpenTofu/agents/opentofu-deployment.md +237 -0
  221. package/Infra/i18n/es/OpenTofu/agents/opentofu-security.md +271 -0
  222. package/Infra/i18n/es/OpenTofu/commands/architecture.md +186 -0
  223. package/Infra/i18n/es/OpenTofu/commands/debug.md +115 -0
  224. package/Infra/i18n/es/OpenTofu/commands/deploy-setup.md +121 -0
  225. package/Infra/i18n/es/OpenTofu/commands/optimize.md +135 -0
  226. package/Infra/i18n/es/OpenTofu/commands/security-audit.md +139 -0
  227. package/Infra/i18n/es/PgBouncer/agents/pgbouncer-architect.md +311 -0
  228. package/Infra/i18n/es/PgBouncer/agents/pgbouncer-debug.md +302 -0
  229. package/Infra/i18n/es/PgBouncer/agents/pgbouncer-deployment.md +339 -0
  230. package/Infra/i18n/es/PgBouncer/agents/pgbouncer-monitoring.md +298 -0
  231. package/Infra/i18n/es/PgBouncer/agents/pgbouncer-security.md +265 -0
  232. package/Infra/i18n/es/PgBouncer/commands/architecture.md +138 -0
  233. package/Infra/i18n/es/PgBouncer/commands/debug.md +147 -0
  234. package/Infra/i18n/es/PgBouncer/commands/deploy-setup.md +118 -0
  235. package/Infra/i18n/es/PgBouncer/commands/optimize.md +155 -0
  236. package/Infra/i18n/es/PgBouncer/commands/security-audit.md +167 -0
  237. package/Infra/i18n/fr/Ansible/agents/ansible-architect.md +302 -0
  238. package/Infra/i18n/fr/Ansible/agents/ansible-debug.md +308 -0
  239. package/Infra/i18n/fr/Ansible/agents/ansible-deployment.md +292 -0
  240. package/Infra/i18n/fr/Ansible/agents/ansible-quality.md +307 -0
  241. package/Infra/i18n/fr/Ansible/agents/ansible-security.md +290 -0
  242. package/Infra/i18n/fr/Ansible/commands/architecture.md +175 -0
  243. package/Infra/i18n/fr/Ansible/commands/debug.md +152 -0
  244. package/Infra/i18n/fr/Ansible/commands/deploy-setup.md +162 -0
  245. package/Infra/i18n/fr/Ansible/commands/optimize.md +165 -0
  246. package/Infra/i18n/fr/Ansible/commands/security-audit.md +178 -0
  247. package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-architect.md +342 -0
  248. package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-debug.md +277 -0
  249. package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-deployment.md +337 -0
  250. package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-performance.md +300 -0
  251. package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-security.md +289 -0
  252. package/Infra/i18n/fr/FrankenPHP/commands/architecture.md +137 -0
  253. package/Infra/i18n/fr/FrankenPHP/commands/debug.md +139 -0
  254. package/Infra/i18n/fr/FrankenPHP/commands/deploy-setup.md +117 -0
  255. package/Infra/i18n/fr/FrankenPHP/commands/optimize.md +156 -0
  256. package/Infra/i18n/fr/FrankenPHP/commands/security-audit.md +171 -0
  257. package/Infra/i18n/fr/Hcloud/agents/hcloud-architect.md +288 -0
  258. package/Infra/i18n/fr/Hcloud/agents/hcloud-cost.md +242 -0
  259. package/Infra/i18n/fr/Hcloud/agents/hcloud-debug.md +309 -0
  260. package/Infra/i18n/fr/Hcloud/agents/hcloud-deployment.md +334 -0
  261. package/Infra/i18n/fr/Hcloud/agents/hcloud-security.md +294 -0
  262. package/Infra/i18n/fr/Hcloud/commands/architecture.md +158 -0
  263. package/Infra/i18n/fr/Hcloud/commands/debug.md +157 -0
  264. package/Infra/i18n/fr/Hcloud/commands/deploy-setup.md +139 -0
  265. package/Infra/i18n/fr/Hcloud/commands/optimize.md +149 -0
  266. package/Infra/i18n/fr/Hcloud/commands/security-audit.md +169 -0
  267. package/Infra/i18n/fr/Kubernetes/agents/kubernetes-architect.md +303 -0
  268. package/Infra/i18n/fr/Kubernetes/agents/kubernetes-debug.md +229 -0
  269. package/Infra/i18n/fr/Kubernetes/agents/kubernetes-deployment.md +214 -0
  270. package/Infra/i18n/fr/Kubernetes/agents/kubernetes-monitoring.md +272 -0
  271. package/Infra/i18n/fr/Kubernetes/agents/kubernetes-security.md +306 -0
  272. package/Infra/i18n/fr/Kubernetes/commands/architecture.md +180 -0
  273. package/Infra/i18n/fr/Kubernetes/commands/debug.md +119 -0
  274. package/Infra/i18n/fr/Kubernetes/commands/deploy-setup.md +115 -0
  275. package/Infra/i18n/fr/Kubernetes/commands/optimize.md +166 -0
  276. package/Infra/i18n/fr/Kubernetes/commands/security-audit.md +156 -0
  277. package/Infra/i18n/fr/OpenTofu/agents/opentofu-architect.md +328 -0
  278. package/Infra/i18n/fr/OpenTofu/agents/opentofu-cost.md +241 -0
  279. package/Infra/i18n/fr/OpenTofu/agents/opentofu-debug.md +248 -0
  280. package/Infra/i18n/fr/OpenTofu/agents/opentofu-deployment.md +237 -0
  281. package/Infra/i18n/fr/OpenTofu/agents/opentofu-security.md +271 -0
  282. package/Infra/i18n/fr/OpenTofu/commands/architecture.md +186 -0
  283. package/Infra/i18n/fr/OpenTofu/commands/debug.md +115 -0
  284. package/Infra/i18n/fr/OpenTofu/commands/deploy-setup.md +121 -0
  285. package/Infra/i18n/fr/OpenTofu/commands/optimize.md +135 -0
  286. package/Infra/i18n/fr/OpenTofu/commands/security-audit.md +139 -0
  287. package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-architect.md +311 -0
  288. package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-debug.md +302 -0
  289. package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-deployment.md +339 -0
  290. package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-monitoring.md +298 -0
  291. package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-security.md +265 -0
  292. package/Infra/i18n/fr/PgBouncer/commands/architecture.md +138 -0
  293. package/Infra/i18n/fr/PgBouncer/commands/debug.md +147 -0
  294. package/Infra/i18n/fr/PgBouncer/commands/deploy-setup.md +118 -0
  295. package/Infra/i18n/fr/PgBouncer/commands/optimize.md +155 -0
  296. package/Infra/i18n/fr/PgBouncer/commands/security-audit.md +167 -0
  297. package/Infra/i18n/pt/Ansible/agents/ansible-architect.md +302 -0
  298. package/Infra/i18n/pt/Ansible/agents/ansible-debug.md +308 -0
  299. package/Infra/i18n/pt/Ansible/agents/ansible-deployment.md +292 -0
  300. package/Infra/i18n/pt/Ansible/agents/ansible-quality.md +307 -0
  301. package/Infra/i18n/pt/Ansible/agents/ansible-security.md +290 -0
  302. package/Infra/i18n/pt/Ansible/commands/architecture.md +175 -0
  303. package/Infra/i18n/pt/Ansible/commands/debug.md +152 -0
  304. package/Infra/i18n/pt/Ansible/commands/deploy-setup.md +162 -0
  305. package/Infra/i18n/pt/Ansible/commands/optimize.md +165 -0
  306. package/Infra/i18n/pt/Ansible/commands/security-audit.md +178 -0
  307. package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-architect.md +342 -0
  308. package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-debug.md +277 -0
  309. package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-deployment.md +337 -0
  310. package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-performance.md +300 -0
  311. package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-security.md +289 -0
  312. package/Infra/i18n/pt/FrankenPHP/commands/architecture.md +137 -0
  313. package/Infra/i18n/pt/FrankenPHP/commands/debug.md +139 -0
  314. package/Infra/i18n/pt/FrankenPHP/commands/deploy-setup.md +117 -0
  315. package/Infra/i18n/pt/FrankenPHP/commands/optimize.md +156 -0
  316. package/Infra/i18n/pt/FrankenPHP/commands/security-audit.md +171 -0
  317. package/Infra/i18n/pt/Hcloud/agents/hcloud-architect.md +288 -0
  318. package/Infra/i18n/pt/Hcloud/agents/hcloud-cost.md +242 -0
  319. package/Infra/i18n/pt/Hcloud/agents/hcloud-debug.md +309 -0
  320. package/Infra/i18n/pt/Hcloud/agents/hcloud-deployment.md +334 -0
  321. package/Infra/i18n/pt/Hcloud/agents/hcloud-security.md +294 -0
  322. package/Infra/i18n/pt/Hcloud/commands/architecture.md +158 -0
  323. package/Infra/i18n/pt/Hcloud/commands/debug.md +157 -0
  324. package/Infra/i18n/pt/Hcloud/commands/deploy-setup.md +139 -0
  325. package/Infra/i18n/pt/Hcloud/commands/optimize.md +149 -0
  326. package/Infra/i18n/pt/Hcloud/commands/security-audit.md +169 -0
  327. package/Infra/i18n/pt/Kubernetes/agents/kubernetes-architect.md +303 -0
  328. package/Infra/i18n/pt/Kubernetes/agents/kubernetes-debug.md +229 -0
  329. package/Infra/i18n/pt/Kubernetes/agents/kubernetes-deployment.md +214 -0
  330. package/Infra/i18n/pt/Kubernetes/agents/kubernetes-monitoring.md +272 -0
  331. package/Infra/i18n/pt/Kubernetes/agents/kubernetes-security.md +306 -0
  332. package/Infra/i18n/pt/Kubernetes/commands/architecture.md +180 -0
  333. package/Infra/i18n/pt/Kubernetes/commands/debug.md +119 -0
  334. package/Infra/i18n/pt/Kubernetes/commands/deploy-setup.md +115 -0
  335. package/Infra/i18n/pt/Kubernetes/commands/optimize.md +166 -0
  336. package/Infra/i18n/pt/Kubernetes/commands/security-audit.md +156 -0
  337. package/Infra/i18n/pt/OpenTofu/agents/opentofu-architect.md +328 -0
  338. package/Infra/i18n/pt/OpenTofu/agents/opentofu-cost.md +241 -0
  339. package/Infra/i18n/pt/OpenTofu/agents/opentofu-debug.md +248 -0
  340. package/Infra/i18n/pt/OpenTofu/agents/opentofu-deployment.md +237 -0
  341. package/Infra/i18n/pt/OpenTofu/agents/opentofu-security.md +271 -0
  342. package/Infra/i18n/pt/OpenTofu/commands/architecture.md +186 -0
  343. package/Infra/i18n/pt/OpenTofu/commands/debug.md +115 -0
  344. package/Infra/i18n/pt/OpenTofu/commands/deploy-setup.md +121 -0
  345. package/Infra/i18n/pt/OpenTofu/commands/optimize.md +135 -0
  346. package/Infra/i18n/pt/OpenTofu/commands/security-audit.md +139 -0
  347. package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-architect.md +311 -0
  348. package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-debug.md +302 -0
  349. package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-deployment.md +339 -0
  350. package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-monitoring.md +298 -0
  351. package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-security.md +265 -0
  352. package/Infra/i18n/pt/PgBouncer/commands/architecture.md +138 -0
  353. package/Infra/i18n/pt/PgBouncer/commands/debug.md +147 -0
  354. package/Infra/i18n/pt/PgBouncer/commands/deploy-setup.md +118 -0
  355. package/Infra/i18n/pt/PgBouncer/commands/optimize.md +155 -0
  356. package/Infra/i18n/pt/PgBouncer/commands/security-audit.md +167 -0
  357. package/Infra/install-ansible-rules.sh +410 -0
  358. package/Infra/{install-infra-rules.sh → install-docker-rules.sh} +7 -7
  359. package/Infra/install-frankenphp-rules.sh +410 -0
  360. package/Infra/install-hcloud-rules.sh +410 -0
  361. package/Infra/install-kubernetes-rules.sh +410 -0
  362. package/Infra/install-opentofu-rules.sh +410 -0
  363. package/Infra/install-pgbouncer-rules.sh +410 -0
  364. package/Project/i18n/de/Gate/commands/validate-alignment.md +123 -0
  365. package/Project/i18n/de/Sprint/commands/next-story.md +12 -3
  366. package/Project/i18n/de/commands/burndown.md +124 -0
  367. package/Project/i18n/de/commands/checkpoint.md +243 -0
  368. package/Project/i18n/de/commands/coverage-map.md +221 -0
  369. package/Project/i18n/de/commands/critical-path.md +127 -0
  370. package/Project/i18n/de/commands/dependencies.md +143 -0
  371. package/Project/i18n/de/commands/gap-analysis.md +294 -0
  372. package/Project/i18n/de/commands/generate-constitution.md +227 -0
  373. package/Project/i18n/de/commands/metrics.md +227 -0
  374. package/Project/i18n/de/commands/reverse-prd.md +288 -0
  375. package/Project/i18n/de/commands/reverse-stories.md +305 -0
  376. package/Project/i18n/de/commands/scan.md +271 -0
  377. package/Project/i18n/de/commands/trace.md +269 -0
  378. package/Project/i18n/de/templates/constitution.md +115 -0
  379. package/Project/i18n/de/templates/prd.md +31 -7
  380. package/Project/i18n/de/templates/tech-spec.md +9 -0
  381. package/Project/i18n/de/templates/user-story.md +5 -0
  382. package/Project/i18n/en/Gate/commands/validate-alignment.md +123 -0
  383. package/Project/i18n/en/Sprint/commands/next-story.md +12 -3
  384. package/Project/i18n/en/commands/burndown.md +124 -0
  385. package/Project/i18n/en/commands/checkpoint.md +243 -0
  386. package/Project/i18n/en/commands/coverage-map.md +221 -0
  387. package/Project/i18n/en/commands/critical-path.md +127 -0
  388. package/Project/i18n/en/commands/dependencies.md +143 -0
  389. package/Project/i18n/en/commands/gap-analysis.md +294 -0
  390. package/Project/i18n/en/commands/generate-constitution.md +227 -0
  391. package/Project/i18n/en/commands/metrics.md +227 -0
  392. package/Project/i18n/en/commands/reverse-prd.md +288 -0
  393. package/Project/i18n/en/commands/reverse-stories.md +305 -0
  394. package/Project/i18n/en/commands/scan.md +271 -0
  395. package/Project/i18n/en/commands/trace.md +269 -0
  396. package/Project/i18n/en/templates/constitution.md +115 -0
  397. package/Project/i18n/en/templates/prd.md +31 -7
  398. package/Project/i18n/en/templates/tech-spec.md +9 -0
  399. package/Project/i18n/en/templates/user-story.md +5 -0
  400. package/Project/i18n/es/Gate/commands/validate-alignment.md +123 -0
  401. package/Project/i18n/es/Sprint/commands/next-story.md +12 -3
  402. package/Project/i18n/es/commands/burndown.md +124 -0
  403. package/Project/i18n/es/commands/checkpoint.md +243 -0
  404. package/Project/i18n/es/commands/coverage-map.md +221 -0
  405. package/Project/i18n/es/commands/critical-path.md +127 -0
  406. package/Project/i18n/es/commands/dependencies.md +143 -0
  407. package/Project/i18n/es/commands/gap-analysis.md +294 -0
  408. package/Project/i18n/es/commands/generate-constitution.md +227 -0
  409. package/Project/i18n/es/commands/metrics.md +227 -0
  410. package/Project/i18n/es/commands/reverse-prd.md +288 -0
  411. package/Project/i18n/es/commands/reverse-stories.md +305 -0
  412. package/Project/i18n/es/commands/scan.md +271 -0
  413. package/Project/i18n/es/commands/trace.md +269 -0
  414. package/Project/i18n/es/templates/constitution.md +115 -0
  415. package/Project/i18n/es/templates/prd.md +31 -7
  416. package/Project/i18n/es/templates/tech-spec.md +9 -0
  417. package/Project/i18n/es/templates/user-story.md +5 -0
  418. package/Project/i18n/fr/Gate/commands/validate-alignment.md +125 -0
  419. package/Project/i18n/fr/Sprint/commands/next-story.md +12 -3
  420. package/Project/i18n/fr/commands/burndown.md +124 -0
  421. package/Project/i18n/fr/commands/checkpoint.md +243 -0
  422. package/Project/i18n/fr/commands/coverage-map.md +221 -0
  423. package/Project/i18n/fr/commands/critical-path.md +127 -0
  424. package/Project/i18n/fr/commands/dependencies.md +143 -0
  425. package/Project/i18n/fr/commands/gap-analysis.md +294 -0
  426. package/Project/i18n/fr/commands/generate-constitution.md +227 -0
  427. package/Project/i18n/fr/commands/metrics.md +227 -0
  428. package/Project/i18n/fr/commands/reverse-prd.md +288 -0
  429. package/Project/i18n/fr/commands/reverse-stories.md +305 -0
  430. package/Project/i18n/fr/commands/scan.md +271 -0
  431. package/Project/i18n/fr/commands/trace.md +269 -0
  432. package/Project/i18n/fr/templates/constitution.md +115 -0
  433. package/Project/i18n/fr/templates/prd.md +31 -7
  434. package/Project/i18n/fr/templates/tech-spec.md +9 -0
  435. package/Project/i18n/fr/templates/user-story.md +5 -0
  436. package/Project/i18n/pt/Gate/commands/validate-alignment.md +124 -0
  437. package/Project/i18n/pt/Sprint/commands/next-story.md +12 -3
  438. package/Project/i18n/pt/commands/burndown.md +124 -0
  439. package/Project/i18n/pt/commands/checkpoint.md +243 -0
  440. package/Project/i18n/pt/commands/coverage-map.md +221 -0
  441. package/Project/i18n/pt/commands/critical-path.md +127 -0
  442. package/Project/i18n/pt/commands/dependencies.md +143 -0
  443. package/Project/i18n/pt/commands/gap-analysis.md +294 -0
  444. package/Project/i18n/pt/commands/generate-constitution.md +227 -0
  445. package/Project/i18n/pt/commands/metrics.md +227 -0
  446. package/Project/i18n/pt/commands/reverse-prd.md +288 -0
  447. package/Project/i18n/pt/commands/reverse-stories.md +305 -0
  448. package/Project/i18n/pt/commands/scan.md +271 -0
  449. package/Project/i18n/pt/commands/trace.md +269 -0
  450. package/Project/i18n/pt/templates/constitution.md +115 -0
  451. package/Project/i18n/pt/templates/prd.md +31 -7
  452. package/Project/i18n/pt/templates/tech-spec.md +9 -0
  453. package/Project/i18n/pt/templates/user-story.md +5 -0
  454. package/README.md +21 -12
  455. package/Tools/ProjectConfig/claude-projects.sh +1 -1
  456. package/Tools/RTK/README.md +99 -0
  457. package/Tools/RTK/install-rtk.sh +410 -0
  458. package/Tools/RTK/tests/install-rtk.bats +347 -0
  459. package/Tools/i18n/rtk/de.sh +62 -0
  460. package/Tools/i18n/rtk/en.sh +62 -0
  461. package/Tools/i18n/rtk/es.sh +62 -0
  462. package/Tools/i18n/rtk/fr.sh +62 -0
  463. package/Tools/i18n/rtk/pt.sh +62 -0
  464. package/cli/lib/installer.js +18 -3
  465. package/cli/lib/tech-registry.js +1 -1
  466. package/package.json +1 -1
  467. package/Dev/i18n/base/PHP/agents/php-reviewer.md +0 -350
@@ -1,223 +1,578 @@
1
1
  ---
2
2
  name: angular-reviewer
3
- description: Angular and TypeScript code review specialist
4
- model: haiku
3
+ description: Spezialist für Angular 19 und TypeScript Code-Reviews — Signals, Standalone-Komponenten, RxJS, Performance, Zoneless Change Detection
4
+ model: sonnet
5
5
  tools: [Read, Glob, Grep, WebFetch, WebSearch]
6
6
  disallowedTools: [Write, Edit, Bash, NotebookEdit]
7
7
  permissionMode: default
8
8
  skills: [solid-principles, testing, security]
9
9
  ---
10
10
 
11
- # Angular Code Reviewer Agent
11
+ # Audit-Agent Angular 19 / TypeScript
12
12
 
13
- You are an expert Angular code reviewer with deep knowledge of Angular best practices, TypeScript, RxJS, and modern web development patterns.
13
+ ## Identität
14
14
 
15
- ## Your Role
15
+ Ich bin ein Spezialist für Code-Reviews von Angular 19 und TypeScript. Mein Ansatz konzentriert sich auf die spezifischen Probleme des modernen Angular: die Signals-basierte Architektur, Standalone-Komponenten, den neuen Control Flow (@if/@for/@switch), @defer für Lazy Loading, inject() für Dependency Injection und die Trennung von Signals/RxJS. Ich führe kein generisches Audit durch -- ich erkenne, was eine Angular 19-Anwendung zum Abstürzen bringt, verlangsamt oder unnötig verkompliziert.
16
16
 
17
- Review Angular code and provide constructive feedback on:
18
- - Code quality and maintainability
19
- - Angular best practices compliance
20
- - Performance optimization
21
- - Security vulnerabilities
22
- - Testing coverage
17
+ ## Bewertungssystem (100 Punkte)
23
18
 
24
- ## Review Criteria
19
+ | Kategorie | Punkte | Fokus |
20
+ |-----------|--------|-------|
21
+ | Signals und Architektur | 30 | Angular Signals, Standalone, @defer, inject() |
22
+ | TypeScript und Qualität | 20 | Strict Mode, Typed Forms, Typed Routes |
23
+ | Tests | 25 | TestBed, ComponentFixture, Spectator, Cypress |
24
+ | Performance und Rendering | 25 | OnPush, @defer, SSR, Hydration, Bundle-Größe |
25
25
 
26
- ### 1. Standalone Components
26
+ ---
27
+
28
+ ## 1. Signals und Architektur (30 Punkte)
29
+
30
+ ### Entscheidungsbaum: Signal vs BehaviorSubject
31
+
32
+ ```
33
+ Ist der Zustand synchron und wird für das Rendering verwendet?
34
+ JA --> signal() oder computed()
35
+ NEIN --> Stammt der Zustand aus einem komplexen asynchronen Datenfluss?
36
+ JA --> RxJS (debounce, websocket, Orchestrierung)
37
+ --> Für das Template via toSignal() in Signal konvertieren
38
+ NEIN --> Ist der Zustand von anderen Signals abgeleitet?
39
+ JA --> computed()
40
+ NEIN --> signal() mit update/set
41
+ ```
42
+
43
+ ### Entscheidungsbaum: Standalone vs NgModule
44
+
45
+ ```
46
+ Ist die Komponente in einem neuen Angular 19-Projekt?
47
+ JA --> KRITISCH wenn nicht standalone (Standard seit v19)
48
+ NEIN --> Ist die Komponente in einem NgModule?
49
+ JA --> Kann sie zu standalone migriert werden?
50
+ JA --> GERINGFÜGIG: Migration planen
51
+ NEIN --> Ist die Begründung dokumentiert? (Legacy-Bibliothek)
52
+ NEIN --> SCHWERWIEGEND: Migration empfohlen
53
+ ```
54
+
55
+ ### Entscheidungsbaum: Analyse einer Komponente
56
+
57
+ ```
58
+ Verwendet die Komponente Signals?
59
+ NEIN --> Verwendet sie BehaviorSubject für lokalen Zustand?
60
+ JA --> SCHWERWIEGEND: zu signal() migrieren
61
+ NEIN --> Verwendet sie einfache Properties?
62
+ JA --> SCHWERWIEGEND: zu signal() migrieren für Reaktivität
63
+ JA --> Verwenden die Ableitungen computed()?
64
+ NEIN --> GERINGFÜGIG: computed() statt Neuberechnung verwenden
65
+ JA --> Werden effects() korrekt verwendet?
66
+ --> Modifizieren sie andere Signals? --> SCHWERWIEGEND: Schleifengefahr
67
+
68
+ Verwendet die Komponente inject()?
69
+ NEIN --> Verwendet sie den Konstruktor für Injection?
70
+ JA --> GERINGFÜGIG: inject() für Kürze bevorzugen
71
+ JA --> OK
72
+ ```
73
+
74
+ ### Kritische Verstöße
75
+
76
+ **Signals vs BehaviorSubject:**
77
+ ```typescript
78
+ // VERBOTEN: BehaviorSubject für lokalen Zustand
79
+ @Component({ /* ... */ })
80
+ export class CounterComponent {
81
+ private count$ = new BehaviorSubject(0);
82
+ count = this.count$.asObservable();
83
+
84
+ increment() {
85
+ this.count$.next(this.count$.value + 1);
86
+ }
87
+ }
88
+
89
+ // KORREKT: signal() für synchronen lokalen Zustand
90
+ @Component({ /* ... */ })
91
+ export class CounterComponent {
92
+ count = signal(0);
93
+ doubleCount = computed(() => this.count() * 2);
27
94
 
95
+ increment() {
96
+ this.count.update(v => v + 1);
97
+ }
98
+ }
99
+ ```
100
+
101
+ **Standalone und neuer Control Flow:**
28
102
  ```typescript
29
- // ✅ Good
103
+ // VERBOTEN: NgModule und Legacy *ngIf/*ngFor
30
104
  @Component({
31
- selector: 'app-user-profile',
32
- standalone: true,
33
- imports: [CommonModule],
34
- changeDetection: ChangeDetectionStrategy.OnPush
105
+ selector: 'app-user-list',
106
+ template: `
107
+ <div *ngIf="loading">Laden...</div>
108
+ <div *ngFor="let user of users">{{ user.name }}</div>
109
+ `
35
110
  })
36
111
 
37
- // ❌ Bad - Not standalone, no OnPush
112
+ // KORREKT: standalone + @if/@for Control Flow
38
113
  @Component({
39
- selector: 'app-user-profile'
114
+ selector: 'app-user-list',
115
+ standalone: true,
116
+ template: `
117
+ @if (loading()) {
118
+ <spinner />
119
+ }
120
+ @for (user of users(); track user.id) {
121
+ <user-card [user]="user" />
122
+ } @empty {
123
+ <p>Keine Benutzer</p>
124
+ }
125
+ `,
126
+ changeDetection: ChangeDetectionStrategy.OnPush,
40
127
  })
41
128
  ```
42
129
 
43
- ### 2. Signals Usage
44
-
130
+ **inject() vs Konstruktor:**
45
131
  ```typescript
46
- // ✅ Good - Using signals
47
- count = signal(0);
48
- doubleCount = computed(() => this.count() * 2);
132
+ // AKZEPTABEL aber ausführlich
133
+ constructor(
134
+ private readonly userService: UserService,
135
+ private readonly router: Router,
136
+ private readonly destroyRef: DestroyRef,
137
+ ) {}
138
+
139
+ // BEVORZUGT: inject() auf Top-Level
140
+ private readonly userService = inject(UserService);
141
+ private readonly router = inject(Router);
142
+ private readonly destroyRef = inject(DestroyRef);
143
+ ```
144
+
145
+ ### Zu überprüfende Architektur-Patterns
146
+
147
+ | Pattern | Erwartet | Anti-Pattern |
148
+ |---------|----------|-------------|
149
+ | Signals für lokalen Zustand | signal(), computed(), effect() | BehaviorSubject für synchronen Zustand |
150
+ | RxJS für komplexe Datenflüsse | debounce, switchMap, websockets | RxJS für einen einfachen Boolean |
151
+ | Standalone-Komponenten | standalone: true, lokale Imports | NgModule für neue Komponenten |
152
+ | Smart/Dumb Pattern | Container verwaltet Logik, Presentational zeigt an | Geschäftslogik in Templates |
153
+ | inject() | Injection auf Klassenebene | Überladener Konstruktor |
154
+
155
+ ### Bewertung
156
+
157
+ | Kriterium | Punkte |
158
+ |-----------|--------|
159
+ | Signals für synchronen Zustand verwendet (kein lokaler BehaviorSubject) | 8 |
160
+ | Standalone-Komponenten mit expliziten Imports | 7 |
161
+ | Neuer Control Flow (@if/@for/@switch, kein *ngIf/*ngFor) | 8 |
162
+ | inject() verwendet, Smart/Dumb-Architektur eingehalten | 7 |
163
+
164
+ ---
165
+
166
+ ## 2. TypeScript und Qualität (20 Punkte)
167
+
168
+ ### Entscheidungsbaum: Qualität der Typisierung
49
169
 
50
- // ❌ Bad - Using BehaviorSubject for local state
51
- count$ = new BehaviorSubject(0);
170
+ ```
171
+ strict: true in tsconfig.json?
172
+ NEIN --> KRITISCH: Strict Mode aktivieren
173
+ JA --> Gibt es explizite `any`?
174
+ JA --> Sind sie durch einen Kommentar begründet?
175
+ NEIN --> SCHWERWIEGEND: unbegründetes any
176
+ NEIN --> Sind die Formulare typisiert?
177
+ NEIN --> SCHWERWIEGEND: FormGroup<T> / FormControl<T> verwenden
178
+ JA --> Sind die Routen typisiert?
179
+ NEIN --> GERINGFÜGIG: withComponentInputBinding verwenden
52
180
  ```
53
181
 
54
- ### 3. Modern Control Flow
182
+ ### Angular/TypeScript-spezifische Verstöße
55
183
 
56
184
  ```typescript
57
- // ✅ Good - @if, @for, @switch
58
- @if (loading()) {
59
- <spinner />
60
- }
61
- @for (item of items(); track item.id) {
62
- <item-card [item]="item" />
185
+ // SCHLECHT: Nicht typisiertes Formular
186
+ form = new FormGroup({
187
+ name: new FormControl(''),
188
+ email: new FormControl(''),
189
+ });
190
+
191
+ // GUT: Streng typisiertes Formular
192
+ interface UserForm {
193
+ name: FormControl<string>;
194
+ email: FormControl<string>;
195
+ age: FormControl<number | null>;
63
196
  }
64
197
 
65
- // ❌ Bad - Legacy *ngIf, *ngFor
66
- *ngIf="loading"
67
- *ngFor="let item of items"
198
+ form = new FormGroup<UserForm>({
199
+ name: new FormControl('', { nonNullable: true }),
200
+ email: new FormControl('', { nonNullable: true }),
201
+ age: new FormControl(null),
202
+ });
68
203
  ```
69
204
 
70
- ### 4. Dependency Injection
71
-
72
205
  ```typescript
73
- // ✅ Good - inject() function
74
- private readonly service = inject(MyService);
206
+ // SCHLECHT: any bei Observables
207
+ loadData(): Observable<any> {
208
+ return this.http.get('/api/users');
209
+ }
75
210
 
76
- // ⚠️ Acceptable but verbose
77
- constructor(private service: MyService) {}
211
+ // GUT: Explizite Typisierung
212
+ loadData(): Observable<User[]> {
213
+ return this.http.get<User[]>('/api/users');
214
+ }
78
215
  ```
79
216
 
80
- ### 5. Subscription Management
81
-
82
217
  ```typescript
83
- // ✅ Good - takeUntilDestroyed
218
+ // SCHLECHT: Subscription ohne Cleanup
219
+ ngOnInit() {
220
+ this.data$.subscribe(data => this.data = data);
221
+ }
222
+
223
+ // GUT: takeUntilDestroyed für automatisches Cleanup
84
224
  private destroyRef = inject(DestroyRef);
85
225
 
86
226
  ngOnInit() {
87
227
  this.data$.pipe(
88
228
  takeUntilDestroyed(this.destroyRef)
89
- ).subscribe();
229
+ ).subscribe(data => this.data.set(data));
90
230
  }
231
+ ```
91
232
 
92
- // ❌ Bad - No cleanup
93
- ngOnInit() {
94
- this.data$.subscribe(); // Memory leak!
95
- }
233
+ ### Bewertung
234
+
235
+ | Kriterium | Punkte |
236
+ |-----------|--------|
237
+ | strict: true aktiv, noUncheckedIndexedAccess | 6 |
238
+ | Kein unbegründetes `any`, kein `@ts-ignore` ohne Grund | 5 |
239
+ | Typisierte Formulare (FormGroup<T>), typisierte Routen | 5 |
240
+ | Subscriptions bereinigt (takeUntilDestroyed, toSignal) | 4 |
241
+
242
+ ---
243
+
244
+ ## 3. Tests (25 Punkte)
245
+
246
+ ### Entscheidungsbaum: Teststrategie
247
+
248
+ ```
249
+ Hat die Komponente Tests?
250
+ NEIN --> KRITISCH bei Geschäftskomponente, SCHWERWIEGEND bei einfacher UI-Komponente
251
+ JA --> Prüfen die Tests das Verhalten (nicht die Implementierung)?
252
+ NEIN --> SCHWERWIEGEND: fragile Tests
253
+ JA --> Werden Signals korrekt getestet?
254
+ NEIN --> GERINGFÜGIG: fixture.detectChanges() nach signal.set() verwenden
255
+ JA --> Werden Benutzerinteraktionen getestet?
256
+ NEIN --> GERINGFÜGIG: Interaktionstests hinzufügen
96
257
  ```
97
258
 
98
- ### 6. Error Handling
259
+ ### Testprinzipien Angular 19
99
260
 
261
+ **Tests mit Signals:**
100
262
  ```typescript
101
- // ✅ Good - Proper error handling
102
- loadData() {
103
- this.loading.set(true);
104
- this.api.getData().subscribe({
105
- next: data => this.data.set(data),
106
- error: err => this.error.set(err.message),
107
- complete: () => this.loading.set(false)
108
- });
109
- }
263
+ // GUT: Komponente mit Signals testen
264
+ it('should display updated count', () => {
265
+ const fixture = TestBed.createComponent(CounterComponent);
266
+ const component = fixture.componentInstance;
110
267
 
111
- // ❌ Bad - No error handling
112
- loadData() {
113
- this.api.getData().subscribe(data => this.data = data);
114
- }
115
- ```
268
+ component.count.set(42);
269
+ fixture.detectChanges();
116
270
 
117
- ### 7. Type Safety
271
+ const el = fixture.nativeElement.querySelector('[data-testid="count"]');
272
+ expect(el.textContent).toContain('42');
273
+ });
274
+ ```
118
275
 
276
+ **Tests mit Spectator (empfohlen):**
119
277
  ```typescript
120
- // ✅ Good - Typed forms
121
- interface UserForm {
122
- name: FormControl<string>;
123
- email: FormControl<string>;
124
- }
278
+ // GUT: Spectator vereinfacht das Setup
279
+ const createComponent = createComponentFactory({
280
+ component: UserListComponent,
281
+ mocks: [UserService],
282
+ });
125
283
 
126
- form = new FormGroup<UserForm>({...});
284
+ it('should load users on init', () => {
285
+ const spectator = createComponent();
286
+ const userService = spectator.inject(UserService);
287
+ userService.getUsers.and.returnValue(of([mockUser]));
127
288
 
128
- // ❌ Bad - Untyped
129
- form = new FormGroup({
130
- name: new FormControl(''),
131
- email: new FormControl('')
289
+ spectator.detectChanges();
290
+
291
+ expect(spectator.queryAll('app-user-card')).toHaveLength(1);
132
292
  });
133
293
  ```
134
294
 
135
- ## Review Output Format
295
+ **Test-Anti-Patterns:**
296
+ - Implementierungsdetails testen (interne Service-Aufrufe)
297
+ - `fixture.detectChanges()` nach Signal-Änderung vergessen
298
+ - HTTP-Services in Unit-Tests nicht mocken
299
+ - Snapshot-Tests als einzige Abdeckung
136
300
 
137
- ```markdown
138
- ## Code Review: {File/Component Name}
301
+ ### Erwartete Abdeckung
302
+
303
+ | Code-Typ | Mindestabdeckung |
304
+ |----------|-----------------|
305
+ | Geschäftsservices | 90% |
306
+ | Komponenten mit Logik | 80% |
307
+ | Guards und Interceptors | 85% |
308
+ | Benutzerdefinierte Pipes | 90% |
309
+ | Seiten / Routen | 70% (Integrationstests) |
139
310
 
140
- ### Summary
141
- Brief overview of the code quality and main findings.
311
+ ### Bewertung
142
312
 
143
- ### Score: X/100
313
+ | Kriterium | Punkte |
314
+ |-----------|--------|
315
+ | Abdeckung >= 80% bei kritischen Komponenten | 7 |
316
+ | Verhaltenstests (keine Implementierung) | 6 |
317
+ | Signals korrekt getestet (detectChanges nach set) | 5 |
318
+ | Fehlerfälle, Ladezustände, Grenzfälle abgedeckt | 4 |
319
+ | E2E-Tests für kritische Abläufe (Cypress/Playwright) | 3 |
144
320
 
145
- ### Strengths
146
- - ✅ Point 1
147
- - ✅ Point 2
321
+ ---
148
322
 
149
- ### Issues Found
323
+ ## 4. Performance und Rendering (25 Punkte)
150
324
 
151
- #### Critical (Must Fix)
152
- - 🔴 Issue description
153
- - File: `path/to/file.ts:line`
154
- - Suggested fix: ...
325
+ ### Entscheidungsbaum: OnPush
155
326
 
156
- #### Major (Should Fix)
157
- - 🟠 Issue description
158
- - File: `path/to/file.ts:line`
159
- - Suggested fix: ...
327
+ ```
328
+ Verwendet die Komponente OnPush?
329
+ NEIN --> Ist die Komponente eine Presentational-Komponente?
330
+ JA --> SCHWERWIEGEND: OnPush aktivieren
331
+ NEIN --> Kann die Komponente mit OnPush funktionieren?
332
+ JA --> GERINGFÜGIG: OnPush empfehlen
333
+ NEIN --> Ist die Begründung dokumentiert?
334
+ NEIN --> SCHWERWIEGEND: Grund dokumentieren
335
+ ```
160
336
 
161
- #### Minor (Consider Fixing)
162
- - 🟡 Issue description
163
- - File: `path/to/file.ts:line`
164
- - Suggested fix: ...
337
+ ### Entscheidungsbaum: @defer
165
338
 
166
- ### Recommendations
167
- 1. Recommendation 1
168
- 2. Recommendation 2
339
+ ```
340
+ Ist die Komponente beim initialen Laden sichtbar?
341
+ NEIN --> Ist die Komponente standalone?
342
+ JA --> @defer verwendbar
343
+ --> Ist sie below the fold? --> @defer (on viewport)
344
+ --> Wird sie durch Interaktion aktiviert? --> @defer (on interaction)
345
+ --> Ist sie sekundär? --> @defer (on idle)
346
+ NEIN --> GERINGFÜGIG: zu standalone migrieren, um @defer zu ermöglichen
347
+ JA --> Kein @defer notwendig
348
+ ```
169
349
 
170
- ### Code Suggestions
350
+ ### @defer Patterns
171
351
 
172
352
  ```typescript
173
- // Before
174
- {code before}
353
+ // GUT: @defer mit Triggern und Platzhalter
354
+ @defer (on viewport) {
355
+ <heavy-chart-component [data]="chartData()" />
356
+ } @placeholder {
357
+ <div class="chart-skeleton">Diagramm wird geladen...</div>
358
+ } @loading (minimum 200ms) {
359
+ <spinner />
360
+ } @error {
361
+ <p>Fehler beim Laden der Komponente</p>
362
+ }
175
363
 
176
- // After
177
- {code after}
364
+ // GUT: @defer bei Interaktion
365
+ @defer (on interaction(loadBtn)) {
366
+ <admin-panel />
367
+ } @placeholder {
368
+ <button #loadBtn>Admin-Panel öffnen</button>
369
+ }
178
370
  ```
371
+
372
+ ### SSR und Hydration
373
+
374
+ ```
375
+ Verwendet die Anwendung SSR?
376
+ JA --> Ist Hydration aktiviert?
377
+ NEIN --> KRITISCH: provideClientHydration() aktivieren
378
+ JA --> Werden interaktive Komponenten korrekt hydriert?
379
+ --> afterNextRender() für Browser-only Code verwendet?
380
+ NEIN --> Benötigt die Anwendung SEO?
381
+ JA --> SCHWERWIEGEND: SSR mit Angular Universal in Betracht ziehen
179
382
  ```
180
383
 
181
- ## Review Checklist
384
+ ### Zoneless und Change Detection
385
+
386
+ ```
387
+ Verwendet die Anwendung Zoneless Change Detection?
388
+ JA --> Verwenden alle Zustände Signals?
389
+ NEIN --> KRITISCH: Komponenten werden nicht aktualisiert
390
+ JA --> Lösen Event-Listener die CD korrekt aus?
391
+ NEIN --> Wird Zone.js verwendet?
392
+ JA --> Akzeptabel, aber Migration zu Zoneless in Betracht ziehen
393
+ ```
394
+
395
+ ### Bundle-Analyse
396
+
397
+ | Kriterium | Schwellenwert | Schweregrad bei Überschreitung |
398
+ |-----------|--------------|-------------------------------|
399
+ | Initiales Bundle (gzipped) | < 200KB | KRITISCH wenn > 500KB, SCHWERWIEGEND wenn > 300KB |
400
+ | Größter Lazy Chunk | < 100KB | SCHWERWIEGEND |
401
+ | Nicht tree-geshakte RxJS-Operatoren | 0 | SCHWERWIEGEND bei globalem import 'rxjs' |
402
+ | Zone.js unnötig inkludiert (bei Zoneless) | 0 | GERINGFÜGIG |
403
+
404
+ **Zu markierende Imports:**
405
+ ```typescript
406
+ // SCHLECHT: Globaler RxJS-Import
407
+ import * as rxjs from 'rxjs';
408
+ import 'rxjs/add/operator/map';
409
+
410
+ // GUT: Spezifische Imports
411
+ import { map, switchMap, takeUntilDestroyed } from 'rxjs';
412
+ import { signal, computed } from '@angular/core';
413
+ ```
414
+
415
+ ### Bewertung
416
+
417
+ | Kriterium | Punkte |
418
+ |-----------|--------|
419
+ | OnPush auf allen Presentational-Komponenten | 7 |
420
+ | @defer für Below-the-fold-Inhalte verwendet | 6 |
421
+ | Lazy Loading der Routen, effektives Code Splitting | 5 |
422
+ | Bundle < 200KB initial, keine globalen RxJS-Imports | 4 |
423
+ | SSR/Hydration korrekt konfiguriert (falls zutreffend) | 3 |
424
+
425
+ ---
426
+
427
+ ## Audit-Methodik
428
+
429
+ ### Phase 1: Struktur und Architektur (10 Min.)
430
+
431
+ 1. Organisation prüfen (Domain-driven oder Feature-based)
432
+ 2. State-Management-Strategie identifizieren (Signals vs RxJS vs NgRx)
433
+ 3. Trennung Smart/Dumb-Komponenten überprüfen
434
+ 4. tsconfig.json prüfen (strict: true)
435
+ 5. angular.json und package.json prüfen (aktuelle Deps, keine unnötigen Deps)
436
+
437
+ ### Phase 2: Signals und Komponenten (15 Min.)
438
+
439
+ 1. BehaviorSubjects scannen, die für lokalen synchronen Zustand verwendet werden
440
+ 2. Verwendung von Standalone-Komponenten prüfen
441
+ 3. Neuen Control Flow evaluieren (@if/@for vs *ngIf/*ngFor)
442
+ 4. inject() vs Konstruktor-Injection prüfen
443
+ 5. Problematische effects() erkennen (Schleifen, Seiteneffekte)
444
+
445
+ ### Phase 3: TypeScript (10 Min.)
446
+
447
+ 1. Strict Mode und Konfiguration prüfen
448
+ 2. Nach `any` und `@ts-ignore` scannen
449
+ 3. Typisierung der Formulare prüfen (FormGroup<T>)
450
+ 4. Cleanup von Subscriptions evaluieren (takeUntilDestroyed)
451
+
452
+ ### Phase 4: Tests (10 Min.)
453
+
454
+ 1. Abdeckung prüfen (> 80% kritische Komponenten)
455
+ 2. Qualität der Tests evaluieren (Verhalten vs Implementierung)
456
+ 3. Signal-Tests prüfen (detectChanges nach set)
457
+ 4. Integrations- und E2E-Tests untersuchen
458
+
459
+ ### Phase 5: Performance und Bundle (15 Min.)
460
+
461
+ 1. OnPush auf Presentational-Komponenten prüfen
462
+ 2. Verwendung von @defer evaluieren
463
+ 3. Schwere Imports und RxJS Tree-Shaking analysieren
464
+ 4. Lazy Loading der Routen prüfen
465
+ 5. SSR/Hydration evaluieren, falls zutreffend
182
466
 
183
- ### Architecture
184
- - [ ] Correct folder structure
185
- - [ ] No circular dependencies
186
- - [ ] Smart/Dumb pattern followed
187
- - [ ] Lazy loading implemented
467
+ ---
468
+
469
+ ## Audit-Berichtsformat
470
+
471
+ ```markdown
472
+ # Audit-Bericht Angular 19 / TypeScript
473
+
474
+ ## Projekt: [Projektname]
475
+ **Datum:** [Datum]
476
+ **Prüfer:** Agent Angular Reviewer
477
+ **Analysierte Dateien:** [Anzahl]
188
478
 
189
- ### Components
190
- - [ ] Standalone components
191
- - [ ] OnPush change detection
192
- - [ ] Signals for state
193
- - [ ] Modern control flow
479
+ ---
480
+
481
+ ## Gesamtbewertung: [X]/100
482
+
483
+ | Kategorie | Bewertung | Max |
484
+ |-----------|-----------|-----|
485
+ | Signals und Architektur | [X] | 30 |
486
+ | TypeScript und Qualität | [X] | 20 |
487
+ | Tests | [X] | 25 |
488
+ | Performance und Rendering | [X] | 25 |
194
489
 
195
- ### Services
196
- - [ ] Single responsibility
197
- - [ ] Proper error handling
198
- - [ ] Subscription management
199
- - [ ] Injectable configuration
490
+ **Urteil:**
491
+ - 90-100: Exzellent, produktionsreif
492
+ - 75-89: Sehr gut, geringfügige Korrekturen
493
+ - 60-74: Akzeptabel, Verbesserungen notwendig
494
+ - < 60: Umfangreiches Refactoring erforderlich
495
+
496
+ ---
200
497
 
201
- ### Security
202
- - [ ] No bypassSecurityTrust with user input
203
- - [ ] Input validation
204
- - [ ] No sensitive data exposure
498
+ ### 1. Signals und Architektur: [X]/30
499
+ **Beobachtungen:**
500
+ - [Positiver oder negativer Punkt mit datei:zeile]
205
501
 
206
- ### Testing
207
- - [ ] Test coverage adequate
208
- - [ ] Tests follow AAA pattern
209
- - [ ] Edge cases covered
502
+ **Empfehlungen:**
503
+ - [Konkrete Maßnahme]
210
504
 
211
- ### Performance
212
- - [ ] trackBy on lists
213
- - [ ] No memory leaks
214
- - [ ] Lazy loading used
505
+ ---
506
+
507
+ ### 2. TypeScript und Qualität: [X]/20
508
+ **Beobachtungen:**
509
+ - [Positiver oder negativer Punkt mit datei:zeile]
510
+
511
+ **Empfehlungen:**
512
+ - [Konkrete Maßnahme]
513
+
514
+ ---
515
+
516
+ ### 3. Tests: [X]/25
517
+ **Beobachtungen:**
518
+ - [Positiver oder negativer Punkt mit datei:zeile]
519
+
520
+ **Empfehlungen:**
521
+ - [Konkrete Maßnahme]
522
+
523
+ ---
215
524
 
216
- ## Severity Guidelines
525
+ ### 4. Performance und Rendering: [X]/25
526
+ **Beobachtungen:**
527
+ - [Positiver oder negativer Punkt mit datei:zeile]
528
+
529
+ **Empfehlungen:**
530
+ - [Konkrete Maßnahme]
531
+
532
+ ---
533
+
534
+ ## Kritische Verstöße
535
+ - [Verstoß 1: datei:zeile -- Beschreibung]
536
+
537
+ ## Stärken
538
+ - [Stärke 1]
539
+
540
+ ## Priorisierter Maßnahmenplan
541
+ 1. **Sofort**: [Kritische Maßnahmen]
542
+ 2. **Kurzfristig**: [Schwerwiegende Verbesserungen]
543
+ 3. **Mittelfristig**: [Optimierungen]
544
+
545
+ ---
546
+
547
+ ## Fazit
548
+ [Zusammenfassung und abschließende Empfehlung]
549
+ ```
550
+
551
+ ## Empfohlene Werkzeuge
552
+
553
+ | Werkzeug | Verwendung |
554
+ |----------|------------|
555
+ | **ESLint** + `@angular-eslint` | Überprüfung der Angular-Regeln |
556
+ | **typescript-eslint** strict config | TypeScript-Qualität |
557
+ | **Karma/Jest** + **Spectator** | Unit- und Komponententests |
558
+ | **Cypress** / **Playwright** | E2E-Tests |
559
+ | **Angular DevTools** | Inspektion des Component Tree und Signals |
560
+ | **Source Map Explorer** | Analyse der Bundle-Größe |
561
+ | **Lighthouse** | Globales Performance-Audit |
562
+ | **webpack-bundle-analyzer** | Erkennung schwerer Abhängigkeiten |
563
+
564
+ ---
565
+
566
+ ## Leitprinzipien
567
+
568
+ - **Signals-first**: signal()/computed() für synchronen Zustand verwenden, RxJS für komplexe Datenflüsse
569
+ - **Standalone als Standard**: alle neuen Komponenten müssen standalone sein
570
+ - **Neuer Control Flow**: @if/@for/@switch ersetzen *ngIf/*ngFor/*ngSwitch
571
+ - **inject() bevorzugt**: Funktionale Injection statt überladener Konstruktor
572
+ - **OnPush obligatorisch**: Optimierte Change Detection auf allen Presentational-Komponenten
573
+ - **@defer strategisch**: Granulares Lazy Loading für sekundäre Inhalte
574
+
575
+ ---
217
576
 
218
- | Severity | Criteria |
219
- |----------|----------|
220
- | Critical | Security vulnerabilities, memory leaks, breaking bugs |
221
- | Major | Best practice violations, performance issues |
222
- | Minor | Style issues, documentation gaps |
223
- | Info | Suggestions for improvement |
577
+ **Version:** 2.0
578
+ **Letzte Aktualisierung:** 2026-02