@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
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# Skill: /morph-replicate
|
|
2
|
+
|
|
3
|
+
> Workflow simplificado para replicar prototipos HTML em Blazor.
|
|
4
|
+
> Use quando tiver um prototipo HTML pronto e precisar converter para codigo Blazor funcional.
|
|
5
|
+
|
|
6
|
+
## Comando
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
/morph-replicate {feature-name} {prototype-path}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
**Exemplo:**
|
|
13
|
+
```bash
|
|
14
|
+
/morph-replicate ui-redesign prototipo/
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Workflow Simplificado
|
|
20
|
+
|
|
21
|
+
### FASE 1: ANALISE DO PROTOTIPO
|
|
22
|
+
|
|
23
|
+
1. **Ler todos os arquivos HTML em `{prototype-path}/`**
|
|
24
|
+
```bash
|
|
25
|
+
# Encontrar todos os arquivos HTML
|
|
26
|
+
glob: {prototype-path}/**/*.html
|
|
27
|
+
glob: {prototype-path}/**/code.html # Pattern comum de prototipos
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
2. **Extrair padroes de cada arquivo:**
|
|
31
|
+
- Layout (grid, flexbox, estrutura)
|
|
32
|
+
- Componentes (cards, buttons, forms, modals)
|
|
33
|
+
- Cores (extrair de inline styles e CSS)
|
|
34
|
+
- Fontes (font-family, sizes)
|
|
35
|
+
- Espacamentos (padding, margin, gap)
|
|
36
|
+
- Classes CSS usadas
|
|
37
|
+
|
|
38
|
+
3. **Gerar mapeamento HTML → Blazor:**
|
|
39
|
+
|
|
40
|
+
| HTML Pattern | Blazor Equivalente |
|
|
41
|
+
|--------------|-------------------|
|
|
42
|
+
| `<button class="btn-primary">` | `<FluentButton Appearance="Appearance.Accent">` |
|
|
43
|
+
| `<div class="card">` | `<FluentCard>` ou HTML customizado |
|
|
44
|
+
| `<input type="text">` | `<FluentTextField>` |
|
|
45
|
+
| `<div class="modal">` | Modal customizado (se design especifico) |
|
|
46
|
+
|
|
47
|
+
4. **Gerar lista de classes CSS a criar:**
|
|
48
|
+
```markdown
|
|
49
|
+
## Classes CSS Necessarias
|
|
50
|
+
|
|
51
|
+
- [ ] .page-layout
|
|
52
|
+
- [ ] .home-hero
|
|
53
|
+
- [ ] .card-premium
|
|
54
|
+
- [ ] .checkout-form
|
|
55
|
+
- [ ] .modal-overlay
|
|
56
|
+
- [ ] .animate-slideInUp
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**PAUSA:** Aprovar mapeamento e lista de CSS
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### FASE 2: TASKS (Lista de Telas)
|
|
64
|
+
|
|
65
|
+
Gerar lista de telas para implementar na ordem correta:
|
|
66
|
+
|
|
67
|
+
```markdown
|
|
68
|
+
## Tasks de Implementacao
|
|
69
|
+
|
|
70
|
+
### T001: Setup Design System
|
|
71
|
+
- Criar/atualizar wwwroot/css/design-system.css
|
|
72
|
+
- Adicionar todas as classes CSS listadas
|
|
73
|
+
- Validar com `morph-spec validate-css`
|
|
74
|
+
|
|
75
|
+
### T002: {Nome da Tela 1}
|
|
76
|
+
- Ler: {prototype-path}/{tela1}.html
|
|
77
|
+
- Criar/Atualizar: Pages/{Tela1}.razor
|
|
78
|
+
- Componentes: FluentCard, FluentButton, etc.
|
|
79
|
+
- CSS: .home-hero, .card-premium
|
|
80
|
+
|
|
81
|
+
### T003: {Nome da Tela 2}
|
|
82
|
+
- Ler: {prototype-path}/{tela2}.html
|
|
83
|
+
- Criar/Atualizar: Pages/{Tela2}.razor
|
|
84
|
+
- ...
|
|
85
|
+
|
|
86
|
+
### TXXX: Validacao Final
|
|
87
|
+
- Build completo
|
|
88
|
+
- `morph-spec validate-css`
|
|
89
|
+
- Testar responsividade
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**PAUSA:** Aprovar lista de tasks
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### FASE 3: IMPLEMENT (Por Tela)
|
|
97
|
+
|
|
98
|
+
Para cada tela, seguir este fluxo:
|
|
99
|
+
|
|
100
|
+
1. **Ler HTML do prototipo**
|
|
101
|
+
```
|
|
102
|
+
Read: {prototype-path}/{tela}.html
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
2. **Ler arquivo .razor atual** (se existir)
|
|
106
|
+
```
|
|
107
|
+
Read: Pages/{Tela}.razor
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
3. **Reescrever .razor usando Fluent UI/MudBlazor**
|
|
111
|
+
- Manter estrutura de layout do prototipo
|
|
112
|
+
- Substituir elementos HTML por componentes Blazor
|
|
113
|
+
- Aplicar classes CSS do design-system
|
|
114
|
+
|
|
115
|
+
4. **Adicionar CSS ao design-system.css**
|
|
116
|
+
- Se classe nova foi usada no .razor
|
|
117
|
+
- Seguir padrao de nomenclatura (prefixo por pagina)
|
|
118
|
+
|
|
119
|
+
5. **Build para validar**
|
|
120
|
+
```bash
|
|
121
|
+
dotnet build
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
6. **Validar CSS**
|
|
125
|
+
```bash
|
|
126
|
+
morph-spec validate-css src/MyApp.Web
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Outputs
|
|
132
|
+
|
|
133
|
+
Este workflow gera apenas:
|
|
134
|
+
|
|
135
|
+
| Arquivo | Descricao |
|
|
136
|
+
|---------|-----------|
|
|
137
|
+
| `.razor` files | Paginas convertidas |
|
|
138
|
+
| `design-system.css` | CSS atualizado |
|
|
139
|
+
| `recap.md` | Resumo da implementacao (ao final) |
|
|
140
|
+
|
|
141
|
+
**NAO gera:** proposal.md, spec.md, contracts.cs, tasks.json
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Exemplo de Execucao
|
|
146
|
+
|
|
147
|
+
```markdown
|
|
148
|
+
/morph-replicate checkout-redesign prototipo/checkout/
|
|
149
|
+
|
|
150
|
+
📁 Analisando prototipo em prototipo/checkout/...
|
|
151
|
+
|
|
152
|
+
**Arquivos encontrados:**
|
|
153
|
+
- step1-cart.html
|
|
154
|
+
- step2-payment.html
|
|
155
|
+
- step3-confirmation.html
|
|
156
|
+
|
|
157
|
+
**Padroes extraidos:**
|
|
158
|
+
|
|
159
|
+
Cores:
|
|
160
|
+
- Primary: #FF6B35
|
|
161
|
+
- Secondary: #2D3047
|
|
162
|
+
- Background: #FAFAFA
|
|
163
|
+
|
|
164
|
+
Classes CSS a criar:
|
|
165
|
+
- [ ] .checkout-layout
|
|
166
|
+
- [ ] .checkout-steps
|
|
167
|
+
- [ ] .checkout-form
|
|
168
|
+
- [ ] .checkout-summary
|
|
169
|
+
- [ ] .payment-options
|
|
170
|
+
- [ ] .confirmation-message
|
|
171
|
+
|
|
172
|
+
Mapeamento HTML → Blazor:
|
|
173
|
+
- form.checkout-form → EditForm + FluentTextField
|
|
174
|
+
- div.payment-card → FluentCard
|
|
175
|
+
- button.btn-pay → FluentButton Accent
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
⛔ **PAUSA OBRIGATORIA**
|
|
180
|
+
|
|
181
|
+
**Proximos passos:**
|
|
182
|
+
1. ✅ Aprovar e gerar tasks de implementacao
|
|
183
|
+
2. 🔄 Ajustar mapeamento
|
|
184
|
+
3. 📋 Ver mais detalhes dos componentes
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Quando Usar
|
|
190
|
+
|
|
191
|
+
- ✅ Prototipo HTML pronto (Figma export, hand-coded, etc.)
|
|
192
|
+
- ✅ Design ja aprovado pelo cliente
|
|
193
|
+
- ✅ Apenas conversao visual (sem logica de negocio nova)
|
|
194
|
+
- ✅ Codigo Blazor existente para atualizar
|
|
195
|
+
|
|
196
|
+
## Quando NAO Usar
|
|
197
|
+
|
|
198
|
+
- ❌ Feature nova com logica complexa (use FULL MORPH)
|
|
199
|
+
- ❌ Infraestrutura Azure necessaria (use FULL MORPH)
|
|
200
|
+
- ❌ Sem prototipo definido (use STANDARD ou FULL MORPH)
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Referencias
|
|
205
|
+
|
|
206
|
+
- [HTML to Blazor Guide](../../../../framework/standards/html-to-blazor.md)
|
|
207
|
+
- [CSS Naming Convention](../../../../framework/standards/css-naming.md)
|
|
208
|
+
- [CSS Animations](../../../../framework/standards/css-animations.md)
|
|
209
|
+
- [Fluent UI Blazor](../../../../framework/standards/fluent-ui-blazor.md)
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
*MORPH-SPEC v2.2.0 by Polymorphism Tech*
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
# MORPH Clarify - FASE 3
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Uso
|
|
3
|
+
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
/morph-clarify {feature-name}
|
|
9
|
-
```
|
|
5
|
+
Identifique ambiguidades na especificação e faça perguntas de clarificação para garantir que todos os edge cases estão cobertos.
|
|
10
6
|
|
|
11
7
|
## Pré-requisitos
|
|
12
8
|
|
|
@@ -60,24 +56,6 @@ Com base na análise, gere **3-7 perguntas** focadas e específicas:
|
|
|
60
56
|
**Impact:** {Como a resposta afeta a implementação}
|
|
61
57
|
```
|
|
62
58
|
|
|
63
|
-
**Exemplo:**
|
|
64
|
-
|
|
65
|
-
```markdown
|
|
66
|
-
### Q1: Validação - Limite de Nome de Projeto
|
|
67
|
-
|
|
68
|
-
**Context:** O spec menciona "nome de projeto" mas não especifica limites.
|
|
69
|
-
|
|
70
|
-
**Question:** Qual o comprimento máximo do nome de projeto?
|
|
71
|
-
|
|
72
|
-
**Options:**
|
|
73
|
-
- A) 50 caracteres (padrão curto)
|
|
74
|
-
- B) 100 caracteres (padrão médio)
|
|
75
|
-
- C) 255 caracteres (padrão longo)
|
|
76
|
-
- D) Sem limite (validar apenas se não vazio)
|
|
77
|
-
|
|
78
|
-
**Impact:** Afeta validação do DTO, schema do banco, e UI (tamanho do input).
|
|
79
|
-
```
|
|
80
|
-
|
|
81
59
|
### Passo 3: Categorizar Perguntas
|
|
82
60
|
|
|
83
61
|
Organize perguntas por categoria:
|
|
@@ -108,16 +86,9 @@ Após receber respostas do usuário, atualize o spec com:
|
|
|
108
86
|
### Q1: {Título}
|
|
109
87
|
**Answer:** {Resposta do usuário}
|
|
110
88
|
**Date:** {YYYY-MM-DD}
|
|
111
|
-
|
|
112
|
-
### Q2: {Título}
|
|
113
|
-
**Answer:** {Resposta do usuário}
|
|
114
|
-
**Date:** {YYYY-MM-DD}
|
|
115
89
|
```
|
|
116
90
|
|
|
117
|
-
2. **Atualizar seções relevantes** com detalhes adicionados
|
|
118
|
-
- Requisitos funcionais mais específicos
|
|
119
|
-
- Validações documentadas
|
|
120
|
-
- Edge cases cobertos
|
|
91
|
+
2. **Atualizar seções relevantes** com detalhes adicionados
|
|
121
92
|
|
|
122
93
|
### Passo 6: Validar Edge Cases
|
|
123
94
|
|
|
@@ -130,19 +101,12 @@ Documente no spec como lidar com cada edge case identificado:
|
|
|
130
101
|
**Scenario:** {Quando acontece}
|
|
131
102
|
**Expected Behavior:** {Como o sistema deve reagir}
|
|
132
103
|
**Implementation Notes:** {Dicas para implementação}
|
|
133
|
-
|
|
134
|
-
**Example:**
|
|
135
|
-
- Input: {exemplo de entrada problemática}
|
|
136
|
-
- Output: {comportamento esperado}
|
|
137
104
|
```
|
|
138
105
|
|
|
139
106
|
### Passo 7: Atualizar State
|
|
140
107
|
|
|
141
108
|
```bash
|
|
142
|
-
|
|
143
|
-
node bin/state-manager.js set {feature-name} phase clarify
|
|
144
|
-
|
|
145
|
-
# State permanece in_progress até usuário responder todas as perguntas
|
|
109
|
+
npx morph-spec state set {feature-name} phase clarify
|
|
146
110
|
```
|
|
147
111
|
|
|
148
112
|
## Outputs Gerados/Atualizados
|
|
@@ -152,23 +116,6 @@ node bin/state-manager.js set {feature-name} phase clarify
|
|
|
152
116
|
- Edge cases documentados
|
|
153
117
|
- Requisitos mais específicos
|
|
154
118
|
|
|
155
|
-
## ⛔ PAUSA OBRIGATÓRIA
|
|
156
|
-
|
|
157
|
-
Apresente perguntas de clarificação e aguarde respostas do usuário.
|
|
158
|
-
|
|
159
|
-
**Não prossiga até ter todas as respostas!**
|
|
160
|
-
|
|
161
|
-
Após receber respostas, atualizar spec e apresentar:
|
|
162
|
-
|
|
163
|
-
1. ✅ **Aprovar clarificações e continuar para tasks**
|
|
164
|
-
Prosseguir para `/morph-tasks` (FASE 4)
|
|
165
|
-
|
|
166
|
-
2. 🔄 **Fazer mais perguntas** (se ainda houver dúvidas)
|
|
167
|
-
Iterar novamente nesta fase
|
|
168
|
-
|
|
169
|
-
3. 📋 **Revisar spec atualizado**
|
|
170
|
-
Validar que clarificações foram bem incorporadas
|
|
171
|
-
|
|
172
119
|
## Critérios de Avanço
|
|
173
120
|
|
|
174
121
|
- [x] Perguntas de clarificação identificadas (3-7)
|
|
@@ -181,4 +128,4 @@ Após receber respostas, atualizar spec e apresentar:
|
|
|
181
128
|
|
|
182
129
|
---
|
|
183
130
|
|
|
184
|
-
|
|
131
|
+
Continuar automaticamente para FASE 4 (Tasks) após clarificações resolvidas.
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
# MORPH Design - FASE 2
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Uso
|
|
3
|
+
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
/morph-design {feature-name}
|
|
9
|
-
```
|
|
5
|
+
Expanda a proposta em especificação técnica completa, contracts, decisões arquiteturais e estimativa de custos.
|
|
10
6
|
|
|
11
7
|
## Pré-requisitos
|
|
12
8
|
|
|
@@ -21,8 +17,7 @@ Expanda a proposta em especificação técnica completa, contracts, decisões ar
|
|
|
21
17
|
Leia os arquivos existentes da feature:
|
|
22
18
|
|
|
23
19
|
```bash
|
|
24
|
-
|
|
25
|
-
node bin/state-manager.js get {feature-name}
|
|
20
|
+
npx morph-spec state get {feature-name}
|
|
26
21
|
```
|
|
27
22
|
|
|
28
23
|
Leia:
|
|
@@ -140,19 +135,14 @@ Crie `.morph/project/outputs/{feature}/decisions.md` com ADRs relevantes:
|
|
|
140
135
|
**Consequences:**
|
|
141
136
|
**Pros:**
|
|
142
137
|
- Pro 1
|
|
143
|
-
- Pro 2
|
|
144
138
|
|
|
145
139
|
**Cons:**
|
|
146
140
|
- Con 1
|
|
147
|
-
- Con 2
|
|
148
141
|
|
|
149
142
|
**Alternatives Considered:**
|
|
150
143
|
- Alternativa 1: {Por que foi rejeitada}
|
|
151
|
-
- Alternativa 2: {Por que foi rejeitada}
|
|
152
144
|
|
|
153
145
|
**Date:** {YYYY-MM-DD}
|
|
154
|
-
|
|
155
|
-
---
|
|
156
146
|
```
|
|
157
147
|
|
|
158
148
|
**ADRs obrigatórios:**
|
|
@@ -163,77 +153,27 @@ Crie `.morph/project/outputs/{feature}/decisions.md` com ADRs relevantes:
|
|
|
163
153
|
|
|
164
154
|
### Passo 5: Estimar Custos
|
|
165
155
|
|
|
166
|
-
Se houver recursos Azure na spec
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
# Calcular custos automaticamente
|
|
170
|
-
node bin/calculate-costs.js .morph/project/outputs/{feature}/infra/*.bicep --verbose
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
O cost calculator:
|
|
174
|
-
- Parseia arquivos Bicep e extrai recursos + SKUs
|
|
175
|
-
- Calcula custo mensal baseado em pricing table do Azure
|
|
176
|
-
- Valida contra limites configurados em `.morph/config/config.json`
|
|
177
|
-
- Exit code 1 se exceder o limite `requiresADR` (padrão: $10)
|
|
156
|
+
Se houver recursos Azure na spec:
|
|
178
157
|
|
|
179
158
|
**Limites configuráveis** (em config.json):
|
|
180
159
|
- `costs.limits.freeTierOnly`: $0 (apenas free tier)
|
|
181
160
|
- `costs.limits.withApproval`: $10 (requer confirmação do usuário)
|
|
182
161
|
- `costs.limits.requiresADR`: $10 (requer ADR documentado)
|
|
183
162
|
|
|
184
|
-
|
|
185
|
-
```
|
|
186
|
-
╔════════════════════════════════════════════════╗
|
|
187
|
-
║ MORPH-SPEC COST CALCULATOR ║
|
|
188
|
-
╠════════════════════════════════════════════════╣
|
|
189
|
-
║ sqlDatabase (Basic) $4.99/mo ║
|
|
190
|
-
║ containerApp (Consumption) $0.00/mo ║
|
|
191
|
-
║ appInsights (Free) $0.00/mo ║
|
|
192
|
-
╠════════════════════════════════════════════════╣
|
|
193
|
-
║ Total Monthly Cost: $4.99 ║
|
|
194
|
-
║ Requires Approval: YES ║
|
|
195
|
-
║ Requires ADR: NO ║
|
|
196
|
-
╚════════════════════════════════════════════════╝
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
**Documente custos em `decisions.md`:**
|
|
200
|
-
|
|
201
|
-
```markdown
|
|
202
|
-
## ADR-XXX: Infrastructure Costs
|
|
203
|
-
|
|
204
|
-
**Estimated Monthly Cost:** $X.XX
|
|
205
|
-
|
|
206
|
-
**Breakdown:**
|
|
207
|
-
- Azure SQL Basic: $5.00
|
|
208
|
-
- Container App (scale-to-zero): $0.00
|
|
209
|
-
- Storage LRS (1GB): $0.02
|
|
210
|
-
- App Insights Free: $0.00
|
|
211
|
-
|
|
212
|
-
**Total:** $5.02/month
|
|
213
|
-
|
|
214
|
-
**Approval Required:** {Yes/No - based on $10 threshold}
|
|
215
|
-
|
|
216
|
-
**Justification:**
|
|
217
|
-
{Se > $10, justificar aqui}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
4. Atualizar state com custo:
|
|
163
|
+
Documente custos em `decisions.md` e atualize state:
|
|
221
164
|
|
|
222
165
|
```bash
|
|
223
|
-
|
|
224
|
-
|
|
166
|
+
npx morph-spec state set {feature-name} costs.estimated {X.XX}
|
|
167
|
+
npx morph-spec state set {feature-name} costs.approved {true/false}
|
|
225
168
|
```
|
|
226
169
|
|
|
227
170
|
### Passo 6: Atualizar State
|
|
228
171
|
|
|
229
172
|
```bash
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
node bin/state-manager.js mark-output {feature-name} spec
|
|
235
|
-
node bin/state-manager.js mark-output {feature-name} contracts
|
|
236
|
-
node bin/state-manager.js mark-output {feature-name} decisions
|
|
173
|
+
npx morph-spec state set {feature-name} phase design
|
|
174
|
+
npx morph-spec state mark-output {feature-name} spec
|
|
175
|
+
npx morph-spec state mark-output {feature-name} contracts
|
|
176
|
+
npx morph-spec state mark-output {feature-name} decisions
|
|
237
177
|
```
|
|
238
178
|
|
|
239
179
|
## Outputs Gerados
|
|
@@ -243,23 +183,13 @@ node bin/state-manager.js mark-output {feature-name} decisions
|
|
|
243
183
|
- `.morph/project/outputs/{feature}/decisions.md` - ADRs (novo ou atualizado)
|
|
244
184
|
- State atualizado com custos estimados
|
|
245
185
|
|
|
246
|
-
##
|
|
186
|
+
## PAUSA OBRIGATÓRIA
|
|
247
187
|
|
|
248
188
|
Apresente ao usuário 3 ações sugeridas:
|
|
249
189
|
|
|
250
|
-
1.
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
2. 🔄 **Ajustar escopo/complexidade**
|
|
254
|
-
Revisar spec.md para reduzir ou expandir funcionalidades
|
|
255
|
-
|
|
256
|
-
3. 💰 **Revisar custos estimados** (se houver recursos Azure)
|
|
257
|
-
Ajustar SKUs ou recursos para ficar dentro do budget
|
|
258
|
-
|
|
259
|
-
4. 📋 **Modificar contracts**
|
|
260
|
-
Ajustar interfaces/DTOs se necessário
|
|
261
|
-
|
|
262
|
-
**Formato:** Escolher 3 das opções acima, contextualizadas para a feature
|
|
190
|
+
1. **Aprovar design e continuar para clarificação**
|
|
191
|
+
2. **Ajustar escopo/complexidade** - Revisar spec.md
|
|
192
|
+
3. **Modificar contracts** - Ajustar interfaces/DTOs
|
|
263
193
|
|
|
264
194
|
## Critérios de Avanço
|
|
265
195
|
|
|
@@ -272,4 +202,4 @@ Apresente ao usuário 3 ações sugeridas:
|
|
|
272
202
|
|
|
273
203
|
---
|
|
274
204
|
|
|
275
|
-
|
|
205
|
+
Continuar automaticamente para FASE 3 (Clarify) após aprovação.
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
# MORPH Setup - FASE 1
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Uso
|
|
3
|
+
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
/morph-setup {feature-name}
|
|
9
|
-
```
|
|
5
|
+
Inicialize o contexto e prepare o ambiente para uma feature aprovada.
|
|
10
6
|
|
|
11
7
|
## Pré-requisitos
|
|
12
8
|
|
|
@@ -21,10 +17,10 @@ Inicialize o contexto e prepare o ambiente para uma feature aprovada.
|
|
|
21
17
|
Confirme que a feature existe no state:
|
|
22
18
|
|
|
23
19
|
```bash
|
|
24
|
-
|
|
20
|
+
npx morph-spec state get {feature-name}
|
|
25
21
|
```
|
|
26
22
|
|
|
27
|
-
Se não existir, volte para
|
|
23
|
+
Se não existir, volte para FASE 0 (proposal).
|
|
28
24
|
|
|
29
25
|
### Passo 2: Carregar Contexto do Projeto
|
|
30
26
|
|
|
@@ -47,7 +43,7 @@ Leia os seguintes arquivos para entender o projeto:
|
|
|
47
43
|
### Passo 3: Confirmar Stack
|
|
48
44
|
|
|
49
45
|
Baseado no proposal e contexto, confirme:
|
|
50
|
-
- Stack tecnológica (Blazor Server, Next.js,
|
|
46
|
+
- Stack tecnológica (Blazor Server, Next.js, etc.)
|
|
51
47
|
- Padrões arquiteturais aplicáveis
|
|
52
48
|
- Componentes reutilizáveis existentes
|
|
53
49
|
|
|
@@ -56,7 +52,7 @@ Baseado no proposal e contexto, confirme:
|
|
|
56
52
|
Mostre os agentes detectados no proposal:
|
|
57
53
|
|
|
58
54
|
```bash
|
|
59
|
-
|
|
55
|
+
npx morph-spec state get {feature-name}
|
|
60
56
|
```
|
|
61
57
|
|
|
62
58
|
Parse o JSON e liste os `activeAgents` com seus emojis e responsabilidades (consulte `.morph/config/agents.json`).
|
|
@@ -66,8 +62,8 @@ Parse o JSON e liste os `activeAgents` com seus emojis e responsabilidades (cons
|
|
|
66
62
|
Marque a feature como na fase SETUP:
|
|
67
63
|
|
|
68
64
|
```bash
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
npx morph-spec state set {feature-name} phase setup
|
|
66
|
+
npx morph-spec state set {feature-name} status in_progress
|
|
71
67
|
```
|
|
72
68
|
|
|
73
69
|
## Outputs
|
|
@@ -83,10 +79,6 @@ node bin/state-manager.js set {feature-name} status in_progress
|
|
|
83
79
|
- Lista de agentes com emojis
|
|
84
80
|
- Responsabilidades de cada um
|
|
85
81
|
|
|
86
|
-
3. **Próximos passos**:
|
|
87
|
-
- Se feature tem UI/UX keywords → `/morph-uiux` (FASE 1.5)
|
|
88
|
-
- Se NÃO tem UI/UX → `/morph-design` (FASE 2)
|
|
89
|
-
|
|
90
82
|
## Critérios de Avanço
|
|
91
83
|
|
|
92
84
|
- [x] Contexto do projeto carregado
|
|
@@ -97,4 +89,4 @@ node bin/state-manager.js set {feature-name} status in_progress
|
|
|
97
89
|
|
|
98
90
|
---
|
|
99
91
|
|
|
100
|
-
|
|
92
|
+
Continuar automaticamente para próxima fase (UI/UX se detectado, ou Design).
|