@maestro-ai/cli 1.2.0 → 1.3.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 (44) hide show
  1. package/content/guides/fases-mapeamento.md +31 -32
  2. package/content/guides/guide-brainstorm.md +38 -0
  3. package/content/guides/guide-orquestracao.md +45 -0
  4. package/content/guides/guide-testes.md +51 -0
  5. package/content/guides/guide-troubleshooting.md +43 -0
  6. package/content/guides/guide-validacao.md +50 -0
  7. package/content/guides/internal/automated-events.md +27 -0
  8. package/content/guides/internal/automated-map.md +56 -0
  9. package/content/guides/internal/automated-stitch.md +51 -0
  10. package/content/guides/internal/automated-system.md +46 -0
  11. package/content/guides/mapa-sistema.md +86 -0
  12. package/content/guides/workflows-avancados.md +62 -0
  13. package/content/rules/GEMINI.md +70 -762
  14. package/content/rules/RULES.md +71 -761
  15. package/content/rules/complexity-rules.md +43 -0
  16. package/content/rules/quality-gates.md +55 -43
  17. package/content/rules/security-rules.md +40 -0
  18. package/content/rules/structure-rules.md +63 -0
  19. package/content/rules/validation-rules.md +56 -97
  20. package/content/workflows/{maestro.md → 00-maestro.md} +7 -6
  21. package/content/workflows/01-iniciar-projeto.md +59 -0
  22. package/content/workflows/02-avancar-fase.md +72 -0
  23. package/content/workflows/04-implementar-historia.md +64 -0
  24. package/content/workflows/05-nova-feature.md +39 -0
  25. package/content/workflows/06-corrigir-bug.md +34 -0
  26. package/content/workflows/07-refatorar-codigo.md +34 -0
  27. package/dist/commands/init.js +17 -16
  28. package/package.json +1 -1
  29. package/content/workflows/avancar-fase.md +0 -84
  30. package/content/workflows/brainstorm.md +0 -127
  31. package/content/workflows/corrigir-bug.md +0 -530
  32. package/content/workflows/create-app.md +0 -59
  33. package/content/workflows/iniciar-projeto.md +0 -59
  34. package/content/workflows/melhorar-feature.md +0 -63
  35. package/content/workflows/nova-feature.md +0 -438
  36. package/content/workflows/orchestrate.md +0 -237
  37. package/content/workflows/plan.md +0 -89
  38. package/content/workflows/refatorar-codigo.md +0 -623
  39. package/content/workflows/status-projeto.md +0 -54
  40. package/content/workflows/testar.md +0 -144
  41. package/content/workflows/ux-avancado.md +0 -296
  42. package/content/workflows/validar-gate.md +0 -413
  43. /package/content/workflows/{continuar-fase.md → 03-continuar-fase.md} +0 -0
  44. /package/content/workflows/{deploy.md → 08-deploy-projeto.md} +0 -0
@@ -1,530 +0,0 @@
1
- ---
2
- description: Correção de bugs com fluxo estruturado (Reprodução → Análise → Fix → Regressão)
3
- ---
4
-
5
- # /corrigir-bug - Correção de Bug Maestro
6
-
7
- $ARGUMENTS
8
-
9
- ---
10
-
11
- ## Integração com o Maestro
12
-
13
- 1. Execute `/maestro` antes para garantir que o estado está sincronizado e detectar bloqueios ativos.
14
- 2. Crie helpers mentais para ler e salvar estado:
15
- ```javascript
16
- const estado = lerJson('.maestro/estado.json');
17
- function salvarEstado(next) {
18
- escreverJson('.maestro/estado.json', next, { spaces: 2 });
19
- }
20
- ```
21
- 3. Sempre passe `estado_json` para qualquer tool MCP que for invocado e registre eventos no `estado.historico` (`acao: "bug_iniciado"`, `bug_id`, `severidade`).
22
- 4. Use `content/guides/fases-mapeamento.md` para carregar especialistas, prompts e templates de apoio (Debugging, DevOps, Testes, etc.).
23
-
24
- ---
25
-
26
- ## Objetivo
27
-
28
- Corrigir bugs de forma estruturada usando fluxo de 4 fases do MCP Maestro, com análise de causa raiz e testes de regressão.
29
-
30
- ---
31
-
32
- ## Quando Usar
33
-
34
- - Bug reportado em produção ou desenvolvimento
35
- - Comportamento inesperado que precisa investigação
36
- - Erro que requer análise sistemática
37
-
38
- **NÃO usar para:**
39
- - Nova funcionalidade → Use `/nova-feature`
40
- - Refatoração de código → Use `/refatorar-codigo`
41
-
42
- ---
43
-
44
- ## Fluxo de 4 Fases
45
-
46
- ```
47
- 1. Reprodução do Bug
48
-
49
- 2. Análise de Causa Raiz
50
-
51
- 3. Fix + Testes de Regressão
52
-
53
- 4. Deploy
54
- ```
55
-
56
- ---
57
-
58
- ## Execução
59
-
60
- ### Passo 1: Coleta de Informações
61
-
62
- **Perguntar ao usuário:**
63
-
64
- ```markdown
65
- 🐛 **Correção de Bug**
66
-
67
- 1. Descreva o bug:
68
- [Exemplo: Pedido duplicado ao clicar rapidamente no botão "Finalizar"]
69
-
70
- 2. Severidade do bug:
71
- - **critica**: Sistema inoperante, perda de dados
72
- - **alta**: Feature principal não funciona
73
- - **media**: Feature secundária afetada
74
- - **baixa**: Cosmético, sem impacto funcional
75
-
76
- Escolha: [critica/alta/media/baixa]
77
-
78
- 3. (Opcional) Como reproduzir:
79
- [Passos para reproduzir o bug]
80
-
81
- 4. (Opcional) Stack trace ou logs:
82
- [Cole aqui se disponível]
83
- ```
84
-
85
- ---
86
-
87
- ### Passo 2: Iniciar Fluxo de Debugging
88
-
89
- > [!IMPORTANT]
90
- > **Protocolo stateless:** carregar `.maestro/estado.json` do disco antes de qualquer chamada.
91
-
92
- ```typescript
93
- const estadoJson = lerArquivo('.maestro/estado.json');
94
-
95
- await mcp_maestro_corrigir_bug({
96
- descricao: "[descrição fornecida]",
97
- severidade: "[critica/alta/media/baixa]",
98
- ticket_id: "[opcional: JIRA-123]",
99
- estado_json: estadoJson,
100
- diretorio: process.cwd()
101
- });
102
-
103
- salvarEstado(registrarHistorico(estado, { acao: 'bug_iniciado', severidade }));
104
- ```
105
-
106
- **MCP cria contexto de bug e retorna:**
107
-
108
- ```json
109
- {
110
- "bug_id": "BUG-001",
111
- "fases": [
112
- "Reprodução",
113
- "Análise de Causa Raiz",
114
- "Fix + Regressão",
115
- "Deploy"
116
- ],
117
- "fase_atual": 1,
118
- "prioridade": "[baseada na severidade]"
119
- }
120
- ```
121
-
122
- ---
123
-
124
- ### Passo 3: Fase 1 - Reprodução do Bug
125
-
126
- **Apresentar:**
127
-
128
- ```markdown
129
- ✅ **Fluxo de Debugging Iniciado** (BUG-001)
130
- 🚨 **Severidade:** [critica/alta/media/baixa]
131
-
132
- ---
133
-
134
- 🎯 **Fase 1/4: Reprodução do Bug**
135
- 🤖 **Especialista:** Debugging e Troubleshooting
136
-
137
- ## Reprodução Sistemática
138
-
139
- Vamos reproduzir o bug de forma controlada:
140
-
141
- 1. **Ambiente**
142
- - Onde ocorre: [dev/staging/prod]
143
- - Versão: [commit/tag]
144
- - Browser/Device: [se aplicável]
145
-
146
- 2. **Passos para Reproduzir**
147
- 1. [Passo 1]
148
- 2. [Passo 2]
149
- 3. [Passo 3]
150
-
151
- 3. **Comportamento Esperado**
152
- - [O que deveria acontecer]
153
-
154
- 4. **Comportamento Atual**
155
- - [O que está acontecendo]
156
-
157
- 5. **Evidências**
158
- - Screenshots: [urls se disponível]
159
- - Logs: [trechos relevantes]
160
- - Network: [requests falhando]
161
-
162
- Conseguiu reproduzir o bug? (S/N)
163
- ```
164
-
165
- ---
166
-
167
- ### Passo 4: Fase 2 - Análise de Causa Raiz
168
-
169
- **Carregar especialista de Debugging:**
170
-
171
- ```typescript
172
- const especialista = await fetch('maestro://especialista/debugging-troubleshooting');
173
- ```
174
-
175
- **Apresentar:**
176
-
177
- ```markdown
178
- 🎯 **Fase 2/4: Análise de Causa Raiz**
179
-
180
- ## Investigação Sistemática
181
-
182
- ### Hipóteses Possíveis
183
-
184
- Baseado nos sintomas, lista de causas prováveis:
185
-
186
- 1. ❓ **[Hipótese 1 - Mais provável]**
187
- - Evidência: [log/código que apoia]
188
- - Como testar: [validação]
189
-
190
- 2. ❓ **[Hipótese 2]**
191
- - Evidência: [...]
192
- - Como testar: [...]
193
-
194
- 3. ❓ **[Hipótese 3 - Menos provável]**
195
- - Evidência: [...]
196
- - Como testar: [...]
197
-
198
- ### Análise de Código
199
-
200
- Arquivos suspeitos:
201
- - `[arquivo1.ts]` - [motivo]
202
- - `[arquivo2.ts]` - [motivo]
203
-
204
- Vamos investigar a hipótese 1. [Análise detalhada do código]
205
- ```
206
-
207
- **Processo de eliminação:**
208
-
209
- ```markdown
210
- **Testando Hipótese 1:** [descrição]
211
-
212
- [Análise do código/logs]
213
-
214
- **Resultado:** ✅ Confirmada / ❌ Descartada
215
-
216
- ---
217
-
218
- 🎯 **Causa Raiz Identificada:**
219
-
220
- [Explicação detalhada do problema]
221
-
222
- **Por que aconteceu:**
223
- - [Motivo 1]
224
- - [Motivo 2]
225
-
226
- **Onde está o bug:**
227
- - Arquivo: `[caminho/arquivo.ts]`
228
- - Linha: [numero]
229
- - Função: `[nomeFuncao]`
230
- ```
231
-
232
- ---
233
-
234
- ### Passo 5: Fase 3 - Fix + Testes de Regressão
235
-
236
- **Apresentar:**
237
-
238
- ```markdown
239
- 🎯 **Fase 3/4: Fix + Testes de Regressão**
240
-
241
- ## Correção Proposta
242
-
243
- ```[linguagem]
244
- // ❌ ANTES (com bug)
245
- [código com problema]
246
-
247
- // ✅ DEPOIS (corrigido)
248
- [código corrigido]
249
- ```
250
-
251
- **Explicação da correção:**
252
- [Por que isso resolve o problema]
253
-
254
- ---
255
-
256
- ## Testes de Regressão
257
-
258
- Para garantir que o fix funciona E não quebra nada:
259
-
260
- ### 1. Teste Unitário (Novo)
261
-
262
- ```[linguagem]
263
- describe('[NomeDaFuncao]', () => {
264
- it('should [comportamento esperado]', () => {
265
- // Arrange
266
- [setup]
267
-
268
- // Act
269
- [execução]
270
-
271
- // Assert
272
- [validação]
273
- });
274
-
275
- it('should not [regressão possível]', () => {
276
- // Testa efeito colateral
277
- });
278
- });
279
- ```
280
-
281
- ### 2. Teste de Integração
282
-
283
- [Cenário E2E que valida o fix]
284
-
285
- ### 3. Validação Manual
286
-
287
- Passos para testar manualmente:
288
- 1. [Passo 1]
289
- 2. [Passo 2]
290
- 3. ✅ [Resultado esperado]
291
-
292
- ---
293
-
294
- Implementar correção e rodar testes? (S/N)
295
- ```
296
-
297
- ---
298
-
299
- ### Passo 6: Fase 4 - Deploy
300
-
301
- **Coordenar com `/deploy`:**
302
-
303
- ```markdown
304
- 🎯 **Fase 4/4: Deploy**
305
-
306
- ## Estratégia de Deploy
307
-
308
- **Severidade: [critica/alta/media/baixa]**
309
-
310
- ### Se Crítica:
311
- - 🚨 Hotfix imediato
312
- - Deploy direto em prod após validação em staging
313
- - Rollback plan pronto
314
-
315
- ### Se Alta:
316
- - Deploy em staging → validação → prod
317
- - Comunicar stakeholders
318
-
319
- ### Se Média/Baixa:
320
- - Incluir no próximo release
321
- - Documentar no CHANGELOG
322
-
323
- ---
324
-
325
- **Checklist Pré-Deploy:**
326
- - [ ] Fix implementado
327
- - [ ] Testes unitários passando
328
- - [ ] Testes de regressão passando
329
- - [ ] Code review aprovado
330
- - [ ] Validado em staging
331
-
332
- Executar deploy? Use `/deploy [ambiente]`
333
- ```
334
-
335
- ---
336
-
337
- ## Exemplos de Uso
338
-
339
- ### Exemplo 1: Bug Crítico (Duplicação de Pedido)
340
-
341
- ```
342
- User: /corrigir-bug
343
-
344
- AI: Descreva o bug:
345
-
346
- User: Pedido duplicado ao clicar rapidamente no botão Finalizar
347
-
348
- AI: Severidade?
349
-
350
- User: critica
351
-
352
- AI: ✅ Fluxo iniciado (BUG-001) - Severidade CRÍTICA
353
-
354
- 🎯 Fase 1: Reprodução
355
-
356
- Vamos reproduzir de forma controlada:
357
- 1. Criar pedido
358
- 2. Clicar rapidamente 2x em "Finalizar"
359
- 3. Verificar banco de dados
360
-
361
- Reproduzido ✅
362
-
363
- [Avança para Fase 2]
364
-
365
- 🎯 Fase 2: Análise de Causa Raiz
366
-
367
- Hipóteses:
368
- 1. ❓ Falta de debounce no botão (MAIS PROVÁVEL)
369
- 2. ❓ Falta de idempotência no endpoint
370
- 3. ❓ Race condition no banco
371
-
372
- Analisando código de `CheckoutButton.tsx`...
373
-
374
- 🎯 Causa Raiz: Botão sem debounce + endpoint não idempotente
375
-
376
- [Avança para Fase 3]
377
-
378
- 🎯 Fase 3: Fix
379
-
380
- ```typescript
381
- // ❌ ANTES
382
- <button onClick={handleCheckout}>Finalizar</button>
383
-
384
- // ✅ DEPOIS
385
- <button
386
- onClick={debounce(handleCheckout, 300)}
387
- disabled={isProcessing}
388
- >
389
- Finalizar
390
- </button>
391
- ```
392
-
393
- + Adicionar idempotency key no backend
394
-
395
- Testes criados ✅
396
-
397
- [Avança para Fase 4]
398
-
399
- 🎯 Fase 4: Deploy
400
-
401
- Severidade CRÍTICA → Hotfix imediato
402
-
403
- Use: /deploy production --hotfix
404
- ```
405
-
406
- ### Exemplo 2: Bug de UI (Baixa Severidade)
407
-
408
- ```
409
- User: /corrigir-bug Botão de logout desalinhado no mobile
410
-
411
- AI: Severidade?
412
-
413
- User: baixa
414
-
415
- AI: ✅ Fluxo iniciado (BUG-002) - Severidade BAIXA
416
-
417
- Bug cosmético. Incluir no próximo release.
418
-
419
- Fase 1: Reprodução ✅
420
- Fase 2: CSS incorreto identificado
421
- Fase 3: Fix aplicado
422
- Fase 4: Agendar para próximo deploy
423
- ```
424
-
425
- ---
426
-
427
- ## Comandos Relacionados
428
-
429
- ```
430
- /mcp-debug [descrição] → Inicia fluxo de debugging
431
- /mcp-next → Avança entre fases
432
- /deploy --hotfix → Deploy emergencial (bugs críticos)
433
- ```
434
-
435
- ---
436
-
437
- ## Estrutura de Arquivos Gerados
438
-
439
- ```
440
- docs/
441
- ├── bugs/
442
- │ └── BUG-001-pedido-duplicado/
443
- │ ├── 01-reproducao.md
444
- │ ├── 02-causa-raiz.md
445
- │ ├── 03-fix-e-testes.md
446
- │ └── 04-deploy-log.md
447
- ```
448
-
449
- ---
450
-
451
- ## Regras Críticas (Root Cause Analysis)
452
-
453
- ### ✅ SEMPRE:
454
-
455
- 1. Reproduzir bug ANTES de tentar corrigir
456
- 2. Fazer análise de causa raiz (não apenas sintomas)
457
- 3. Adicionar testes que capturam o bug
458
- 4. Validar em staging antes de prod (exceto hotfixes)
459
- 5. Documentar causa raiz para aprendizado
460
-
461
- ### ❌ NUNCA:
462
-
463
- 1. "Corrigir" sem entender a causa
464
- 2. Deploy de fix crítico sem testes
465
- 3. Assumir causa raiz sem evidências
466
- 4. Esquecer de testar efeitos colaterais
467
- 5. Deixar bug sem teste de regressão
468
-
469
- ---
470
-
471
- ## Matriz de Severidade → Ação
472
-
473
- | Severidade | SLA | Deploy | Comunicação |
474
- |------------|-----|--------|-------------|
475
- | **Crítica** | 1h | Hotfix imediato | Stakeholders + usuários |
476
- | **Alta** | 4h | Próximo deploy | Stakeholders |
477
- | **Média** | 1-2 dias | Release agendado | Interno |
478
- | **Baixa** | 1 semana | Quando conveniente | Changelog |
479
-
480
- ---
481
-
482
- ## Protocolo de Hotfix (Bugs Críticos)
483
-
484
- ```
485
- 1. Criar branch: hotfix/BUG-001-pedido-duplicado
486
- 2. Fix + testes
487
- 3. Deploy staging → validar
488
- 4. Deploy prod
489
- 5. Merge back to main
490
- 6. Post-mortem (se necessário)
491
- ```
492
-
493
- ---
494
-
495
- ## Troubleshooting
496
-
497
- ### Não Consigo Reproduzir
498
-
499
- **Ação:**
500
-
501
- ```markdown
502
- Se não conseguiu reproduzir:
503
-
504
- 1. **Coletar mais informações**
505
- - Logs mais detalhados
506
- - Request/Response headers
507
- - Estado do banco no momento
508
-
509
- 2. **Testar em ambiente idêntico**
510
- - Mesma versão
511
- - Mesmos dados
512
- - Mesmo browser/device
513
-
514
- 3. **Race condition?**
515
- - Tentar com diferentes timings
516
- - Usar ferramentas de slow-motion (Network throttling)
517
- ```
518
-
519
- ### Múltiplas Causas Possíveis
520
-
521
- **Ação:**
522
-
523
- ```markdown
524
- Se várias hipóteses igualmente prováveis:
525
-
526
- 1. Testar todas sistematicamente
527
- 2. Usar método de bisseção (git bisect)
528
- 3. Adicionar logs temporários
529
- 4. Pair programming com colega
530
- ```
@@ -1,59 +0,0 @@
1
- ---
2
- description: Create new application command. Triggers App Builder skill and starts interactive dialogue with user.
3
- ---
4
-
5
- # /create - Create Application
6
-
7
- $ARGUMENTS
8
-
9
- ---
10
-
11
- ## Task
12
-
13
- This command starts a new application creation process.
14
-
15
- ### Steps:
16
-
17
- 1. **Request Analysis**
18
- - Understand what the user wants
19
- - If information is missing, use `conversation-manager` skill to ask
20
-
21
- 2. **Project Planning**
22
- - Use `project-planner` agent for task breakdown
23
- - Determine tech stack
24
- - Plan file structure
25
- - Create plan file and proceed to building
26
-
27
- 3. **Application Building (After Approval)**
28
- - Orchestrate with `app-builder` skill
29
- - Coordinate expert agents:
30
- - `database-architect` → Schema
31
- - `backend-specialist` → API
32
- - `frontend-specialist` → UI
33
-
34
- 4. **Preview**
35
- - Start with `auto_preview.py` when complete
36
- - Present URL to user
37
-
38
- ---
39
-
40
- ## Usage Examples
41
-
42
- ```
43
- /create blog site
44
- /create e-commerce app with product listing and cart
45
- /create todo app
46
- /create Instagram clone
47
- /create crm system with customer management
48
- ```
49
-
50
- ---
51
-
52
- ## Before Starting
53
-
54
- If request is unclear, ask these questions:
55
- - What type of application?
56
- - What are the basic features?
57
- - Who will use it?
58
-
59
- Use defaults, add details later.
@@ -1,59 +0,0 @@
1
- ---
2
- description: Inicia novo projeto Maestro com classificação automática e setup inteligente
3
- ---
4
-
5
- # 🚀 Workflow de Iniciação - /iniciar-projeto
6
-
7
- ## 1. Coleta de informações
8
-
9
- Pergunte ao usuário (ou utilize argumentos) para obter:
10
- - Nome do projeto
11
- - Descrição curta (problema, público, solução)
12
-
13
- ## 2. Classificação automática
14
-
15
- 1. Carregue o template em `templates/estado-template.json` e os fluxos definidos em `src/src/flows/types.ts` (funções `getFluxo`, `getFluxoComStitch`).
16
- 2. Use a função mental abaixo para sugerir configuração:
17
-
18
- ```javascript
19
- const analise = classificarProjeto({ nome, descricao });
20
- const fluxo = getFluxoComStitch(analise.complexidade, analise.usarStitch);
21
- /* Retorna:
22
- * - complexidade (simples/medio/complexo)
23
- * - tier (7/13/17 fases)
24
- * - especialistaInicial (fase 1 do fluxo escolhido)
25
- */
26
- ```
27
-
28
- Mostre a classificação e peça confirmação. Permita ajustes manuais caso o usuário solicite (ex.: "reclassificar para médio").
29
-
30
- ## 3. Geração do estado inicial
31
-
32
- - Copie o template de estado e popule as fases com base em `fluxo.fases`.
33
- - Garanta que cada fase traga `especialista`, `entregavel_esperado`, `scoreMinimo` e `gate_checklist` do fluxo MCP.
34
- - Registre em `historico` o evento `projeto_iniciado` com justificativa da classificação.
35
- - Defina helpers mentais para leitura/escrita:
36
- ```javascript
37
- const estado = preencherTemplate(...);
38
- function salvarEstado(state) {
39
- escreverJson('.maestro/estado.json', state, { spaces: 2 });
40
- }
41
- salvarEstado(estado);
42
- ```
43
-
44
- ## 4. Setup do contexto
45
-
46
- - Copiar templates necessários para `docs/<fase>/...`
47
- - Registrar especialista inicial (`Gestão de Produto` para fase 1)
48
- - Preparar prompts e skills relevantes
49
-
50
- ## 5. Mensagem de saída
51
-
52
- ```
53
- ✅ Projeto iniciado!
54
- - Fase 1/ {totalFases}: Produto
55
- - Especialista: Gestão de Produto
56
- - Entregável: docs/01-produto/PRD.md
57
-
58
- Próximo passo: responda às perguntas do especialista para preencher o PRD.
59
- ```
@@ -1,63 +0,0 @@
1
- ---
2
- description: Add or update features in existing application. Used for iterative development.
3
- ---
4
-
5
- # /enhance - Update Application
6
-
7
- $ARGUMENTS
8
-
9
- ---
10
-
11
- ## Task
12
-
13
- This command adds features or makes updates to existing application.
14
-
15
- ### Steps:
16
-
17
- 1. **Understand Current State**
18
- - Load project state with `python .agent/scripts/session_manager.py info`
19
- - Understand existing features, tech stack
20
-
21
- 2. **Plan Changes**
22
- - Determine what will be added/changed
23
- - Detect affected files
24
- - Check dependencies
25
-
26
- 3. **Present Plan to User** (for major changes)
27
- ```
28
- "To add admin panel:
29
- - I'll create 15 new files
30
- - Update 8 files
31
- - Takes ~10 minutes
32
-
33
- Should I start?"
34
- ```
35
-
36
- 4. **Apply**
37
- - Call relevant agents
38
- - Make changes
39
- - Test
40
-
41
- 5. **Update Preview**
42
- - Hot reload or restart
43
-
44
- ---
45
-
46
- ## Usage Examples
47
-
48
- ```
49
- /enhance add dark mode
50
- /enhance build admin panel
51
- /enhance integrate payment system
52
- /enhance add search feature
53
- /enhance edit profile page
54
- /enhance make responsive
55
- ```
56
-
57
- ---
58
-
59
- ## Caution
60
-
61
- - Get approval for major changes
62
- - Warn on conflicting requests (e.g., "use Firebase" when project uses PostgreSQL)
63
- - Commit each change with git