@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,158 +1,221 @@
|
|
|
1
|
-
# Apply MORPH Feature Implementation - FASE 5
|
|
2
|
-
|
|
3
|
-
Implemente a feature especificada seguindo as tasks definidas.
|
|
4
|
-
|
|
5
|
-
## Uso
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
/morph-apply {feature-name}
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Pré-requisitos
|
|
12
|
-
|
|
13
|
-
### CRÍTICO: Validar Fases Anteriores
|
|
14
|
-
|
|
15
|
-
**SEMPRE verifique que fases anteriores foram concluídas:**
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
# Obter estado da feature
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
**Validações obrigatórias:**
|
|
23
|
-
|
|
24
|
-
1. **FASE 0 (Proposal):**
|
|
25
|
-
- [ ] Output `proposal` criado
|
|
26
|
-
- [ ] Agentes detectados e registrados
|
|
27
|
-
|
|
28
|
-
2. **FASE 1 (Setup):**
|
|
29
|
-
- [ ] Phase passou por "setup"
|
|
30
|
-
- [ ] Contexto carregado
|
|
31
|
-
|
|
32
|
-
3. **FASE 1.5 (UI/UX) - SE APLICÁVEL:**
|
|
33
|
-
- [ ] Se `uiux-designer` está nos activeAgents → outputs ui-* devem existir
|
|
34
|
-
- [ ] Se NÃO tem uiux-designer → pode pular
|
|
35
|
-
|
|
36
|
-
4. **FASE 2 (Design):**
|
|
37
|
-
- [ ] Output `spec` criado
|
|
38
|
-
- [ ] Output `contracts` criado
|
|
39
|
-
- [ ] Output `decisions` criado
|
|
40
|
-
|
|
41
|
-
5. **FASE 3 (Clarify):**
|
|
42
|
-
- [ ] Phase passou por "clarify"
|
|
43
|
-
- [ ] Spec atualizado com clarificações
|
|
44
|
-
|
|
45
|
-
6. **FASE 4 (Tasks):**
|
|
46
|
-
- [ ] Output `tasks` criado
|
|
47
|
-
- [ ] `tasks.json` tem array de tasks
|
|
48
|
-
- [ ] `tasks.total` > 0 no state
|
|
49
|
-
|
|
50
|
-
**Se QUALQUER validação falhar:**
|
|
51
|
-
```
|
|
52
|
-
❌ ERRO: Fase {X} não foi concluída!
|
|
53
|
-
|
|
54
|
-
Para
|
|
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
|
-
|
|
139
|
-
- [ ] Sem
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
1
|
+
# Apply MORPH Feature Implementation - FASE 5
|
|
2
|
+
|
|
3
|
+
Implemente a feature especificada seguindo as tasks definidas.
|
|
4
|
+
|
|
5
|
+
## Uso
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
/morph-apply {feature-name}
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Pré-requisitos
|
|
12
|
+
|
|
13
|
+
### CRÍTICO: Validar Fases Anteriores
|
|
14
|
+
|
|
15
|
+
**SEMPRE verifique que fases anteriores foram concluídas:**
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Obter estado da feature
|
|
19
|
+
npx morph-spec state get {feature-name}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Validações obrigatórias:**
|
|
23
|
+
|
|
24
|
+
1. **FASE 0 (Proposal):**
|
|
25
|
+
- [ ] Output `proposal` criado
|
|
26
|
+
- [ ] Agentes detectados e registrados
|
|
27
|
+
|
|
28
|
+
2. **FASE 1 (Setup):**
|
|
29
|
+
- [ ] Phase passou por "setup"
|
|
30
|
+
- [ ] Contexto carregado
|
|
31
|
+
|
|
32
|
+
3. **FASE 1.5 (UI/UX) - SE APLICÁVEL:**
|
|
33
|
+
- [ ] Se `uiux-designer` está nos activeAgents → outputs ui-* devem existir
|
|
34
|
+
- [ ] Se NÃO tem uiux-designer → pode pular
|
|
35
|
+
|
|
36
|
+
4. **FASE 2 (Design):**
|
|
37
|
+
- [ ] Output `spec` criado
|
|
38
|
+
- [ ] Output `contracts` criado
|
|
39
|
+
- [ ] Output `decisions` criado
|
|
40
|
+
|
|
41
|
+
5. **FASE 3 (Clarify):**
|
|
42
|
+
- [ ] Phase passou por "clarify"
|
|
43
|
+
- [ ] Spec atualizado com clarificações
|
|
44
|
+
|
|
45
|
+
6. **FASE 4 (Tasks):**
|
|
46
|
+
- [ ] Output `tasks` criado
|
|
47
|
+
- [ ] `tasks.json` tem array de tasks
|
|
48
|
+
- [ ] `tasks.total` > 0 no state
|
|
49
|
+
|
|
50
|
+
**Se QUALQUER validação falhar:**
|
|
51
|
+
```
|
|
52
|
+
❌ ERRO: Fase {X} não foi concluída!
|
|
53
|
+
|
|
54
|
+
Para completar as fases de planejamento, execute:
|
|
55
|
+
/morph-proposal {feature-name}
|
|
56
|
+
(Resume automaticamente da fase atual: {current_phase})
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**NÃO prossiga com implementação até todas as fases estarem completas!**
|
|
60
|
+
|
|
61
|
+
### Arquivos Necessários
|
|
62
|
+
|
|
63
|
+
- [ ] Feature existe em `.morph/project/outputs/{feature}/`
|
|
64
|
+
- [ ] `spec.md` está aprovado
|
|
65
|
+
- [ ] `tasks.json` tem tasks definidas
|
|
66
|
+
- [ ] `contracts.cs` define as interfaces
|
|
67
|
+
|
|
68
|
+
## Workflow
|
|
69
|
+
|
|
70
|
+
1. **Carregue o contexto**:
|
|
71
|
+
- Leia `.morph/project/outputs/{feature}/spec.md`
|
|
72
|
+
- Leia `.morph/project/outputs/{feature}/tasks.json`
|
|
73
|
+
- Leia `.morph/project/outputs/{feature}/contracts.cs`
|
|
74
|
+
- Leia framework/standards/ e .morph/project/standards/ para padrões
|
|
75
|
+
|
|
76
|
+
2. **Inicialize state tracking**:
|
|
77
|
+
```bash
|
|
78
|
+
# Atualizar fase para implement
|
|
79
|
+
npx morph-spec state set {feature} phase implement
|
|
80
|
+
npx morph-spec state set {feature} status in_progress
|
|
81
|
+
|
|
82
|
+
# Definir total de tasks (baseado em tasks.json)
|
|
83
|
+
npx morph-spec state set {feature} tasks.total {N}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
3. **Execute tasks em ordem**:
|
|
87
|
+
- Marque task como in progress: `npx morph-spec task start {feature} {task-id}`
|
|
88
|
+
- Implemente seguindo os padrões e contracts.cs
|
|
89
|
+
- Complete task: `npx morph-spec task done {feature} {task-id}`
|
|
90
|
+
- **Validators run automatically** on task-done. If validation fails:
|
|
91
|
+
- Read the error messages and fix violations
|
|
92
|
+
- Re-run `task done` — do NOT use `--skip-validation` unless user authorizes
|
|
93
|
+
- Framework auto-manages checkpoints (every 3 tasks, includes validation summary)
|
|
94
|
+
|
|
95
|
+
4. **Phase advancement**:
|
|
96
|
+
```bash
|
|
97
|
+
# Advance to next phase (validates → advances → shows next steps)
|
|
98
|
+
npx morph-spec phase advance {feature}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
5. **Marcar outputs criados**:
|
|
102
|
+
Sempre que gerar um arquivo de output:
|
|
103
|
+
```bash
|
|
104
|
+
npx morph-spec state mark-output {feature} spec
|
|
105
|
+
npx morph-spec state mark-output {feature} contracts
|
|
106
|
+
npx morph-spec state mark-output {feature} tasks
|
|
107
|
+
# etc.
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
6. **Ao finalizar**:
|
|
111
|
+
- Generate recap automatically: `npx morph-spec generate recap {feature}`
|
|
112
|
+
- Atualize state: `npx morph-spec state set {feature} status done`
|
|
113
|
+
- Marque recap: `npx morph-spec state mark-output {feature} recap`
|
|
114
|
+
- Liste arquivos criados/modificados
|
|
115
|
+
- Calcule custo real vs estimado
|
|
116
|
+
|
|
117
|
+
## Padrões Obrigatórios
|
|
118
|
+
|
|
119
|
+
Siga sempre (priorize project/standards/ se houver):
|
|
120
|
+
- `framework/standards/coding.md` - Padrões base do MORPH
|
|
121
|
+
- `.morph/project/standards/coding.md` - Padrões específicos do projeto
|
|
122
|
+
- `.morph/project/standards/architecture.md` - Estrutura de projeto
|
|
123
|
+
- `.morph/project/standards/azure.md` - Recursos e custos
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Checklist Pré-Deploy Azure
|
|
128
|
+
|
|
129
|
+
**ANTES de fazer deploy para Azure, execute `/morph-preflight azure` ou verifique manualmente:**
|
|
130
|
+
|
|
131
|
+
### Packages e Build
|
|
132
|
+
|
|
133
|
+
- [ ] Packages sem conflitos de versão (`dotnet restore` sem warnings NU1605/NU1608)
|
|
134
|
+
- [ ] `Azure.Identity` especificado explicitamente no `.csproj`
|
|
135
|
+
- [ ] Build passa sem erros (`dotnet build`)
|
|
136
|
+
|
|
137
|
+
### EF Core Migrations
|
|
138
|
+
|
|
139
|
+
- [ ] Sem pending model changes (`dotnet ef migrations has-pending-model-changes`)
|
|
140
|
+
- [ ] Migration criada para todas as mudanças de schema
|
|
141
|
+
- [ ] Migration script revisado (`dotnet ef migrations script --idempotent`)
|
|
142
|
+
|
|
143
|
+
### Blazor .NET 10 (se aplicável)
|
|
144
|
+
|
|
145
|
+
- [ ] `.csproj` contém `<RequiresAspNetWebAssets>true</RequiresAspNetWebAssets>`
|
|
146
|
+
- [ ] Static assets funcionando localmente
|
|
147
|
+
|
|
148
|
+
### Container/Docker (se Container Apps)
|
|
149
|
+
|
|
150
|
+
- [ ] Dockerfile válido e testado localmente
|
|
151
|
+
- [ ] `docker build` funciona sem erros
|
|
152
|
+
- [ ] Container roda localmente (`docker run`)
|
|
153
|
+
|
|
154
|
+
### Infraestrutura Azure
|
|
155
|
+
|
|
156
|
+
- [ ] Bicep sem erros de sintaxe (`az bicep build`)
|
|
157
|
+
- [ ] Key Vault URI configurado em `appsettings.Production.json`
|
|
158
|
+
- [ ] Connection strings em Key Vault (não hardcoded)
|
|
159
|
+
- [ ] Managed Identity habilitada nos recursos
|
|
160
|
+
|
|
161
|
+
### Segurança
|
|
162
|
+
|
|
163
|
+
- [ ] Sem secrets em código ou `appsettings.json` (exceto Development)
|
|
164
|
+
- [ ] HTTPS enforçado
|
|
165
|
+
- [ ] CORS configurado corretamente
|
|
166
|
+
|
|
167
|
+
### Comandos de Verificação
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
# 1. Package conflicts
|
|
171
|
+
dotnet restore 2>&1 | grep -E "NU1605|NU1608"
|
|
172
|
+
|
|
173
|
+
# 2. Pending migrations
|
|
174
|
+
dotnet ef migrations has-pending-model-changes \
|
|
175
|
+
--project src/Infrastructure \
|
|
176
|
+
--startup-project src/Web
|
|
177
|
+
|
|
178
|
+
# 3. Bicep validation
|
|
179
|
+
az bicep build --file infra/main.bicep --stdout > /dev/null
|
|
180
|
+
|
|
181
|
+
# 4. Docker build
|
|
182
|
+
docker build -t myapp:test .
|
|
183
|
+
|
|
184
|
+
# 5. Secret scan (basic)
|
|
185
|
+
grep -rE "(Password=|Pwd=|Secret=)" appsettings*.json | grep -v Development
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Se QUALQUER item falhar
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
❌ BLOQUEADO: Não faça deploy até resolver!
|
|
192
|
+
|
|
193
|
+
Use /morph-preflight azure para diagnóstico detalhado.
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Validações
|
|
197
|
+
|
|
198
|
+
Antes de marcar task como completa:
|
|
199
|
+
- [ ] Código compila
|
|
200
|
+
- [ ] Segue padrões de nomenclatura
|
|
201
|
+
- [ ] Testes unitários (se aplicável)
|
|
202
|
+
- [ ] Sem hardcoded secrets
|
|
203
|
+
|
|
204
|
+
## Output
|
|
205
|
+
|
|
206
|
+
Ao final de cada task, mostre:
|
|
207
|
+
1. Task completada
|
|
208
|
+
2. Arquivos criados/modificados
|
|
209
|
+
3. Próxima task
|
|
210
|
+
4. Progresso geral (X/Y tasks) - usar `npx morph-spec state get {feature}`
|
|
211
|
+
|
|
212
|
+
Ao final de cada checkpoint:
|
|
213
|
+
```bash
|
|
214
|
+
npx morph-spec state list
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Isso mostra o progresso atualizado automaticamente.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
**Feature:** $ARGUMENTS
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
# Archive MORPH Feature
|
|
2
|
-
|
|
3
|
-
Arquive uma feature concluída, movendo-a de `project/outputs/` para `project/archive/`.
|
|
4
|
-
|
|
5
|
-
## Pré-requisitos
|
|
6
|
-
|
|
7
|
-
Verifique antes de arquivar:
|
|
8
|
-
- [ ] Feature existe em `.morph/project/outputs/{feature}/`
|
|
9
|
-
- [ ] Todas as tasks estão completas
|
|
10
|
-
- [ ] `recap.md` está preenchido
|
|
11
|
-
- [ ] Código está em produção (ou staging)
|
|
12
|
-
|
|
13
|
-
## Workflow
|
|
14
|
-
|
|
15
|
-
1. **Valide a conclusão**:
|
|
16
|
-
- Leia `.morph/project/outputs/{feature}/tasks.json`
|
|
17
|
-
- Verifique que todas tasks estão completadas
|
|
18
|
-
- Confirme com o usuário se pode arquivar
|
|
19
|
-
|
|
20
|
-
2. **Complete o recap**:
|
|
21
|
-
- Atualize `.morph/project/outputs/{feature}/recap.md`
|
|
22
|
-
- Preencha métricas finais
|
|
23
|
-
- Documente lições aprendidas
|
|
24
|
-
|
|
25
|
-
3. **Extraia specs**:
|
|
26
|
-
- Se a feature define comportamento permanente
|
|
27
|
-
- Copie spec relevante para `.morph/project/specs/`
|
|
28
|
-
- Isso vira a "verdade atual" do sistema
|
|
29
|
-
|
|
30
|
-
4. **Mova para archive**:
|
|
31
|
-
```
|
|
32
|
-
.morph/project/outputs/{feature}/ → .morph/project/archive/{feature}/
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
5. **Atualize métricas do projeto**:
|
|
36
|
-
- Incremente contador de features
|
|
37
|
-
- Atualize custo total
|
|
38
|
-
- Atualize tempo total
|
|
39
|
-
|
|
40
|
-
## Output
|
|
41
|
-
|
|
42
|
-
Apresente resumo do arquivamento:
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
╔════════════════════════════════════════════╗
|
|
46
|
-
║ FEATURE ARCHIVED ║
|
|
47
|
-
╠════════════════════════════════════════════╣
|
|
48
|
-
║ Feature: {name} ║
|
|
49
|
-
║ Completed: {date} ║
|
|
50
|
-
╠════════════════════════════════════════════╣
|
|
51
|
-
║ METRICS ║
|
|
52
|
-
╠════════════════════════════════════════════╣
|
|
53
|
-
║ Tasks: {X}/{X} completed ║
|
|
54
|
-
║ Time: {X}h (estimated: {Y}h) ║
|
|
55
|
-
║ Cost Impact: +${X}/month ║
|
|
56
|
-
╠════════════════════════════════════════════╣
|
|
57
|
-
║ FILES ║
|
|
58
|
-
╠════════════════════════════════════════════╣
|
|
59
|
-
║ Created: {X} files ║
|
|
60
|
-
║ Modified: {Y} files ║
|
|
61
|
-
║ Tests: {Z} files ({W}% coverage) ║
|
|
62
|
-
╠════════════════════════════════════════════╣
|
|
63
|
-
║ ARCHIVED TO ║
|
|
64
|
-
╠════════════════════════════════════════════╣
|
|
65
|
-
║ .morph/project/archive/{feature}/ ║
|
|
66
|
-
╚════════════════════════════════════════════╝
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Specs Extraídas
|
|
70
|
-
|
|
71
|
-
Se houver specs extraídas:
|
|
72
|
-
```
|
|
73
|
-
Specs extracted to .morph/project/specs/:
|
|
74
|
-
- {domain}/spec.md - {description}
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
**Feature to archive:** $ARGUMENTS
|
|
1
|
+
# Archive MORPH Feature
|
|
2
|
+
|
|
3
|
+
Arquive uma feature concluída, movendo-a de `project/outputs/` para `project/archive/`.
|
|
4
|
+
|
|
5
|
+
## Pré-requisitos
|
|
6
|
+
|
|
7
|
+
Verifique antes de arquivar:
|
|
8
|
+
- [ ] Feature existe em `.morph/project/outputs/{feature}/`
|
|
9
|
+
- [ ] Todas as tasks estão completas
|
|
10
|
+
- [ ] `recap.md` está preenchido
|
|
11
|
+
- [ ] Código está em produção (ou staging)
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
1. **Valide a conclusão**:
|
|
16
|
+
- Leia `.morph/project/outputs/{feature}/tasks.json`
|
|
17
|
+
- Verifique que todas tasks estão completadas
|
|
18
|
+
- Confirme com o usuário se pode arquivar
|
|
19
|
+
|
|
20
|
+
2. **Complete o recap**:
|
|
21
|
+
- Atualize `.morph/project/outputs/{feature}/recap.md`
|
|
22
|
+
- Preencha métricas finais
|
|
23
|
+
- Documente lições aprendidas
|
|
24
|
+
|
|
25
|
+
3. **Extraia specs**:
|
|
26
|
+
- Se a feature define comportamento permanente
|
|
27
|
+
- Copie spec relevante para `.morph/project/specs/`
|
|
28
|
+
- Isso vira a "verdade atual" do sistema
|
|
29
|
+
|
|
30
|
+
4. **Mova para archive**:
|
|
31
|
+
```
|
|
32
|
+
.morph/project/outputs/{feature}/ → .morph/project/archive/{feature}/
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
5. **Atualize métricas do projeto**:
|
|
36
|
+
- Incremente contador de features
|
|
37
|
+
- Atualize custo total
|
|
38
|
+
- Atualize tempo total
|
|
39
|
+
|
|
40
|
+
## Output
|
|
41
|
+
|
|
42
|
+
Apresente resumo do arquivamento:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
╔════════════════════════════════════════════╗
|
|
46
|
+
║ FEATURE ARCHIVED ║
|
|
47
|
+
╠════════════════════════════════════════════╣
|
|
48
|
+
║ Feature: {name} ║
|
|
49
|
+
║ Completed: {date} ║
|
|
50
|
+
╠════════════════════════════════════════════╣
|
|
51
|
+
║ METRICS ║
|
|
52
|
+
╠════════════════════════════════════════════╣
|
|
53
|
+
║ Tasks: {X}/{X} completed ║
|
|
54
|
+
║ Time: {X}h (estimated: {Y}h) ║
|
|
55
|
+
║ Cost Impact: +${X}/month ║
|
|
56
|
+
╠════════════════════════════════════════════╣
|
|
57
|
+
║ FILES ║
|
|
58
|
+
╠════════════════════════════════════════════╣
|
|
59
|
+
║ Created: {X} files ║
|
|
60
|
+
║ Modified: {Y} files ║
|
|
61
|
+
║ Tests: {Z} files ({W}% coverage) ║
|
|
62
|
+
╠════════════════════════════════════════════╣
|
|
63
|
+
║ ARCHIVED TO ║
|
|
64
|
+
╠════════════════════════════════════════════╣
|
|
65
|
+
║ .morph/project/archive/{feature}/ ║
|
|
66
|
+
╚════════════════════════════════════════════╝
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Specs Extraídas
|
|
70
|
+
|
|
71
|
+
Se houver specs extraídas:
|
|
72
|
+
```
|
|
73
|
+
Specs extracted to .morph/project/specs/:
|
|
74
|
+
- {domain}/spec.md - {description}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
**Feature to archive:** $ARGUMENTS
|