@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.
- package/dist/src/core/agent-generator/context-enricher.d.ts +17 -0
- package/dist/src/core/agent-generator/context-enricher.js +51 -0
- package/dist/src/core/agent-generator/context-enricher.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/base-detector.d.ts +8 -0
- package/dist/src/core/agent-generator/detectors/base-detector.js +12 -0
- package/dist/src/core/agent-generator/detectors/base-detector.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/dart-detector.d.ts +5 -0
- package/dist/src/core/agent-generator/detectors/dart-detector.js +16 -0
- package/dist/src/core/agent-generator/detectors/dart-detector.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/framework-registry.d.ts +5 -0
- package/dist/src/core/agent-generator/detectors/framework-registry.js +81 -0
- package/dist/src/core/agent-generator/detectors/framework-registry.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/go-detector.d.ts +5 -0
- package/dist/src/core/agent-generator/detectors/go-detector.js +25 -0
- package/dist/src/core/agent-generator/detectors/go-detector.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/java-detector.d.ts +5 -0
- package/dist/src/core/agent-generator/detectors/java-detector.js +44 -0
- package/dist/src/core/agent-generator/detectors/java-detector.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/node-detector.d.ts +5 -0
- package/dist/src/core/agent-generator/detectors/node-detector.js +28 -0
- package/dist/src/core/agent-generator/detectors/node-detector.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/php-detector.d.ts +5 -0
- package/dist/src/core/agent-generator/detectors/php-detector.js +28 -0
- package/dist/src/core/agent-generator/detectors/php-detector.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/python-detector.d.ts +7 -0
- package/dist/src/core/agent-generator/detectors/python-detector.js +116 -0
- package/dist/src/core/agent-generator/detectors/python-detector.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/ruby-detector.d.ts +5 -0
- package/dist/src/core/agent-generator/detectors/ruby-detector.js +23 -0
- package/dist/src/core/agent-generator/detectors/ruby-detector.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/rust-detector.d.ts +5 -0
- package/dist/src/core/agent-generator/detectors/rust-detector.js +18 -0
- package/dist/src/core/agent-generator/detectors/rust-detector.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/structure-detector.d.ts +4 -0
- package/dist/src/core/agent-generator/detectors/structure-detector.js +35 -0
- package/dist/src/core/agent-generator/detectors/structure-detector.js.map +1 -0
- package/dist/src/core/agent-generator/detectors/toolchain-detector.d.ts +5 -0
- package/dist/src/core/agent-generator/detectors/toolchain-detector.js +164 -0
- package/dist/src/core/agent-generator/detectors/toolchain-detector.js.map +1 -0
- package/dist/src/core/agent-generator/domain-inferrer.d.ts +51 -0
- package/dist/src/core/agent-generator/domain-inferrer.js +585 -0
- package/dist/src/core/agent-generator/domain-inferrer.js.map +1 -0
- package/dist/src/core/agent-generator/engines/audit-engine.d.ts +8 -0
- package/dist/src/core/agent-generator/engines/audit-engine.js +84 -0
- package/dist/src/core/agent-generator/engines/audit-engine.js.map +1 -0
- package/dist/src/core/agent-generator/engines/context-builder.d.ts +12 -0
- package/dist/src/core/agent-generator/engines/context-builder.js +84 -0
- package/dist/src/core/agent-generator/engines/context-builder.js.map +1 -0
- package/dist/src/core/agent-generator/engines/generation-engine.d.ts +7 -0
- package/dist/src/core/agent-generator/engines/generation-engine.js +160 -0
- package/dist/src/core/agent-generator/engines/generation-engine.js.map +1 -0
- package/dist/src/core/agent-generator/engines/generation-engine_deps.d.ts +21 -0
- package/dist/src/core/agent-generator/engines/generation-engine_deps.js +17 -0
- package/dist/src/core/agent-generator/engines/generation-engine_deps.js.map +1 -0
- package/dist/src/core/agent-generator/engines/suggestion-engine.d.ts +13 -0
- package/dist/src/core/agent-generator/engines/suggestion-engine.js +171 -0
- package/dist/src/core/agent-generator/engines/suggestion-engine.js.map +1 -0
- package/dist/src/core/agent-generator/engines/suggestion-engine_deps.d.ts +8 -0
- package/dist/src/core/agent-generator/engines/suggestion-engine_deps.js +5 -0
- package/dist/src/core/agent-generator/engines/suggestion-engine_deps.js.map +1 -0
- package/dist/src/core/agent-generator/enrichers/analysis-helpers.d.ts +9 -0
- package/dist/src/core/agent-generator/enrichers/analysis-helpers.js +51 -0
- package/dist/src/core/agent-generator/enrichers/analysis-helpers.js.map +1 -0
- package/dist/src/core/agent-generator/enrichers/description-generator.d.ts +4 -0
- package/dist/src/core/agent-generator/enrichers/description-generator.js +82 -0
- package/dist/src/core/agent-generator/enrichers/description-generator.js.map +1 -0
- package/dist/src/core/agent-generator/enrichers/endpoint-extractor.d.ts +7 -0
- package/dist/src/core/agent-generator/enrichers/endpoint-extractor.js +90 -0
- package/dist/src/core/agent-generator/enrichers/endpoint-extractor.js.map +1 -0
- package/dist/src/core/agent-generator/enrichers/layer-classifier.d.ts +12 -0
- package/dist/src/core/agent-generator/enrichers/layer-classifier.js +152 -0
- package/dist/src/core/agent-generator/enrichers/layer-classifier.js.map +1 -0
- package/dist/src/core/agent-generator/enrichers/module-extractor.d.ts +10 -0
- package/dist/src/core/agent-generator/enrichers/module-extractor.js +173 -0
- package/dist/src/core/agent-generator/enrichers/module-extractor.js.map +1 -0
- package/dist/src/core/agent-generator/framework-detector.d.ts +17 -0
- package/dist/src/core/agent-generator/framework-detector.js +56 -0
- package/dist/src/core/agent-generator/framework-detector.js.map +1 -0
- package/dist/src/core/agent-generator/index.d.ts +25 -0
- package/dist/src/core/agent-generator/index.js +37 -0
- package/dist/src/core/agent-generator/index.js.map +1 -0
- package/dist/src/core/agent-generator/stack-detector.d.ts +13 -0
- package/dist/src/core/agent-generator/stack-detector.js +124 -0
- package/dist/src/core/agent-generator/stack-detector.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/agents.d.ts +9 -0
- package/dist/src/core/agent-generator/templates/core/agents.js +1127 -0
- package/dist/src/core/agent-generator/templates/core/agents.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/architecture-rules.d.ts +6 -0
- package/dist/src/core/agent-generator/templates/core/architecture-rules.js +275 -0
- package/dist/src/core/agent-generator/templates/core/architecture-rules.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/general-rules.d.ts +7 -0
- package/dist/src/core/agent-generator/templates/core/general-rules.js +301 -0
- package/dist/src/core/agent-generator/templates/core/general-rules.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/hooks-generator.d.ts +20 -0
- package/dist/src/core/agent-generator/templates/core/hooks-generator.js +235 -0
- package/dist/src/core/agent-generator/templates/core/hooks-generator.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/index-md.d.ts +6 -0
- package/dist/src/core/agent-generator/templates/core/index-md.js +247 -0
- package/dist/src/core/agent-generator/templates/core/index-md.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/orchestrator.d.ts +7 -0
- package/dist/src/core/agent-generator/templates/core/orchestrator.js +423 -0
- package/dist/src/core/agent-generator/templates/core/orchestrator.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/preflight.d.ts +7 -0
- package/dist/src/core/agent-generator/templates/core/preflight.js +213 -0
- package/dist/src/core/agent-generator/templates/core/preflight.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/quality-gates.d.ts +10 -0
- package/dist/src/core/agent-generator/templates/core/quality-gates.js +255 -0
- package/dist/src/core/agent-generator/templates/core/quality-gates.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/security-rules.d.ts +6 -0
- package/dist/src/core/agent-generator/templates/core/security-rules.js +529 -0
- package/dist/src/core/agent-generator/templates/core/security-rules.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/skills-generator.d.ts +18 -0
- package/dist/src/core/agent-generator/templates/core/skills-generator.js +547 -0
- package/dist/src/core/agent-generator/templates/core/skills-generator.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/workflow-fix-bug.d.ts +6 -0
- package/dist/src/core/agent-generator/templates/core/workflow-fix-bug.js +238 -0
- package/dist/src/core/agent-generator/templates/core/workflow-fix-bug.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/workflow-new-feature.d.ts +7 -0
- package/dist/src/core/agent-generator/templates/core/workflow-new-feature.js +321 -0
- package/dist/src/core/agent-generator/templates/core/workflow-new-feature.js.map +1 -0
- package/dist/src/core/agent-generator/templates/core/workflow-review.d.ts +6 -0
- package/dist/src/core/agent-generator/templates/core/workflow-review.js +105 -0
- package/dist/src/core/agent-generator/templates/core/workflow-review.js.map +1 -0
- package/dist/src/core/agent-generator/templates/domain/index.d.ts +21 -0
- package/dist/src/core/agent-generator/templates/domain/index.js +1179 -0
- package/dist/src/core/agent-generator/templates/domain/index.js.map +1 -0
- package/dist/src/core/agent-generator/templates/helpers/base-helpers.d.ts +10 -0
- package/dist/src/core/agent-generator/templates/helpers/base-helpers.js +20 -0
- package/dist/src/core/agent-generator/templates/helpers/base-helpers.js.map +1 -0
- package/dist/src/core/agent-generator/templates/helpers/cross-ref-helpers.d.ts +2 -0
- package/dist/src/core/agent-generator/templates/helpers/cross-ref-helpers.js +77 -0
- package/dist/src/core/agent-generator/templates/helpers/cross-ref-helpers.js.map +1 -0
- package/dist/src/core/agent-generator/templates/helpers/security-helpers.d.ts +2 -0
- package/dist/src/core/agent-generator/templates/helpers/security-helpers.js +182 -0
- package/dist/src/core/agent-generator/templates/helpers/security-helpers.js.map +1 -0
- package/dist/src/core/agent-generator/templates/helpers/stack-helpers.d.ts +4 -0
- package/dist/src/core/agent-generator/templates/helpers/stack-helpers.js +69 -0
- package/dist/src/core/agent-generator/templates/helpers/stack-helpers.js.map +1 -0
- package/dist/src/core/agent-generator/templates/helpers/structure-helpers.d.ts +2 -0
- package/dist/src/core/agent-generator/templates/helpers/structure-helpers.js +275 -0
- package/dist/src/core/agent-generator/templates/helpers/structure-helpers.js.map +1 -0
- package/dist/src/core/agent-generator/templates/helpers/summary-helpers.d.ts +6 -0
- package/dist/src/core/agent-generator/templates/helpers/summary-helpers.js +56 -0
- package/dist/src/core/agent-generator/templates/helpers/summary-helpers.js.map +1 -0
- package/dist/src/core/agent-generator/templates/stack/index.d.ts +7 -0
- package/dist/src/core/agent-generator/templates/stack/index.js +695 -0
- package/dist/src/core/agent-generator/templates/stack/index.js.map +1 -0
- package/dist/src/core/agent-generator/templates/template-helpers.d.ts +11 -0
- package/dist/src/core/agent-generator/templates/template-helpers.js +12 -0
- package/dist/src/core/agent-generator/templates/template-helpers.js.map +1 -0
- package/dist/src/core/agent-generator/types/agent.d.ts +39 -0
- package/dist/src/core/agent-generator/types/agent.js +27 -0
- package/dist/src/core/agent-generator/types/agent.js.map +1 -0
- package/dist/src/core/agent-generator/types/domain.d.ts +58 -0
- package/dist/src/core/agent-generator/types/domain.js +2 -0
- package/dist/src/core/agent-generator/types/domain.js.map +1 -0
- package/dist/src/core/agent-generator/types/stack.d.ts +36 -0
- package/dist/src/core/agent-generator/types/stack.js +2 -0
- package/dist/src/core/agent-generator/types/stack.js.map +1 -0
- package/dist/src/core/agent-generator/types/template.d.ts +29 -0
- package/dist/src/core/agent-generator/types/template.js +2 -0
- package/dist/src/core/agent-generator/types/template.js.map +1 -0
- package/dist/src/core/agent-runtime/ai-provider.d.ts +33 -0
- package/dist/src/core/agent-runtime/ai-provider.js +146 -0
- package/dist/src/core/agent-runtime/ai-provider.js.map +1 -0
- package/dist/src/core/agent-runtime/executor.d.ts +13 -0
- package/dist/src/core/agent-runtime/executor.js +138 -0
- package/dist/src/core/agent-runtime/executor.js.map +1 -0
- package/dist/src/core/agent-runtime/human-gate.d.ts +16 -0
- package/dist/src/core/agent-runtime/human-gate.js +70 -0
- package/dist/src/core/agent-runtime/human-gate.js.map +1 -0
- package/dist/tests/agent-generator.test.d.ts +1 -0
- package/dist/tests/agent-generator.test.js +349 -0
- package/dist/tests/agent-generator.test.js.map +1 -0
- package/dist/tests/agent-runtime.test.d.ts +1 -0
- package/dist/tests/agent-runtime.test.js +107 -0
- package/dist/tests/agent-runtime.test.js.map +1 -0
- package/dist/tests/context-enricher.test.d.ts +1 -0
- package/dist/tests/context-enricher.test.js +875 -0
- package/dist/tests/context-enricher.test.js.map +1 -0
- package/dist/tests/framework-detector.test.d.ts +1 -0
- package/dist/tests/framework-detector.test.js +882 -0
- package/dist/tests/framework-detector.test.js.map +1 -0
- package/dist/tests/stack-detector.test.d.ts +1 -0
- package/dist/tests/stack-detector.test.js +183 -0
- package/dist/tests/stack-detector.test.js.map +1 -0
- package/dist/tests/template-generation.test.d.ts +1 -0
- package/dist/tests/template-generation.test.js +571 -0
- package/dist/tests/template-generation.test.js.map +1 -0
- package/dist/tests/template-helpers.test.d.ts +1 -0
- package/dist/tests/template-helpers.test.js +967 -0
- package/dist/tests/template-helpers.test.js.map +1 -0
- package/package.json +24 -0
- package/src/core/agent-generator/context-enricher.ts +67 -0
- package/src/core/agent-generator/detectors/base-detector.ts +18 -0
- package/src/core/agent-generator/detectors/dart-detector.ts +17 -0
- package/src/core/agent-generator/detectors/framework-registry.ts +82 -0
- package/src/core/agent-generator/detectors/go-detector.ts +26 -0
- package/src/core/agent-generator/detectors/java-detector.ts +46 -0
- package/src/core/agent-generator/detectors/node-detector.ts +28 -0
- package/src/core/agent-generator/detectors/php-detector.ts +28 -0
- package/src/core/agent-generator/detectors/python-detector.ts +125 -0
- package/src/core/agent-generator/detectors/ruby-detector.ts +24 -0
- package/src/core/agent-generator/detectors/rust-detector.ts +19 -0
- package/src/core/agent-generator/detectors/structure-detector.ts +38 -0
- package/src/core/agent-generator/detectors/toolchain-detector.ts +181 -0
- package/src/core/agent-generator/domain-inferrer.ts +630 -0
- package/src/core/agent-generator/engines/audit-engine.ts +98 -0
- package/src/core/agent-generator/engines/context-builder.ts +96 -0
- package/src/core/agent-generator/engines/generation-engine.ts +184 -0
- package/src/core/agent-generator/engines/generation-engine_deps.ts +21 -0
- package/src/core/agent-generator/engines/suggestion-engine.ts +202 -0
- package/src/core/agent-generator/engines/suggestion-engine_deps.ts +8 -0
- package/src/core/agent-generator/enrichers/analysis-helpers.ts +58 -0
- package/src/core/agent-generator/enrichers/description-generator.ts +91 -0
- package/src/core/agent-generator/enrichers/endpoint-extractor.ts +114 -0
- package/src/core/agent-generator/enrichers/layer-classifier.ts +156 -0
- package/src/core/agent-generator/enrichers/module-extractor.ts +203 -0
- package/src/core/agent-generator/framework-detector.ts +66 -0
- package/src/core/agent-generator/index.ts +55 -0
- package/src/core/agent-generator/stack-detector.ts +115 -0
- package/src/core/agent-generator/templates/core/agents.ts +1168 -0
- package/src/core/agent-generator/templates/core/architecture-rules.ts +288 -0
- package/src/core/agent-generator/templates/core/general-rules.ts +306 -0
- package/src/core/agent-generator/templates/core/hooks-generator.ts +244 -0
- package/src/core/agent-generator/templates/core/index-md.ts +261 -0
- package/src/core/agent-generator/templates/core/orchestrator.ts +462 -0
- package/src/core/agent-generator/templates/core/preflight.ts +216 -0
- package/src/core/agent-generator/templates/core/quality-gates.ts +257 -0
- package/src/core/agent-generator/templates/core/security-rules.ts +544 -0
- package/src/core/agent-generator/templates/core/skills-generator.ts +586 -0
- package/src/core/agent-generator/templates/core/workflow-fix-bug.ts +240 -0
- package/src/core/agent-generator/templates/core/workflow-new-feature.ts +323 -0
- package/src/core/agent-generator/templates/core/workflow-review.ts +107 -0
- package/src/core/agent-generator/templates/domain/index.ts +1204 -0
- package/src/core/agent-generator/templates/helpers/base-helpers.ts +33 -0
- package/src/core/agent-generator/templates/helpers/cross-ref-helpers.ts +79 -0
- package/src/core/agent-generator/templates/helpers/security-helpers.ts +198 -0
- package/src/core/agent-generator/templates/helpers/stack-helpers.ts +80 -0
- package/src/core/agent-generator/templates/helpers/structure-helpers.ts +293 -0
- package/src/core/agent-generator/templates/helpers/summary-helpers.ts +67 -0
- package/src/core/agent-generator/templates/stack/index.ts +705 -0
- package/src/core/agent-generator/templates/template-helpers.ts +12 -0
- package/src/core/agent-generator/types/agent.ts +65 -0
- package/src/core/agent-generator/types/domain.ts +63 -0
- package/src/core/agent-generator/types/stack.ts +38 -0
- package/src/core/agent-generator/types/template.ts +31 -0
- package/src/core/agent-runtime/ai-provider.ts +178 -0
- package/src/core/agent-runtime/executor.ts +148 -0
- package/src/core/agent-runtime/human-gate.ts +69 -0
- package/tests/agent-generator.test.ts +428 -0
- package/tests/agent-runtime.test.ts +125 -0
- package/tests/context-enricher.test.ts +972 -0
- package/tests/framework-detector.test.ts +1172 -0
- package/tests/stack-detector.test.ts +241 -0
- package/tests/template-generation.test.ts +709 -0
- package/tests/template-helpers.test.ts +1130 -0
- package/tsconfig.json +14 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { TemplateContext } from '@girardelli/architect-agents/src/core/agent-generator/types/template.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Generates enterprise-grade fix-bug.md workflow.
|
|
5
|
+
* 10 steps: diagnosis → localization → root cause → RED test → fix → regression → docs.
|
|
6
|
+
*/
|
|
7
|
+
export function generateFixBugWorkflow(ctx: TemplateContext): string {
|
|
8
|
+
// @ts-ignore - Audit cleanup unused variable
|
|
9
|
+
const { stack, projectName, config, report } = ctx;
|
|
10
|
+
|
|
11
|
+
return `---
|
|
12
|
+
antigravity:
|
|
13
|
+
trigger: 'on_demand'
|
|
14
|
+
description: 'Workflow completo para correção de bug em ${projectName}'
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# 🐛 Workflow: Fix Bug
|
|
18
|
+
|
|
19
|
+
> **Bugs não se corrigem por tentativa e erro.**
|
|
20
|
+
> Diagnóstico rigoroso → reprodução → root cause → teste RED → fix → regressão.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Pré-requisitos
|
|
25
|
+
|
|
26
|
+
\`\`\`
|
|
27
|
+
□ Li INDEX.md e PREFLIGHT.md
|
|
28
|
+
□ Li LESSONS-LEARNED.md (se existir) — talvez esse bug já aconteceu
|
|
29
|
+
□ Li ERROR-PATTERNS.md (se existir) — talvez é um padrão conhecido
|
|
30
|
+
□ Estou em uma branch fix/ ou hotfix/ (NUNCA main/develop)
|
|
31
|
+
□ Build e testes passando ANTES da minha alteração
|
|
32
|
+
\`\`\`
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Step 1: Diagnóstico Inicial
|
|
37
|
+
|
|
38
|
+
\`\`\`
|
|
39
|
+
Bug: [descrição clara do problema]
|
|
40
|
+
Reportado por: [quem reportou]
|
|
41
|
+
Ambiente: [produção / staging / dev]
|
|
42
|
+
Severidade: [CRITICAL / HIGH / MEDIUM / LOW]
|
|
43
|
+
|
|
44
|
+
Comportamento atual: [o que acontece]
|
|
45
|
+
Comportamento esperado: [o que deveria acontecer]
|
|
46
|
+
Como reproduzir:
|
|
47
|
+
1. [passo 1]
|
|
48
|
+
2. [passo 2]
|
|
49
|
+
3. [resultado errado]
|
|
50
|
+
\`\`\`
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Step 2: Leitura de Contexto
|
|
55
|
+
|
|
56
|
+
\`\`\`bash
|
|
57
|
+
# Verificar LESSONS-LEARNED para bugs similares
|
|
58
|
+
grep -i "[termo do bug]" LESSONS-LEARNED.md 2>/dev/null
|
|
59
|
+
|
|
60
|
+
# Verificar ERROR-PATTERNS
|
|
61
|
+
grep -i "[termo do bug]" ERROR-PATTERNS.md 2>/dev/null
|
|
62
|
+
|
|
63
|
+
# Verificar regras de negócio relevantes
|
|
64
|
+
grep -i "[domínio do bug]" BUSINESS-RULES.md 2>/dev/null
|
|
65
|
+
|
|
66
|
+
# Histórico de commits na área afetada
|
|
67
|
+
git log --oneline -20 -- [arquivo ou diretório afetado]
|
|
68
|
+
\`\`\`
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Step 3: Localização do Problema
|
|
73
|
+
|
|
74
|
+
\`\`\`bash
|
|
75
|
+
# Buscar no código
|
|
76
|
+
grep -rn "[termo do erro]" --include="*.${stack.primary === 'Python' ? 'py' : stack.primary === 'Dart' ? 'dart' : 'ts'}" src/
|
|
77
|
+
|
|
78
|
+
# Verificar logs (se disponível)
|
|
79
|
+
# Verificar stack trace
|
|
80
|
+
|
|
81
|
+
# Mapear o fluxo de dados:
|
|
82
|
+
# Input → [onde entra] → [como transforma] → [onde sai] → Output
|
|
83
|
+
\`\`\`
|
|
84
|
+
|
|
85
|
+
\`\`\`
|
|
86
|
+
Arquivo(s) suspeito(s): _______________
|
|
87
|
+
Função/método suspeito: _______________
|
|
88
|
+
Linha(s) suspeita(s): _______________
|
|
89
|
+
\`\`\`
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Step 4: Root Cause — Identificação da Causa Raiz
|
|
94
|
+
|
|
95
|
+
\`\`\`
|
|
96
|
+
╔══════════════════════════════════════════════╗
|
|
97
|
+
║ NUNCA corrigir o SINTOMA. ║
|
|
98
|
+
║ SEMPRE encontrar a CAUSA RAIZ. ║
|
|
99
|
+
║ ║
|
|
100
|
+
║ Técnica dos 5 Porquês: ║
|
|
101
|
+
║ 1. Por que o bug acontece? → porque... ║
|
|
102
|
+
║ 2. Por que isso? → porque... ║
|
|
103
|
+
║ 3. Por que isso? → porque... ║
|
|
104
|
+
║ 4. Por que isso? → porque... ║
|
|
105
|
+
║ 5. Por que isso? → CAUSA RAIZ ║
|
|
106
|
+
╚══════════════════════════════════════════════╝
|
|
107
|
+
\`\`\`
|
|
108
|
+
|
|
109
|
+
\`\`\`
|
|
110
|
+
Causa raiz: _______________
|
|
111
|
+
Confiança: [ ] Alta (reproduzi) [ ] Média (hipótese forte) [ ] Baixa (preciso investigar mais)
|
|
112
|
+
\`\`\`
|
|
113
|
+
|
|
114
|
+
> **Se confiança é Baixa → PARAR e investigar mais. Não chutar.**
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Step 5: Verificar Testes Existentes
|
|
119
|
+
|
|
120
|
+
\`\`\`bash
|
|
121
|
+
# Testes que cobrem a área afetada
|
|
122
|
+
grep -rn "[nome da função/classe]" --include="*.test.*" --include="*.spec.*" tests/ src/
|
|
123
|
+
|
|
124
|
+
# Rodar testes existentes
|
|
125
|
+
${stack.testFramework === 'pytest' ? 'pytest -v -k "[nome do módulo]"' : stack.testFramework === 'flutter_test' ? 'flutter test test/[modulo]_test.dart' : 'npx jest --testPathPattern="[modulo]"'}
|
|
126
|
+
\`\`\`
|
|
127
|
+
|
|
128
|
+
\`\`\`
|
|
129
|
+
□ Existem testes para a área afetada? [sim/não]
|
|
130
|
+
□ Os testes passam? [sim/não]
|
|
131
|
+
□ Os testes cobrem o cenário do bug? [sim/não — se não, criar no Step 6]
|
|
132
|
+
\`\`\`
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Step 6: Criar Teste RED
|
|
137
|
+
|
|
138
|
+
> **PRIMEIRO criar um teste que FALHA reproduzindo o bug.**
|
|
139
|
+
> Só depois corrigir o código.
|
|
140
|
+
|
|
141
|
+
\`\`\`
|
|
142
|
+
Teste: [nome descritivo do teste]
|
|
143
|
+
Input: [dados que reproduzem o bug]
|
|
144
|
+
Expected: [resultado correto]
|
|
145
|
+
Actual: [resultado errado — o teste deve FALHAR]
|
|
146
|
+
\`\`\`
|
|
147
|
+
|
|
148
|
+
\`\`\`bash
|
|
149
|
+
# Rodar e confirmar que FALHA (RED)
|
|
150
|
+
${stack.testFramework === 'pytest' ? 'pytest -v -k "[nome do teste]"' : 'npx jest --testNamePattern="[nome do teste]"'}
|
|
151
|
+
# DEVE FALHAR ❌
|
|
152
|
+
\`\`\`
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Step 7: Correção Mínima
|
|
157
|
+
|
|
158
|
+
\`\`\`
|
|
159
|
+
╔══════════════════════════════════════════════╗
|
|
160
|
+
║ REGRA: Correção MÍNIMA. ║
|
|
161
|
+
║ ║
|
|
162
|
+
║ ✓ Corrigir APENAS a causa raiz ║
|
|
163
|
+
║ ✓ Menor quantidade de linhas possível ║
|
|
164
|
+
║ ✗ NÃO refatorar código adjacente ║
|
|
165
|
+
║ ✗ NÃO "aproveitar" para melhorar outra coisa║
|
|
166
|
+
║ ✗ NÃO adicionar features junto com o fix ║
|
|
167
|
+
╚══════════════════════════════════════════════╝
|
|
168
|
+
\`\`\`
|
|
169
|
+
|
|
170
|
+
Após corrigir:
|
|
171
|
+
\`\`\`bash
|
|
172
|
+
# Rodar o teste do Step 6 — agora deve PASSAR (GREEN)
|
|
173
|
+
${stack.testFramework === 'pytest' ? 'pytest -v -k "[nome do teste]"' : 'npx jest --testNamePattern="[nome do teste]"'}
|
|
174
|
+
# DEVE PASSAR ✅
|
|
175
|
+
\`\`\`
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Step 8: Teste de Regressão
|
|
180
|
+
|
|
181
|
+
\`\`\`bash
|
|
182
|
+
# Rodar TODOS os testes (não só o novo)
|
|
183
|
+
${stack.testFramework === 'pytest' ? 'pytest' : stack.testFramework === 'flutter_test' ? 'flutter test' : 'npm run test'}
|
|
184
|
+
|
|
185
|
+
# Build completo
|
|
186
|
+
${stack.packageManager === 'npm' ? 'npm run build' : 'make build'}
|
|
187
|
+
|
|
188
|
+
# Score
|
|
189
|
+
npx @girardelli/architect score .
|
|
190
|
+
\`\`\`
|
|
191
|
+
|
|
192
|
+
\`\`\`
|
|
193
|
+
□ Teste do bug passa (GREEN) ✓
|
|
194
|
+
□ TODOS os outros testes passam ✓
|
|
195
|
+
□ Build compila ✓
|
|
196
|
+
□ Score não regrediu ✓
|
|
197
|
+
\`\`\`
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Step 9: Verificação de Fluxos Existentes
|
|
202
|
+
|
|
203
|
+
\`\`\`
|
|
204
|
+
□ Verifiquei que features dependentes não foram afetadas
|
|
205
|
+
□ Verifiquei edge cases relacionados
|
|
206
|
+
□ Se o bug era em API → verifiquei clientes da API
|
|
207
|
+
□ Se o bug era em banco → verifiquei migrations e seeds
|
|
208
|
+
\`\`\`
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Step 10: Documentação
|
|
213
|
+
|
|
214
|
+
\`\`\`
|
|
215
|
+
□ Atualizar LESSONS-LEARNED.md:
|
|
216
|
+
- O que aconteceu
|
|
217
|
+
- Causa raiz
|
|
218
|
+
- Como foi corrigido
|
|
219
|
+
- Como prevenir no futuro
|
|
220
|
+
|
|
221
|
+
□ Atualizar ERROR-PATTERNS.md (se é um padrão novo):
|
|
222
|
+
- Padrão do erro
|
|
223
|
+
- Sintomas
|
|
224
|
+
- Solução
|
|
225
|
+
|
|
226
|
+
□ Commit com mensagem semântica:
|
|
227
|
+
fix: [descrição clara do que foi corrigido]
|
|
228
|
+
|
|
229
|
+
□ PR criado com:
|
|
230
|
+
- Descrição do bug
|
|
231
|
+
- Causa raiz
|
|
232
|
+
- Solução aplicada
|
|
233
|
+
- Testes adicionados
|
|
234
|
+
\`\`\`
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
**Gerado por Architect v8.1 · Score: ${report.score.overall}/100 · ${new Date().toISOString().split('T')[0]}**
|
|
239
|
+
`;
|
|
240
|
+
}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import { TemplateContext } from '@girardelli/architect-agents/src/core/agent-generator/types/template.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Generates enterprise-grade new-feature.md workflow.
|
|
5
|
+
* 10 steps with approval gates, mockup-first, backend-first order,
|
|
6
|
+
* integration doc, coverage gate, user story/task templates.
|
|
7
|
+
*/
|
|
8
|
+
export function generateNewFeatureWorkflow(ctx: TemplateContext): string {
|
|
9
|
+
const { stack, projectName, config, report } = ctx;
|
|
10
|
+
|
|
11
|
+
return `---
|
|
12
|
+
antigravity:
|
|
13
|
+
trigger: 'on_demand'
|
|
14
|
+
description: 'Workflow completo para nova feature em ${projectName}'
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# 🚀 Workflow: Nova Feature
|
|
18
|
+
|
|
19
|
+
> **Este workflow é OBRIGATÓRIO para qualquer nova funcionalidade.**
|
|
20
|
+
> Cada step tem um gate de aprovação. Pular steps é violação do protocolo.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Pré-requisitos
|
|
25
|
+
|
|
26
|
+
\`\`\`
|
|
27
|
+
□ Li INDEX.md e entendi a estrutura do framework
|
|
28
|
+
□ Li 00-general.md (Regras de Ouro)
|
|
29
|
+
□ Li PREFLIGHT.md e completei TODAS as fases
|
|
30
|
+
□ Li QUALITY-GATES.md e sei quais métricas atender
|
|
31
|
+
□ Estou em uma branch feature/ (NUNCA main/develop)
|
|
32
|
+
\`\`\`
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## FASE 0: AÇÃO ZERO — Diagnóstico
|
|
37
|
+
|
|
38
|
+
> **ANTES de qualquer coisa, fazer diagnóstico do estado atual.**
|
|
39
|
+
|
|
40
|
+
\`\`\`bash
|
|
41
|
+
# Estado do projeto
|
|
42
|
+
git branch --show-current
|
|
43
|
+
git status
|
|
44
|
+
|
|
45
|
+
# Build e testes ANTES de começar
|
|
46
|
+
${stack.packageManager === 'npm' ? 'npm run build && npm run test' : stack.testFramework === 'pytest' ? 'python -m pytest' : stack.testFramework === 'flutter_test' ? 'flutter test' : 'make test'}
|
|
47
|
+
|
|
48
|
+
# Score atual
|
|
49
|
+
npx @girardelli/architect score .
|
|
50
|
+
|
|
51
|
+
# Ler lições aprendidas (se existir)
|
|
52
|
+
cat LESSONS-LEARNED.md 2>/dev/null || echo "Sem lessons learned"
|
|
53
|
+
|
|
54
|
+
# Regras de negócio (se existir)
|
|
55
|
+
cat BUSINESS-RULES.md 2>/dev/null || echo "Sem business rules"
|
|
56
|
+
\`\`\`
|
|
57
|
+
|
|
58
|
+
\`\`\`
|
|
59
|
+
□ Build passando ✓
|
|
60
|
+
□ Testes passando ✓
|
|
61
|
+
□ Score anotado: ___/100 (não pode regredir)
|
|
62
|
+
□ Lessons learned lidos
|
|
63
|
+
\`\`\`
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## FASE 1: Diagnóstico da Feature
|
|
68
|
+
|
|
69
|
+
\`\`\`
|
|
70
|
+
Quero implementar [NOME DA FEATURE].
|
|
71
|
+
|
|
72
|
+
Contexto:
|
|
73
|
+
- Quem usa: [usuário / admin / sistema externo / ...]
|
|
74
|
+
- Tem UI: [sim/não]
|
|
75
|
+
- Tem API: [sim/não]
|
|
76
|
+
- Tem banco: [sim/não]
|
|
77
|
+
- Repo: [${ctx.projectName} / monorepo path / ...]
|
|
78
|
+
|
|
79
|
+
Descrição:
|
|
80
|
+
[2-3 frases do ponto de vista do usuário]
|
|
81
|
+
|
|
82
|
+
Critérios de aceite:
|
|
83
|
+
- CA1: [critério mensurável]
|
|
84
|
+
- CA2: [critério mensurável]
|
|
85
|
+
- CA3: [critério mensurável]
|
|
86
|
+
\`\`\`
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Step 1: MOCKUP ${stack.hasFrontend || stack.hasMobile ? '(OBRIGATÓRIO)' : '(se tem UI)'}
|
|
91
|
+
|
|
92
|
+
> **Gate 1 — Primeiro artefato. Nada começa sem mockup aprovado (quando tem UI).**
|
|
93
|
+
|
|
94
|
+
\`\`\`
|
|
95
|
+
╔══════════════════════════════════════════════════════╗
|
|
96
|
+
║ O MOCKUP DEVE CONTER: ║
|
|
97
|
+
║ ║
|
|
98
|
+
║ ✓ TODAS as telas/páginas envolvidas ║
|
|
99
|
+
║ ✓ Estado: com dados (normal) ║
|
|
100
|
+
║ ✓ Estado: vazio (empty state) ║
|
|
101
|
+
║ ✓ Estado: carregando (loading) ║
|
|
102
|
+
║ ✓ Estado: erro (error state) ║
|
|
103
|
+
║ ✓ TODOS os modais / dialogs ║
|
|
104
|
+
║ ✓ Mensagens de sucesso ║
|
|
105
|
+
║ ✓ Mensagens de erro ║
|
|
106
|
+
║ ✓ Fluxo completo (passo a passo) ║
|
|
107
|
+
║ ✓ Padrão visual do sistema (cores, fontes, layout) ║
|
|
108
|
+
${stack.hasFrontend ? '║ ✓ Responsividade (desktop + mobile se web) ║\n' : ''}${stack.hasMobile ? '║ ✓ Padrão do app (navegação, header, bottom bar) ║\n' : ''}║ ║
|
|
109
|
+
║ Formato: HTML interativo ou imagens anotadas ║
|
|
110
|
+
╚══════════════════════════════════════════════════════╝
|
|
111
|
+
\`\`\`
|
|
112
|
+
|
|
113
|
+
**Apresentar ao humano → Aguardar \`/approved\`**
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Step 2: User Stories
|
|
118
|
+
|
|
119
|
+
> **Gate 2 — Histórias de usuário com critérios de aceite mensuráveis.**
|
|
120
|
+
|
|
121
|
+
Formato:
|
|
122
|
+
|
|
123
|
+
\`\`\`markdown
|
|
124
|
+
## US-001: [Título]
|
|
125
|
+
|
|
126
|
+
**Como** [ator],
|
|
127
|
+
**Quero** [ação],
|
|
128
|
+
**Para** [benefício].
|
|
129
|
+
|
|
130
|
+
### Critérios de Aceite
|
|
131
|
+
- CA1: [critério mensurável]
|
|
132
|
+
- CA2: [critério mensurável]
|
|
133
|
+
|
|
134
|
+
### Regras de Negócio
|
|
135
|
+
- RN1: [regra]
|
|
136
|
+
|
|
137
|
+
### Exceções
|
|
138
|
+
- E1: Se [condição], então [comportamento]
|
|
139
|
+
\`\`\`
|
|
140
|
+
|
|
141
|
+
**Apresentar ao humano → Aguardar \`/approved\`**
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Step 3: Arquitetura (C4)
|
|
146
|
+
|
|
147
|
+
> **Gate 3 — Visão técnica da implementação.**
|
|
148
|
+
|
|
149
|
+
Usar template [C4.md](../templates/C4.md):
|
|
150
|
+
|
|
151
|
+
\`\`\`
|
|
152
|
+
Nível 1 — Contexto: Quem são os atores e sistemas externos?
|
|
153
|
+
Nível 2 — Container: Quais serviços/apps são afetados?
|
|
154
|
+
Nível 3 — Componente: Quais módulos/classes são criados/modificados?
|
|
155
|
+
Nível 4 — Código: Interfaces, DTOs, entidades (se complexo)
|
|
156
|
+
\`\`\`
|
|
157
|
+
|
|
158
|
+
Se a decisão é significativa → criar ADR (template [ADR.md](../templates/ADR.md))
|
|
159
|
+
|
|
160
|
+
**Apresentar ao humano → Aguardar \`/approved\`**
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Step 4: Task Breakdown
|
|
165
|
+
|
|
166
|
+
> **Gate 4 — Lista de tarefas com estimativa.**
|
|
167
|
+
|
|
168
|
+
Formato:
|
|
169
|
+
|
|
170
|
+
\`\`\`markdown
|
|
171
|
+
## TASK-001: [Título]
|
|
172
|
+
- **US:** US-001
|
|
173
|
+
- **Camada:** Backend / Frontend / App / Database
|
|
174
|
+
- **Estimativa:** XS / S / M / L / XL
|
|
175
|
+
- **Agente:** [quem executa]
|
|
176
|
+
- **Deps:** [depende de TASK-XXX, se houver]
|
|
177
|
+
\`\`\`
|
|
178
|
+
|
|
179
|
+
Ordenar por dependência. Backend SEMPRE primeiro.
|
|
180
|
+
|
|
181
|
+
**Apresentar ao humano → Aguardar \`/approved\`**
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Step 5: BDD (Cenários)
|
|
186
|
+
|
|
187
|
+
> **Gate 5 — Cenários de comportamento para cada critério de aceite.**
|
|
188
|
+
|
|
189
|
+
Formato (Gherkin):
|
|
190
|
+
|
|
191
|
+
\`\`\`gherkin
|
|
192
|
+
Feature: [Nome da Feature]
|
|
193
|
+
|
|
194
|
+
Scenario: [cenário happy path]
|
|
195
|
+
Given [contexto]
|
|
196
|
+
When [ação do usuário]
|
|
197
|
+
Then [resultado esperado]
|
|
198
|
+
|
|
199
|
+
Scenario: [cenário de erro]
|
|
200
|
+
Given [contexto]
|
|
201
|
+
When [ação inválida]
|
|
202
|
+
Then [mensagem de erro esperada]
|
|
203
|
+
|
|
204
|
+
Scenario: [cenário edge case]
|
|
205
|
+
Given [contexto específico]
|
|
206
|
+
When [ação]
|
|
207
|
+
Then [comportamento esperado]
|
|
208
|
+
\`\`\`
|
|
209
|
+
|
|
210
|
+
**Apresentar ao humano → Aguardar \`/approved\`**
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Step 6: TDD (Casos de Teste)
|
|
215
|
+
|
|
216
|
+
> **Gate 6 — Casos de teste ANTES do código.**
|
|
217
|
+
|
|
218
|
+
\`\`\`
|
|
219
|
+
Para cada TASK:
|
|
220
|
+
1. Listar os testes que serão escritos
|
|
221
|
+
2. Descrever input → output esperado
|
|
222
|
+
3. Incluir testes de erro/exceção
|
|
223
|
+
4. Incluir testes de boundary
|
|
224
|
+
|
|
225
|
+
Meta: Cobertura ≥ ${config.coverageMinimum}% (INEGOCIÁVEL)
|
|
226
|
+
\`\`\`
|
|
227
|
+
|
|
228
|
+
**Apresentar ao humano → Aguardar \`/approved\`**
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Step 7: Implementação — Backend
|
|
233
|
+
|
|
234
|
+
> **SOMENTE após TODOS os 6 gates aprovados.**
|
|
235
|
+
|
|
236
|
+
\`\`\`
|
|
237
|
+
□ Criar/modificar entities e DTOs
|
|
238
|
+
□ Criar/modificar services (lógica de negócio)
|
|
239
|
+
□ Criar/modificar controllers (endpoints)
|
|
240
|
+
□ Criar migrations (se houver alteração de banco)
|
|
241
|
+
□ Escrever testes (RED → GREEN → REFACTOR)
|
|
242
|
+
□ Rodar: build ✓ + tests ✓ + coverage ≥ ${config.coverageMinimum}% ✓
|
|
243
|
+
\`\`\`
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Step 8: Documento de Integração
|
|
248
|
+
|
|
249
|
+
> **OBRIGATÓRIO se tem frontend/app. Gerado APÓS backend completo.**
|
|
250
|
+
|
|
251
|
+
\`\`\`markdown
|
|
252
|
+
# Documento de Integração: [Feature]
|
|
253
|
+
|
|
254
|
+
## Endpoints
|
|
255
|
+
|
|
256
|
+
### [METHOD] /api/v1/[recurso]
|
|
257
|
+
|
|
258
|
+
**Request:**
|
|
259
|
+
\\\`\\\`\\\`json
|
|
260
|
+
{
|
|
261
|
+
"campo": "tipo — descrição"
|
|
262
|
+
}
|
|
263
|
+
\\\`\\\`\\\`
|
|
264
|
+
|
|
265
|
+
**Response (200):**
|
|
266
|
+
\\\`\\\`\\\`json
|
|
267
|
+
{
|
|
268
|
+
"campo": "tipo — descrição"
|
|
269
|
+
}
|
|
270
|
+
\\\`\\\`\\\`
|
|
271
|
+
|
|
272
|
+
**Erros:**
|
|
273
|
+
| Código | Mensagem | Quando |
|
|
274
|
+
|--------|----------|--------|
|
|
275
|
+
| 400 | Validation error | Input inválido |
|
|
276
|
+
| 404 | Not found | Recurso inexistente |
|
|
277
|
+
|
|
278
|
+
## Regras
|
|
279
|
+
- [regra 1]
|
|
280
|
+
- [regra 2]
|
|
281
|
+
\`\`\`
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Step 9: Implementação — Frontend / App
|
|
286
|
+
|
|
287
|
+
> **Baseado no Documento de Integração.**
|
|
288
|
+
|
|
289
|
+
\`\`\`
|
|
290
|
+
□ Criar/modificar componentes (seguir mockup)
|
|
291
|
+
□ Implementar state management
|
|
292
|
+
□ Integrar com endpoints (conforme doc de integração)
|
|
293
|
+
□ Implementar TODOS os estados (loading, error, empty, data)
|
|
294
|
+
□ Escrever testes (unitários + e2e se aplicável)
|
|
295
|
+
□ Rodar: build ✓ + tests ✓ + coverage ≥ ${config.coverageMinimum}% ✓
|
|
296
|
+
\`\`\`
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Step 10: Verificação Final
|
|
301
|
+
|
|
302
|
+
\`\`\`
|
|
303
|
+
╔════════════════════════════════════════════════╗
|
|
304
|
+
║ CHECKLIST FINAL — TODOS devem ser ✓ ║
|
|
305
|
+
║ ║
|
|
306
|
+
║ □ Build compila sem erros ║
|
|
307
|
+
║ □ TODOS os testes passam ║
|
|
308
|
+
║ □ Cobertura ≥ ${String(config.coverageMinimum).padEnd(3)}% ║
|
|
309
|
+
║ □ Score ≥ ${String(config.scoreThreshold).padEnd(3)}/100 (sem regressão) ║
|
|
310
|
+
║ □ Lint sem errors ║
|
|
311
|
+
║ □ Zero anti-patterns CRITICAL novos ║
|
|
312
|
+
║ □ Todos os critérios de aceite cobertos ║
|
|
313
|
+
║ □ Documentação atualizada ║
|
|
314
|
+
║ □ LESSONS-LEARNED atualizado (se aplicável) ║
|
|
315
|
+
║ □ PR criado com descrição completa ║
|
|
316
|
+
╚════════════════════════════════════════════════╝
|
|
317
|
+
\`\`\`
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
**Gerado por Architect v8.1 · Score: ${report.score.overall}/100 · ${new Date().toISOString().split('T')[0]}**
|
|
322
|
+
`;
|
|
323
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { TemplateContext } from '@girardelli/architect-agents/src/core/agent-generator/types/template.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Generates enterprise-grade review.md workflow.
|
|
5
|
+
* Structured code review with checklist per dimension.
|
|
6
|
+
*/
|
|
7
|
+
export function generateReviewWorkflow(ctx: TemplateContext): string {
|
|
8
|
+
// @ts-ignore - Audit cleanup unused variable
|
|
9
|
+
const { stack, projectName, config, report } = ctx;
|
|
10
|
+
|
|
11
|
+
return `---
|
|
12
|
+
antigravity:
|
|
13
|
+
trigger: 'on_demand'
|
|
14
|
+
description: 'Workflow de code review estruturado para ${projectName}'
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# 🔍 Workflow: Code Review
|
|
18
|
+
|
|
19
|
+
> **Code review não é "LGTM".**
|
|
20
|
+
> É uma verificação sistemática em 6 dimensões.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Dimensão 1: Correção Funcional
|
|
25
|
+
|
|
26
|
+
\`\`\`
|
|
27
|
+
□ O código faz o que a US/task pede?
|
|
28
|
+
□ Todos os critérios de aceite estão cobertos?
|
|
29
|
+
□ Edge cases foram tratados?
|
|
30
|
+
□ Erros são tratados adequadamente?
|
|
31
|
+
□ Regras de negócio estão corretas?
|
|
32
|
+
\`\`\`
|
|
33
|
+
|
|
34
|
+
## Dimensão 2: Qualidade de Código
|
|
35
|
+
|
|
36
|
+
\`\`\`
|
|
37
|
+
□ Código legível sem comentários explicativos?
|
|
38
|
+
□ Naming é descritivo e consistente?
|
|
39
|
+
□ Sem duplicação (DRY)?
|
|
40
|
+
□ Funções/métodos com responsabilidade única?
|
|
41
|
+
□ Sem magic numbers (extrair para constantes)?
|
|
42
|
+
□ Tipos corretos (sem \`any\` / \`type: ignore\` injustificado)?
|
|
43
|
+
□ Sem código morto / comentado?
|
|
44
|
+
\`\`\`
|
|
45
|
+
|
|
46
|
+
## Dimensão 3: Testes
|
|
47
|
+
|
|
48
|
+
\`\`\`
|
|
49
|
+
□ Testes existem para o novo código?
|
|
50
|
+
□ Cobertura ≥ ${config.coverageMinimum}%?
|
|
51
|
+
□ Testes são significativos (não apenas \`expect(true).toBe(true)\`)?
|
|
52
|
+
□ Happy path coberto?
|
|
53
|
+
□ Error path coberto?
|
|
54
|
+
□ Edge cases cobertos?
|
|
55
|
+
□ Nenhum teste com .skip() injustificado?
|
|
56
|
+
\`\`\`
|
|
57
|
+
|
|
58
|
+
## Dimensão 4: Segurança
|
|
59
|
+
|
|
60
|
+
\`\`\`
|
|
61
|
+
□ Sem secrets hardcoded?
|
|
62
|
+
□ Input validado e sanitizado?
|
|
63
|
+
□ SQL injection prevenido (parameterized queries)?
|
|
64
|
+
□ XSS prevenido (output encoding)?
|
|
65
|
+
□ Autenticação/autorização verificada?
|
|
66
|
+
□ Dados sensíveis não logados?
|
|
67
|
+
□ Rate limiting em endpoints novos?
|
|
68
|
+
\`\`\`
|
|
69
|
+
|
|
70
|
+
## Dimensão 5: Performance
|
|
71
|
+
|
|
72
|
+
\`\`\`
|
|
73
|
+
□ Sem N+1 queries?
|
|
74
|
+
□ Queries com índice adequado?
|
|
75
|
+
□ Sem loops desnecessários sobre coleções grandes?
|
|
76
|
+
□ Lazy loading onde aplicável?
|
|
77
|
+
□ Sem memory leaks óbvios (subscriptions, listeners)?
|
|
78
|
+
□ Caching considerado onde faz sentido?
|
|
79
|
+
\`\`\`
|
|
80
|
+
|
|
81
|
+
## Dimensão 6: Arquitetura
|
|
82
|
+
|
|
83
|
+
\`\`\`
|
|
84
|
+
□ Segue os padrões do projeto (rules/)?
|
|
85
|
+
□ Camada correta (controller ≠ service ≠ entity)?
|
|
86
|
+
□ Sem violações de layer (data layer acessando UI)?
|
|
87
|
+
□ Score não regrediu: architect score ≥ ${config.scoreThreshold}/100
|
|
88
|
+
□ Sem novos anti-patterns CRITICAL?
|
|
89
|
+
□ Imports organizados, sem circulares?
|
|
90
|
+
\`\`\`
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Resultado do Review
|
|
95
|
+
|
|
96
|
+
| Resultado | Ação |
|
|
97
|
+
|-----------|------|
|
|
98
|
+
| ✅ Aprovado | Merge permitido |
|
|
99
|
+
| ⚠️ Aprovado com observações | Merge permitido, fix no próximo PR |
|
|
100
|
+
| ❌ Mudanças necessárias | Bloquear merge até resolver |
|
|
101
|
+
| 🔴 Bloqueado | Issue de segurança ou regressão — resolver imediatamente |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
**Gerado por Architect v8.1 · Score: ${report.score.overall}/100 · ${new Date().toISOString().split('T')[0]}**
|
|
106
|
+
`;
|
|
107
|
+
}
|