@girardelli/architect-agents 8.1.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 (258) hide show
  1. package/dist/src/core/agent-generator/context-enricher.d.ts +17 -0
  2. package/dist/src/core/agent-generator/context-enricher.js +51 -0
  3. package/dist/src/core/agent-generator/context-enricher.js.map +1 -0
  4. package/dist/src/core/agent-generator/detectors/base-detector.d.ts +8 -0
  5. package/dist/src/core/agent-generator/detectors/base-detector.js +12 -0
  6. package/dist/src/core/agent-generator/detectors/base-detector.js.map +1 -0
  7. package/dist/src/core/agent-generator/detectors/dart-detector.d.ts +5 -0
  8. package/dist/src/core/agent-generator/detectors/dart-detector.js +16 -0
  9. package/dist/src/core/agent-generator/detectors/dart-detector.js.map +1 -0
  10. package/dist/src/core/agent-generator/detectors/framework-registry.d.ts +5 -0
  11. package/dist/src/core/agent-generator/detectors/framework-registry.js +81 -0
  12. package/dist/src/core/agent-generator/detectors/framework-registry.js.map +1 -0
  13. package/dist/src/core/agent-generator/detectors/go-detector.d.ts +5 -0
  14. package/dist/src/core/agent-generator/detectors/go-detector.js +25 -0
  15. package/dist/src/core/agent-generator/detectors/go-detector.js.map +1 -0
  16. package/dist/src/core/agent-generator/detectors/java-detector.d.ts +5 -0
  17. package/dist/src/core/agent-generator/detectors/java-detector.js +44 -0
  18. package/dist/src/core/agent-generator/detectors/java-detector.js.map +1 -0
  19. package/dist/src/core/agent-generator/detectors/node-detector.d.ts +5 -0
  20. package/dist/src/core/agent-generator/detectors/node-detector.js +28 -0
  21. package/dist/src/core/agent-generator/detectors/node-detector.js.map +1 -0
  22. package/dist/src/core/agent-generator/detectors/php-detector.d.ts +5 -0
  23. package/dist/src/core/agent-generator/detectors/php-detector.js +28 -0
  24. package/dist/src/core/agent-generator/detectors/php-detector.js.map +1 -0
  25. package/dist/src/core/agent-generator/detectors/python-detector.d.ts +7 -0
  26. package/dist/src/core/agent-generator/detectors/python-detector.js +116 -0
  27. package/dist/src/core/agent-generator/detectors/python-detector.js.map +1 -0
  28. package/dist/src/core/agent-generator/detectors/ruby-detector.d.ts +5 -0
  29. package/dist/src/core/agent-generator/detectors/ruby-detector.js +23 -0
  30. package/dist/src/core/agent-generator/detectors/ruby-detector.js.map +1 -0
  31. package/dist/src/core/agent-generator/detectors/rust-detector.d.ts +5 -0
  32. package/dist/src/core/agent-generator/detectors/rust-detector.js +18 -0
  33. package/dist/src/core/agent-generator/detectors/rust-detector.js.map +1 -0
  34. package/dist/src/core/agent-generator/detectors/structure-detector.d.ts +4 -0
  35. package/dist/src/core/agent-generator/detectors/structure-detector.js +35 -0
  36. package/dist/src/core/agent-generator/detectors/structure-detector.js.map +1 -0
  37. package/dist/src/core/agent-generator/detectors/toolchain-detector.d.ts +5 -0
  38. package/dist/src/core/agent-generator/detectors/toolchain-detector.js +164 -0
  39. package/dist/src/core/agent-generator/detectors/toolchain-detector.js.map +1 -0
  40. package/dist/src/core/agent-generator/domain-inferrer.d.ts +51 -0
  41. package/dist/src/core/agent-generator/domain-inferrer.js +585 -0
  42. package/dist/src/core/agent-generator/domain-inferrer.js.map +1 -0
  43. package/dist/src/core/agent-generator/engines/audit-engine.d.ts +8 -0
  44. package/dist/src/core/agent-generator/engines/audit-engine.js +84 -0
  45. package/dist/src/core/agent-generator/engines/audit-engine.js.map +1 -0
  46. package/dist/src/core/agent-generator/engines/context-builder.d.ts +12 -0
  47. package/dist/src/core/agent-generator/engines/context-builder.js +84 -0
  48. package/dist/src/core/agent-generator/engines/context-builder.js.map +1 -0
  49. package/dist/src/core/agent-generator/engines/generation-engine.d.ts +7 -0
  50. package/dist/src/core/agent-generator/engines/generation-engine.js +160 -0
  51. package/dist/src/core/agent-generator/engines/generation-engine.js.map +1 -0
  52. package/dist/src/core/agent-generator/engines/generation-engine_deps.d.ts +21 -0
  53. package/dist/src/core/agent-generator/engines/generation-engine_deps.js +17 -0
  54. package/dist/src/core/agent-generator/engines/generation-engine_deps.js.map +1 -0
  55. package/dist/src/core/agent-generator/engines/suggestion-engine.d.ts +13 -0
  56. package/dist/src/core/agent-generator/engines/suggestion-engine.js +171 -0
  57. package/dist/src/core/agent-generator/engines/suggestion-engine.js.map +1 -0
  58. package/dist/src/core/agent-generator/engines/suggestion-engine_deps.d.ts +8 -0
  59. package/dist/src/core/agent-generator/engines/suggestion-engine_deps.js +5 -0
  60. package/dist/src/core/agent-generator/engines/suggestion-engine_deps.js.map +1 -0
  61. package/dist/src/core/agent-generator/enrichers/analysis-helpers.d.ts +9 -0
  62. package/dist/src/core/agent-generator/enrichers/analysis-helpers.js +51 -0
  63. package/dist/src/core/agent-generator/enrichers/analysis-helpers.js.map +1 -0
  64. package/dist/src/core/agent-generator/enrichers/description-generator.d.ts +4 -0
  65. package/dist/src/core/agent-generator/enrichers/description-generator.js +82 -0
  66. package/dist/src/core/agent-generator/enrichers/description-generator.js.map +1 -0
  67. package/dist/src/core/agent-generator/enrichers/endpoint-extractor.d.ts +7 -0
  68. package/dist/src/core/agent-generator/enrichers/endpoint-extractor.js +90 -0
  69. package/dist/src/core/agent-generator/enrichers/endpoint-extractor.js.map +1 -0
  70. package/dist/src/core/agent-generator/enrichers/layer-classifier.d.ts +12 -0
  71. package/dist/src/core/agent-generator/enrichers/layer-classifier.js +152 -0
  72. package/dist/src/core/agent-generator/enrichers/layer-classifier.js.map +1 -0
  73. package/dist/src/core/agent-generator/enrichers/module-extractor.d.ts +10 -0
  74. package/dist/src/core/agent-generator/enrichers/module-extractor.js +173 -0
  75. package/dist/src/core/agent-generator/enrichers/module-extractor.js.map +1 -0
  76. package/dist/src/core/agent-generator/framework-detector.d.ts +17 -0
  77. package/dist/src/core/agent-generator/framework-detector.js +56 -0
  78. package/dist/src/core/agent-generator/framework-detector.js.map +1 -0
  79. package/dist/src/core/agent-generator/index.d.ts +25 -0
  80. package/dist/src/core/agent-generator/index.js +37 -0
  81. package/dist/src/core/agent-generator/index.js.map +1 -0
  82. package/dist/src/core/agent-generator/stack-detector.d.ts +13 -0
  83. package/dist/src/core/agent-generator/stack-detector.js +124 -0
  84. package/dist/src/core/agent-generator/stack-detector.js.map +1 -0
  85. package/dist/src/core/agent-generator/templates/core/agents.d.ts +9 -0
  86. package/dist/src/core/agent-generator/templates/core/agents.js +1127 -0
  87. package/dist/src/core/agent-generator/templates/core/agents.js.map +1 -0
  88. package/dist/src/core/agent-generator/templates/core/architecture-rules.d.ts +6 -0
  89. package/dist/src/core/agent-generator/templates/core/architecture-rules.js +275 -0
  90. package/dist/src/core/agent-generator/templates/core/architecture-rules.js.map +1 -0
  91. package/dist/src/core/agent-generator/templates/core/general-rules.d.ts +7 -0
  92. package/dist/src/core/agent-generator/templates/core/general-rules.js +301 -0
  93. package/dist/src/core/agent-generator/templates/core/general-rules.js.map +1 -0
  94. package/dist/src/core/agent-generator/templates/core/hooks-generator.d.ts +20 -0
  95. package/dist/src/core/agent-generator/templates/core/hooks-generator.js +235 -0
  96. package/dist/src/core/agent-generator/templates/core/hooks-generator.js.map +1 -0
  97. package/dist/src/core/agent-generator/templates/core/index-md.d.ts +6 -0
  98. package/dist/src/core/agent-generator/templates/core/index-md.js +247 -0
  99. package/dist/src/core/agent-generator/templates/core/index-md.js.map +1 -0
  100. package/dist/src/core/agent-generator/templates/core/orchestrator.d.ts +7 -0
  101. package/dist/src/core/agent-generator/templates/core/orchestrator.js +423 -0
  102. package/dist/src/core/agent-generator/templates/core/orchestrator.js.map +1 -0
  103. package/dist/src/core/agent-generator/templates/core/preflight.d.ts +7 -0
  104. package/dist/src/core/agent-generator/templates/core/preflight.js +213 -0
  105. package/dist/src/core/agent-generator/templates/core/preflight.js.map +1 -0
  106. package/dist/src/core/agent-generator/templates/core/quality-gates.d.ts +10 -0
  107. package/dist/src/core/agent-generator/templates/core/quality-gates.js +255 -0
  108. package/dist/src/core/agent-generator/templates/core/quality-gates.js.map +1 -0
  109. package/dist/src/core/agent-generator/templates/core/security-rules.d.ts +6 -0
  110. package/dist/src/core/agent-generator/templates/core/security-rules.js +529 -0
  111. package/dist/src/core/agent-generator/templates/core/security-rules.js.map +1 -0
  112. package/dist/src/core/agent-generator/templates/core/skills-generator.d.ts +18 -0
  113. package/dist/src/core/agent-generator/templates/core/skills-generator.js +547 -0
  114. package/dist/src/core/agent-generator/templates/core/skills-generator.js.map +1 -0
  115. package/dist/src/core/agent-generator/templates/core/workflow-fix-bug.d.ts +6 -0
  116. package/dist/src/core/agent-generator/templates/core/workflow-fix-bug.js +238 -0
  117. package/dist/src/core/agent-generator/templates/core/workflow-fix-bug.js.map +1 -0
  118. package/dist/src/core/agent-generator/templates/core/workflow-new-feature.d.ts +7 -0
  119. package/dist/src/core/agent-generator/templates/core/workflow-new-feature.js +321 -0
  120. package/dist/src/core/agent-generator/templates/core/workflow-new-feature.js.map +1 -0
  121. package/dist/src/core/agent-generator/templates/core/workflow-review.d.ts +6 -0
  122. package/dist/src/core/agent-generator/templates/core/workflow-review.js +105 -0
  123. package/dist/src/core/agent-generator/templates/core/workflow-review.js.map +1 -0
  124. package/dist/src/core/agent-generator/templates/domain/index.d.ts +21 -0
  125. package/dist/src/core/agent-generator/templates/domain/index.js +1179 -0
  126. package/dist/src/core/agent-generator/templates/domain/index.js.map +1 -0
  127. package/dist/src/core/agent-generator/templates/helpers/base-helpers.d.ts +10 -0
  128. package/dist/src/core/agent-generator/templates/helpers/base-helpers.js +20 -0
  129. package/dist/src/core/agent-generator/templates/helpers/base-helpers.js.map +1 -0
  130. package/dist/src/core/agent-generator/templates/helpers/cross-ref-helpers.d.ts +2 -0
  131. package/dist/src/core/agent-generator/templates/helpers/cross-ref-helpers.js +77 -0
  132. package/dist/src/core/agent-generator/templates/helpers/cross-ref-helpers.js.map +1 -0
  133. package/dist/src/core/agent-generator/templates/helpers/security-helpers.d.ts +2 -0
  134. package/dist/src/core/agent-generator/templates/helpers/security-helpers.js +182 -0
  135. package/dist/src/core/agent-generator/templates/helpers/security-helpers.js.map +1 -0
  136. package/dist/src/core/agent-generator/templates/helpers/stack-helpers.d.ts +4 -0
  137. package/dist/src/core/agent-generator/templates/helpers/stack-helpers.js +69 -0
  138. package/dist/src/core/agent-generator/templates/helpers/stack-helpers.js.map +1 -0
  139. package/dist/src/core/agent-generator/templates/helpers/structure-helpers.d.ts +2 -0
  140. package/dist/src/core/agent-generator/templates/helpers/structure-helpers.js +275 -0
  141. package/dist/src/core/agent-generator/templates/helpers/structure-helpers.js.map +1 -0
  142. package/dist/src/core/agent-generator/templates/helpers/summary-helpers.d.ts +6 -0
  143. package/dist/src/core/agent-generator/templates/helpers/summary-helpers.js +56 -0
  144. package/dist/src/core/agent-generator/templates/helpers/summary-helpers.js.map +1 -0
  145. package/dist/src/core/agent-generator/templates/stack/index.d.ts +7 -0
  146. package/dist/src/core/agent-generator/templates/stack/index.js +695 -0
  147. package/dist/src/core/agent-generator/templates/stack/index.js.map +1 -0
  148. package/dist/src/core/agent-generator/templates/template-helpers.d.ts +11 -0
  149. package/dist/src/core/agent-generator/templates/template-helpers.js +12 -0
  150. package/dist/src/core/agent-generator/templates/template-helpers.js.map +1 -0
  151. package/dist/src/core/agent-generator/types/agent.d.ts +39 -0
  152. package/dist/src/core/agent-generator/types/agent.js +27 -0
  153. package/dist/src/core/agent-generator/types/agent.js.map +1 -0
  154. package/dist/src/core/agent-generator/types/domain.d.ts +58 -0
  155. package/dist/src/core/agent-generator/types/domain.js +2 -0
  156. package/dist/src/core/agent-generator/types/domain.js.map +1 -0
  157. package/dist/src/core/agent-generator/types/stack.d.ts +36 -0
  158. package/dist/src/core/agent-generator/types/stack.js +2 -0
  159. package/dist/src/core/agent-generator/types/stack.js.map +1 -0
  160. package/dist/src/core/agent-generator/types/template.d.ts +29 -0
  161. package/dist/src/core/agent-generator/types/template.js +2 -0
  162. package/dist/src/core/agent-generator/types/template.js.map +1 -0
  163. package/dist/src/core/agent-runtime/ai-provider.d.ts +33 -0
  164. package/dist/src/core/agent-runtime/ai-provider.js +146 -0
  165. package/dist/src/core/agent-runtime/ai-provider.js.map +1 -0
  166. package/dist/src/core/agent-runtime/executor.d.ts +13 -0
  167. package/dist/src/core/agent-runtime/executor.js +138 -0
  168. package/dist/src/core/agent-runtime/executor.js.map +1 -0
  169. package/dist/src/core/agent-runtime/human-gate.d.ts +16 -0
  170. package/dist/src/core/agent-runtime/human-gate.js +70 -0
  171. package/dist/src/core/agent-runtime/human-gate.js.map +1 -0
  172. package/dist/tests/agent-generator.test.d.ts +1 -0
  173. package/dist/tests/agent-generator.test.js +349 -0
  174. package/dist/tests/agent-generator.test.js.map +1 -0
  175. package/dist/tests/agent-runtime.test.d.ts +1 -0
  176. package/dist/tests/agent-runtime.test.js +107 -0
  177. package/dist/tests/agent-runtime.test.js.map +1 -0
  178. package/dist/tests/context-enricher.test.d.ts +1 -0
  179. package/dist/tests/context-enricher.test.js +875 -0
  180. package/dist/tests/context-enricher.test.js.map +1 -0
  181. package/dist/tests/framework-detector.test.d.ts +1 -0
  182. package/dist/tests/framework-detector.test.js +882 -0
  183. package/dist/tests/framework-detector.test.js.map +1 -0
  184. package/dist/tests/stack-detector.test.d.ts +1 -0
  185. package/dist/tests/stack-detector.test.js +183 -0
  186. package/dist/tests/stack-detector.test.js.map +1 -0
  187. package/dist/tests/template-generation.test.d.ts +1 -0
  188. package/dist/tests/template-generation.test.js +571 -0
  189. package/dist/tests/template-generation.test.js.map +1 -0
  190. package/dist/tests/template-helpers.test.d.ts +1 -0
  191. package/dist/tests/template-helpers.test.js +967 -0
  192. package/dist/tests/template-helpers.test.js.map +1 -0
  193. package/package.json +24 -0
  194. package/src/core/agent-generator/context-enricher.ts +67 -0
  195. package/src/core/agent-generator/detectors/base-detector.ts +18 -0
  196. package/src/core/agent-generator/detectors/dart-detector.ts +17 -0
  197. package/src/core/agent-generator/detectors/framework-registry.ts +82 -0
  198. package/src/core/agent-generator/detectors/go-detector.ts +26 -0
  199. package/src/core/agent-generator/detectors/java-detector.ts +46 -0
  200. package/src/core/agent-generator/detectors/node-detector.ts +28 -0
  201. package/src/core/agent-generator/detectors/php-detector.ts +28 -0
  202. package/src/core/agent-generator/detectors/python-detector.ts +125 -0
  203. package/src/core/agent-generator/detectors/ruby-detector.ts +24 -0
  204. package/src/core/agent-generator/detectors/rust-detector.ts +19 -0
  205. package/src/core/agent-generator/detectors/structure-detector.ts +38 -0
  206. package/src/core/agent-generator/detectors/toolchain-detector.ts +181 -0
  207. package/src/core/agent-generator/domain-inferrer.ts +630 -0
  208. package/src/core/agent-generator/engines/audit-engine.ts +98 -0
  209. package/src/core/agent-generator/engines/context-builder.ts +96 -0
  210. package/src/core/agent-generator/engines/generation-engine.ts +184 -0
  211. package/src/core/agent-generator/engines/generation-engine_deps.ts +21 -0
  212. package/src/core/agent-generator/engines/suggestion-engine.ts +202 -0
  213. package/src/core/agent-generator/engines/suggestion-engine_deps.ts +8 -0
  214. package/src/core/agent-generator/enrichers/analysis-helpers.ts +58 -0
  215. package/src/core/agent-generator/enrichers/description-generator.ts +91 -0
  216. package/src/core/agent-generator/enrichers/endpoint-extractor.ts +114 -0
  217. package/src/core/agent-generator/enrichers/layer-classifier.ts +156 -0
  218. package/src/core/agent-generator/enrichers/module-extractor.ts +203 -0
  219. package/src/core/agent-generator/framework-detector.ts +66 -0
  220. package/src/core/agent-generator/index.ts +55 -0
  221. package/src/core/agent-generator/stack-detector.ts +115 -0
  222. package/src/core/agent-generator/templates/core/agents.ts +1168 -0
  223. package/src/core/agent-generator/templates/core/architecture-rules.ts +288 -0
  224. package/src/core/agent-generator/templates/core/general-rules.ts +306 -0
  225. package/src/core/agent-generator/templates/core/hooks-generator.ts +244 -0
  226. package/src/core/agent-generator/templates/core/index-md.ts +261 -0
  227. package/src/core/agent-generator/templates/core/orchestrator.ts +462 -0
  228. package/src/core/agent-generator/templates/core/preflight.ts +216 -0
  229. package/src/core/agent-generator/templates/core/quality-gates.ts +257 -0
  230. package/src/core/agent-generator/templates/core/security-rules.ts +544 -0
  231. package/src/core/agent-generator/templates/core/skills-generator.ts +586 -0
  232. package/src/core/agent-generator/templates/core/workflow-fix-bug.ts +240 -0
  233. package/src/core/agent-generator/templates/core/workflow-new-feature.ts +323 -0
  234. package/src/core/agent-generator/templates/core/workflow-review.ts +107 -0
  235. package/src/core/agent-generator/templates/domain/index.ts +1204 -0
  236. package/src/core/agent-generator/templates/helpers/base-helpers.ts +33 -0
  237. package/src/core/agent-generator/templates/helpers/cross-ref-helpers.ts +79 -0
  238. package/src/core/agent-generator/templates/helpers/security-helpers.ts +198 -0
  239. package/src/core/agent-generator/templates/helpers/stack-helpers.ts +80 -0
  240. package/src/core/agent-generator/templates/helpers/structure-helpers.ts +293 -0
  241. package/src/core/agent-generator/templates/helpers/summary-helpers.ts +67 -0
  242. package/src/core/agent-generator/templates/stack/index.ts +705 -0
  243. package/src/core/agent-generator/templates/template-helpers.ts +12 -0
  244. package/src/core/agent-generator/types/agent.ts +65 -0
  245. package/src/core/agent-generator/types/domain.ts +63 -0
  246. package/src/core/agent-generator/types/stack.ts +38 -0
  247. package/src/core/agent-generator/types/template.ts +31 -0
  248. package/src/core/agent-runtime/ai-provider.ts +178 -0
  249. package/src/core/agent-runtime/executor.ts +148 -0
  250. package/src/core/agent-runtime/human-gate.ts +69 -0
  251. package/tests/agent-generator.test.ts +428 -0
  252. package/tests/agent-runtime.test.ts +125 -0
  253. package/tests/context-enricher.test.ts +972 -0
  254. package/tests/framework-detector.test.ts +1172 -0
  255. package/tests/stack-detector.test.ts +241 -0
  256. package/tests/template-generation.test.ts +709 -0
  257. package/tests/template-helpers.test.ts +1130 -0
  258. package/tsconfig.json +14 -0
@@ -0,0 +1,695 @@
1
+ /**
2
+ * Stack-specific rule generators.
3
+ * Each generates a 03-[framework].md rule file tailored to the detected stack.
4
+ */
5
+ export function generateStackRules(ctx) {
6
+ const { stack } = ctx;
7
+ if (stack.frameworks.includes('NestJS'))
8
+ return generateNestJSRules(ctx);
9
+ if (stack.frameworks.includes('Angular'))
10
+ return generateAngularRules(ctx);
11
+ if (stack.frameworks.includes('Next.js'))
12
+ return generateNextJSRules(ctx);
13
+ if (stack.frameworks.includes('Django') || stack.frameworks.includes('FastAPI'))
14
+ return generatePythonWebRules(ctx);
15
+ if (stack.frameworks.includes('Flutter'))
16
+ return generateFlutterRules(ctx);
17
+ if (stack.frameworks.includes('Spring'))
18
+ return generateSpringRules(ctx);
19
+ if (stack.frameworks.includes('Express') || stack.frameworks.includes('Fastify'))
20
+ return generateNodeAPIRules(ctx);
21
+ return null; // No framework-specific rules needed
22
+ }
23
+ export function getStackRuleFileName(ctx) {
24
+ const { stack } = ctx;
25
+ if (stack.frameworks.includes('NestJS'))
26
+ return '03-nestjs';
27
+ if (stack.frameworks.includes('Angular'))
28
+ return '03-angular';
29
+ if (stack.frameworks.includes('Next.js'))
30
+ return '03-nextjs';
31
+ if (stack.frameworks.includes('Django'))
32
+ return '03-django';
33
+ if (stack.frameworks.includes('FastAPI'))
34
+ return '03-fastapi';
35
+ if (stack.frameworks.includes('Flutter'))
36
+ return '03-flutter';
37
+ if (stack.frameworks.includes('Spring'))
38
+ return '03-spring';
39
+ if (stack.frameworks.includes('Express'))
40
+ return '03-express';
41
+ if (stack.frameworks.includes('Fastify'))
42
+ return '03-fastify';
43
+ return null;
44
+ }
45
+ // ────────────────────────────────────────────────────
46
+ // NestJS
47
+ // ────────────────────────────────────────────────────
48
+ function generateNestJSRules(ctx) {
49
+ const { projectName, config } = ctx;
50
+ return `---
51
+ antigravity:
52
+ trigger: 'always_on'
53
+ globs: ['**/*.ts']
54
+ description: 'Regras NestJS para ${projectName}'
55
+ priority: HIGH
56
+ ---
57
+
58
+ # βš™οΈ Regras NestJS β€” ${projectName}
59
+
60
+ > **PadrΓ΅es obrigatΓ³rios para desenvolvimento NestJS.**
61
+
62
+ ---
63
+
64
+ ## πŸ“¦ Estrutura de MΓ³dulo
65
+
66
+ \`\`\`
67
+ Cada feature = 1 mΓ³dulo NestJS
68
+
69
+ src/modules/[feature]/
70
+ β”œβ”€β”€ [feature].module.ts β†’ @Module({ imports, providers, exports })
71
+ β”œβ”€β”€ [feature].controller.ts β†’ @Controller() β€” HTTP endpoints
72
+ β”œβ”€β”€ [feature].controller.spec.ts β†’ Testes do controller
73
+ β”œβ”€β”€ [feature].service.ts β†’ @Injectable() β€” LΓ³gica de negΓ³cio
74
+ β”œβ”€β”€ [feature].service.spec.ts β†’ Testes do service
75
+ β”œβ”€β”€ dto/
76
+ β”‚ β”œβ”€β”€ create-[feature].dto.ts β†’ class-validator + class-transformer
77
+ β”‚ β”œβ”€β”€ update-[feature].dto.ts β†’ Partial<CreateDto>
78
+ β”‚ └── [feature]-response.dto.ts β†’ Response shape (NUNCA entity direta)
79
+ β”œβ”€β”€ entities/
80
+ β”‚ └── [feature].entity.ts β†’ @Entity() TypeORM / Prisma model
81
+ β”œβ”€β”€ guards/ β†’ Guards especΓ­ficos
82
+ β”œβ”€β”€ pipes/ β†’ Pipes customizados
83
+ └── interfaces/ β†’ Interfaces do mΓ³dulo
84
+ \`\`\`
85
+
86
+ ---
87
+
88
+ ## 🎯 Decorators β€” Uso Correto
89
+
90
+ \`\`\`
91
+ @Controller() β†’ Routing APENAS. Sem lΓ³gica de negΓ³cio.
92
+ @Injectable() β†’ Services, Repositories. InjetΓ‘veis.
93
+ @Module() β†’ Agrupa components. Declara imports/exports.
94
+ @Entity() β†’ Modelo de banco. NUNCA expor na API.
95
+
96
+ Guards:
97
+ @UseGuards(AuthGuard) β†’ AutenticaΓ§Γ£o
98
+ @UseGuards(RolesGuard) β†’ AutorizaΓ§Γ£o
99
+ @Roles('admin', 'user') β†’ Roles necessΓ‘rias
100
+
101
+ Pipes:
102
+ @UsePipes(ValidationPipe) β†’ ValidaΓ§Γ£o de DTO
103
+ { whitelist: true, forbidNonWhitelisted: true, transform: true }
104
+
105
+ Interceptors:
106
+ @UseInterceptors(LoggingInterceptor) β†’ Logging
107
+ @UseInterceptors(TransformInterceptor) β†’ Response shape
108
+ \`\`\`
109
+
110
+ ---
111
+
112
+ ## 🚫 Anti-Patterns NestJS
113
+
114
+ \`\`\`
115
+ ❌ PROIBIDO: Lógica de negócio no controller
116
+ β†’ Mover para service
117
+
118
+ ❌ PROIBIDO: Entity como response de API
119
+ β†’ Criar DTO de response
120
+
121
+ ❌ PROIBIDO: @Body() sem DTO validado
122
+ β†’ Criar DTO com class-validator
123
+
124
+ ❌ PROIBIDO: Service importando Request/Response
125
+ β†’ Service recebe dados puros, controller adapta
126
+
127
+ ❌ PROIBIDO: Circular module imports
128
+ β†’ Usar forwardRef() ou extrair shared module
129
+
130
+ ❌ PROIBIDO: Repository no controller
131
+ β†’ Controller β†’ Service β†’ Repository
132
+
133
+ ❌ PROIBIDO: try/catch genérico no controller
134
+ β†’ Usar exception filters
135
+
136
+ ❌ PROIBIDO: console.log
137
+ β†’ Usar @nestjs/common Logger ou winston
138
+ \`\`\`
139
+
140
+ ---
141
+
142
+ ## βœ… Patterns NestJS ObrigatΓ³rios
143
+
144
+ \`\`\`
145
+ βœ… Global validation pipe no bootstrap
146
+ βœ… Global exception filter (HttpExceptionFilter)
147
+ βœ… DTOs com class-validator para TODOS os endpoints
148
+ βœ… Config via @nestjs/config + .env
149
+ βœ… Database via TypeORM/Prisma com migrations
150
+ βœ… Auth via Passport + JWT strategy
151
+ βœ… Swagger via @nestjs/swagger + ApiProperty()
152
+ βœ… Health check endpoint (/health)
153
+ βœ… Cobertura β‰₯ ${config.coverageMinimum}%
154
+ \`\`\`
155
+
156
+ ---
157
+
158
+ ## πŸ“‹ Checklist por Endpoint
159
+
160
+ \`\`\`
161
+ β–‘ DTO de request com validaΓ§Γ£o
162
+ β–‘ DTO de response (nΓ£o entity)
163
+ β–‘ Guard de auth aplicado
164
+ β–‘ Swagger decorators (@ApiTags, @ApiOperation, @ApiResponse)
165
+ β–‘ Error handling (HttpException com status correto)
166
+ β–‘ Teste unitΓ‘rio do service method
167
+ β–‘ Teste de integraΓ§Γ£o do endpoint
168
+ β–‘ Logging estruturado
169
+ \`\`\`
170
+
171
+ ---
172
+
173
+ **Gerado por Architect v8.1**
174
+ `;
175
+ }
176
+ // ────────────────────────────────────────────────────
177
+ // Angular
178
+ // ────────────────────────────────────────────────────
179
+ function generateAngularRules(ctx) {
180
+ const { projectName, config } = ctx;
181
+ return `---
182
+ antigravity:
183
+ trigger: 'always_on'
184
+ globs: ['**/*.ts', '**/*.html', '**/*.scss']
185
+ description: 'Regras Angular para ${projectName}'
186
+ priority: HIGH
187
+ ---
188
+
189
+ # πŸ…°οΈ Regras Angular β€” ${projectName}
190
+
191
+ > **PadrΓ΅es obrigatΓ³rios para desenvolvimento Angular.**
192
+
193
+ ---
194
+
195
+ ## πŸ“¦ Estrutura de Module
196
+
197
+ \`\`\`
198
+ src/app/modules/[feature]/
199
+ β”œβ”€β”€ [feature].module.ts
200
+ β”œβ”€β”€ [feature]-routing.module.ts
201
+ β”œβ”€β”€ components/
202
+ β”‚ β”œβ”€β”€ [feature]-list/
203
+ β”‚ β”‚ β”œβ”€β”€ [feature]-list.component.ts
204
+ β”‚ β”‚ β”œβ”€β”€ [feature]-list.component.html
205
+ β”‚ β”‚ β”œβ”€β”€ [feature]-list.component.scss
206
+ β”‚ β”‚ └── [feature]-list.component.spec.ts
207
+ β”‚ └── [feature]-form/
208
+ β”‚ └── ...
209
+ β”œβ”€β”€ services/
210
+ β”‚ β”œβ”€β”€ [feature].service.ts
211
+ β”‚ └── [feature].service.spec.ts
212
+ β”œβ”€β”€ models/
213
+ β”‚ └── [feature].model.ts
214
+ β”œβ”€β”€ guards/
215
+ └── pipes/
216
+ \`\`\`
217
+
218
+ ---
219
+
220
+ ## 🎯 Component Rules
221
+
222
+ \`\`\`
223
+ β–‘ Smart vs Dumb components (Container vs Presentational)
224
+ β–‘ OnPush change detection por padrΓ£o
225
+ β–‘ Unsubscribe de Observables (takeUntilDestroyed ou async pipe)
226
+ β–‘ TODOS os estados: loading, error, empty, data
227
+ β–‘ Lazy loading para feature modules
228
+ β–‘ trackBy em *ngFor
229
+ β–‘ Sem lΓ³gica de negΓ³cio no template
230
+ β–‘ Sem lΓ³gica de negΓ³cio no component β€” usar services
231
+ \`\`\`
232
+
233
+ ---
234
+
235
+ ## 🚫 Anti-Patterns Angular
236
+
237
+ \`\`\`
238
+ ❌ Component com > 200 linhas de lΓ³gica β†’ Extrair para service
239
+ ❌ Subscribe manual sem unsubscribe β†’ Memory leak
240
+ ❌ Chamadas HTTP no component β†’ Usar service
241
+ ❌ any em templates β†’ Tipar corretamente
242
+ ❌ Shared module gigante β†’ Dividir por domΓ­nio
243
+ \`\`\`
244
+
245
+ ---
246
+
247
+ ## βœ… Checklist por Component
248
+
249
+ \`\`\`
250
+ β–‘ OnPush change detection
251
+ β–‘ Loading/error/empty states
252
+ β–‘ Responsive (mobile + desktop)
253
+ β–‘ Acessibilidade (labels, aria)
254
+ β–‘ Lazy loaded (se feature module)
255
+ β–‘ Teste unitΓ‘rio
256
+ β–‘ Cobertura β‰₯ ${config.coverageMinimum}%
257
+ \`\`\`
258
+
259
+ ---
260
+
261
+ **Gerado por Architect v8.1**
262
+ `;
263
+ }
264
+ // ────────────────────────────────────────────────────
265
+ // Next.js
266
+ // ────────────────────────────────────────────────────
267
+ function generateNextJSRules(ctx) {
268
+ const { projectName, config } = ctx;
269
+ return `---
270
+ antigravity:
271
+ trigger: 'always_on'
272
+ globs: ['**/*.{ts,tsx,js,jsx}']
273
+ description: 'Regras Next.js para ${projectName}'
274
+ priority: HIGH
275
+ ---
276
+
277
+ # β–² Regras Next.js β€” ${projectName}
278
+
279
+ > **PadrΓ΅es obrigatΓ³rios para desenvolvimento Next.js.**
280
+
281
+ ---
282
+
283
+ ## πŸ“¦ Estrutura
284
+
285
+ \`\`\`
286
+ src/
287
+ β”œβ”€β”€ app/ β†’ App Router (pages, layouts, loading, error)
288
+ β”‚ β”œβ”€β”€ layout.tsx β†’ Root layout
289
+ β”‚ β”œβ”€β”€ page.tsx β†’ Home
290
+ β”‚ β”œβ”€β”€ [feature]/
291
+ β”‚ β”‚ β”œβ”€β”€ page.tsx β†’ Feature page (Server Component por padrΓ£o)
292
+ β”‚ β”‚ β”œβ”€β”€ loading.tsx β†’ Loading UI
293
+ β”‚ β”‚ β”œβ”€β”€ error.tsx β†’ Error boundary
294
+ β”‚ β”‚ └── layout.tsx β†’ Feature layout
295
+ β”œβ”€β”€ components/ β†’ Shared components
296
+ β”‚ β”œβ”€β”€ ui/ β†’ Design system atoms
297
+ β”‚ └── [feature]/ β†’ Feature-specific components
298
+ β”œβ”€β”€ lib/ β†’ Utilities, API clients
299
+ β”œβ”€β”€ services/ β†’ Business logic, data fetching
300
+ β”œβ”€β”€ types/ β†’ TypeScript types
301
+ └── hooks/ β†’ Custom React hooks
302
+ \`\`\`
303
+
304
+ ---
305
+
306
+ ## 🎯 Server vs Client Components
307
+
308
+ \`\`\`
309
+ Server Components (padrΓ£o):
310
+ βœ… Data fetching
311
+ βœ… Acesso a backend resources
312
+ βœ… Sensitive data (tokens, keys)
313
+ βœ… Large dependencies server-side
314
+
315
+ Client Components ('use client'):
316
+ βœ… Interatividade (onClick, onChange)
317
+ βœ… Hooks (useState, useEffect)
318
+ βœ… Browser APIs
319
+ βœ… Event listeners
320
+
321
+ REGRA: Manter Client Components o menor possΓ­vel.
322
+ Push 'use client' para baixo na Γ‘rvore.
323
+ \`\`\`
324
+
325
+ ---
326
+
327
+ ## 🚫 Anti-Patterns Next.js
328
+
329
+ \`\`\`
330
+ ❌ 'use client' no layout.tsx β†’ Quebra streaming SSR
331
+ ❌ fetch sem cache strategy β†’ Definir revalidate
332
+ ❌ useEffect para data fetching β†’ Server Component
333
+ ❌ API route sem validaΓ§Γ£o β†’ Zod schema
334
+ ❌ Client component gigante β†’ Extrair server parts
335
+ \`\`\`
336
+
337
+ ---
338
+
339
+ ## βœ… Checklist por Page
340
+
341
+ \`\`\`
342
+ β–‘ loading.tsx para Suspense boundary
343
+ β–‘ error.tsx para error boundary
344
+ β–‘ Metadata (generateMetadata) para SEO
345
+ β–‘ Server Component por padrΓ£o
346
+ β–‘ ValidaΓ§Γ£o de params/searchParams
347
+ β–‘ Cobertura β‰₯ ${config.coverageMinimum}%
348
+ \`\`\`
349
+
350
+ ---
351
+
352
+ **Gerado por Architect v8.1**
353
+ `;
354
+ }
355
+ // ────────────────────────────────────────────────────
356
+ // Python Web (Django / FastAPI)
357
+ // ────────────────────────────────────────────────────
358
+ function generatePythonWebRules(ctx) {
359
+ const { projectName, stack, config } = ctx;
360
+ const fw = stack.frameworks.includes('Django') ? 'Django' : 'FastAPI';
361
+ return `---
362
+ antigravity:
363
+ trigger: 'always_on'
364
+ globs: ['**/*.py']
365
+ description: 'Regras ${fw} para ${projectName}'
366
+ priority: HIGH
367
+ ---
368
+
369
+ # 🐍 Regras ${fw} β€” ${projectName}
370
+
371
+ > **PadrΓ΅es obrigatΓ³rios para desenvolvimento ${fw}.**
372
+
373
+ ---
374
+
375
+ ## πŸ“¦ Estrutura
376
+
377
+ ${fw === 'Django' ? `\`\`\`
378
+ apps/[feature]/
379
+ β”œβ”€β”€ __init__.py
380
+ β”œβ”€β”€ admin.py β†’ Admin customizado
381
+ β”œβ”€β”€ apps.py β†’ App config
382
+ β”œβ”€β”€ models.py β†’ Models (ORM)
383
+ β”œβ”€β”€ managers.py β†’ Custom QuerySet/Manager
384
+ β”œβ”€β”€ serializers.py β†’ DRF Serializers
385
+ β”œβ”€β”€ views.py β†’ ViewSets / APIViews
386
+ β”œβ”€β”€ urls.py β†’ URL patterns
387
+ β”œβ”€β”€ permissions.py β†’ Custom permissions
388
+ β”œβ”€β”€ filters.py β†’ django-filter sets
389
+ β”œβ”€β”€ signals.py β†’ Signal handlers
390
+ β”œβ”€β”€ services.py β†’ Business logic (NΓƒO no view)
391
+ β”œβ”€β”€ tasks.py β†’ Celery tasks
392
+ β”œβ”€β”€ tests/
393
+ β”‚ β”œβ”€β”€ test_models.py
394
+ β”‚ β”œβ”€β”€ test_views.py
395
+ β”‚ └── test_services.py
396
+ └── migrations/
397
+ \`\`\`` : `\`\`\`
398
+ app/
399
+ β”œβ”€β”€ main.py β†’ FastAPI app, middleware
400
+ β”œβ”€β”€ core/
401
+ β”‚ β”œβ”€β”€ config.py β†’ Pydantic Settings
402
+ β”‚ β”œβ”€β”€ security.py β†’ JWT, hashing
403
+ β”‚ └── deps.py β†’ Dependency injection
404
+ β”œβ”€β”€ modules/[feature]/
405
+ β”‚ β”œβ”€β”€ __init__.py
406
+ β”‚ β”œβ”€β”€ router.py β†’ APIRouter endpoints
407
+ β”‚ β”œβ”€β”€ schemas.py β†’ Pydantic models (request/response)
408
+ β”‚ β”œβ”€β”€ models.py β†’ SQLAlchemy models
409
+ β”‚ β”œβ”€β”€ service.py β†’ Business logic
410
+ β”‚ β”œβ”€β”€ repository.py β†’ Data access
411
+ β”‚ └── tests/
412
+ β”‚ β”œβ”€β”€ test_router.py
413
+ β”‚ └── test_service.py
414
+ └── alembic/ β†’ Migrations
415
+ \`\`\``}
416
+
417
+ ---
418
+
419
+ ## 🚫 Anti-Patterns ${fw}
420
+
421
+ \`\`\`
422
+ ${fw === 'Django' ? `❌ Fat views (lΓ³gica de negΓ³cio no view) β†’ Usar services.py
423
+ ❌ N+1 queries β†’ select_related / prefetch_related
424
+ ❌ Raw SQL sem necessidade β†’ QuerySet API
425
+ ❌ Model sem __str__ β†’ Sempre implementar
426
+ ❌ Migrations manuais β†’ Sempre via makemigrations
427
+ ❌ Signal abuse β†’ Preferir chamada explΓ­cita em service` : `❌ LΓ³gica no router (endpoint) β†’ Usar service layer
428
+ ❌ SQLAlchemy session no router β†’ Dependency injection
429
+ ❌ Schemas sem validaΓ§Γ£o β†’ Pydantic validators
430
+ ❌ sync blocking em async β†’ Usar run_in_executor
431
+ ❌ Sem type hints β†’ FastAPI depende de tipos`}
432
+ \`\`\`
433
+
434
+ ---
435
+
436
+ ## βœ… Checklist
437
+
438
+ \`\`\`
439
+ β–‘ LΓ³gica de negΓ³cio em services (nΓ£o views/routers)
440
+ β–‘ Schemas/Serializers para TODOS os endpoints
441
+ β–‘ Migrations reversΓ­veis
442
+ β–‘ Testes para models, services, views
443
+ β–‘ Type hints em todo cΓ³digo
444
+ β–‘ Cobertura β‰₯ ${config.coverageMinimum}%
445
+ \`\`\`
446
+
447
+ ---
448
+
449
+ **Gerado por Architect v8.1**
450
+ `;
451
+ }
452
+ // ────────────────────────────────────────────────────
453
+ // Flutter
454
+ // ────────────────────────────────────────────────────
455
+ function generateFlutterRules(ctx) {
456
+ const { projectName, config } = ctx;
457
+ return `---
458
+ antigravity:
459
+ trigger: 'always_on'
460
+ globs: ['**/*.dart']
461
+ description: 'Regras Flutter para ${projectName}'
462
+ priority: HIGH
463
+ ---
464
+
465
+ # πŸ“± Regras Flutter β€” ${projectName}
466
+
467
+ > **PadrΓ΅es obrigatΓ³rios para desenvolvimento Flutter.**
468
+
469
+ ---
470
+
471
+ ## πŸ“¦ Estrutura
472
+
473
+ \`\`\`
474
+ lib/
475
+ β”œβ”€β”€ main.dart β†’ Entry point
476
+ β”œβ”€β”€ app.dart β†’ MaterialApp / Router
477
+ β”œβ”€β”€ core/
478
+ β”‚ β”œβ”€β”€ di/ β†’ Dependency injection (get_it/riverpod)
479
+ β”‚ β”œβ”€β”€ theme/ β†’ AppTheme, colors, typography
480
+ β”‚ β”œβ”€β”€ network/ β†’ Dio/HTTP client config
481
+ β”‚ β”œβ”€β”€ storage/ β†’ SharedPreferences, secure storage
482
+ β”‚ └── utils/ β†’ Extensions, formatters
483
+ β”œβ”€β”€ features/[feature]/
484
+ β”‚ β”œβ”€β”€ data/
485
+ β”‚ β”‚ β”œβ”€β”€ models/ β†’ JSON models (fromJson/toJson)
486
+ β”‚ β”‚ β”œβ”€β”€ repositories/ β†’ Repository implementation
487
+ β”‚ β”‚ └── datasources/ β†’ API calls, local DB
488
+ β”‚ β”œβ”€β”€ domain/
489
+ β”‚ β”‚ β”œβ”€β”€ entities/ β†’ Business entities
490
+ β”‚ β”‚ β”œβ”€β”€ repositories/ β†’ Repository interfaces (abstract)
491
+ β”‚ β”‚ └── usecases/ β†’ Business logic units
492
+ β”‚ └── presentation/
493
+ β”‚ β”œβ”€β”€ pages/ β†’ Screen widgets
494
+ β”‚ β”œβ”€β”€ widgets/ β†’ Feature-specific widgets
495
+ β”‚ β”œβ”€β”€ bloc/ (ou cubit/) β†’ State management
496
+ β”‚ └── providers/ β†’ Riverpod providers (se usado)
497
+ └── shared/
498
+ β”œβ”€β”€ widgets/ β†’ Reusable widgets
499
+ └── models/ β†’ Shared models
500
+ \`\`\`
501
+
502
+ ---
503
+
504
+ ## 🎯 State Management
505
+
506
+ \`\`\`
507
+ PadrΓ£o: BLoC/Cubit ou Riverpod (escolher UM)
508
+
509
+ BLoC:
510
+ Event β†’ BLoC β†’ State β†’ UI
511
+ β–‘ Events sΓ£o imutΓ‘veis
512
+ β–‘ States sΓ£o imutΓ‘veis
513
+ β–‘ BLoC nΓ£o importa Flutter (puro Dart)
514
+ β–‘ Um BLoC por feature (nΓ£o God BLoC)
515
+
516
+ NUNCA:
517
+ ❌ setState para lógica complexa
518
+ ❌ State management misturado (BLoC + Provider + setState)
519
+ ❌ BLoC acessando BuildContext
520
+ \`\`\`
521
+
522
+ ---
523
+
524
+ ## 🚫 Anti-Patterns Flutter
525
+
526
+ \`\`\`
527
+ ❌ Column com muitos children para listas β†’ ListView.builder
528
+ ❌ Widget gigante (> 200 linhas) β†’ Extrair sub-widgets
529
+ ❌ Build method com lΓ³gica β†’ Mover para BLoC/Cubit
530
+ ❌ Sem const constructors β†’ Sempre usar const
531
+ ❌ FutureBuilder direto para API calls β†’ BLoC/Cubit
532
+ ❌ Hardcoded strings β†’ Usar l10n/intl
533
+ ❌ Hardcoded colors β†’ Usar Theme.of(context)
534
+ \`\`\`
535
+
536
+ ---
537
+
538
+ ## βœ… Checklist por Screen
539
+
540
+ \`\`\`
541
+ β–‘ TODOS os estados: loading, error, empty, data
542
+ β–‘ Pull-to-refresh (se lista)
543
+ β–‘ Skeleton/shimmer para loading
544
+ β–‘ Error retry button
545
+ β–‘ Responsive (tablet support se necessΓ‘rio)
546
+ β–‘ Keyboard handling (dismiss, next field)
547
+ β–‘ Teste de widget
548
+ β–‘ Cobertura β‰₯ ${config.coverageMinimum}%
549
+ \`\`\`
550
+
551
+ ---
552
+
553
+ **Gerado por Architect v8.1**
554
+ `;
555
+ }
556
+ // ────────────────────────────────────────────────────
557
+ // Spring Boot
558
+ // ────────────────────────────────────────────────────
559
+ function generateSpringRules(ctx) {
560
+ const { projectName, config } = ctx;
561
+ return `---
562
+ antigravity:
563
+ trigger: 'always_on'
564
+ globs: ['**/*.java', '**/*.kt']
565
+ description: 'Regras Spring Boot para ${projectName}'
566
+ priority: HIGH
567
+ ---
568
+
569
+ # πŸƒ Regras Spring Boot β€” ${projectName}
570
+
571
+ > **PadrΓ΅es obrigatΓ³rios para desenvolvimento Spring Boot.**
572
+
573
+ ---
574
+
575
+ ## πŸ“¦ Estrutura
576
+
577
+ \`\`\`
578
+ src/main/java/com/[org]/[project]/
579
+ β”œβ”€β”€ [Feature]Module/
580
+ β”‚ β”œβ”€β”€ controller/
581
+ β”‚ β”‚ └── [Feature]Controller.java β†’ @RestController
582
+ β”‚ β”œβ”€β”€ service/
583
+ β”‚ β”‚ β”œβ”€β”€ [Feature]Service.java β†’ Interface
584
+ β”‚ β”‚ └── [Feature]ServiceImpl.java β†’ @Service
585
+ β”‚ β”œβ”€β”€ repository/
586
+ β”‚ β”‚ └── [Feature]Repository.java β†’ @Repository / JPA
587
+ β”‚ β”œβ”€β”€ dto/
588
+ β”‚ β”‚ β”œβ”€β”€ Create[Feature]Request.java β†’ @Valid annotations
589
+ β”‚ β”‚ └── [Feature]Response.java
590
+ β”‚ β”œβ”€β”€ entity/
591
+ β”‚ β”‚ └── [Feature].java β†’ @Entity JPA
592
+ β”‚ └── exception/
593
+ β”‚ └── [Feature]NotFoundException.java
594
+ \`\`\`
595
+
596
+ ---
597
+
598
+ ## 🚫 Anti-Patterns Spring
599
+
600
+ \`\`\`
601
+ ❌ @Autowired field injection β†’ Constructor injection
602
+ ❌ LΓ³gica no controller β†’ Service layer
603
+ ❌ Entity como response β†’ DTO mapping
604
+ ❌ catch(Exception e) genΓ©rico β†’ Specific exceptions + @ControllerAdvice
605
+ ❌ @Transactional no controller β†’ Service layer
606
+ \`\`\`
607
+
608
+ ---
609
+
610
+ ## βœ… Checklist
611
+
612
+ \`\`\`
613
+ β–‘ Constructor injection (nΓ£o field)
614
+ β–‘ DTOs com @Valid
615
+ β–‘ @ControllerAdvice para exception handling
616
+ β–‘ @Transactional no service
617
+ β–‘ Cobertura β‰₯ ${config.coverageMinimum}%
618
+ \`\`\`
619
+
620
+ ---
621
+
622
+ **Gerado por Architect v8.1**
623
+ `;
624
+ }
625
+ // ────────────────────────────────────────────────────
626
+ // Express / Fastify (Node.js API)
627
+ // ────────────────────────────────────────────────────
628
+ function generateNodeAPIRules(ctx) {
629
+ const { projectName, stack, config } = ctx;
630
+ const fw = stack.frameworks.includes('Fastify') ? 'Fastify' : 'Express';
631
+ return `---
632
+ antigravity:
633
+ trigger: 'always_on'
634
+ globs: ['**/*.{ts,js}']
635
+ description: 'Regras ${fw} para ${projectName}'
636
+ priority: HIGH
637
+ ---
638
+
639
+ # πŸš€ Regras ${fw} β€” ${projectName}
640
+
641
+ > **PadrΓ΅es obrigatΓ³rios para desenvolvimento ${fw}.**
642
+
643
+ ---
644
+
645
+ ## πŸ“¦ Estrutura
646
+
647
+ \`\`\`
648
+ src/
649
+ β”œβ”€β”€ app.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} β†’ ${fw} app setup, middleware
650
+ β”œβ”€β”€ server.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} β†’ Server bootstrap
651
+ β”œβ”€β”€ modules/[feature]/
652
+ β”‚ β”œβ”€β”€ [feature].routes.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} β†’ Route definitions
653
+ β”‚ β”œβ”€β”€ [feature].controller.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} β†’ Request handling
654
+ β”‚ β”œβ”€β”€ [feature].service.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} β†’ Business logic
655
+ β”‚ β”œβ”€β”€ [feature].schema.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} β†’ Validation (Joi/Zod)
656
+ β”‚ β”œβ”€β”€ [feature].model.${stack.languages.includes('TypeScript') ? 'ts' : 'js'} β†’ DB model
657
+ β”‚ └── __tests__/
658
+ β”œβ”€β”€ middleware/ β†’ Auth, logging, error handler
659
+ β”œβ”€β”€ config/ β†’ Environment config
660
+ └── utils/ β†’ Shared utilities
661
+ \`\`\`
662
+
663
+ ---
664
+
665
+ ## 🚫 Anti-Patterns ${fw}
666
+
667
+ \`\`\`
668
+ ❌ LΓ³gica de negΓ³cio no route handler β†’ Usar service layer
669
+ ❌ req.body sem validaΓ§Γ£o β†’ Joi/Zod schema
670
+ ❌ Callback hell β†’ async/await
671
+ ❌ Error swallowing (catch vazio) β†’ Proper error handler middleware
672
+ ❌ Secrets hardcoded β†’ Environment variables
673
+ ❌ console.log em produΓ§Γ£o β†’ Structured logger (winston/pino)
674
+ \`\`\`
675
+
676
+ ---
677
+
678
+ ## βœ… Checklist
679
+
680
+ \`\`\`
681
+ β–‘ Validation middleware em TODOS os endpoints
682
+ β–‘ Error handling middleware global
683
+ β–‘ Auth middleware para rotas protegidas
684
+ β–‘ Rate limiting
685
+ β–‘ CORS configurado
686
+ β–‘ Helmet para security headers
687
+ β–‘ Cobertura β‰₯ ${config.coverageMinimum}%
688
+ \`\`\`
689
+
690
+ ---
691
+
692
+ **Gerado por Architect v8.1**
693
+ `;
694
+ }
695
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/core/agent-generator/templates/stack/index.ts"],"names":[],"mappings":"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"}