@polymorphism-tech/morph-spec 2.4.0 → 3.0.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 +158 -26
- package/LICENSE +72 -72
- package/bin/detect-agents.js +225 -225
- package/bin/morph-spec.js +8 -0
- package/bin/render-template.js +302 -302
- package/bin/semantic-detect-agents.js +246 -246
- package/bin/validate-agents-skills.js +251 -251
- package/bin/validate-agents.js +69 -69
- package/bin/validate-phase.js +263 -263
- 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-archive.md +79 -79
- package/content/.claude/commands/morph-deploy.md +529 -0
- package/content/.claude/commands/morph-infra.md +209 -209
- package/content/.claude/commands/morph-preflight.md +227 -227
- package/content/.claude/commands/morph-troubleshoot.md +122 -122
- package/content/.claude/settings.local.json +15 -15
- package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
- package/content/.claude/skills/level-0-meta/README.md +7 -0
- package/content/.claude/skills/{checklists → level-0-meta}/morph-checklist.md +117 -117
- package/content/.claude/skills/level-1-workflows/README.md +7 -0
- package/content/.claude/skills/{workflows → level-1-workflows}/morph-replicate.md +213 -213
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-clarify.md +131 -131
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-design.md +213 -205
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-setup.md +106 -92
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-tasks.md +164 -164
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-uiux.md +169 -138
- package/content/.claude/skills/level-2-domains/README.md +14 -0
- package/content/.claude/skills/{specialists → level-2-domains/quality}/testing-specialist.md +126 -126
- package/content/.claude/skills/level-3-technologies/README.md +7 -0
- package/content/.claude/skills/level-4-patterns/README.md +7 -0
- package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
- package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
- package/content/.morph/.morphversion +5 -5
- package/content/.morph/archive/.gitkeep +25 -25
- package/content/.morph/config/agents.json +742 -358
- package/content/.morph/config/config.template.json +33 -0
- package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
- package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -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 -158
- package/content/.morph/examples/scheduled-reports/proposal.md +95 -95
- package/content/.morph/examples/scheduled-reports/spec.md +267 -267
- package/content/.morph/examples/state-v3.json +188 -188
- package/content/.morph/features/.gitkeep +25 -25
- package/content/.morph/hooks/README.md +158 -0
- 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/hooks/task-completed.js +73 -0
- package/content/.morph/hooks/teammate-idle.js +68 -0
- package/content/.morph/project.md +160 -160
- package/content/.morph/schemas/agent.schema.json +296 -296
- package/content/.morph/schemas/tasks.schema.json +220 -220
- package/content/.morph/specs/.gitkeep +20 -20
- package/content/.morph/standards/agent-teams-workflow.md +474 -0
- package/content/.morph/standards/coding.md +377 -377
- 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/CONTEXT-FEATURE.md +276 -0
- package/content/.morph/templates/CONTEXT.md +170 -0
- package/content/.morph/templates/FluentDesignTheme.cs +149 -149
- package/content/.morph/templates/MudTheme.cs +281 -281
- package/content/.morph/templates/clarify-questions.md +159 -159
- package/content/.morph/templates/component.razor +239 -239
- package/content/.morph/templates/contracts/Commands.cs +74 -74
- package/content/.morph/templates/contracts/Entities.cs +25 -25
- package/content/.morph/templates/contracts/Queries.cs +74 -74
- package/content/.morph/templates/contracts/README.md +74 -74
- package/content/.morph/templates/contracts.cs +217 -217
- 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/azure-pipelines-deploy.yml +480 -0
- 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 -426
- 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/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/sprint-status.yaml +68 -68
- package/content/.morph/templates/story.md +143 -143
- package/content/.morph/templates/test.cs +239 -239
- 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/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/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/templates.md +418 -418
- package/package.json +1 -1
- package/scripts/postinstall.js +132 -132
- package/src/commands/advance-phase.js +83 -0
- package/src/commands/analyze-blazor-concurrency.js +193 -193
- package/src/commands/create-story.js +351 -351
- package/src/commands/deploy.js +780 -0
- package/src/commands/detect-agents.js +34 -6
- package/src/commands/detect.js +104 -104
- package/src/commands/generate-context.js +40 -0
- package/src/commands/generate.js +149 -149
- package/src/commands/lint-fluent.js +352 -352
- package/src/commands/rollback-phase.js +185 -185
- package/src/commands/session-summary.js +291 -291
- 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/troubleshoot.js +222 -222
- package/src/commands/validate-blazor-state.js +210 -210
- package/src/commands/validate-blazor.js +156 -156
- package/src/commands/validate-css.js +84 -84
- package/src/commands/validate-phase.js +221 -221
- package/src/lib/blazor-concurrency-analyzer.js +288 -288
- package/src/lib/blazor-state-validator.js +291 -291
- package/src/lib/blazor-validator.js +374 -374
- package/src/lib/context-generator.js +513 -0
- package/src/lib/css-validator.js +352 -352
- package/src/lib/design-system-detector.js +187 -0
- package/src/lib/design-system-generator.js +298 -298
- package/src/lib/design-system-scaffolder.js +299 -0
- package/src/lib/hook-executor.js +256 -0
- package/src/lib/learning-system.js +520 -520
- package/src/lib/mockup-generator.js +366 -366
- package/src/lib/spec-validator.js +258 -0
- package/src/lib/standards-context-injector.js +287 -0
- package/src/lib/team-orchestrator.js +322 -0
- package/src/lib/troubleshoot-grep.js +194 -194
- package/src/lib/troubleshoot-index.js +144 -144
- package/src/lib/ui-detector.js +350 -350
- package/src/lib/validation-runner.js +65 -13
- package/src/lib/validators/architecture-validator.js +387 -387
- package/src/lib/validators/design-system-validator.js +231 -0
- package/src/lib/validators/package-validator.js +360 -360
- package/src/lib/validators/ui-contrast-validator.js +422 -422
- package/src/utils/file-copier.js +9 -1
- package/src/utils/logger.js +32 -32
- package/src/utils/version-checker.js +175 -175
- /package/content/.claude/skills/{checklists → level-0-meta}/code-review.md +0 -0
- /package/content/.claude/skills/{checklists → level-0-meta}/simulation-checklist.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/ai-agents}/ai-system-architect.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/architecture}/standards-architect.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/dotnet-senior.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/ef-modeler.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/hangfire-orchestrator.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/ms-agent-expert.md +0 -0
- /package/content/.claude/skills/{stacks/dotnet-blazor.md → level-2-domains/frontend/blazor-builder.md} +0 -0
- /package/content/.claude/skills/{stacks/dotnet-nextjs.md → level-2-domains/frontend/nextjs-expert.md} +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/frontend}/ui-ux-designer.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/bicep-architect.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/container-specialist.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/devops-engineer.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/asaas-financial.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/azure-identity.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/clerk-auth.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/resend-email.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/quality}/code-analyzer.md +0 -0
|
@@ -1,164 +1,164 @@
|
|
|
1
|
-
# MORPH Tasks - FASE 4
|
|
2
|
-
|
|
3
|
-
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
4
|
-
|
|
5
|
-
Quebre a especificação em tasks executáveis, defina ordem de execução e estabeleça checkpoints.
|
|
6
|
-
|
|
7
|
-
## Pré-requisitos
|
|
8
|
-
|
|
9
|
-
- [ ] FASE 3 (Clarify) concluída
|
|
10
|
-
- [ ] `spec.md` atualizado com clarificações
|
|
11
|
-
- [ ] Todos os edge cases documentados
|
|
12
|
-
|
|
13
|
-
## Workflow
|
|
14
|
-
|
|
15
|
-
### Passo 1: Analisar Spec
|
|
16
|
-
|
|
17
|
-
Leia `.morph/project/outputs/{feature}/spec.md` e identifique:
|
|
18
|
-
|
|
19
|
-
1. **Requisitos funcionais** (FR001, FR002, ...)
|
|
20
|
-
2. **Componentes técnicos** (Entities, Services, Controllers, Pages)
|
|
21
|
-
3. **Infraestrutura** (Bicep, migrations, configs)
|
|
22
|
-
4. **Testes** (Unit tests, integration tests)
|
|
23
|
-
|
|
24
|
-
### Passo 2: Quebrar em Tasks
|
|
25
|
-
|
|
26
|
-
Crie tasks no formato **T{NNN}** seguindo ordem lógica de implementação.
|
|
27
|
-
|
|
28
|
-
#### 2.1. Estrutura de Task
|
|
29
|
-
|
|
30
|
-
```json
|
|
31
|
-
{
|
|
32
|
-
"id": "T001",
|
|
33
|
-
"title": "Criar Entity {Nome}",
|
|
34
|
-
"description": "Implementar entity {Nome} com propriedades X, Y, Z seguindo padrões EF Core",
|
|
35
|
-
"category": "domain",
|
|
36
|
-
"dependencies": [],
|
|
37
|
-
"estimatedMinutes": 30,
|
|
38
|
-
"status": "pending",
|
|
39
|
-
"specSections": ["## Domain Model", "## Business Rules"],
|
|
40
|
-
"contractInterfaces": ["I{Nome}Repository"],
|
|
41
|
-
"files": [
|
|
42
|
-
"Domain/Entities/{Nome}.cs",
|
|
43
|
-
"Infrastructure/Data/Configurations/{Nome}Configuration.cs"
|
|
44
|
-
]
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
#### 2.2. Categorias de Tasks
|
|
49
|
-
|
|
50
|
-
| Categoria | Descrição | Exemplos |
|
|
51
|
-
|-----------|-----------|----------|
|
|
52
|
-
| **domain** | Entities, Value Objects, Enums | Entity, DomainException |
|
|
53
|
-
| **application** | Services, DTOs, Interfaces | Service, Validator, Mapper |
|
|
54
|
-
| **infrastructure** | DbContext, Repositories, External APIs | EF Config, Repository impl |
|
|
55
|
-
| **presentation** | Controllers, Pages, Components | API endpoint, Blazor page |
|
|
56
|
-
| **tests** | Unit tests, Integration tests | Service tests, API tests |
|
|
57
|
-
| **infra** | Bicep, Migrations, Scripts | Azure resources, DB migration |
|
|
58
|
-
| **docs** | README, API docs, Swagger | OpenAPI spec, README update |
|
|
59
|
-
|
|
60
|
-
#### 2.3. Ordem de Implementação
|
|
61
|
-
|
|
62
|
-
**Bottom-up approach:**
|
|
63
|
-
```
|
|
64
|
-
1. Domain (Entities, Enums, Value Objects)
|
|
65
|
-
↓
|
|
66
|
-
2. Infrastructure (Repositories, DbContext configs)
|
|
67
|
-
↓
|
|
68
|
-
3. Application (Services, DTOs, Business logic)
|
|
69
|
-
↓
|
|
70
|
-
4. Presentation (Controllers, Pages, Components)
|
|
71
|
-
↓
|
|
72
|
-
5. Tests (Unit → Integration)
|
|
73
|
-
↓
|
|
74
|
-
6. Infra (Bicep, Migrations, Deploy scripts)
|
|
75
|
-
↓
|
|
76
|
-
7. Docs (README, Swagger, Comments)
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Passo 3: Definir Dependências
|
|
80
|
-
|
|
81
|
-
Para cada task, especifique dependências:
|
|
82
|
-
|
|
83
|
-
```json
|
|
84
|
-
{
|
|
85
|
-
"id": "T005",
|
|
86
|
-
"title": "Criar {Nome}Service",
|
|
87
|
-
"dependencies": ["T001", "T002"],
|
|
88
|
-
"status": "pending"
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
**Regra:** Task só pode ser executada quando todas as dependências estão `completed`.
|
|
93
|
-
|
|
94
|
-
### Passo 4: Estabelecer Checkpoints
|
|
95
|
-
|
|
96
|
-
Defina checkpoints a cada **3 tasks** ou **marcos significativos**:
|
|
97
|
-
|
|
98
|
-
```json
|
|
99
|
-
{
|
|
100
|
-
"id": "CHECKPOINT_001",
|
|
101
|
-
"title": "Domain Layer Completo",
|
|
102
|
-
"afterTasks": ["T001", "T002", "T003"],
|
|
103
|
-
"validations": [
|
|
104
|
-
"Todas as entities criadas",
|
|
105
|
-
"Migrations aplicadas",
|
|
106
|
-
"Testes de domain passando"
|
|
107
|
-
]
|
|
108
|
-
}
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### Passo 5: Estimar Esforço
|
|
112
|
-
|
|
113
|
-
Para cada task, estime tempo em minutos:
|
|
114
|
-
|
|
115
|
-
| Complexidade | Tempo Estimado |
|
|
116
|
-
|--------------|----------------|
|
|
117
|
-
| Trivial (CRUD básico) | 15-30 min |
|
|
118
|
-
| Simples (Service, Controller) | 30-60 min |
|
|
119
|
-
| Média (Business logic, validações) | 60-120 min |
|
|
120
|
-
| Complexa (Integrações, AI) | 120-240 min |
|
|
121
|
-
|
|
122
|
-
### Passo 6: Gerar `tasks.json`
|
|
123
|
-
|
|
124
|
-
Crie `.morph/project/outputs/{feature}/tasks.json` com a estrutura completa de tasks, checkpoints e estimativas.
|
|
125
|
-
|
|
126
|
-
### Passo 7: Incluir Tasks de IaC (se necessário)
|
|
127
|
-
|
|
128
|
-
Se houver recursos Azure, adicionar tasks de Bicep e migrations.
|
|
129
|
-
|
|
130
|
-
### Passo 8: Atualizar State
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
npx morph-spec state set {feature-name} phase tasks
|
|
134
|
-
npx morph-spec state set {feature-name} tasks.total {N}
|
|
135
|
-
npx morph-spec state mark-output {feature-name} tasks
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
## Outputs Gerados
|
|
139
|
-
|
|
140
|
-
- `.morph/project/outputs/{feature}/tasks.json` - Breakdown completo de tasks
|
|
141
|
-
|
|
142
|
-
## PAUSA OBRIGATÓRIA
|
|
143
|
-
|
|
144
|
-
Apresente ao usuário 3 ações sugeridas:
|
|
145
|
-
|
|
146
|
-
1. **Aprovar breakdown e iniciar implementação**
|
|
147
|
-
2. **Repriorizar tasks** - Mudar ordem de execução
|
|
148
|
-
3. **Adicionar/remover tasks** - Ajustar escopo
|
|
149
|
-
|
|
150
|
-
## Critérios de Avanço
|
|
151
|
-
|
|
152
|
-
- [x] `tasks.json` criado com todas as tasks
|
|
153
|
-
- [x] Tasks categorizadas corretamente
|
|
154
|
-
- [x] Dependências mapeadas
|
|
155
|
-
- [x] Checkpoints definidos (a cada 3 tasks)
|
|
156
|
-
- [x] Esforço estimado por task
|
|
157
|
-
- [x] Ordem de execução clara
|
|
158
|
-
- [x] Tasks de IaC incluídas (se aplicável)
|
|
159
|
-
- [x] State atualizado com total de tasks
|
|
160
|
-
- [x] Usuário aprovou breakdown
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
Após aprovação: "Planejamento completo! Execute `/morph-apply {feature}` para iniciar implementação."
|
|
1
|
+
# MORPH Tasks - FASE 4
|
|
2
|
+
|
|
3
|
+
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
4
|
+
|
|
5
|
+
Quebre a especificação em tasks executáveis, defina ordem de execução e estabeleça checkpoints.
|
|
6
|
+
|
|
7
|
+
## Pré-requisitos
|
|
8
|
+
|
|
9
|
+
- [ ] FASE 3 (Clarify) concluída
|
|
10
|
+
- [ ] `spec.md` atualizado com clarificações
|
|
11
|
+
- [ ] Todos os edge cases documentados
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
### Passo 1: Analisar Spec
|
|
16
|
+
|
|
17
|
+
Leia `.morph/project/outputs/{feature}/spec.md` e identifique:
|
|
18
|
+
|
|
19
|
+
1. **Requisitos funcionais** (FR001, FR002, ...)
|
|
20
|
+
2. **Componentes técnicos** (Entities, Services, Controllers, Pages)
|
|
21
|
+
3. **Infraestrutura** (Bicep, migrations, configs)
|
|
22
|
+
4. **Testes** (Unit tests, integration tests)
|
|
23
|
+
|
|
24
|
+
### Passo 2: Quebrar em Tasks
|
|
25
|
+
|
|
26
|
+
Crie tasks no formato **T{NNN}** seguindo ordem lógica de implementação.
|
|
27
|
+
|
|
28
|
+
#### 2.1. Estrutura de Task
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"id": "T001",
|
|
33
|
+
"title": "Criar Entity {Nome}",
|
|
34
|
+
"description": "Implementar entity {Nome} com propriedades X, Y, Z seguindo padrões EF Core",
|
|
35
|
+
"category": "domain",
|
|
36
|
+
"dependencies": [],
|
|
37
|
+
"estimatedMinutes": 30,
|
|
38
|
+
"status": "pending",
|
|
39
|
+
"specSections": ["## Domain Model", "## Business Rules"],
|
|
40
|
+
"contractInterfaces": ["I{Nome}Repository"],
|
|
41
|
+
"files": [
|
|
42
|
+
"Domain/Entities/{Nome}.cs",
|
|
43
|
+
"Infrastructure/Data/Configurations/{Nome}Configuration.cs"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
#### 2.2. Categorias de Tasks
|
|
49
|
+
|
|
50
|
+
| Categoria | Descrição | Exemplos |
|
|
51
|
+
|-----------|-----------|----------|
|
|
52
|
+
| **domain** | Entities, Value Objects, Enums | Entity, DomainException |
|
|
53
|
+
| **application** | Services, DTOs, Interfaces | Service, Validator, Mapper |
|
|
54
|
+
| **infrastructure** | DbContext, Repositories, External APIs | EF Config, Repository impl |
|
|
55
|
+
| **presentation** | Controllers, Pages, Components | API endpoint, Blazor page |
|
|
56
|
+
| **tests** | Unit tests, Integration tests | Service tests, API tests |
|
|
57
|
+
| **infra** | Bicep, Migrations, Scripts | Azure resources, DB migration |
|
|
58
|
+
| **docs** | README, API docs, Swagger | OpenAPI spec, README update |
|
|
59
|
+
|
|
60
|
+
#### 2.3. Ordem de Implementação
|
|
61
|
+
|
|
62
|
+
**Bottom-up approach:**
|
|
63
|
+
```
|
|
64
|
+
1. Domain (Entities, Enums, Value Objects)
|
|
65
|
+
↓
|
|
66
|
+
2. Infrastructure (Repositories, DbContext configs)
|
|
67
|
+
↓
|
|
68
|
+
3. Application (Services, DTOs, Business logic)
|
|
69
|
+
↓
|
|
70
|
+
4. Presentation (Controllers, Pages, Components)
|
|
71
|
+
↓
|
|
72
|
+
5. Tests (Unit → Integration)
|
|
73
|
+
↓
|
|
74
|
+
6. Infra (Bicep, Migrations, Deploy scripts)
|
|
75
|
+
↓
|
|
76
|
+
7. Docs (README, Swagger, Comments)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Passo 3: Definir Dependências
|
|
80
|
+
|
|
81
|
+
Para cada task, especifique dependências:
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"id": "T005",
|
|
86
|
+
"title": "Criar {Nome}Service",
|
|
87
|
+
"dependencies": ["T001", "T002"],
|
|
88
|
+
"status": "pending"
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Regra:** Task só pode ser executada quando todas as dependências estão `completed`.
|
|
93
|
+
|
|
94
|
+
### Passo 4: Estabelecer Checkpoints
|
|
95
|
+
|
|
96
|
+
Defina checkpoints a cada **3 tasks** ou **marcos significativos**:
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"id": "CHECKPOINT_001",
|
|
101
|
+
"title": "Domain Layer Completo",
|
|
102
|
+
"afterTasks": ["T001", "T002", "T003"],
|
|
103
|
+
"validations": [
|
|
104
|
+
"Todas as entities criadas",
|
|
105
|
+
"Migrations aplicadas",
|
|
106
|
+
"Testes de domain passando"
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Passo 5: Estimar Esforço
|
|
112
|
+
|
|
113
|
+
Para cada task, estime tempo em minutos:
|
|
114
|
+
|
|
115
|
+
| Complexidade | Tempo Estimado |
|
|
116
|
+
|--------------|----------------|
|
|
117
|
+
| Trivial (CRUD básico) | 15-30 min |
|
|
118
|
+
| Simples (Service, Controller) | 30-60 min |
|
|
119
|
+
| Média (Business logic, validações) | 60-120 min |
|
|
120
|
+
| Complexa (Integrações, AI) | 120-240 min |
|
|
121
|
+
|
|
122
|
+
### Passo 6: Gerar `tasks.json`
|
|
123
|
+
|
|
124
|
+
Crie `.morph/project/outputs/{feature}/tasks.json` com a estrutura completa de tasks, checkpoints e estimativas.
|
|
125
|
+
|
|
126
|
+
### Passo 7: Incluir Tasks de IaC (se necessário)
|
|
127
|
+
|
|
128
|
+
Se houver recursos Azure, adicionar tasks de Bicep e migrations.
|
|
129
|
+
|
|
130
|
+
### Passo 8: Atualizar State
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
npx morph-spec state set {feature-name} phase tasks
|
|
134
|
+
npx morph-spec state set {feature-name} tasks.total {N}
|
|
135
|
+
npx morph-spec state mark-output {feature-name} tasks
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Outputs Gerados
|
|
139
|
+
|
|
140
|
+
- `.morph/project/outputs/{feature}/tasks.json` - Breakdown completo de tasks
|
|
141
|
+
|
|
142
|
+
## PAUSA OBRIGATÓRIA
|
|
143
|
+
|
|
144
|
+
Apresente ao usuário 3 ações sugeridas:
|
|
145
|
+
|
|
146
|
+
1. **Aprovar breakdown e iniciar implementação**
|
|
147
|
+
2. **Repriorizar tasks** - Mudar ordem de execução
|
|
148
|
+
3. **Adicionar/remover tasks** - Ajustar escopo
|
|
149
|
+
|
|
150
|
+
## Critérios de Avanço
|
|
151
|
+
|
|
152
|
+
- [x] `tasks.json` criado com todas as tasks
|
|
153
|
+
- [x] Tasks categorizadas corretamente
|
|
154
|
+
- [x] Dependências mapeadas
|
|
155
|
+
- [x] Checkpoints definidos (a cada 3 tasks)
|
|
156
|
+
- [x] Esforço estimado por task
|
|
157
|
+
- [x] Ordem de execução clara
|
|
158
|
+
- [x] Tasks de IaC incluídas (se aplicável)
|
|
159
|
+
- [x] State atualizado com total de tasks
|
|
160
|
+
- [x] Usuário aprovou breakdown
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
Após aprovação: "Planejamento completo! Execute `/morph-apply {feature}` para iniciar implementação."
|
|
@@ -1,138 +1,169 @@
|
|
|
1
|
-
# MORPH UI/UX Design - FASE 1.5
|
|
2
|
-
|
|
3
|
-
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
4
|
-
|
|
5
|
-
Fase condicional para features com front-end. Coleta requisitos de UI/UX, gera wireframes, specs de componentes e fluxos de usuário.
|
|
6
|
-
|
|
7
|
-
## Pré-requisitos
|
|
8
|
-
|
|
9
|
-
- [ ] FASE 1 (Setup) concluída
|
|
10
|
-
- [ ] Feature tem keywords de UI detectadas (blazor, ui, component, page, dashboard, wizard, form, chart)
|
|
11
|
-
- [ ] `uiux-designer` agent ativado
|
|
12
|
-
|
|
13
|
-
## Workflow
|
|
14
|
-
|
|
15
|
-
### Passo
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npx morph-spec
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Se
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
1
|
+
# MORPH UI/UX Design - FASE 1.5
|
|
2
|
+
|
|
3
|
+
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
4
|
+
|
|
5
|
+
Fase condicional para features com front-end. Coleta requisitos de UI/UX, gera wireframes, specs de componentes e fluxos de usuário.
|
|
6
|
+
|
|
7
|
+
## Pré-requisitos
|
|
8
|
+
|
|
9
|
+
- [ ] FASE 1 (Setup) concluída
|
|
10
|
+
- [ ] Feature tem keywords de UI detectadas (blazor, ui, component, page, dashboard, wizard, form, chart)
|
|
11
|
+
- [ ] `uiux-designer` agent ativado
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
### Passo 0: Verificar Design System Existe
|
|
16
|
+
|
|
17
|
+
**CRITICAL:** Antes de iniciar a FASE UI/UX, verifique se um design system existe:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx morph-spec detect-agents "{feature description}"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Se nenhum design system for detectado (verificar output):
|
|
24
|
+
|
|
25
|
+
1. **Opção A - Scaffold automático:**
|
|
26
|
+
- O sistema criará automaticamente um design system ao avançar para implementação
|
|
27
|
+
- Você pode gerar manualmente agora: `npx morph-spec generate design-system`
|
|
28
|
+
|
|
29
|
+
2. **Opção B - Criar manualmente:**
|
|
30
|
+
- Crie `.morph/project/design-system.md` (project-level, compartilhado)
|
|
31
|
+
- Ou `.morph/project/outputs/{feature}/ui-design-system.md` (feature-specific)
|
|
32
|
+
|
|
33
|
+
3. **Opção C - Scan existing CSS:**
|
|
34
|
+
- Se o projeto já tem CSS com variáveis: `npx morph-spec generate design-system --scan`
|
|
35
|
+
|
|
36
|
+
**⚠️ IMPORTANTE:**
|
|
37
|
+
- Design system é **obrigatório** para features UI
|
|
38
|
+
- Gate automático bloqueará implementação (FASE 5) se design system não existir
|
|
39
|
+
- Melhor criar agora para garantir consistência visual
|
|
40
|
+
|
|
41
|
+
### Passo 1: Detectar Se Fase É Necessária
|
|
42
|
+
|
|
43
|
+
Verifique se agentes ativos incluem `uiux-designer`:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx morph-spec state get {feature-name}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Se `uiux-designer` NÃO estiver nos `activeAgents`, pule esta fase e continue para FASE 2 (Design).
|
|
50
|
+
|
|
51
|
+
### Passo 2: Coletar Input do Usuário
|
|
52
|
+
|
|
53
|
+
**SEMPRE perguntar ao usuário PRIMEIRO:**
|
|
54
|
+
|
|
55
|
+
1. **Layout e estilo**:
|
|
56
|
+
- Você tem alguma ideia de layout em mente?
|
|
57
|
+
- Tem alguma referência visual? (sites, apps, screenshots)
|
|
58
|
+
- Como imagina o fluxo do usuário?
|
|
59
|
+
|
|
60
|
+
2. **Componentes e interações**:
|
|
61
|
+
- Quais os principais componentes desta tela/página?
|
|
62
|
+
- Quais estados precisam ser considerados? (loading, error, empty, success)
|
|
63
|
+
|
|
64
|
+
3. **Imagens de referência**:
|
|
65
|
+
- Tem imagens de exemplo que eu possa analisar?
|
|
66
|
+
- Se SIM: use Read tool para ler screenshots e extrair padrões
|
|
67
|
+
|
|
68
|
+
### Passo 3: Decidir Biblioteca UI
|
|
69
|
+
|
|
70
|
+
Escolha entre **Fluent UI Blazor** (recomendado para AI-first) ou **MudBlazor** (componentes complexos):
|
|
71
|
+
|
|
72
|
+
**Critérios:**
|
|
73
|
+
- Fluent UI: Para dashboards, forms simples, AI components, Microsoft design language
|
|
74
|
+
- MudBlazor: Para data grids avançadas, charts complexos, material design
|
|
75
|
+
|
|
76
|
+
**Documente a decisão em `decisions.md`.**
|
|
77
|
+
|
|
78
|
+
### Passo 4: Gerar Deliverables
|
|
79
|
+
|
|
80
|
+
Crie os seguintes arquivos em `.morph/project/outputs/{feature}/`:
|
|
81
|
+
|
|
82
|
+
#### 4.1. `ui-design-system.md`
|
|
83
|
+
|
|
84
|
+
**Se design system project-level existe (`.morph/project/design-system.md`):**
|
|
85
|
+
- Referencie-o nos specs: "Uses project design system at .morph/project/design-system.md"
|
|
86
|
+
- Crie `ui-design-system.md` apenas se houver cores/componentes **específicos** da feature
|
|
87
|
+
|
|
88
|
+
**Se não existe:**
|
|
89
|
+
- Crie design system feature-level completo com:
|
|
90
|
+
- Paleta de cores (primary, secondary, accent, semantic)
|
|
91
|
+
- Tipografia (heading scales, body text, code)
|
|
92
|
+
- Spacing e layout (grid, margins, paddings)
|
|
93
|
+
- Componentes base (buttons, inputs, cards)
|
|
94
|
+
|
|
95
|
+
#### 4.2. `ui-mockups.md`
|
|
96
|
+
|
|
97
|
+
Wireframes ASCII + descrições:
|
|
98
|
+
- Layout geral de cada tela/página
|
|
99
|
+
- Posicionamento de componentes
|
|
100
|
+
- Responsividade (desktop, tablet, mobile)
|
|
101
|
+
- Estados (loading, error, empty, success)
|
|
102
|
+
|
|
103
|
+
#### 4.3. `ui-components.md`
|
|
104
|
+
|
|
105
|
+
Specs técnicas de componentes Fluent UI/MudBlazor:
|
|
106
|
+
- Componente a usar (FluentButton, MudDataGrid, etc.)
|
|
107
|
+
- Props e configurações
|
|
108
|
+
- Eventos e bindings
|
|
109
|
+
- Validações e estados
|
|
110
|
+
|
|
111
|
+
#### 4.4. `ui-flows.md`
|
|
112
|
+
|
|
113
|
+
Fluxos de usuário completos:
|
|
114
|
+
- User stories
|
|
115
|
+
- Diagramas de fluxo (texto/ASCII)
|
|
116
|
+
- Edge cases (o que acontece se...?)
|
|
117
|
+
- Validações e feedback
|
|
118
|
+
|
|
119
|
+
### Passo 5: Validar Acessibilidade e Responsividade
|
|
120
|
+
|
|
121
|
+
Documente nos arquivos UI:
|
|
122
|
+
- **WCAG 2.1 Level AA** compliance
|
|
123
|
+
- Contraste de cores adequado
|
|
124
|
+
- Labels acessíveis para screen readers
|
|
125
|
+
- Navegação por teclado
|
|
126
|
+
- **Responsive breakpoints**
|
|
127
|
+
- Desktop (>1200px)
|
|
128
|
+
- Tablet (768px - 1199px)
|
|
129
|
+
- Mobile (<768px)
|
|
130
|
+
|
|
131
|
+
### Passo 6: Atualizar State
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
npx morph-spec state set {feature-name} phase uiux-design
|
|
135
|
+
npx morph-spec state mark-output {feature-name} ui-design-system
|
|
136
|
+
npx morph-spec state mark-output {feature-name} ui-mockups
|
|
137
|
+
npx morph-spec state mark-output {feature-name} ui-components
|
|
138
|
+
npx morph-spec state mark-output {feature-name} ui-flows
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Outputs Gerados
|
|
142
|
+
|
|
143
|
+
- `.morph/project/outputs/{feature}/ui-design-system.md`
|
|
144
|
+
- `.morph/project/outputs/{feature}/ui-mockups.md`
|
|
145
|
+
- `.morph/project/outputs/{feature}/ui-components.md`
|
|
146
|
+
- `.morph/project/outputs/{feature}/ui-flows.md`
|
|
147
|
+
- `.morph/project/outputs/{feature}/decisions.md` (atualizado com ADR UI library)
|
|
148
|
+
|
|
149
|
+
## PAUSA OBRIGATÓRIA
|
|
150
|
+
|
|
151
|
+
Apresente ao usuário 3 ações sugeridas:
|
|
152
|
+
|
|
153
|
+
1. **Aprovar UI/UX e prosseguir para design técnico**
|
|
154
|
+
2. **Ajustar wireframes/componentes de telas específicas**
|
|
155
|
+
3. **Revisar biblioteca UI escolhida (Fluent UI / MudBlazor)**
|
|
156
|
+
|
|
157
|
+
## Critérios de Avanço
|
|
158
|
+
|
|
159
|
+
- [x] Input do usuário coletado (layout, referências)
|
|
160
|
+
- [x] Biblioteca UI escolhida e justificada (ADR)
|
|
161
|
+
- [x] 4 deliverables criados (design-system, mockups, components, flows)
|
|
162
|
+
- [x] Acessibilidade WCAG 2.1 documentada
|
|
163
|
+
- [x] Responsividade especificada
|
|
164
|
+
- [x] State atualizado
|
|
165
|
+
- [x] Usuário aprovou UI/UX
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
Continuar automaticamente para FASE 2 (Design) após aprovação.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Level 2: Domains
|
|
2
|
+
|
|
3
|
+
Domain expertise skills organized by squad.
|
|
4
|
+
|
|
5
|
+
**Purpose:** Skills that provide deep domain knowledge (backend, frontend, infra, quality, ai-agents, integrations).
|
|
6
|
+
|
|
7
|
+
**Squads:**
|
|
8
|
+
- backend/ - Backend Squad (led by dotnet-senior)
|
|
9
|
+
- frontend/ - Frontend Squad (led by ui-designer)
|
|
10
|
+
- infrastructure/ - Infrastructure Squad (led by azure-architect)
|
|
11
|
+
- quality/ - Quality Squad (coordinated by standards-architect)
|
|
12
|
+
- ai-agents/ - AI/Agent specialists
|
|
13
|
+
- integrations/ - External integration specialists
|
|
14
|
+
- architecture/ - Architecture and planning
|