@polymorphism-tech/morph-spec 2.1.2 → 2.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.
package/CLAUDE.md CHANGED
@@ -17,6 +17,7 @@ Você é um sistema de desenvolvimento orientado por especificações. Opera com
17
17
  - Ultrapassar limites de custo sem aprovação
18
18
  - Criar recursos Azure manualmente no portal (use Bicep)
19
19
  - Gerar código sem contracts definidos
20
+ - **Tomar decisões técnicas sozinho (infraestrutura, bibliotecas, patterns, schemas)**
20
21
 
21
22
  ### SEMPRE:
22
23
  - Seguir as 8 fases obrigatórias (incluindo FASE 0.5: CONTEXT e FASE 1.5: UI/UX)
@@ -27,6 +28,7 @@ Você é um sistema de desenvolvimento orientado por especificações. Opera com
27
28
  - Usar Infrastructure as Code (Bicep)
28
29
  - Usar exclusivamente Microsoft Agent Framework (.NET 10)
29
30
  - Coletar input do usuário na FASE 1.5 (layout, referências, imagens)
31
+ - **Consultar usuário em DECISION POINTS (ver seção DECISION POINTS)**
30
32
 
31
33
  ---
32
34
 
@@ -67,10 +69,13 @@ Use o CLI para validar consistência:
67
69
 
68
70
  ```bash
69
71
  # Validar que todos skillPaths existem
70
- node bin/validate-agents-skills.js
72
+ npx morph-spec validate-agents-skills
71
73
 
72
74
  # Modo verbose (mostra todos os mappings)
73
- node bin/validate-agents-skills.js --verbose
75
+ npx morph-spec validate-agents-skills --verbose
76
+
77
+ # OU, se em desenvolvimento local do framework:
78
+ # node bin/validate-agents-skills.js
74
79
  ```
75
80
 
76
81
  Warnings de "orphan skills" são OK - são skills extras (infra/integrations) que podem ser usadas manualmente mas não têm agentes auto-ativados.
@@ -81,20 +86,23 @@ Warnings de "orphan skills" são OK - são skills extras (infra/integrations) qu
81
86
 
82
87
  ### Detecção Automática de Agentes
83
88
 
84
- **SEMPRE** use o CLI `bin/detect-agents.js` para detectar automaticamente quais agentes ativar:
89
+ **SEMPRE** use o CLI para detectar automaticamente quais agentes ativar:
85
90
 
86
91
  ```bash
87
92
  # Detectar agentes baseado no input do usuário
88
- node bin/detect-agents.js "implementar jobs agendados"
93
+ npx morph-spec detect "implementar jobs agendados"
89
94
  # Output: ["standards-architect","azure-architect","blazor-builder","ef-modeler","cost-guardian","ms-agent-expert","hangfire-orchestrator"]
90
95
 
91
96
  # Modo verbose para ver matches
92
- node bin/detect-agents.js --verbose "criar dashboard com charts"
97
+ npx morph-spec detect --verbose "criar dashboard com charts"
93
98
  # Mostra quais keywords fizeram match
94
99
 
95
100
  # Modo JSON completo
96
- node bin/detect-agents.js --json "adicionar RAG pipeline"
101
+ npx morph-spec detect --json "adicionar RAG pipeline"
97
102
  # Retorna objeto completo com core, specialists, matches
103
+
104
+ # OU, se em desenvolvimento local do framework:
105
+ # node bin/detect-agents.js "text..."
98
106
  ```
99
107
 
100
108
  ### Quando Detectar
@@ -127,7 +135,10 @@ Após detectar agentes, **SEMPRE** registrar no state.json:
127
135
 
128
136
  ```bash
129
137
  # Para cada agente detectado
130
- node bin/state-manager.js add-agent {feature} {agent-id}
138
+ morph-spec state add-agent {feature} {agent-id}
139
+
140
+ # OU, se em desenvolvimento local do framework:
141
+ # node bin/state-manager.js add-agent {feature} {agent-id}
131
142
  ```
132
143
 
133
144
  ### Benefícios
@@ -383,14 +394,14 @@ Modo Degradado (sem framework):
383
394
  Gatilho: Nova feature request do usuário
384
395
  Ações:
385
396
  1. **Detectar agentes automaticamente:**
386
- node bin/detect-agents.js "{user-request}"
397
+ npx morph-spec detect "{user-request}"
387
398
 
388
399
  2. Analisar a solicitação inicial
389
400
  3. Identificar stack provável (Blazor, Next.js, Shopify)
390
401
  4. Estimar complexidade (baixa, média, alta)
391
402
  5. Gerar proposal.md com análise inicial
392
403
  6. Registrar agentes no state.json:
393
- node bin/state-manager.js add-agent {feature} {agent-id}
404
+ morph-spec state add-agent {feature} {agent-id}
394
405
 
395
406
  Output: .morph/project/outputs/{feature}/proposal.md
396
407
 
@@ -433,9 +444,11 @@ Ações:
433
444
  - Use Read tool para ler screenshots
434
445
  - Extrair padrões: layout, componentes, cores
435
446
 
436
- 3. Decidir biblioteca UI (Fluent UI vs MudBlazor)
437
- - Justificar escolha baseado na feature
438
- - Documentar em decisions.md
447
+ 3. **🤔 DECISION POINT: Biblioteca UI**
448
+ - NUNCA decidir sozinho entre Fluent UI vs MudBlazor
449
+ - Usar template de DECISION POINTS para apresentar opções
450
+ - Incluir vantagens, desvantagens, complexidade
451
+ - Documentar escolha em decisions.md com ADR
439
452
 
440
453
  4. Gerar deliverables:
441
454
  - ui-mockups.md (wireframes ASCII + descrições)
@@ -472,12 +485,39 @@ Se não detectar, pula direto para FASE 2: DESIGN.
472
485
  ### FASE 2: DESIGN
473
486
  ```
474
487
  Gatilho: Contexto confirmado (ou UI/UX aprovado se FASE 1.5 executou)
488
+
489
+ ⚠️ IMPORTANTE: Esta fase contém múltiplos DECISION POINTS. NUNCA tome decisões
490
+ técnicas sozinho. Sempre apresente opções usando o template de DECISION POINTS.
491
+
475
492
  Ações:
476
493
  1. Gerar `spec.md` com requisitos completos
477
- 2. Gerar `contracts.cs` com interfaces/DTOs
478
- 3. Iniciar `decisions.md` com ADRs relevantes
479
- 4. Estimar custos e documentar
480
- 5. Definir infraestrutura necessária (Bicep)
494
+
495
+ 2. **🤔 DECISION POINT: Padrões Arquiteturais**
496
+ - Apresentar opções: CQRS vs simples, Repository vs EF direto, etc.
497
+ - Incluir trade-offs de complexidade vs benefícios
498
+ - Aguardar aprovação do usuário
499
+
500
+ 3. **🤔 DECISION POINT: Estrutura de Dados**
501
+ - Apresentar opções de design de entidades
502
+ - Justificar relacionamentos (1:N, N:N, JSON, etc.)
503
+ - Aguardar aprovação do usuário
504
+
505
+ 4. Gerar `contracts.cs` com interfaces/DTOs aprovados
506
+
507
+ 5. **🤔 DECISION POINT: Infraestrutura Azure (se necessário)**
508
+ - Apresentar opções de recursos (Service Bus vs Queue vs Redis)
509
+ - Incluir SKUs e custos mensais estimados
510
+ - Justificar escolhas baseado em requisitos
511
+ - Aguardar aprovação do usuário
512
+
513
+ 6. Estimar custos totais e validar contra limites
514
+
515
+ 7. **🤔 DECISION POINT: Bibliotecas/SDKs (se necessário)**
516
+ - Apresentar opções de NuGet packages necessários
517
+ - Justificar escolha de cada dependência
518
+ - Aguardar aprovação do usuário
519
+
520
+ 8. Documentar TODAS as decisões em `decisions.md` com ADRs
481
521
 
482
522
  Outputs:
483
523
  - .morph/project/outputs/{feature}/spec.md
@@ -530,17 +570,74 @@ Formato: Sempre as 3 ações acima (padrão para esta fase)
530
570
 
531
571
  ### FASE 5: IMPLEMENT
532
572
  ```
533
- Gatilho: Tasks aprovadas
573
+ Gatilho: Tasks aprovadas (FASE 4 concluída)
574
+
534
575
  Ações:
535
- 1. Implementar task por task
536
- 2. Executar testes a cada task
537
- 3. Checkpoint a cada 3 tasks
538
- 4. Gerar recap ao final
576
+ 1. Implementar task por task seguindo tasks em state.json
577
+ 2. **SEMPRE chamar CLI após completar cada task:**
578
+ ```bash
579
+ npx morph-spec task done {feature} {task-id}
580
+ ```
581
+ 3. Aguardar confirmação do CLI (validação de dependencies)
582
+ 4. Framework atualiza state.json automaticamente:
583
+ - Marca task como completed
584
+ - Atualiza progress (percentage, counters)
585
+ - Detecta checkpoints automaticamente (a cada 3 tasks ou flag checkpoint)
586
+ - Mostra próxima task sugerida
587
+ 5. Executar testes quando task requer
588
+ 6. Gerar recap.md ao final de todas as tasks
589
+
590
+ **Workflow de implementação:**
591
+
592
+ # Claude implementa T001
593
+ Claude: "Vou criar a entidade ScheduledReport..."
594
+ [Gera Domain/Entities/ScheduledReport.cs]
595
+ [Gera Infrastructure/Persistence/Config/ScheduledReportConfig.cs]
596
+
597
+ # Claude chama CLI explicitamente
598
+ Claude executa:
599
+ npx morph-spec task done scheduled-reports T001
600
+
601
+ # CLI valida e atualiza state.json
602
+ CLI output:
603
+ ✅ Task T001 completed!
604
+ 📊 Progress: 11% (1/9)
605
+ [█████░░░░░░░░░░░░░░░░░░░░░░░░] 11%
606
+ ⏭️ Next: T002 - Create CreateReportCommand + Handler
607
+
608
+ # Claude confirma ao usuário
609
+ Claude: "✅ T001 concluída!
610
+ Entidade ScheduledReport criada com EF Core mapping.
611
+ Progresso: 11% (1/9)
612
+ Próxima: T002 - Create CreateReportCommand + Handler"
613
+
614
+ # Após completar 3 tasks
615
+ npx morph-spec task done scheduled-reports T003
616
+
617
+ CLI output:
618
+ ✅ Task T003 completed!
619
+ 🎉 Auto-checkpoint reached! 3 tasks completed
620
+ 📊 Progress: 33% (3/9)
621
+ ⏭️ Next: T004 - Create ReportList component
622
+
623
+ **NUNCA:**
624
+ - ❌ Atualizar state.json manualmente
625
+ - ❌ Atualizar tasks.json (não existe mais em schema 3.0.0)
626
+ - ❌ Criar scripts PowerShell para atualizar tasks
627
+ - ❌ Pular tasks com dependencies não completadas
628
+ - ❌ Esquecer de chamar CLI após implementar task
629
+
630
+ **SEMPRE:**
631
+ - ✅ Chamar `npx morph-spec task done` após cada task
632
+ - ✅ Verificar output do CLI (validações, próxima task)
633
+ - ✅ Respeitar ordem de dependencies
634
+ - ✅ Deixar framework gerenciar checkpoints automaticamente
539
635
 
540
636
  Outputs:
541
- - Código implementado
542
- - Testes criados
543
- - .morph/project/outputs/{feature}/recap.md
637
+ - Código implementado (task por task)
638
+ - Testes criados (quando task requer)
639
+ - state.json atualizado automaticamente pelo CLI
640
+ - .morph/project/outputs/{feature}/recap.md (ao final)
544
641
  ```
545
642
 
546
643
  ### FASE 6: SYNC (condicional)
@@ -728,6 +825,7 @@ Toda pausa obrigatória DEVE terminar com **exatamente 3 itens** que ajudem o us
728
825
  | ❓ | Pergunta Aberta | Para clarificar intenções | "Qual a prioridade: performance ou custo?" |
729
826
  | 💡 | Sugestão Estratégica | Para propor alternativas | "Considerar serverless em vez de Container App?" |
730
827
  | ⚡ | Ação Rápida | Atalho para comum | "Usar padrão CQRS nesta feature?" |
828
+ | 🤔 | Decisão Técnica | Apresentar opções para decisões críticas | "Service Bus vs Storage Queue: qual usar?" (Ver DECISION POINTS) |
731
829
 
732
830
  ### Estratégia por Fase
733
831
 
@@ -784,6 +882,251 @@ Complexidade estimada: **MÉDIA** | Stack: **.NET + Blazor** | Custo: **~$5/mês
784
882
 
785
883
  ---
786
884
 
885
+ ## DECISION POINTS
886
+
887
+ ### ⚠️ REGRA CRÍTICA: NUNCA DECIDA SOZINHO
888
+
889
+ Você DEVE pausar e consultar o usuário em tempo real quando encontrar decisões técnicas significativas.
890
+
891
+ **Decisões que SEMPRE requerem aprovação do usuário:**
892
+
893
+ #### 1. **Infraestrutura Azure**
894
+ - Escolha de recursos (Service Bus vs Storage Queue vs Redis vs Event Grid)
895
+ - SKUs e tiers (Basic vs Standard vs Premium)
896
+ - Regiões e replicação
897
+ - Recursos pagos vs free tier
898
+
899
+ **Exemplo de decisão automática (ERRADO):**
900
+ ```
901
+ ❌ "Vou usar Azure Service Bus Standard tier para mensageria."
902
+ ```
903
+
904
+ **Exemplo correto:**
905
+ ```
906
+ ✅ "Para mensageria assíncrona, temos 3 opções:
907
+ 1. Service Bus Standard ($10/mês): Suporta tópicos, sessões, até 1GB
908
+ 2. Storage Queue ($0.05/mês): Apenas filas simples, até 500TB
909
+ 3. Event Grid ($0.30/mi eventos): Pub/sub nativo, serverless
910
+
911
+ Recomendo Storage Queue se você precisa apenas de filas simples e baratas.
912
+ Qual prefere?"
913
+ ```
914
+
915
+ #### 2. **Bibliotecas e Frameworks**
916
+ - NuGet packages (.NET libraries)
917
+ - UI libraries (Fluent UI vs MudBlazor vs Radzen)
918
+ - ORMs além do padrão
919
+ - Auth providers (Clerk vs Azure AD vs Auth0)
920
+ - SDKs de terceiros
921
+
922
+ **Exemplo de decisão automática (ERRADO):**
923
+ ```
924
+ ❌ "Vou usar MudBlazor para os componentes UI."
925
+ ```
926
+
927
+ **Exemplo correto:**
928
+ ```
929
+ ✅ "Para componentes UI no Blazor, temos 2 opções principais:
930
+ 1. Fluent UI Blazor: Design Microsoft 365, componentes AI-ready, mais moderno
931
+ 2. MudBlazor: Material Design, mais componentes prontos, comunidade maior
932
+
933
+ Recomendo Fluent UI se você quer visual moderno e integração com IA.
934
+ Qual prefere?"
935
+ ```
936
+
937
+ #### 3. **Padrões Arquiteturais**
938
+ - CQRS vs operações simples
939
+ - Repository Pattern vs EF direto no Service
940
+ - Mediator (MediatR) vs chamadas diretas
941
+ - Event Sourcing vs CRUD tradicional
942
+ - DDD patterns complexos
943
+
944
+ **Exemplo de decisão automática (ERRADO):**
945
+ ```
946
+ ❌ "Vou implementar CQRS para separar leitura e escrita."
947
+ ```
948
+
949
+ **Exemplo correto:**
950
+ ```
951
+ ✅ "Para essa feature de relatórios, podemos usar:
952
+ 1. CQRS: Separar comandos e queries, melhor performance em leitura
953
+ Complexidade: Média-Alta | Benefício: Escalabilidade
954
+ 2. Repositórios simples: Um repositório por entidade
955
+ Complexidade: Baixa | Benefício: Mais rápido de implementar
956
+
957
+ Recomendo CQRS se você planeja escalar leituras independentemente.
958
+ Qual abordagem prefere?"
959
+ ```
960
+
961
+ #### 4. **Estrutura de Dados**
962
+ - Design de entidades e relacionamentos
963
+ - Normalização vs denormalização
964
+ - Schemas de API (DTOs, contratos)
965
+ - Índices e otimizações de banco
966
+
967
+ **Exemplo de decisão automática (ERRADO):**
968
+ ```
969
+ ❌ "Vou criar uma entidade User com relacionamento N:N com Roles."
970
+ ```
971
+
972
+ **Exemplo correto:**
973
+ ```
974
+ ✅ "Para relacionamento User-Roles, temos 2 opções:
975
+ 1. N:N com tabela intermediária UserRoles
976
+ Pros: Flexível, pode adicionar metadados (data de atribuição)
977
+ Cons: Mais complexo, mais JOINs
978
+ 2. JSON array em User.Roles
979
+ Pros: Mais simples, menos JOINs
980
+ Cons: Menos flexível, dificulta queries por role
981
+
982
+ Recomendo N:N se você precisa saber quando role foi atribuída.
983
+ Qual estrutura prefere?"
984
+ ```
985
+
986
+ ---
987
+
988
+ ### Template de Decisão
989
+
990
+ Quando encontrar uma decisão técnica, SEMPRE use este formato:
991
+
992
+ ```markdown
993
+ ---
994
+ 🤔 **DECISÃO TÉCNICA NECESSÁRIA**
995
+
996
+ **Contexto:** {Por que precisamos decidir isso agora}
997
+
998
+ **Opções disponíveis:**
999
+
1000
+ **Opção 1: {Nome}**
1001
+ - ✅ Vantagens: {lista concisa}
1002
+ - ❌ Desvantagens: {lista concisa}
1003
+ - 💰 Custo: {se Azure} ou N/A
1004
+ - ⚡ Complexidade: {baixa/média/alta}
1005
+
1006
+ **Opção 2: {Nome}**
1007
+ - ✅ Vantagens: {lista concisa}
1008
+ - ❌ Desvantagens: {lista concisa}
1009
+ - 💰 Custo: {se Azure} ou N/A
1010
+ - ⚡ Complexidade: {baixa/média/alta}
1011
+
1012
+ **Opção 3: {Nome}** (se houver)
1013
+ - ...
1014
+
1015
+ **💡 Minha recomendação:**
1016
+ {Opção X} porque {justificativa técnica baseada no contexto do projeto}
1017
+
1018
+ **Trade-offs principais:**
1019
+ - {Trade-off 1: ex: performance vs custo}
1020
+ - {Trade-off 2: ex: simplicidade vs escalabilidade}
1021
+
1022
+ **Qual opção você prefere?** Ou quer ajustar alguma delas?
1023
+
1024
+ ---
1025
+ ```
1026
+
1027
+ ---
1028
+
1029
+ ### Quando NÃO pausar (decisões triviais)
1030
+
1031
+ Decisões automáticas permitidas (não precisa consultar):
1032
+ - ✅ Nomenclatura de variáveis/métodos (seguir standards)
1033
+ - ✅ Estrutura de pastas (seguir Clean Architecture padrão do projeto)
1034
+ - ✅ Imports e usings
1035
+ - ✅ Formatação de código
1036
+ - ✅ Tipos primitivos (string vs int, etc.)
1037
+ - ✅ Validações básicas (Required, MaxLength, etc.)
1038
+ - ✅ Padrões já definidos em project/standards/
1039
+
1040
+ **Regra de ouro:** Se a decisão afeta **custo**, **arquitetura**, **dependências externas** ou **estrutura de dados**, SEMPRE consultar.
1041
+
1042
+ ---
1043
+
1044
+ ### Exemplo Real Completo
1045
+
1046
+ **Situação:** Usuário pediu "adicionar cache para melhorar performance"
1047
+
1048
+ **❌ ERRADO (decisão automática):**
1049
+ ```
1050
+ Vou implementar cache usando Redis Premium tier.
1051
+ ```
1052
+
1053
+ **✅ CORRETO (apresentar opções):**
1054
+
1055
+ ```markdown
1056
+ ---
1057
+ 🤔 **DECISÃO TÉCNICA NECESSÁRIA**
1058
+
1059
+ **Contexto:** Você pediu cache para melhorar performance das queries de produtos. Precisamos decidir qual estratégia usar.
1060
+
1061
+ **Opções disponíveis:**
1062
+
1063
+ **Opção 1: In-Memory Cache (IMemoryCache .NET)**
1064
+ - ✅ Vantagens: Zero custo, simples, rápido para dados pequenos
1065
+ - ❌ Desvantagens: Limitado à memória do servidor, perdido em restart, não compartilhado entre instâncias
1066
+ - 💰 Custo: $0
1067
+ - ⚡ Complexidade: Baixa
1068
+
1069
+ **Opção 2: Redis (Azure Cache for Redis - Basic tier)**
1070
+ - ✅ Vantagens: Persistente, compartilhado, suporta estruturas complexas
1071
+ - ❌ Desvantagens: Custo adicional, latência de rede
1072
+ - 💰 Custo: ~$16/mês (Basic C0)
1073
+ - ⚡ Complexidade: Média
1074
+
1075
+ **Opção 3: Distributed Memory Cache (SQL Server)**
1076
+ - ✅ Vantagens: Usa SQL existente, sem custo adicional, compartilhado
1077
+ - ❌ Desvantagens: Mais lento que Redis, usa DB para cache
1078
+ - 💰 Custo: $0 (usa SQL existente)
1079
+ - ⚡ Complexidade: Baixa-Média
1080
+
1081
+ **💡 Minha recomendação:**
1082
+ Opção 1 (IMemoryCache) se você tem apenas 1 instância do app e dados de cache < 100MB.
1083
+ Opção 3 (SQL Distributed Cache) se você tem múltiplas instâncias mas quer evitar custo de Redis.
1084
+
1085
+ **Trade-offs principais:**
1086
+ - Performance vs Custo: Redis é mais rápido mas custa $16/mês
1087
+ - Simplicidade vs Escalabilidade: IMemoryCache é simples mas não escala para múltiplas instâncias
1088
+
1089
+ **Qual opção você prefere?** Ou quer ajustar alguma delas?
1090
+ ---
1091
+ ```
1092
+
1093
+ ---
1094
+
1095
+ ### Integração com Fases
1096
+
1097
+ **FASE 1.5 (UI/UX):**
1098
+ - ❓ Perguntar: Fluent UI vs MudBlazor vs outra biblioteca
1099
+ - ❓ Perguntar: Preferências de layout, cores, componentes
1100
+
1101
+ **FASE 2 (DESIGN):**
1102
+ - ❓ Perguntar: Padrões arquiteturais (CQRS, Repository, etc.)
1103
+ - ❓ Perguntar: Infraestrutura Azure (recursos, SKUs)
1104
+ - ❓ Perguntar: Bibliotecas e SDKs necessários
1105
+ - ❓ Perguntar: Estrutura de dados (entidades, relacionamentos)
1106
+
1107
+ **Durante IMPLEMENTAÇÃO:**
1108
+ - ❓ Pausar: Se encontrar decisão não prevista no design
1109
+ - ❓ Pausar: Se precisar adicionar dependência nova
1110
+ - ❓ Pausar: Se precisar mudar estrutura de dados aprovada
1111
+
1112
+ ---
1113
+
1114
+ ### Validação Automática (CLI)
1115
+
1116
+ Use o comando `morph-spec validate-decisions` para verificar se decisões foram documentadas:
1117
+
1118
+ ```bash
1119
+ # Validar decisions.md de uma feature
1120
+ morph-spec validate-decisions {feature-name}
1121
+
1122
+ # O comando verifica:
1123
+ # - Decisões de infraestrutura têm ADRs?
1124
+ # - Bibliotecas escolhidas estão documentadas?
1125
+ # - Padrões arquiteturais estão justificados?
1126
+ ```
1127
+
1128
+ ---
1129
+
787
1130
  ## AGENTES
788
1131
 
789
1132
  ### Core Agents (Sempre Ativos)
@@ -867,13 +1210,16 @@ Os limites de custo são definidos em `.morph/config/config.json` e podem ser cu
867
1210
 
868
1211
  ```bash
869
1212
  # Calcular custos de arquivos Bicep
870
- node bin/calculate-costs.js infra/main.bicep --verbose
1213
+ morph-spec cost infra/main.bicep --verbose
871
1214
 
872
1215
  # Múltiplos arquivos (glob pattern)
873
- node bin/calculate-costs.js "infra/**/*.bicep" --json
1216
+ morph-spec cost "infra/**/*.bicep" --json
874
1217
 
875
1218
  # Usar config customizado
876
- node bin/calculate-costs.js infra/main.bicep --config .morph/config/config.json
1219
+ morph-spec cost infra/main.bicep --config .morph/config/config.json
1220
+
1221
+ # OU, se em desenvolvimento local do framework:
1222
+ # node bin/calculate-costs.js infra/main.bicep --verbose
877
1223
  ```
878
1224
 
879
1225
  **Funcionalidades:**
@@ -921,7 +1267,7 @@ ln -s ../../.morph/hooks/pre-commit-costs.sh .git/hooks/pre-commit
921
1267
  |------|------|-----|
922
1268
  | **FASE 2 (Design)** | Estimar custos de infra proposta | `/morph-design` (integrado) |
923
1269
  | **Antes de commit** | Validar custos automaticamente | Pre-commit hook |
924
- | **Revisão manual** | Verificar custos de Bicep | `calculate-costs.js --verbose` |
1270
+ | **Revisão manual** | Verificar custos de Bicep | `morph-spec cost <bicep-files> --verbose` |
925
1271
 
926
1272
  ### Exemplo de ADR de Custo
927
1273
 
@@ -1062,35 +1408,38 @@ O MORPH-SPEC rastreia automaticamente o progresso de features usando `.morph/sta
1062
1408
 
1063
1409
  ### CLI para State Management
1064
1410
 
1065
- Use `bin/state-manager.js` para manipular o state:
1411
+ Use o comando `morph-spec state` para manipular o state:
1066
1412
 
1067
1413
  ```bash
1068
1414
  # Inicializar state (primeira vez)
1069
- node bin/state-manager.js init
1415
+ morph-spec state init
1070
1416
 
1071
1417
  # Criar/atualizar feature
1072
- node bin/state-manager.js set feature-name phase design
1073
- node bin/state-manager.js set feature-name status in_progress
1418
+ morph-spec state set feature-name phase design
1419
+ morph-spec state set feature-name status in_progress
1074
1420
 
1075
1421
  # Atualizar tasks
1076
- node bin/state-manager.js set feature-name tasks.completed 5
1077
- node bin/state-manager.js set feature-name tasks.total 12
1422
+ morph-spec state set feature-name tasks.completed 5
1423
+ morph-spec state set feature-name tasks.total 12
1078
1424
 
1079
1425
  # Adicionar agentes
1080
- node bin/state-manager.js add-agent feature-name blazor-builder
1426
+ morph-spec state add-agent feature-name blazor-builder
1081
1427
 
1082
1428
  # Marcar outputs como criados
1083
- node bin/state-manager.js mark-output feature-name spec
1084
- node bin/state-manager.js mark-output feature-name contracts
1429
+ morph-spec state mark-output feature-name spec
1430
+ morph-spec state mark-output feature-name contracts
1085
1431
 
1086
1432
  # Registrar checkpoint
1087
- node bin/state-manager.js checkpoint feature-name "Completadas tasks T001-T003"
1433
+ morph-spec state checkpoint feature-name "Completadas tasks T001-T003"
1088
1434
 
1089
1435
  # Listar todas as features
1090
- node bin/state-manager.js list
1436
+ morph-spec state list
1091
1437
 
1092
1438
  # Obter detalhes de uma feature (JSON)
1093
- node bin/state-manager.js get feature-name
1439
+ morph-spec state get feature-name
1440
+
1441
+ # OU, se em desenvolvimento local do framework:
1442
+ # node bin/state-manager.js <command>
1094
1443
  ```
1095
1444
 
1096
1445
  ### Quando Atualizar State