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