@polymorphism-tech/morph-spec 2.2.0 → 2.4.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 +314 -1673
- package/LICENSE +72 -72
- package/README.md +515 -516
- package/bin/detect-agents.js +225 -225
- package/bin/morph-spec.js +358 -173
- package/bin/render-template.js +302 -302
- package/bin/semantic-detect-agents.js +246 -246
- package/bin/task-manager.js +429 -0
- package/bin/validate-agents-skills.js +251 -251
- package/bin/validate-agents.js +69 -69
- package/bin/validate-phase.js +263 -263
- package/bin/validate.js +369 -0
- package/content/.azure/README.md +293 -293
- package/content/.azure/docs/azure-devops-setup.md +454 -454
- package/content/.azure/docs/branch-strategy.md +398 -398
- package/content/.azure/docs/local-development.md +515 -515
- package/content/.azure/pipelines/pipeline-variables.yml +34 -34
- package/content/.azure/pipelines/prod-pipeline.yml +319 -319
- package/content/.azure/pipelines/staging-pipeline.yml +234 -234
- package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
- package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
- package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
- package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
- package/content/.claude/commands/morph-apply.md +221 -158
- package/content/.claude/commands/morph-archive.md +79 -79
- package/content/.claude/commands/morph-infra.md +209 -209
- package/content/.claude/commands/morph-preflight.md +227 -0
- package/content/.claude/commands/morph-proposal.md +122 -101
- package/content/.claude/commands/morph-status.md +86 -86
- package/content/.claude/commands/morph-troubleshoot.md +122 -0
- package/content/.claude/settings.local.json +15 -15
- package/content/.claude/skills/checklists/code-review.md +226 -0
- package/content/.claude/skills/checklists/morph-checklist.md +117 -0
- package/content/.claude/skills/checklists/simulation-checklist.md +77 -0
- package/content/.claude/skills/infra/bicep-architect.md +126 -419
- package/content/.claude/skills/infra/container-specialist.md +131 -437
- package/content/.claude/skills/infra/devops-engineer.md +119 -405
- package/content/.claude/skills/integrations/asaas-financial.md +130 -333
- package/content/.claude/skills/integrations/azure-identity.md +142 -309
- package/content/.claude/skills/integrations/clerk-auth.md +108 -290
- package/content/.claude/skills/integrations/resend-email.md +119 -0
- package/content/.claude/skills/specialists/ai-system-architect.md +192 -604
- package/content/.claude/skills/specialists/azure-architect.md +142 -142
- package/content/.claude/skills/specialists/code-analyzer.md +235 -0
- package/content/.claude/skills/specialists/dotnet-senior.md +287 -0
- package/content/.claude/skills/specialists/ef-modeler.md +113 -200
- package/content/.claude/skills/specialists/hangfire-orchestrator.md +126 -245
- package/content/.claude/skills/specialists/ms-agent-expert.md +109 -263
- package/content/.claude/skills/specialists/po-pm-advisor.md +197 -197
- package/content/.claude/skills/specialists/standards-architect.md +156 -78
- package/content/.claude/skills/specialists/testing-specialist.md +126 -0
- package/content/.claude/skills/specialists/ui-ux-designer.md +191 -1060
- package/content/.claude/skills/stacks/dotnet-blazor.md +210 -588
- package/content/.claude/skills/stacks/dotnet-nextjs.md +154 -402
- package/content/.claude/skills/workflows/morph-replicate.md +213 -0
- package/content/.claude/{commands/morph-clarify.md → skills/workflows/phase-clarify.md} +5 -58
- package/content/.claude/{commands/morph-design.md → skills/workflows/phase-design.md} +16 -86
- package/content/.claude/{commands/morph-setup.md → skills/workflows/phase-setup.md} +9 -17
- package/content/.claude/skills/workflows/phase-tasks.md +164 -0
- package/content/.claude/{commands/morph-uiux.md → skills/workflows/phase-uiux.md} +15 -88
- package/content/.morph/.morphversion +5 -5
- package/content/.morph/archive/.gitkeep +25 -25
- package/content/.morph/config/agents.json +378 -242
- package/content/.morph/config/config.template.json +89 -108
- package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
- package/content/.morph/docs/workflows/design-impl.md +37 -0
- package/content/.morph/docs/workflows/fast-track.md +29 -0
- package/content/.morph/docs/workflows/full-morph.md +76 -0
- package/content/.morph/docs/workflows/standard.md +44 -0
- package/content/.morph/docs/workflows/ui-refresh.md +39 -0
- package/content/.morph/examples/api-nextjs/README.md +241 -241
- package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
- package/content/.morph/examples/api-nextjs/spec.md +399 -399
- package/content/.morph/examples/api-nextjs/tasks.md +168 -168
- package/content/.morph/examples/micro-saas/README.md +125 -125
- package/content/.morph/examples/micro-saas/contracts.cs +358 -358
- package/content/.morph/examples/micro-saas/decisions.md +246 -246
- package/content/.morph/examples/micro-saas/spec.md +236 -236
- package/content/.morph/examples/micro-saas/tasks.md +150 -150
- package/content/.morph/examples/multi-agent/README.md +309 -309
- package/content/.morph/examples/multi-agent/contracts.cs +433 -433
- package/content/.morph/examples/multi-agent/spec.md +479 -479
- package/content/.morph/examples/multi-agent/tasks.md +185 -185
- package/content/.morph/examples/scheduled-reports/decisions.md +158 -0
- package/content/.morph/examples/scheduled-reports/proposal.md +95 -0
- package/content/.morph/examples/scheduled-reports/spec.md +267 -0
- package/content/.morph/examples/state-v3.json +188 -0
- package/content/.morph/features/.gitkeep +25 -25
- package/content/.morph/hooks/README.md +190 -239
- package/content/.morph/hooks/pre-commit-agents.sh +24 -24
- package/content/.morph/hooks/pre-commit-all.sh +48 -48
- package/content/.morph/hooks/pre-commit-specs.sh +49 -49
- package/content/.morph/hooks/pre-commit-tests.sh +60 -60
- package/content/.morph/project.md +160 -160
- package/content/.morph/schemas/agent.schema.json +296 -296
- package/content/.morph/schemas/tasks.schema.json +220 -0
- package/content/.morph/specs/.gitkeep +20 -20
- package/content/.morph/standards/agent-framework-blazor-ui.md +359 -0
- package/content/.morph/standards/agent-framework-production.md +410 -0
- package/content/.morph/standards/agent-framework-setup.md +413 -453
- package/content/.morph/standards/agent-framework-workflows.md +349 -0
- package/content/.morph/standards/architecture.md +325 -325
- package/content/.morph/standards/azure.md +605 -379
- package/content/.morph/standards/coding.md +377 -377
- package/content/.morph/standards/dotnet10-migration.md +520 -494
- package/content/.morph/standards/fluent-ui-setup.md +590 -590
- package/content/.morph/standards/migration-guide.md +514 -514
- package/content/.morph/standards/passkeys-auth.md +423 -423
- package/content/.morph/standards/vector-search-rag.md +536 -536
- package/content/.morph/state.json +17 -17
- package/content/.morph/templates/FluentDesignTheme.cs +149 -149
- package/content/.morph/templates/MudTheme.cs +281 -281
- package/content/.morph/templates/agent.cs +163 -172
- package/content/.morph/templates/clarify-questions.md +159 -0
- package/content/.morph/templates/component.razor +239 -239
- package/content/.morph/templates/contracts/Commands.cs +74 -0
- package/content/.morph/templates/contracts/Entities.cs +25 -0
- package/content/.morph/templates/contracts/Queries.cs +74 -0
- package/content/.morph/templates/contracts/README.md +74 -0
- package/content/.morph/templates/contracts.cs +217 -217
- package/content/.morph/templates/decisions.md +123 -106
- package/content/.morph/templates/design-system.css +226 -226
- package/content/.morph/templates/infra/.dockerignore.example +89 -89
- package/content/.morph/templates/infra/Dockerfile.example +82 -82
- package/content/.morph/templates/infra/README.md +286 -286
- package/content/.morph/templates/infra/app-insights.bicep +63 -63
- package/content/.morph/templates/infra/app-service.bicep +164 -164
- package/content/.morph/templates/infra/container-app-env.bicep +49 -49
- package/content/.morph/templates/infra/container-app.bicep +156 -156
- package/content/.morph/templates/infra/deploy-checklist.md +426 -0
- package/content/.morph/templates/infra/deploy.ps1 +229 -229
- package/content/.morph/templates/infra/deploy.sh +208 -208
- package/content/.morph/templates/infra/key-vault.bicep +91 -91
- package/content/.morph/templates/infra/main.bicep +189 -189
- package/content/.morph/templates/infra/parameters.dev.json +29 -29
- package/content/.morph/templates/infra/parameters.prod.json +29 -29
- package/content/.morph/templates/infra/parameters.staging.json +29 -29
- package/content/.morph/templates/infra/sql-database.bicep +103 -103
- package/content/.morph/templates/infra/storage.bicep +106 -106
- package/content/.morph/templates/integrations/asaas-client.cs +387 -387
- package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
- package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
- package/content/.morph/templates/integrations/clerk-config.cs +258 -258
- package/content/.morph/templates/job.cs +171 -171
- package/content/.morph/templates/migration.cs +83 -83
- package/content/.morph/templates/proposal.md +141 -155
- package/content/.morph/templates/recap.md +94 -105
- package/content/.morph/templates/repository.cs +141 -141
- package/content/.morph/templates/saas/subscription.cs +347 -347
- package/content/.morph/templates/saas/tenant.cs +338 -338
- package/content/.morph/templates/service.cs +139 -139
- package/content/.morph/templates/simulation.md +353 -0
- package/content/.morph/templates/spec.md +149 -148
- package/content/.morph/templates/sprint-status.yaml +68 -68
- package/content/.morph/templates/state.template.json +222 -222
- package/content/.morph/templates/story.md +143 -143
- package/content/.morph/templates/tasks.md +257 -235
- package/content/.morph/templates/test.cs +239 -239
- package/content/.morph/templates/ui-components.md +362 -276
- package/content/.morph/templates/ui-design-system.md +286 -286
- package/content/.morph/templates/ui-flows.md +336 -336
- package/content/.morph/templates/ui-mockups.md +133 -133
- package/content/.morph/test-infra/example.bicep +59 -59
- package/content/CLAUDE.md +150 -442
- package/content/README.md +79 -79
- package/detectors/config-detector.js +223 -223
- package/detectors/conversation-analyzer.js +163 -163
- package/detectors/index.js +84 -84
- package/detectors/standards-generator.js +275 -275
- package/detectors/structure-detector.js +245 -250
- package/docs/README.md +144 -149
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
- package/docs/api/scripts/collapse.js +38 -38
- package/docs/api/scripts/commonNav.js +28 -28
- package/docs/api/scripts/linenumber.js +25 -25
- package/docs/api/scripts/nav.js +12 -12
- package/docs/api/scripts/polyfill.js +3 -3
- package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
- package/docs/api/scripts/prettify/lang-css.js +2 -2
- package/docs/api/scripts/prettify/prettify.js +28 -28
- package/docs/api/scripts/search.js +98 -98
- package/docs/api/styles/jsdoc.css +776 -776
- package/docs/api/styles/prettify.css +80 -80
- package/docs/examples.md +328 -328
- package/docs/getting-started.md +301 -302
- package/docs/installation.md +361 -361
- package/docs/templates.md +418 -418
- package/docs/validation-checklist.md +265 -266
- package/package.json +80 -80
- package/scripts/postinstall.js +132 -132
- package/src/commands/advance-phase.js +183 -0
- package/src/commands/analyze-blazor-concurrency.js +193 -0
- package/src/commands/create-story.js +351 -351
- package/src/commands/detect-agents.js +139 -0
- package/src/commands/detect.js +104 -104
- package/src/commands/doctor.js +356 -280
- package/src/commands/generate.js +149 -149
- package/src/commands/init.js +258 -245
- package/src/commands/lint-fluent.js +352 -0
- package/src/commands/rollback-phase.js +185 -0
- package/src/commands/session-summary.js +291 -0
- package/src/commands/shard-spec.js +224 -224
- package/src/commands/sprint-status.js +250 -250
- package/src/commands/state.js +333 -333
- package/src/commands/sync.js +167 -167
- package/src/commands/task.js +78 -0
- package/src/commands/troubleshoot.js +222 -0
- package/src/commands/update.js +192 -159
- package/src/commands/validate-blazor-state.js +210 -0
- package/src/commands/validate-blazor.js +156 -0
- package/src/commands/validate-css.js +84 -0
- package/src/commands/validate-phase.js +221 -0
- package/src/lib/blazor-concurrency-analyzer.js +288 -0
- package/src/lib/blazor-state-validator.js +291 -0
- package/src/lib/blazor-validator.js +374 -0
- package/src/lib/complexity-analyzer.js +441 -292
- package/src/lib/continuous-validator.js +421 -0
- package/src/lib/css-validator.js +352 -0
- package/src/lib/decision-constraint-loader.js +109 -0
- package/src/lib/design-system-generator.js +298 -298
- package/src/lib/learning-system.js +520 -0
- package/src/lib/mockup-generator.js +366 -0
- package/src/lib/recap-generator.js +205 -0
- package/src/lib/state-manager.js +397 -340
- package/src/lib/troubleshoot-grep.js +194 -0
- package/src/lib/troubleshoot-index.js +144 -0
- package/src/lib/ui-detector.js +350 -0
- package/src/lib/validation-runner.js +231 -0
- package/src/lib/validators/architecture-validator.js +387 -0
- package/src/lib/validators/contract-compliance-validator.js +273 -0
- package/src/lib/validators/package-validator.js +360 -0
- package/src/lib/validators/ui-contrast-validator.js +422 -0
- package/src/utils/file-copier.js +179 -139
- package/src/utils/logger.js +32 -32
- package/src/utils/version-checker.js +175 -175
- package/content/.claude/commands/morph-costs.md +0 -206
- package/content/.claude/commands/morph-tasks.md +0 -319
- package/content/.claude/skills/specialists/cost-guardian.md +0 -110
- package/content/.claude/skills/stacks/shopify.md +0 -445
- package/content/.morph/config/azure-pricing.json +0 -70
- package/content/.morph/config/azure-pricing.schema.json +0 -50
- package/content/.morph/hooks/pre-commit-costs.sh +0 -91
- package/docs/api/cost-calculator.js.html +0 -513
- package/docs/api/design-system-generator.js.html +0 -382
- package/docs/api/global.html +0 -5263
- package/docs/api/index.html +0 -96
- package/docs/api/state-manager.js.html +0 -423
- package/src/commands/cost.js +0 -181
- package/src/commands/update-pricing.js +0 -206
- package/src/lib/cost-calculator.js +0 -429
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
# MORPH Tasks - FASE 4
|
|
2
|
-
|
|
3
|
-
Quebre a especificação em tasks executáveis, defina ordem de execução e estabeleça checkpoints.
|
|
4
|
-
|
|
5
|
-
## Uso
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
/morph-tasks {feature-name}
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Pré-requisitos
|
|
12
|
-
|
|
13
|
-
- [ ] FASE 3 (Clarify) concluída
|
|
14
|
-
- [ ] `spec.md` atualizado com clarificações
|
|
15
|
-
- [ ] Todos os edge cases documentados
|
|
16
|
-
|
|
17
|
-
## Workflow
|
|
18
|
-
|
|
19
|
-
### Passo 1: Analisar Spec
|
|
20
|
-
|
|
21
|
-
Leia `.morph/project/outputs/{feature}/spec.md` e identifique:
|
|
22
|
-
|
|
23
|
-
1. **Requisitos funcionais** (FR001, FR002, ...)
|
|
24
|
-
2. **Componentes técnicos** (Entities, Services, Controllers, Pages)
|
|
25
|
-
3. **Infraestrutura** (Bicep, migrations, configs)
|
|
26
|
-
4. **Testes** (Unit tests, integration tests)
|
|
27
|
-
|
|
28
|
-
### Passo 2: Quebrar em Tasks
|
|
29
|
-
|
|
30
|
-
Crie tasks no formato **T{NNN}** seguindo ordem lógica de implementação.
|
|
31
|
-
|
|
32
|
-
#### 2.1. Estrutura de Task
|
|
33
|
-
|
|
34
|
-
```json
|
|
35
|
-
{
|
|
36
|
-
"id": "T001",
|
|
37
|
-
"title": "Criar Entity {Nome}",
|
|
38
|
-
"description": "Implementar entity {Nome} com propriedades X, Y, Z seguindo padrões EF Core",
|
|
39
|
-
"category": "domain",
|
|
40
|
-
"dependencies": [],
|
|
41
|
-
"estimatedMinutes": 30,
|
|
42
|
-
"status": "pending",
|
|
43
|
-
"files": [
|
|
44
|
-
"Domain/Entities/{Nome}.cs",
|
|
45
|
-
"Infrastructure/Data/Configurations/{Nome}Configuration.cs"
|
|
46
|
-
]
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
#### 2.2. Categorias de Tasks
|
|
51
|
-
|
|
52
|
-
| Categoria | Descrição | Exemplos |
|
|
53
|
-
|-----------|-----------|----------|
|
|
54
|
-
| **domain** | Entities, Value Objects, Enums | Entity, DomainException |
|
|
55
|
-
| **application** | Services, DTOs, Interfaces | Service, Validator, Mapper |
|
|
56
|
-
| **infrastructure** | DbContext, Repositories, External APIs | EF Config, Repository impl |
|
|
57
|
-
| **presentation** | Controllers, Pages, Components | API endpoint, Blazor page |
|
|
58
|
-
| **tests** | Unit tests, Integration tests | Service tests, API tests |
|
|
59
|
-
| **infra** | Bicep, Migrations, Scripts | Azure resources, DB migration |
|
|
60
|
-
| **docs** | README, API docs, Swagger | OpenAPI spec, README update |
|
|
61
|
-
|
|
62
|
-
#### 2.3. Ordem de Implementação
|
|
63
|
-
|
|
64
|
-
**Bottom-up approach:**
|
|
65
|
-
```
|
|
66
|
-
1. Domain (Entities, Enums, Value Objects)
|
|
67
|
-
↓
|
|
68
|
-
2. Infrastructure (Repositories, DbContext configs)
|
|
69
|
-
↓
|
|
70
|
-
3. Application (Services, DTOs, Business logic)
|
|
71
|
-
↓
|
|
72
|
-
4. Presentation (Controllers, Pages, Components)
|
|
73
|
-
↓
|
|
74
|
-
5. Tests (Unit → Integration)
|
|
75
|
-
↓
|
|
76
|
-
6. Infra (Bicep, Migrations, Deploy scripts)
|
|
77
|
-
↓
|
|
78
|
-
7. Docs (README, Swagger, Comments)
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Passo 3: Definir Dependências
|
|
82
|
-
|
|
83
|
-
Para cada task, especifique dependências:
|
|
84
|
-
|
|
85
|
-
```json
|
|
86
|
-
{
|
|
87
|
-
"id": "T005",
|
|
88
|
-
"title": "Criar {Nome}Service",
|
|
89
|
-
"dependencies": ["T001", "T002"], // Precisa de Entities primeiro
|
|
90
|
-
"status": "pending"
|
|
91
|
-
}
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
**Regra:** Task só pode ser executada quando todas as dependências estão `completed`.
|
|
95
|
-
|
|
96
|
-
### Passo 4: Estabelecer Checkpoints
|
|
97
|
-
|
|
98
|
-
Defina checkpoints a cada **3 tasks** ou **marcos significativos**:
|
|
99
|
-
|
|
100
|
-
```json
|
|
101
|
-
{
|
|
102
|
-
"id": "CHECKPOINT_001",
|
|
103
|
-
"title": "Domain Layer Completo",
|
|
104
|
-
"afterTasks": ["T001", "T002", "T003"],
|
|
105
|
-
"validations": [
|
|
106
|
-
"Todas as entities criadas",
|
|
107
|
-
"Migrations aplicadas",
|
|
108
|
-
"Testes de domain passando"
|
|
109
|
-
]
|
|
110
|
-
}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
**Checkpoints obrigatórios:**
|
|
114
|
-
- Após domain layer
|
|
115
|
-
- Após infrastructure layer
|
|
116
|
-
- Após application layer
|
|
117
|
-
- Após presentation layer
|
|
118
|
-
- Antes de deploy (final)
|
|
119
|
-
|
|
120
|
-
### Passo 5: Estimar Esforço
|
|
121
|
-
|
|
122
|
-
Para cada task, estime tempo em minutos:
|
|
123
|
-
|
|
124
|
-
| Complexidade | Tempo Estimado |
|
|
125
|
-
|--------------|----------------|
|
|
126
|
-
| Trivial (CRUD básico) | 15-30 min |
|
|
127
|
-
| Simples (Service, Controller) | 30-60 min |
|
|
128
|
-
| Média (Business logic, validações) | 60-120 min |
|
|
129
|
-
| Complexa (Integrações, AI) | 120-240 min |
|
|
130
|
-
|
|
131
|
-
**Total:** Some todos os tempos para estimar esforço total da feature.
|
|
132
|
-
|
|
133
|
-
### Passo 6: Gerar `tasks.json`
|
|
134
|
-
|
|
135
|
-
Crie `.morph/project/outputs/{feature}/tasks.json`:
|
|
136
|
-
|
|
137
|
-
```json
|
|
138
|
-
{
|
|
139
|
-
"feature": "{feature-name}",
|
|
140
|
-
"totalTasks": 15,
|
|
141
|
-
"estimatedHours": 8.5,
|
|
142
|
-
"checkpoints": [
|
|
143
|
-
{
|
|
144
|
-
"id": "CHECKPOINT_001",
|
|
145
|
-
"title": "Domain Layer Completo",
|
|
146
|
-
"afterTasks": ["T001", "T002", "T003"]
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
"id": "CHECKPOINT_002",
|
|
150
|
-
"title": "Application Layer Completo",
|
|
151
|
-
"afterTasks": ["T006", "T007", "T008"]
|
|
152
|
-
}
|
|
153
|
-
],
|
|
154
|
-
"tasks": [
|
|
155
|
-
{
|
|
156
|
-
"id": "T001",
|
|
157
|
-
"title": "Criar Entity {Nome}",
|
|
158
|
-
"description": "...",
|
|
159
|
-
"category": "domain",
|
|
160
|
-
"dependencies": [],
|
|
161
|
-
"estimatedMinutes": 30,
|
|
162
|
-
"status": "pending",
|
|
163
|
-
"files": ["Domain/Entities/{Nome}.cs"]
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
"id": "T002",
|
|
167
|
-
"title": "Configurar EF para {Nome}",
|
|
168
|
-
"description": "...",
|
|
169
|
-
"category": "infrastructure",
|
|
170
|
-
"dependencies": ["T001"],
|
|
171
|
-
"estimatedMinutes": 20,
|
|
172
|
-
"status": "pending",
|
|
173
|
-
"files": ["Infrastructure/Data/Configurations/{Nome}Configuration.cs"]
|
|
174
|
-
}
|
|
175
|
-
// ... mais tasks
|
|
176
|
-
]
|
|
177
|
-
}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
### Passo 7: Incluir Tasks de IaC (se necessário)
|
|
181
|
-
|
|
182
|
-
Se houver recursos Azure:
|
|
183
|
-
|
|
184
|
-
```json
|
|
185
|
-
{
|
|
186
|
-
"id": "T050",
|
|
187
|
-
"title": "Criar Bicep para Azure SQL",
|
|
188
|
-
"description": "Bicep module para Azure SQL Database Basic tier",
|
|
189
|
-
"category": "infra",
|
|
190
|
-
"dependencies": ["T001", "T002"], // Domain entities devem existir
|
|
191
|
-
"estimatedMinutes": 45,
|
|
192
|
-
"status": "pending",
|
|
193
|
-
"files": [
|
|
194
|
-
"infra/modules/sql-database.bicep",
|
|
195
|
-
"infra/parameters.dev.json"
|
|
196
|
-
]
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
"id": "T051",
|
|
200
|
-
"title": "Criar migration inicial",
|
|
201
|
-
"description": "EF Core migration com todas as entities",
|
|
202
|
-
"category": "infra",
|
|
203
|
-
"dependencies": ["T002", "T003"],
|
|
204
|
-
"estimatedMinutes": 15,
|
|
205
|
-
"status": "pending",
|
|
206
|
-
"files": ["Infrastructure/Data/Migrations/"]
|
|
207
|
-
}
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### Passo 8: Atualizar State
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
# Marcar fase como tasks
|
|
214
|
-
node bin/state-manager.js set {feature-name} phase tasks
|
|
215
|
-
|
|
216
|
-
# Definir total de tasks
|
|
217
|
-
node bin/state-manager.js set {feature-name} tasks.total {N}
|
|
218
|
-
|
|
219
|
-
# Marcar output tasks criado
|
|
220
|
-
node bin/state-manager.js mark-output {feature-name} tasks
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
## Outputs Gerados
|
|
224
|
-
|
|
225
|
-
- `.morph/project/outputs/{feature}/tasks.json` - Breakdown completo de tasks
|
|
226
|
-
|
|
227
|
-
**Resumo em formato texto:**
|
|
228
|
-
|
|
229
|
-
Gere também um resumo visual em `.morph/project/outputs/{feature}/tasks-summary.md`:
|
|
230
|
-
|
|
231
|
-
```markdown
|
|
232
|
-
# Tasks Breakdown - {Feature Name}
|
|
233
|
-
|
|
234
|
-
## Overview
|
|
235
|
-
- **Total Tasks:** 15
|
|
236
|
-
- **Estimated Time:** 8.5 hours
|
|
237
|
-
- **Checkpoints:** 3
|
|
238
|
-
|
|
239
|
-
## Tasks by Category
|
|
240
|
-
|
|
241
|
-
### Domain (3 tasks, 1.5h)
|
|
242
|
-
- T001: Criar Entity {Nome} (30min)
|
|
243
|
-
- T002: Configurar EF para {Nome} (20min)
|
|
244
|
-
- T003: Criar Enum {Status} (15min)
|
|
245
|
-
|
|
246
|
-
### Infrastructure (4 tasks, 2h)
|
|
247
|
-
- T004: Criar Repository interface (30min)
|
|
248
|
-
- T005: Implementar Repository (60min)
|
|
249
|
-
- ...
|
|
250
|
-
|
|
251
|
-
### Application (5 tasks, 3h)
|
|
252
|
-
- T006: Criar {Nome}Service (90min)
|
|
253
|
-
- T007: Criar DTOs (45min)
|
|
254
|
-
- ...
|
|
255
|
-
|
|
256
|
-
### Presentation (3 tasks, 2h)
|
|
257
|
-
- T010: Criar API Controller (60min)
|
|
258
|
-
- T011: Criar Blazor Page (60min)
|
|
259
|
-
- ...
|
|
260
|
-
|
|
261
|
-
## Checkpoints
|
|
262
|
-
|
|
263
|
-
### CHECKPOINT_001: Domain Layer Completo
|
|
264
|
-
**After:** T001, T002, T003
|
|
265
|
-
**Validations:**
|
|
266
|
-
- [ ] Entities criadas
|
|
267
|
-
- [ ] EF configurations ok
|
|
268
|
-
- [ ] Compile sem erros
|
|
269
|
-
|
|
270
|
-
### CHECKPOINT_002: Application Layer Completo
|
|
271
|
-
**After:** T006, T007, T008
|
|
272
|
-
**Validations:**
|
|
273
|
-
- [ ] Services implementados
|
|
274
|
-
- [ ] DTOs validados
|
|
275
|
-
- [ ] Testes unitários passando
|
|
276
|
-
|
|
277
|
-
## Execution Order
|
|
278
|
-
|
|
279
|
-
```
|
|
280
|
-
T001 → T002 → T003 → CHECKPOINT_001
|
|
281
|
-
↓
|
|
282
|
-
T004 → T005
|
|
283
|
-
↓
|
|
284
|
-
T006 → T007 → T008 → CHECKPOINT_002
|
|
285
|
-
↓
|
|
286
|
-
T010 → T011 → T012
|
|
287
|
-
↓
|
|
288
|
-
T013 → T014 → T015 → CHECKPOINT_003
|
|
289
|
-
```
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
## ⛔ PAUSA OBRIGATÓRIA
|
|
293
|
-
|
|
294
|
-
Apresente ao usuário 3 ações sugeridas:
|
|
295
|
-
|
|
296
|
-
1. ✅ **Aprovar breakdown e iniciar implementação**
|
|
297
|
-
Prosseguir para `/morph-apply` (FASE 5)
|
|
298
|
-
|
|
299
|
-
2. 🔀 **Repriorizar tasks**
|
|
300
|
-
Mudar ordem de execução se necessário
|
|
301
|
-
|
|
302
|
-
3. ➕ **Adicionar/remover tasks**
|
|
303
|
-
Ajustar escopo se alguma task foi esquecida ou é desnecessária
|
|
304
|
-
|
|
305
|
-
## Critérios de Avanço
|
|
306
|
-
|
|
307
|
-
- [x] `tasks.json` criado com todas as tasks
|
|
308
|
-
- [x] Tasks categorizadas corretamente
|
|
309
|
-
- [x] Dependências mapeadas
|
|
310
|
-
- [x] Checkpoints definidos (a cada 3 tasks)
|
|
311
|
-
- [x] Esforço estimado por task
|
|
312
|
-
- [x] Ordem de execução clara
|
|
313
|
-
- [x] Tasks de IaC incluídas (se aplicável)
|
|
314
|
-
- [x] State atualizado com total de tasks
|
|
315
|
-
- [x] Usuário aprovou breakdown
|
|
316
|
-
|
|
317
|
-
---
|
|
318
|
-
|
|
319
|
-
**Feature:** $ARGUMENTS
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
# Cost Guardian
|
|
2
|
-
|
|
3
|
-
Guardião de custos para garantir que recursos Azure sejam cost-effective e aprovados.
|
|
4
|
-
|
|
5
|
-
## Responsabilidades
|
|
6
|
-
|
|
7
|
-
1. **Validar custos** de cada recurso proposto
|
|
8
|
-
2. **Alertar** sobre recursos caros ou desnecessários
|
|
9
|
-
3. **Bloquear** recursos não aprovados
|
|
10
|
-
4. **Recomendar** alternativas free/low-cost
|
|
11
|
-
|
|
12
|
-
## Triggers
|
|
13
|
-
|
|
14
|
-
Ativado automaticamente em todo projeto MORPH-SPEC (Core Agent).
|
|
15
|
-
|
|
16
|
-
Keywords: `cost`, `budget`, `pricing`, `expensive`, `free tier`, `optimize`
|
|
17
|
-
|
|
18
|
-
## Limites de Custo
|
|
19
|
-
|
|
20
|
-
| Nível | Limite Mensal | Requisito |
|
|
21
|
-
|-------|---------------|-----------|
|
|
22
|
-
| **Sem aprovação** | Free tier apenas | Nenhum |
|
|
23
|
-
| **Com aprovação** | Até $10/mês | Confirmação do usuário |
|
|
24
|
-
| **Acima de $10** | Justificativa detalhada | ADR documentado |
|
|
25
|
-
|
|
26
|
-
## Recursos Free Tier (Sempre Aprovados)
|
|
27
|
-
|
|
28
|
-
| Recurso | Limite Free | Notas |
|
|
29
|
-
|---------|-------------|-------|
|
|
30
|
-
| Azure SQL | 32GB, S0 | Suficiente para MVP |
|
|
31
|
-
| Container Apps | Scale-to-zero | Paga só quando usa |
|
|
32
|
-
| Storage | 5GB LRS | Blobs, Tables |
|
|
33
|
-
| App Insights | 5GB/mês logs | Monitoring básico |
|
|
34
|
-
| Functions | 1M exec/mês | Serverless |
|
|
35
|
-
| Cosmos DB | 1000 RU/s | 25GB grátis |
|
|
36
|
-
|
|
37
|
-
## Recursos que Requerem Aprovação
|
|
38
|
-
|
|
39
|
-
| Recurso | Custo Estimado | Quando Usar |
|
|
40
|
-
|---------|----------------|-------------|
|
|
41
|
-
| Azure SQL Basic | ~$5/mês | Performance melhor |
|
|
42
|
-
| Service Bus Basic | ~$0.05/msg | Mensageria |
|
|
43
|
-
| Redis Cache | ~$15/mês | Cache distribuído |
|
|
44
|
-
| VM B1s | ~$7/mês | Workloads específicos |
|
|
45
|
-
|
|
46
|
-
## Recursos Bloqueados (Sem Justificativa)
|
|
47
|
-
|
|
48
|
-
| Recurso | Custo | Alternativa |
|
|
49
|
-
|---------|-------|-------------|
|
|
50
|
-
| Premium Storage | >$20/mês | Standard LRS |
|
|
51
|
-
| Dedicated SQL | >$100/mês | Azure SQL Basic |
|
|
52
|
-
| AKS | >$50/mês | Container Apps |
|
|
53
|
-
| Synapse | >$100/mês | SQL + Scripts |
|
|
54
|
-
|
|
55
|
-
## Template de Estimativa de Custos
|
|
56
|
-
|
|
57
|
-
```markdown
|
|
58
|
-
## Estimativa de Custos - {Feature}
|
|
59
|
-
|
|
60
|
-
### Recursos Necessários
|
|
61
|
-
|
|
62
|
-
| Recurso | SKU | Custo/Mês | Justificativa |
|
|
63
|
-
|---------|-----|-----------|---------------|
|
|
64
|
-
| Container Apps | Consumption | ~$0 | Scale-to-zero |
|
|
65
|
-
| Azure SQL | Free 32GB | $0 | Dentro do limite |
|
|
66
|
-
| Storage | LRS 1GB | ~$0.02 | Blobs de relatórios |
|
|
67
|
-
|
|
68
|
-
### Total Estimado: ~$0.02/mês
|
|
69
|
-
|
|
70
|
-
### Aprovação
|
|
71
|
-
- [x] Free tier (sem aprovação necessária)
|
|
72
|
-
- [ ] Até $10 (requer confirmação)
|
|
73
|
-
- [ ] Acima de $10 (requer ADR)
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Como Estimar Custos
|
|
77
|
-
|
|
78
|
-
1. Use [Azure Pricing Calculator](https://azure.microsoft.com/pricing/calculator/)
|
|
79
|
-
2. Considere região Brazil South (pode ser mais caro)
|
|
80
|
-
3. Inclua custos de transferência de dados
|
|
81
|
-
4. Projete para 1 mês de uso típico
|
|
82
|
-
5. Documente no `decisions.md`
|
|
83
|
-
|
|
84
|
-
## Alertas Automáticos
|
|
85
|
-
|
|
86
|
-
Quando detectar:
|
|
87
|
-
- Recurso premium sem justificativa
|
|
88
|
-
- Redundância desnecessária (ex: 2 instâncias em dev)
|
|
89
|
-
- Storage sem lifecycle policy
|
|
90
|
-
- Logs sem retenção definida
|
|
91
|
-
|
|
92
|
-
**Ação**: Bloquear e sugerir alternativa.
|
|
93
|
-
|
|
94
|
-
## Otimizações Recomendadas
|
|
95
|
-
|
|
96
|
-
1. **Container Apps**: Sempre scale-to-zero em dev
|
|
97
|
-
2. **SQL**: Free tier até precisar de mais
|
|
98
|
-
3. **Storage**: LRS em dev, GRS só em prod se necessário
|
|
99
|
-
4. **Logs**: Retenção de 30 dias max em dev
|
|
100
|
-
5. **Backups**: Desabilitar em dev
|
|
101
|
-
|
|
102
|
-
## Documentação de Referência
|
|
103
|
-
|
|
104
|
-
- [Azure Pricing](https://azure.microsoft.com/pricing/)
|
|
105
|
-
- [Free Services](https://azure.microsoft.com/free/free-account-faq/)
|
|
106
|
-
- [Cost Management](https://learn.microsoft.com/en-us/azure/cost-management-billing/)
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
*MORPH-SPEC by Polymorphism Tech*
|