@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,205 +1,213 @@
|
|
|
1
|
-
# MORPH Design - FASE 2
|
|
2
|
-
|
|
3
|
-
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
4
|
-
|
|
5
|
-
Expanda a proposta em especificação técnica completa, contracts, decisões arquiteturais e estimativa de custos.
|
|
6
|
-
|
|
7
|
-
## Pré-requisitos
|
|
8
|
-
|
|
9
|
-
- [ ] FASE 1 (Setup) concluída
|
|
10
|
-
- [ ] FASE 1.5 (UI/UX) concluída OU pulada (se não houver front-end)
|
|
11
|
-
- [ ] Proposta aprovada pelo usuário
|
|
12
|
-
|
|
13
|
-
## Workflow
|
|
14
|
-
|
|
15
|
-
### Passo 1: Carregar Contexto
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npx morph-spec state get {feature-name}
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
public
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
-
|
|
160
|
-
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
npx morph-spec state
|
|
175
|
-
npx morph-spec state
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
|
|
184
|
-
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
##
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
1
|
+
# MORPH Design - FASE 2
|
|
2
|
+
|
|
3
|
+
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
4
|
+
|
|
5
|
+
Expanda a proposta em especificação técnica completa, contracts, decisões arquiteturais e estimativa de custos.
|
|
6
|
+
|
|
7
|
+
## Pré-requisitos
|
|
8
|
+
|
|
9
|
+
- [ ] FASE 1 (Setup) concluída
|
|
10
|
+
- [ ] FASE 1.5 (UI/UX) concluída OU pulada (se não houver front-end)
|
|
11
|
+
- [ ] Proposta aprovada pelo usuário
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
### Passo 1: Carregar Contexto e Standards
|
|
16
|
+
|
|
17
|
+
**Obtenha feature state e standards context:**
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx morph-spec state get {feature-name}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Parse o JSON para obter `activeAgents`, então use standards context (já carregado na FASE 1):
|
|
24
|
+
- Standards relevantes estão em `standardsSummary` do detect-agents
|
|
25
|
+
- Padrões já incluem project overrides + inferred learnings
|
|
26
|
+
|
|
27
|
+
**Leia outputs existentes:**
|
|
28
|
+
1. `.morph/project/outputs/{feature}/proposal.md` - Proposta inicial
|
|
29
|
+
2. `.morph/project/outputs/{feature}/ui-*.md` - UI/UX specs (se existirem)
|
|
30
|
+
|
|
31
|
+
**Use standards context ao gerar spec.md:**
|
|
32
|
+
- Architecture standards → guiam Technical Architecture section
|
|
33
|
+
- Coding standards → definem contracts.cs patterns
|
|
34
|
+
- Azure standards → determinam Infrastructure Requirements
|
|
35
|
+
|
|
36
|
+
### Passo 2: Gerar `spec.md`
|
|
37
|
+
|
|
38
|
+
Crie `.morph/project/outputs/{feature}/spec.md` com:
|
|
39
|
+
|
|
40
|
+
#### 2.1. Overview
|
|
41
|
+
- **Objetivo:** Resumo de 1-2 parágrafos
|
|
42
|
+
- **Usuários afetados:** Quem vai usar?
|
|
43
|
+
- **Problema resolvido:** Qual dor/necessidade?
|
|
44
|
+
|
|
45
|
+
#### 2.2. Functional Requirements
|
|
46
|
+
Lista detalhada de requisitos funcionais:
|
|
47
|
+
```markdown
|
|
48
|
+
### FR001: {Requisito}
|
|
49
|
+
**Description:** {O que deve fazer}
|
|
50
|
+
**Acceptance Criteria:**
|
|
51
|
+
- [ ] Critério 1
|
|
52
|
+
- [ ] Critério 2
|
|
53
|
+
**Priority:** High/Medium/Low
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
#### 2.3. Non-Functional Requirements
|
|
57
|
+
- Performance (tempos de resposta esperados)
|
|
58
|
+
- Segurança (autenticação, autorização)
|
|
59
|
+
- Escalabilidade (volume de dados/usuários)
|
|
60
|
+
- Disponibilidade (uptime esperado)
|
|
61
|
+
|
|
62
|
+
#### 2.4. Technical Architecture
|
|
63
|
+
- **Camadas:** (Presentation, Application, Domain, Infrastructure)
|
|
64
|
+
- **Patterns:** (Repository, CQRS, DI, etc.)
|
|
65
|
+
- **Dependências:** Bibliotecas/serviços externos necessários
|
|
66
|
+
|
|
67
|
+
#### 2.5. Data Model
|
|
68
|
+
- Entities principais
|
|
69
|
+
- Relacionamentos (1:1, 1:N, N:N)
|
|
70
|
+
- Campos obrigatórios vs opcionais
|
|
71
|
+
- Validações de negócio
|
|
72
|
+
|
|
73
|
+
#### 2.6. Infrastructure Requirements
|
|
74
|
+
Se houver recursos Azure:
|
|
75
|
+
- Banco de dados (Azure SQL, Cosmos DB)
|
|
76
|
+
- Storage (Blob Storage)
|
|
77
|
+
- Compute (Container Apps, App Service)
|
|
78
|
+
- Monitoring (App Insights)
|
|
79
|
+
|
|
80
|
+
**SEMPRE usar Bicep para infra!**
|
|
81
|
+
|
|
82
|
+
### Passo 3: Gerar `contracts.cs`
|
|
83
|
+
|
|
84
|
+
Crie `.morph/project/outputs/{feature}/contracts.cs` com:
|
|
85
|
+
|
|
86
|
+
```csharp
|
|
87
|
+
// Interfaces, DTOs, Enums, Value Objects
|
|
88
|
+
|
|
89
|
+
namespace {ProjectName}.Features.{FeatureName};
|
|
90
|
+
|
|
91
|
+
// DTOs (Data Transfer Objects)
|
|
92
|
+
public record {Feature}CreateDto(
|
|
93
|
+
string Name,
|
|
94
|
+
DateTime Date
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
public record {Feature}ResponseDto(
|
|
98
|
+
Guid Id,
|
|
99
|
+
string Name,
|
|
100
|
+
DateTime Date,
|
|
101
|
+
DateTime CreatedAt
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
// Interfaces
|
|
105
|
+
public interface I{Feature}Service
|
|
106
|
+
{
|
|
107
|
+
Task<{Feature}ResponseDto> CreateAsync({Feature}CreateDto dto, CancellationToken ct);
|
|
108
|
+
Task<{Feature}ResponseDto?> GetByIdAsync(Guid id, CancellationToken ct);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Enums
|
|
112
|
+
public enum {Feature}Status
|
|
113
|
+
{
|
|
114
|
+
Pending,
|
|
115
|
+
Active,
|
|
116
|
+
Completed
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Padrões obrigatórios:**
|
|
121
|
+
- Records para DTOs (immutable)
|
|
122
|
+
- Interfaces para serviços
|
|
123
|
+
- CancellationToken em métodos async
|
|
124
|
+
- Nullable reference types habilitados
|
|
125
|
+
|
|
126
|
+
### Passo 4: Iniciar `decisions.md`
|
|
127
|
+
|
|
128
|
+
Crie `.morph/project/outputs/{feature}/decisions.md` com ADRs relevantes:
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
# Architectural Decision Records (ADRs)
|
|
132
|
+
|
|
133
|
+
## ADR-001: {Decisão Arquitetural}
|
|
134
|
+
|
|
135
|
+
**Status:** Proposed/Accepted/Deprecated
|
|
136
|
+
|
|
137
|
+
**Context:**
|
|
138
|
+
{Por que esta decisão foi necessária}
|
|
139
|
+
|
|
140
|
+
**Decision:**
|
|
141
|
+
{O que foi decidido}
|
|
142
|
+
|
|
143
|
+
**Consequences:**
|
|
144
|
+
**Pros:**
|
|
145
|
+
- Pro 1
|
|
146
|
+
|
|
147
|
+
**Cons:**
|
|
148
|
+
- Con 1
|
|
149
|
+
|
|
150
|
+
**Alternatives Considered:**
|
|
151
|
+
- Alternativa 1: {Por que foi rejeitada}
|
|
152
|
+
|
|
153
|
+
**Date:** {YYYY-MM-DD}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**ADRs obrigatórios:**
|
|
157
|
+
- Escolha de biblioteca UI (se FASE 1.5 executou)
|
|
158
|
+
- Padrões arquiteturais (CQRS, Repository, etc.)
|
|
159
|
+
- Recursos Azure (se houver infra)
|
|
160
|
+
- Integrações externas (APIs, webhooks, etc.)
|
|
161
|
+
|
|
162
|
+
### Passo 5: Estimar Custos
|
|
163
|
+
|
|
164
|
+
Se houver recursos Azure na spec:
|
|
165
|
+
|
|
166
|
+
**Limites configuráveis** (em config.json):
|
|
167
|
+
- `costs.limits.freeTierOnly`: $0 (apenas free tier)
|
|
168
|
+
- `costs.limits.withApproval`: $10 (requer confirmação do usuário)
|
|
169
|
+
- `costs.limits.requiresADR`: $10 (requer ADR documentado)
|
|
170
|
+
|
|
171
|
+
Documente custos em `decisions.md` e atualize state:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
npx morph-spec state set {feature-name} costs.estimated {X.XX}
|
|
175
|
+
npx morph-spec state set {feature-name} costs.approved {true/false}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Passo 6: Atualizar State
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
npx morph-spec state set {feature-name} phase design
|
|
182
|
+
npx morph-spec state mark-output {feature-name} spec
|
|
183
|
+
npx morph-spec state mark-output {feature-name} contracts
|
|
184
|
+
npx morph-spec state mark-output {feature-name} decisions
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Outputs Gerados
|
|
188
|
+
|
|
189
|
+
- `.morph/project/outputs/{feature}/spec.md` - Especificação técnica completa
|
|
190
|
+
- `.morph/project/outputs/{feature}/contracts.cs` - Interfaces, DTOs, Enums
|
|
191
|
+
- `.morph/project/outputs/{feature}/decisions.md` - ADRs (novo ou atualizado)
|
|
192
|
+
- State atualizado com custos estimados
|
|
193
|
+
|
|
194
|
+
## PAUSA OBRIGATÓRIA
|
|
195
|
+
|
|
196
|
+
Apresente ao usuário 3 ações sugeridas:
|
|
197
|
+
|
|
198
|
+
1. **Aprovar design e continuar para clarificação**
|
|
199
|
+
2. **Ajustar escopo/complexidade** - Revisar spec.md
|
|
200
|
+
3. **Modificar contracts** - Ajustar interfaces/DTOs
|
|
201
|
+
|
|
202
|
+
## Critérios de Avanço
|
|
203
|
+
|
|
204
|
+
- [x] `spec.md` completo com todos os requisitos
|
|
205
|
+
- [x] `contracts.cs` com interfaces e DTOs
|
|
206
|
+
- [x] `decisions.md` com ADRs relevantes
|
|
207
|
+
- [x] Custos estimados e documentados (se houver infra)
|
|
208
|
+
- [x] State atualizado
|
|
209
|
+
- [x] Usuário aprovou design
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
Continuar automaticamente para FASE 3 (Clarify) após aprovação.
|
|
@@ -1,92 +1,106 @@
|
|
|
1
|
-
# MORPH Setup - FASE 1
|
|
2
|
-
|
|
3
|
-
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
4
|
-
|
|
5
|
-
Inicialize o contexto e prepare o ambiente para uma feature aprovada.
|
|
6
|
-
|
|
7
|
-
## Pré-requisitos
|
|
8
|
-
|
|
9
|
-
- [ ] Feature tem `proposal.md` criado (FASE 0 concluída)
|
|
10
|
-
- [ ] Proposal foi aprovado pelo usuário
|
|
11
|
-
- [ ] Agentes foram detectados e registrados no state
|
|
12
|
-
|
|
13
|
-
## Workflow
|
|
14
|
-
|
|
15
|
-
### Passo 1: Verificar State
|
|
16
|
-
|
|
17
|
-
Confirme que a feature existe no state:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npx morph-spec state get {feature-name}
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Se não existir, volte para FASE 0 (proposal).
|
|
24
|
-
|
|
25
|
-
### Passo 2: Carregar Contexto
|
|
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
|
-
|
|
1
|
+
# MORPH Setup - FASE 1
|
|
2
|
+
|
|
3
|
+
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
4
|
+
|
|
5
|
+
Inicialize o contexto e prepare o ambiente para uma feature aprovada.
|
|
6
|
+
|
|
7
|
+
## Pré-requisitos
|
|
8
|
+
|
|
9
|
+
- [ ] Feature tem `proposal.md` criado (FASE 0 concluída)
|
|
10
|
+
- [ ] Proposal foi aprovado pelo usuário
|
|
11
|
+
- [ ] Agentes foram detectados e registrados no state
|
|
12
|
+
|
|
13
|
+
## Workflow
|
|
14
|
+
|
|
15
|
+
### Passo 1: Verificar State
|
|
16
|
+
|
|
17
|
+
Confirme que a feature existe no state:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx morph-spec state get {feature-name}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Se não existir, volte para FASE 0 (proposal).
|
|
24
|
+
|
|
25
|
+
### Passo 2: Carregar Contexto e Standards Automaticamente
|
|
26
|
+
|
|
27
|
+
**Use detect-agents --json para obter standards context:**
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npx morph-spec detect-agents --json "{feature description from proposal}"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
O output JSON contém `standardsSummary` com todos os standards relevantes para cada agente ativo:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"standardsSummary": {
|
|
38
|
+
"blazor-builder": {
|
|
39
|
+
"standards": ["blazor-lifecycle", "blazor-state", "coding", ...],
|
|
40
|
+
"fullContent": "# blazor-lifecycle\n\n...", // Full standards text
|
|
41
|
+
"count": 10
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Standards resolution order** (automático):
|
|
48
|
+
1. `.morph/project/standards/*.md` (project overrides - highest priority)
|
|
49
|
+
2. `content/.morph/standards/*.md` (AI Agent Framework, Azure)
|
|
50
|
+
3. `framework/standards/*.md` (Blazor, CSS, .NET)
|
|
51
|
+
4. `.morph/project/standards/inferred.md` (always loaded if exists)
|
|
52
|
+
|
|
53
|
+
**Contexto geral** (leia manualmente):
|
|
54
|
+
- `.morph/project/context/README.md` - Overview do projeto
|
|
55
|
+
- `.morph/config.json` - Configurações
|
|
56
|
+
|
|
57
|
+
### Passo 3: Confirmar Stack
|
|
58
|
+
|
|
59
|
+
Baseado no proposal e contexto, confirme:
|
|
60
|
+
- Stack tecnológica (Blazor Server, Next.js, etc.)
|
|
61
|
+
- Padrões arquiteturais aplicáveis
|
|
62
|
+
- Componentes reutilizáveis existentes
|
|
63
|
+
|
|
64
|
+
### Passo 4: Listar Agentes Ativos
|
|
65
|
+
|
|
66
|
+
Mostre os agentes detectados no proposal:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npx morph-spec state get {feature-name}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Parse o JSON e liste os `activeAgents` com seus emojis e responsabilidades (consulte `.morph/config/agents.json`).
|
|
73
|
+
|
|
74
|
+
### Passo 5: Atualizar State
|
|
75
|
+
|
|
76
|
+
Marque a feature como na fase SETUP:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
npx morph-spec state set {feature-name} phase setup
|
|
80
|
+
npx morph-spec state set {feature-name} status in_progress
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Outputs
|
|
84
|
+
|
|
85
|
+
**Apresente ao usuário:**
|
|
86
|
+
|
|
87
|
+
1. **Contexto carregado**:
|
|
88
|
+
- Nome do projeto
|
|
89
|
+
- Stack confirmado
|
|
90
|
+
- Standards aplicáveis
|
|
91
|
+
|
|
92
|
+
2. **Agentes ativos**:
|
|
93
|
+
- Lista de agentes com emojis
|
|
94
|
+
- Responsabilidades de cada um
|
|
95
|
+
|
|
96
|
+
## Critérios de Avanço
|
|
97
|
+
|
|
98
|
+
- [x] Contexto do projeto carregado
|
|
99
|
+
- [x] Standards identificados (framework + project)
|
|
100
|
+
- [x] Stack confirmado
|
|
101
|
+
- [x] Agentes listados
|
|
102
|
+
- [x] State atualizado para phase: setup
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
Continuar automaticamente para próxima fase (UI/UX se detectado, ou Design).
|