@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,288 @@
1
+ import { TemplateContext } from '@girardelli/architect-agents/src/core/agent-generator/types/template.js';
2
+
3
+ /**
4
+ * Generates 01-architecture.md — layer rules, dependency direction,
5
+ * module patterns, and anti-pattern prevention.
6
+ */
7
+ export function generateArchitectureRules(ctx: TemplateContext): string {
8
+ // @ts-ignore - Audit cleanup unused variable
9
+ const { stack, projectName, report, config } = ctx;
10
+ const layerRules = buildLayerRules(ctx);
11
+ const modulePattern = buildModulePattern(ctx);
12
+
13
+ return `---
14
+ antigravity:
15
+ trigger: 'always_on'
16
+ globs: ['**/*']
17
+ description: 'Regras de arquitetura para ${projectName}'
18
+ priority: HIGH
19
+ ---
20
+
21
+ # 🏗️ Regras de Arquitetura — ${projectName}
22
+
23
+ > **Separação de camadas, direção de dependências, e padrões de módulo.**
24
+
25
+ ---
26
+
27
+ ## 📐 Camadas Arquiteturais
28
+
29
+ ${layerRules}
30
+
31
+ ### Direção de Dependência (OBRIGATÓRIA)
32
+
33
+ \`\`\`
34
+ UI / Controllers → Services → Repositories / Data → Entities
35
+ ↓ ↓ ↓
36
+ (pode usar) (pode usar) (pode usar)
37
+ Services Repositories Entities
38
+ DTOs Entities Value Objects
39
+ DTOs
40
+
41
+ ⚠️ NUNCA:
42
+ Entity → Controller
43
+ Repository → Controller
44
+ Service → Controller
45
+ Data Layer → UI Layer
46
+ \`\`\`
47
+
48
+ ### Regra de Ouro das Camadas
49
+
50
+ \`\`\`
51
+ ╔══════════════════════════════════════════════════════╗
52
+ ║ Uma camada SÓ pode depender de camadas ABAIXO. ║
53
+ ║ NUNCA de camadas acima ou da mesma camada lateral. ║
54
+ ╚══════════════════════════════════════════════════════╝
55
+ \`\`\`
56
+
57
+ ---
58
+
59
+ ## 📦 Padrão de Módulo
60
+
61
+ ${modulePattern}
62
+
63
+ ---
64
+
65
+ ## 🚫 Anti-Patterns a Prevenir
66
+
67
+ ### God Class (> 500 linhas ou > 10 métodos)
68
+ \`\`\`
69
+ ❌ PROIBIDO: Classe com múltiplas responsabilidades
70
+ ✅ CORRETO: Extrair em classes menores com responsabilidade única
71
+
72
+ Se um arquivo ultrapassar 500 linhas:
73
+ 1. PARAR
74
+ 2. Identificar responsabilidades distintas
75
+ 3. Extrair em módulos separados
76
+ 4. Atualizar imports
77
+ \`\`\`
78
+
79
+ ### Circular Dependencies
80
+ \`\`\`
81
+ ❌ PROIBIDO: A importa B, B importa A
82
+ ✅ CORRETO: Extrair interface comum ou usar event/mediator
83
+
84
+ Detecção:
85
+ $ npx madge --circular src/
86
+ $ architect anti-patterns .
87
+ \`\`\`
88
+
89
+ ### Leaky Abstractions
90
+ \`\`\`
91
+ ❌ PROIBIDO: Service expondo detalhes de implementação
92
+ ✅ CORRETO: Interface define contrato, implementação é encapsulada
93
+
94
+ Exemplos:
95
+ - Service retornando QueryBuilder → ERRADO (vaza ORM)
96
+ - Service retornando DTO → CORRETO (abstrai)
97
+ - Controller acessando Entity → ERRADO (vaza modelo)
98
+ - Controller acessando DTO → CORRETO (contrato)
99
+ \`\`\`
100
+
101
+ ### Feature Envy
102
+ \`\`\`
103
+ ❌ PROIBIDO: Método que usa mais atributos de outra classe que da própria
104
+ ✅ CORRETO: Mover método para a classe que possui os dados
105
+ \`\`\`
106
+
107
+ ### Shotgun Surgery
108
+ \`\`\`
109
+ ❌ PROIBIDO: Mudança em 1 feature exige alterar 10+ arquivos
110
+ ✅ CORRETO: Agrupar código relacionado no mesmo módulo
111
+
112
+ Se uma mudança toca > 5 arquivos:
113
+ 1. PARAR
114
+ 2. Reavaliar se o código está no lugar certo
115
+ 3. Considerar refatoração preventiva
116
+ \`\`\`
117
+
118
+ ---
119
+
120
+ ## 🏛️ Princípios Arquiteturais
121
+
122
+ ### DDD (Domain-Driven Design) — Quando Aplicável
123
+ \`\`\`
124
+ Entities: Objetos com identidade (ID único)
125
+ Value Objects: Objetos sem identidade (imutáveis)
126
+ Aggregates: Cluster de entidades com root
127
+ Repositories: Acesso a dados de Aggregates
128
+ Services: Lógica que não pertence a nenhuma entidade
129
+ \`\`\`
130
+
131
+ ### Clean Architecture
132
+ \`\`\`
133
+ Camada mais interna: Entities (regras de negócio)
134
+ Camada média: Use Cases / Services (lógica de aplicação)
135
+ Camada externa: Controllers, Gateways, Presenters (I/O)
136
+
137
+ Dependência: SEMPRE de fora para dentro, NUNCA o contrário.
138
+ \`\`\`
139
+
140
+ ### Event-Driven — Quando Aplicável
141
+ \`\`\`
142
+ Usar eventos quando:
143
+ - Desacoplamento entre módulos é necessário
144
+ - Processamento assíncrono é aceitável
145
+ - Múltiplos handlers para um mesmo trigger
146
+
147
+ NÃO usar eventos quando:
148
+ - Resposta síncrona é necessária
149
+ - Transação atômica é obrigatória
150
+ - Ordem de execução importa
151
+ \`\`\`
152
+
153
+ ---
154
+
155
+ ## 📊 Anti-Patterns Atuais do Projeto
156
+
157
+ ${report.antiPatterns.length > 0
158
+ ? report.antiPatterns.map(a =>
159
+ `- **${a.name}** (${a.severity}) em \`${a.location}\` — ${a.suggestion}`
160
+ ).join('\n')
161
+ : '✅ Nenhum anti-pattern detectado. Manter assim.'}
162
+
163
+ Score atual: **${report.score.overall}/100** | Meta: **${Math.min(100, report.score.overall + 10)}/100**
164
+
165
+ ---
166
+
167
+ ## ✅ Checklist de Arquitetura
168
+
169
+ Antes de criar qualquer módulo novo:
170
+
171
+ \`\`\`
172
+ □ Camada correta? (Controller vs Service vs Repository vs Entity)
173
+ □ Direção de dependência respeitada? (nunca de baixo para cima)
174
+ □ Módulo coeso? (tudo relacionado junto)
175
+ □ Sem circular dependency?
176
+ □ Sem God Class? (< 500 linhas, < 10 métodos)
177
+ □ Interface/abstração antes de implementação?
178
+ □ DTOs para comunicação entre camadas?
179
+ □ Testes por camada? (unit para service, integration para controller)
180
+ \`\`\`
181
+
182
+ ---
183
+
184
+ **Gerado por Architect v8.1 · Score: ${report.score.overall}/100**
185
+ `;
186
+ }
187
+
188
+ function buildLayerRules(ctx: TemplateContext): string {
189
+ const { stack } = ctx;
190
+
191
+ if (stack.frameworks.includes('NestJS')) {
192
+ return `| Camada | Responsabilidade | Padrão NestJS |
193
+ |--------|-----------------|---------------|
194
+ | **API** (Controllers) | Routing, validação de request, response shaping | \`*.controller.ts\` + \`@Controller()\` |
195
+ | **Service** | Lógica de negócio, orquestração | \`*.service.ts\` + \`@Injectable()\` |
196
+ | **Data** (Repository) | Acesso a dados, queries | \`*.repository.ts\` ou TypeORM Repository |
197
+ | **Entity** | Modelo de domínio | \`*.entity.ts\` + \`@Entity()\` |
198
+ | **DTO** | Contratos de request/response | \`*.dto.ts\` + class-validator |
199
+ | **Guard** | Autenticação/Autorização | \`*.guard.ts\` + \`@UseGuards()\` |
200
+ | **Pipe** | Validação/transformação | \`*.pipe.ts\` + \`@UsePipes()\` |`;
201
+ }
202
+
203
+ if (stack.frameworks.includes('Django') || stack.frameworks.includes('Flask') || stack.frameworks.includes('FastAPI')) {
204
+ return `| Camada | Responsabilidade | Padrão Python |
205
+ |--------|-----------------|---------------|
206
+ | **API** (Views/Routes) | Routing, serialização | views.py / routes.py |
207
+ | **Service** | Lógica de negócio | services.py |
208
+ | **Data** (Repository/ORM) | Acesso a dados | models.py + managers |
209
+ | **Schema** | Validação I/O | serializers.py / schemas.py |
210
+ | **Tasks** | Processamento assíncrono | tasks.py (Celery) |`;
211
+ }
212
+
213
+ if (stack.frameworks.includes('Angular')) {
214
+ return `| Camada | Responsabilidade | Padrão Angular |
215
+ |--------|-----------------|----------------|
216
+ | **Component** | UI rendering, user events | \`*.component.ts\` |
217
+ | **Service** | Lógica, API calls, state | \`*.service.ts\` + \`@Injectable()\` |
218
+ | **Model** | Interfaces/types | \`*.model.ts\` / \`*.interface.ts\` |
219
+ | **Guard** | Route protection | \`*.guard.ts\` + \`canActivate\` |
220
+ | **Interceptor** | HTTP middleware | \`*.interceptor.ts\` |
221
+ | **Pipe** | Data transformation | \`*.pipe.ts\` |`;
222
+ }
223
+
224
+ // Generic
225
+ return `| Camada | Responsabilidade | Padrão |
226
+ |--------|-----------------|--------|
227
+ | **API / Controllers** | Routing, validação HTTP | controllers/ |
228
+ | **Service** | Lógica de negócio | services/ |
229
+ | **Data / Repository** | Acesso a dados | repositories/ |
230
+ | **Entity / Model** | Modelo de domínio | entities/ ou models/ |
231
+ | **DTO / Schema** | Contratos I/O | dto/ ou schemas/ |`;
232
+ }
233
+
234
+ function buildModulePattern(ctx: TemplateContext): string {
235
+ const { stack } = ctx;
236
+ const ext = stack.primary === 'Python' ? 'py' : stack.primary === 'Dart' ? 'dart' : 'ts';
237
+
238
+ if (stack.frameworks.includes('NestJS')) {
239
+ return `\`\`\`
240
+ src/modules/[nome-do-modulo]/
241
+ ├── [nome].module.ts → NestJS Module (imports, providers, exports)
242
+ ├── [nome].controller.ts → HTTP endpoints
243
+ ├── [nome].controller.spec.ts → Testes do controller
244
+ ├── [nome].service.ts → Lógica de negócio
245
+ ├── [nome].service.spec.ts → Testes do service
246
+ ├── dto/
247
+ │ ├── create-[nome].dto.ts → Request de criação
248
+ │ ├── update-[nome].dto.ts → Request de atualização
249
+ │ └── [nome]-response.dto.ts → Response shape
250
+ ├── entities/
251
+ │ └── [nome].entity.ts → TypeORM entity
252
+ ├── guards/ → Guards específicos (se houver)
253
+ └── interfaces/ → Interfaces/types do módulo
254
+ \`\`\``;
255
+ }
256
+
257
+ if (stack.frameworks.includes('Angular')) {
258
+ return `\`\`\`
259
+ src/app/modules/[nome-do-modulo]/
260
+ ├── [nome].module.ts → Angular Module
261
+ ├── [nome]-routing.module.ts → Routes
262
+ ├── components/
263
+ │ ├── [nome]-list/
264
+ │ │ ├── [nome]-list.component.ts
265
+ │ │ ├── [nome]-list.component.html
266
+ │ │ ├── [nome]-list.component.scss
267
+ │ │ └── [nome]-list.component.spec.ts
268
+ │ └── [nome]-form/
269
+ │ └── ...
270
+ ├── services/
271
+ │ ├── [nome].service.ts
272
+ │ └── [nome].service.spec.ts
273
+ ├── models/
274
+ │ └── [nome].model.ts
275
+ └── guards/
276
+ \`\`\``;
277
+ }
278
+
279
+ return `\`\`\`
280
+ src/modules/[nome-do-modulo]/
281
+ ├── [nome].module.${ext}
282
+ ├── [nome].controller.${ext} → Endpoints / API
283
+ ├── [nome].service.${ext} → Lógica de negócio
284
+ ├── dto/ → Request/Response shapes
285
+ ├── entities/ → Modelos de domínio
286
+ └── __tests__/ → Testes do módulo
287
+ \`\`\``;
288
+ }
@@ -0,0 +1,306 @@
1
+ import { TemplateContext } from '@girardelli/architect-agents/src/core/agent-generator/types/template.js';
2
+ import { getEnriched } from '../template-helpers.js';
3
+
4
+ /**
5
+ * Generates enterprise-grade 00-general.md rules.
6
+ * Golden rules, git flow, project identity, naming conventions,
7
+ * diagnostic requirements, forbidden actions, compliance checklist.
8
+ */
9
+ export function generateGeneralRules(ctx: TemplateContext): string {
10
+ const { stack, projectName, stackLabel, config, report } = ctx;
11
+ const enriched = getEnriched(ctx);
12
+ const namingConventions = buildNamingConventions(ctx);
13
+
14
+ // Stack-aware forbidden type actions
15
+ const langs = stack.languages.map((l) => l.toLowerCase());
16
+ let typeProhibitions = `❌ any (TypeScript) sem justificativa em comentário
17
+ ❌ @ts-ignore / type: ignore sem justificativa`;
18
+
19
+ if (langs.includes('python')) {
20
+ typeProhibitions = `❌ type: ignore sem justificativa em comentário
21
+ ❌ # noqa sem justificativa
22
+ ❌ Any (typing) sem justificativa em comentário`;
23
+ } else if (langs.includes('dart')) {
24
+ typeProhibitions = `❌ dynamic sem justificativa em comentário
25
+ ❌ // ignore: sem justificativa
26
+ ❌ as dynamic sem type-check`;
27
+ } else if (langs.includes('java') || langs.includes('kotlin')) {
28
+ typeProhibitions = `❌ @SuppressWarnings sem justificativa em comentário
29
+ ❌ Object onde tipo específico é possível
30
+ ❌ Raw types sem justificativa`;
31
+ } else if (langs.includes('go')) {
32
+ typeProhibitions = `❌ interface{}/any sem justificativa em comentário
33
+ ❌ //nolint sem justificativa
34
+ ❌ _ (blank identifier) para erros sem tratamento`;
35
+ } else if (langs.includes('rust')) {
36
+ typeProhibitions = `❌ unwrap() em código de produção sem justificativa
37
+ ❌ #[allow(...)] sem justificativa em comentário
38
+ ❌ unsafe sem revisão e justificativa`;
39
+ }
40
+
41
+ return `---
42
+ antigravity:
43
+ trigger: 'always_on'
44
+ globs: ['**/*']
45
+ description: 'Regras gerais invioláveis para ${projectName}'
46
+ priority: CRITICAL
47
+ ---
48
+
49
+ # 📜 Regras Gerais — ${projectName}
50
+
51
+ > **Estas regras são INVIOLÁVEIS. Não há exceção.**
52
+
53
+ ---
54
+
55
+ ## 🏆 Regras de Ouro
56
+
57
+ \`\`\`
58
+ ╔══════════════════════════════════════════════════════════════╗
59
+ ║ 9 REGRAS DE OURO ║
60
+ ║ ║
61
+ ${config.goldenRules.map((r, i) => `║ ${i + 1}. ${r.padEnd(55)}║`).join('\n')}
62
+ ║ ║
63
+ ║ ⚠️ Violar qualquer regra = PARAR e RECOMEÇAR ║
64
+ ╚══════════════════════════════════════════════════════════════╝
65
+ \`\`\`
66
+
67
+ ---
68
+
69
+ ## 🏢 Identidade do Projeto
70
+
71
+ | Item | Valor |
72
+ |------|-------|
73
+ | **Nome** | ${projectName} |
74
+ | **Stack** | ${stackLabel} |
75
+ | **Score** | ${report.score.overall}/100 |
76
+ | **Linguagens** | ${stack.languages.join(', ')} |
77
+ | **Frameworks** | ${enriched.detectedFrameworks?.filter((f: any) => f.category === 'web' || f.category === 'orm').map((f: any) => `${f.name}${f.version ? ` v${f.version}` : ''}`).join(', ') || stack.frameworks.join(', ') || 'Nenhum detectado'} |
78
+ | **Cobertura Mínima** | ${config.coverageMinimum}% |
79
+ | **Score Mínimo** | ${config.scoreThreshold}/100 |
80
+
81
+ ---
82
+
83
+ ## 🔄 Fluxo Completo (Qualquer Ação)
84
+
85
+ \`\`\`
86
+ REQUISIÇÃO
87
+
88
+
89
+ LEITURA OBRIGATÓRIA (INDEX.md → 00-general → PREFLIGHT)
90
+
91
+
92
+ DIAGNÓSTICO (entender ANTES de agir)
93
+
94
+
95
+ ARTEFATOS (mockup → user story → arch → tasks → BDD → TDD)
96
+
97
+
98
+ APROVAÇÃO HUMANA (/approved)
99
+
100
+
101
+ IMPLEMENTAÇÃO (Backend → Integration Doc → Frontend/App)
102
+
103
+
104
+ QUALITY GATES (build + test + coverage + score)
105
+
106
+
107
+ CODE REVIEW
108
+
109
+
110
+ MERGE (via PR, nunca direto)
111
+ \`\`\`
112
+
113
+ ---
114
+
115
+ ## 🌿 Git Flow
116
+
117
+ ### Branch Naming
118
+
119
+ | Tipo | Padrão | Exemplo |
120
+ |------|--------|---------|
121
+ | Feature | \`feature/[ticket]-[descricao]\` | \`feature/PROJ-123-cancelled-tab\` |
122
+ | Bug fix | \`fix/[ticket]-[descricao]\` | \`fix/PROJ-456-null-balance\` |
123
+ | Hotfix | \`hotfix/[descricao]\` | \`hotfix/payment-crash\` |
124
+ | Refactor | \`refactor/[descricao]\` | \`refactor/extract-auth-service\` |
125
+
126
+ ### Commit Messages (Conventional Commits)
127
+
128
+ \`\`\`
129
+ feat: add cancelled refuelings tab
130
+ fix: prevent null balance on payment
131
+ refactor: extract auth service from user module
132
+ docs: update API documentation for v2
133
+ test: add integration tests for payment flow
134
+ chore: upgrade dependencies
135
+ \`\`\`
136
+
137
+ ### Cenários de Git Flow
138
+
139
+ **Cenário A: Feature nova**
140
+ \`\`\`
141
+ git checkout develop
142
+ git pull origin develop
143
+ git checkout -b feature/PROJ-XXX-nome
144
+ # ... implementar ...
145
+ git add [arquivos específicos]
146
+ git commit -m "feat: [descrição]"
147
+ git push -u origin feature/PROJ-XXX-nome
148
+ # Criar PR para develop
149
+ \`\`\`
150
+
151
+ **Cenário B: Bug fix**
152
+ \`\`\`
153
+ git checkout develop
154
+ git pull origin develop
155
+ git checkout -b fix/PROJ-XXX-descricao
156
+ # ... corrigir ...
157
+ git add [arquivos específicos]
158
+ git commit -m "fix: [descrição]"
159
+ git push -u origin fix/PROJ-XXX-descricao
160
+ # Criar PR para develop
161
+ \`\`\`
162
+
163
+ **Cenário C: Hotfix em produção**
164
+ \`\`\`
165
+ git checkout main
166
+ git pull origin main
167
+ git checkout -b hotfix/descricao
168
+ # ... corrigir ...
169
+ git add [arquivos específicos]
170
+ git commit -m "fix: [descrição] (hotfix)"
171
+ git push -u origin hotfix/descricao
172
+ # Criar PR para main E develop
173
+ \`\`\`
174
+
175
+ ---
176
+
177
+ ## 📝 Naming Conventions
178
+
179
+ ${namingConventions}
180
+
181
+ ---
182
+
183
+ ## 🔍 Diagnóstico Obrigatório
184
+
185
+ > **Antes de QUALQUER implementação, execute este diagnóstico.**
186
+
187
+ \`\`\`bash
188
+ # 1. Entender a estrutura
189
+ ls -la src/
190
+ find src/ -name "*.${stack.primary === 'Python' ? 'py' : stack.primary === 'Dart' ? 'dart' : 'ts'}" | head -30
191
+
192
+ # 2. Entender as dependências do módulo
193
+ grep -rn "import" --include="*.${stack.primary === 'Python' ? 'py' : 'ts'}" src/[modulo]/ | head -20
194
+
195
+ # 3. Testes existentes
196
+ find . -name "*.test.*" -o -name "*.spec.*" -o -name "*_test.*" | wc -l
197
+
198
+ # 4. Score atual
199
+ npx @girardelli/architect score .
200
+
201
+ # 5. Anti-patterns
202
+ npx @girardelli/architect anti-patterns .
203
+ \`\`\`
204
+
205
+ ---
206
+
207
+ ## ❌ Ações PROIBIDAS
208
+
209
+ \`\`\`
210
+ ❌ Commitar direto em main ou develop
211
+ ❌ Push --force sem aprovação explícita
212
+ ❌ Merge sem code review
213
+ ❌ Código sem testes
214
+ ❌ Ignorar falhas de build/test
215
+ ❌ Hardcodar secrets, tokens, senhas
216
+ ❌ console.log / print() em produção
217
+ ${typeProhibitions}
218
+ ❌ Testes com .skip() permanente
219
+ ❌ Copiar/colar código (extrair abstração)
220
+ ❌ Alterar mais de 10 arquivos sem reavaliar escopo
221
+ ❌ Implementar sem artefatos aprovados (mockup, US, BDD, TDD)
222
+ ❌ Decidir arquitetura sem consultar o humano
223
+ ❌ Refatorar código alheio ao escopo da task
224
+ \`\`\`
225
+
226
+ ---
227
+
228
+ ## ✅ Checklist de Compliance (Regras de Ouro)
229
+
230
+ Antes de marcar QUALQUER tarefa como "done":
231
+
232
+ \`\`\`
233
+ □ Regra 1: Git Flow completo (branch + PR + review)?
234
+ □ Regra 2: Arquitetura documentada (C4 se nova feature)?
235
+ □ Regra 3: BDD escrito antes do código?
236
+ □ Regra 4: TDD aplicado (RED → GREEN → REFACTOR)?
237
+ □ Regra 5: Diagnóstico feito antes de codar?
238
+ □ Regra 6: Mockup aprovado (se tem UI)?
239
+ □ Regra 7: Decisões validadas com humano?
240
+ □ Regra 8: Qualidade > Velocidade (sem atalhos)?
241
+ □ Regra 9: Apenas código (sem abrir browser, sem screenshots)?
242
+ \`\`\`
243
+
244
+ ---
245
+
246
+ **Gerado por Architect v8.1 · Score: ${report.score.overall}/100 · ${new Date().toISOString().split('T')[0]}**
247
+ `;
248
+ }
249
+
250
+ function buildNamingConventions(ctx: TemplateContext): string {
251
+ const { stack } = ctx;
252
+ const lang = stack.primary;
253
+
254
+ if (lang === 'Python') {
255
+ return `| Item | Padrão | Exemplo |
256
+ |------|--------|---------|
257
+ | Classes | PascalCase | \`UserService\` |
258
+ | Funções | snake_case | \`get_active_users\` |
259
+ | Variáveis | snake_case | \`user_count\` |
260
+ | Constantes | UPPER_SNAKE | \`MAX_RETRIES\` |
261
+ | Arquivos | snake_case | \`user_service.py\` |
262
+ | Módulos | snake_case | \`auth_module/\` |
263
+ | Testes | snake_case + \_test | \`user_service_test.py\` |`;
264
+ }
265
+
266
+ if (lang === 'Dart') {
267
+ return `| Item | Padrão | Exemplo |
268
+ |------|--------|---------|
269
+ | Classes | PascalCase | \`UserService\` |
270
+ | Funções | camelCase | \`getActiveUsers\` |
271
+ | Variáveis | camelCase | \`userCount\` |
272
+ | Constantes | camelCase (com const) | \`const maxRetries = 3\` |
273
+ | Arquivos | snake_case | \`user_service.dart\` |
274
+ | Widgets | PascalCase | \`UserProfileCard\` |
275
+ | Testes | snake_case + \_test | \`user_service_test.dart\` |`;
276
+ }
277
+
278
+ if (lang === 'Go') {
279
+ return `| Item | Padrão | Exemplo |
280
+ |------|--------|---------|
281
+ | Types/Structs | PascalCase (exported) | \`UserService\` |
282
+ | Functions (public) | PascalCase | \`GetActiveUsers\` |
283
+ | Functions (private) | camelCase | \`parseInput\` |
284
+ | Variables | camelCase | \`userCount\` |
285
+ | Constants | PascalCase | \`MaxRetries\` |
286
+ | Files | snake_case | \`user_service.go\` |
287
+ | Tests | snake_case + \_test | \`user_service_test.go\` |`;
288
+ }
289
+
290
+ // Default: TypeScript/JavaScript
291
+ return `| Item | Padrão | Exemplo |
292
+ |------|--------|---------|
293
+ | Classes | PascalCase | \`UserService\` |
294
+ | Interfaces | PascalCase (sem I prefix) | \`UserPayload\` |
295
+ | Funções | camelCase | \`getActiveUsers\` |
296
+ | Variáveis | camelCase | \`userCount\` |
297
+ | Constantes | UPPER_SNAKE | \`MAX_RETRIES\` |
298
+ | Enums | PascalCase | \`UserStatus\` |
299
+ | Arquivos | kebab-case | \`user-service.ts\` |
300
+ | Módulos (diretório) | kebab-case | \`user-management/\` |
301
+ | Testes | kebab-case + .spec/.test | \`user-service.spec.ts\` |
302
+ | Entities | PascalCase + .entity | \`User.entity.ts\` |
303
+ | DTOs | PascalCase + .dto | \`CreateUserDto\` |
304
+ | Controllers | PascalCase + .controller | \`user.controller.ts\` |
305
+ | Services | PascalCase + .service | \`user.service.ts\` |`;
306
+ }