@polymorphism-tech/morph-spec 1.0.4 → 2.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.
Files changed (152) hide show
  1. package/CLAUDE.md +1381 -0
  2. package/LICENSE +72 -0
  3. package/README.md +89 -6
  4. package/bin/detect-agents.js +225 -0
  5. package/bin/morph-spec.js +120 -0
  6. package/bin/render-template.js +302 -0
  7. package/bin/semantic-detect-agents.js +246 -0
  8. package/bin/validate-agents-skills.js +239 -0
  9. package/bin/validate-agents.js +69 -0
  10. package/bin/validate-phase.js +263 -0
  11. package/content/.azure/README.md +293 -0
  12. package/content/.azure/docs/azure-devops-setup.md +454 -0
  13. package/content/.azure/docs/branch-strategy.md +398 -0
  14. package/content/.azure/docs/local-development.md +515 -0
  15. package/content/.azure/pipelines/pipeline-variables.yml +34 -0
  16. package/content/.azure/pipelines/prod-pipeline.yml +319 -0
  17. package/content/.azure/pipelines/staging-pipeline.yml +234 -0
  18. package/content/.azure/pipelines/templates/build-dotnet.yml +75 -0
  19. package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -0
  20. package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -0
  21. package/content/.azure/pipelines/templates/infra-deploy.yml +90 -0
  22. package/content/.claude/commands/morph-apply.md +118 -26
  23. package/content/.claude/commands/morph-archive.md +9 -9
  24. package/content/.claude/commands/morph-clarify.md +184 -0
  25. package/content/.claude/commands/morph-design.md +275 -0
  26. package/content/.claude/commands/morph-proposal.md +56 -15
  27. package/content/.claude/commands/morph-setup.md +100 -0
  28. package/content/.claude/commands/morph-status.md +47 -32
  29. package/content/.claude/commands/morph-tasks.md +319 -0
  30. package/content/.claude/commands/morph-uiux.md +211 -0
  31. package/content/.claude/skills/specialists/ai-system-architect.md +604 -0
  32. package/content/.claude/skills/specialists/ms-agent-expert.md +143 -89
  33. package/content/.claude/skills/specialists/ui-ux-designer.md +744 -9
  34. package/content/.claude/skills/stacks/dotnet-blazor.md +244 -8
  35. package/content/.claude/skills/stacks/dotnet-nextjs.md +2 -2
  36. package/content/.morph/.morphversion +5 -0
  37. package/content/.morph/config/agents.json +101 -8
  38. package/content/.morph/config/azure-pricing.json +70 -0
  39. package/content/.morph/config/azure-pricing.schema.json +50 -0
  40. package/content/.morph/config/config.template.json +15 -3
  41. package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -0
  42. package/content/.morph/hooks/README.md +239 -0
  43. package/content/.morph/hooks/pre-commit-agents.sh +24 -0
  44. package/content/.morph/hooks/pre-commit-all.sh +48 -0
  45. package/content/.morph/hooks/pre-commit-costs.sh +91 -0
  46. package/content/.morph/hooks/pre-commit-specs.sh +49 -0
  47. package/content/.morph/hooks/pre-commit-tests.sh +60 -0
  48. package/content/.morph/project.md +5 -4
  49. package/content/.morph/schemas/agent.schema.json +296 -0
  50. package/content/.morph/standards/agent-framework-setup.md +453 -0
  51. package/content/.morph/standards/architecture.md +142 -7
  52. package/content/.morph/standards/azure.md +218 -23
  53. package/content/.morph/standards/coding.md +47 -12
  54. package/content/.morph/standards/dotnet10-migration.md +494 -0
  55. package/content/.morph/standards/fluent-ui-setup.md +590 -0
  56. package/content/.morph/standards/migration-guide.md +514 -0
  57. package/content/.morph/standards/passkeys-auth.md +423 -0
  58. package/content/.morph/standards/vector-search-rag.md +536 -0
  59. package/content/.morph/state.json +18 -0
  60. package/content/.morph/templates/FluentDesignTheme.cs +149 -0
  61. package/content/.morph/templates/MudTheme.cs +281 -0
  62. package/content/.morph/templates/contracts.cs +55 -55
  63. package/content/.morph/templates/decisions.md +4 -4
  64. package/content/.morph/templates/design-system.css +226 -0
  65. package/content/.morph/templates/infra/.dockerignore.example +89 -0
  66. package/content/.morph/templates/infra/Dockerfile.example +82 -0
  67. package/content/.morph/templates/infra/README.md +286 -0
  68. package/content/.morph/templates/infra/app-service.bicep +164 -0
  69. package/content/.morph/templates/infra/deploy.ps1 +229 -0
  70. package/content/.morph/templates/infra/deploy.sh +208 -0
  71. package/content/.morph/templates/infra/main.bicep +41 -7
  72. package/content/.morph/templates/infra/parameters.dev.json +6 -0
  73. package/content/.morph/templates/infra/parameters.prod.json +6 -0
  74. package/content/.morph/templates/infra/parameters.staging.json +29 -0
  75. package/content/.morph/templates/proposal.md +3 -3
  76. package/content/.morph/templates/recap.md +3 -3
  77. package/content/.morph/templates/spec.md +9 -8
  78. package/content/.morph/templates/sprint-status.yaml +68 -0
  79. package/content/.morph/templates/state.template.json +222 -0
  80. package/content/.morph/templates/story.md +143 -0
  81. package/content/.morph/templates/tasks.md +1 -1
  82. package/content/.morph/templates/ui-components.md +276 -0
  83. package/content/.morph/templates/ui-design-system.md +286 -0
  84. package/content/.morph/templates/ui-flows.md +336 -0
  85. package/content/.morph/templates/ui-mockups.md +133 -0
  86. package/content/.morph/test-infra/example.bicep +59 -0
  87. package/content/CLAUDE.md +124 -0
  88. package/content/README.md +79 -0
  89. package/detectors/config-detector.js +223 -0
  90. package/detectors/conversation-analyzer.js +163 -0
  91. package/detectors/index.js +84 -0
  92. package/detectors/standards-generator.js +275 -0
  93. package/detectors/structure-detector.js +221 -0
  94. package/docs/README.md +149 -0
  95. package/docs/api/cost-calculator.js.html +513 -0
  96. package/docs/api/design-system-generator.js.html +382 -0
  97. package/docs/api/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  98. package/docs/api/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  99. package/docs/api/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  100. package/docs/api/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  101. package/docs/api/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  102. package/docs/api/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  103. package/docs/api/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  104. package/docs/api/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  105. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  106. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
  107. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  108. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  109. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  110. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  111. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
  112. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  113. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  114. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  115. package/docs/api/global.html +5263 -0
  116. package/docs/api/index.html +96 -0
  117. package/docs/api/scripts/collapse.js +39 -0
  118. package/docs/api/scripts/commonNav.js +28 -0
  119. package/docs/api/scripts/linenumber.js +25 -0
  120. package/docs/api/scripts/nav.js +12 -0
  121. package/docs/api/scripts/polyfill.js +4 -0
  122. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -0
  123. package/docs/api/scripts/prettify/lang-css.js +2 -0
  124. package/docs/api/scripts/prettify/prettify.js +28 -0
  125. package/docs/api/scripts/search.js +99 -0
  126. package/docs/api/state-manager.js.html +423 -0
  127. package/docs/api/styles/jsdoc.css +776 -0
  128. package/docs/api/styles/prettify.css +80 -0
  129. package/docs/examples.md +328 -0
  130. package/docs/getting-started.md +302 -0
  131. package/docs/installation.md +361 -0
  132. package/docs/templates.md +418 -0
  133. package/docs/validation-checklist.md +266 -0
  134. package/package.json +39 -12
  135. package/src/commands/cost.js +181 -0
  136. package/src/commands/create-story.js +283 -0
  137. package/src/commands/detect.js +104 -0
  138. package/src/commands/doctor.js +67 -0
  139. package/src/commands/generate.js +149 -0
  140. package/src/commands/init.js +69 -45
  141. package/src/commands/shard-spec.js +224 -0
  142. package/src/commands/sprint-status.js +250 -0
  143. package/src/commands/state.js +333 -0
  144. package/src/commands/sync.js +167 -0
  145. package/src/commands/update-pricing.js +206 -0
  146. package/src/commands/update.js +88 -13
  147. package/src/lib/complexity-analyzer.js +292 -0
  148. package/src/lib/cost-calculator.js +429 -0
  149. package/src/lib/design-system-generator.js +298 -0
  150. package/src/lib/state-manager.js +340 -0
  151. package/src/utils/file-copier.js +59 -0
  152. package/src/utils/version-checker.js +175 -0
@@ -0,0 +1,293 @@
1
+ # MORPH-SPEC - Azure DevOps Pipelines
2
+
3
+ > **CI/CD para One-Person Business com Workload Identity Federation (sem secrets)**
4
+
5
+ ---
6
+
7
+ ## 🚀 Quick Start
8
+
9
+ ### 1. Configurar Workload Identity (10 min)
10
+
11
+ ```bash
12
+ # Ver guia completo em: docs/azure-devops-setup.md
13
+
14
+ # Criar App Registrations
15
+ az ad app create --display-name "myapp-staging-pipeline"
16
+ az ad app create --display-name "myapp-prod-pipeline"
17
+
18
+ # Configurar federated credentials
19
+ # (Ver guia detalhado)
20
+ ```
21
+
22
+ ### 2. Importar Pipelines no Azure DevOps
23
+
24
+ 1. **Pipelines** → **New pipeline**
25
+ 2. **Azure Repos Git** → Selecione repo
26
+ 3. **Existing Azure Pipelines YAML file**
27
+ 4. Selecione:
28
+ - `.azure/pipelines/staging-pipeline.yml`
29
+ - `.azure/pipelines/prod-pipeline.yml`
30
+
31
+ ### 3. Configurar Variáveis
32
+
33
+ Para cada pipeline, adicione:
34
+ ```
35
+ ACR_NAME: <seu-acr-name>
36
+ APP_NAME: <seu-app-name>
37
+ SUBSCRIPTION_ID: <subscription-id>
38
+ ```
39
+
40
+ ### 4. Criar Environments
41
+
42
+ 1. **Pipelines** → **Environments** → **New environment**
43
+ 2. Criar:
44
+ - `staging` (sem aprovação - deploy rápido)
45
+ - `production` (aprovação obrigatória)
46
+
47
+ ### 5. Testar!
48
+
49
+ ```bash
50
+ # Trigger staging pipeline
51
+ git checkout staging
52
+ git commit -m "test" --allow-empty
53
+ git push origin staging
54
+
55
+ # Trigger prod pipeline
56
+ git checkout main
57
+ git commit -m "test" --allow-empty
58
+ git push origin main
59
+ # ⏸️ Aprovar manualmente no Azure DevOps
60
+ ```
61
+
62
+ ---
63
+
64
+ ## 📁 Estrutura
65
+
66
+ ```
67
+ .azure/
68
+ ├── README.md # Este arquivo
69
+ ├── docs/
70
+ │ ├── azure-devops-setup.md # Guia completo de setup
71
+ │ ├── local-development.md # Como rodar projeto local
72
+ │ └── branch-strategy.md # Estratégia de branches
73
+ └── pipelines/
74
+ ├── staging-pipeline.yml # Pipeline staging (branch: staging)
75
+ ├── prod-pipeline.yml # Pipeline prod (branch: main/master)
76
+ ├── pipeline-variables.yml # Variáveis compartilhadas
77
+ └── templates/
78
+ ├── build-dotnet.yml # Template: Build .NET
79
+ ├── deploy-app-service.yml # Template: Deploy App Service
80
+ ├── deploy-container-app.yml # Template: Deploy Container Apps
81
+ └── infra-deploy.yml # Template: Deploy Bicep
82
+ ```
83
+
84
+ ---
85
+
86
+ ## 🔄 Pipelines
87
+
88
+ ### Staging Pipeline (`staging-pipeline.yml`)
89
+
90
+ **Hosting:** Container Apps com scale-to-zero (~$5-10/mês)
91
+
92
+ **Trigger:** Push em `staging` branch
93
+
94
+ **Stages:**
95
+ 1. ✅ Build & Test
96
+ 2. ✅ Deploy Infrastructure (Bicep)
97
+ 3. ✅ Build Container Image
98
+ 4. ✅ Push to ACR
99
+ 5. ✅ Deploy Container App
100
+ 6. ✅ Integration Tests
101
+
102
+ **Aprovação:** Nenhuma (deploy automático)
103
+
104
+ **Uso:** QA, testes de integração
105
+
106
+ ---
107
+
108
+ ### Prod Pipeline (`prod-pipeline.yml`)
109
+
110
+ **Hosting:** Container Apps always-on (~$10-20/mês)
111
+
112
+ **Trigger:** Push em `main` ou `master` branch
113
+
114
+ **Stages:**
115
+ 1. ✅ Build & Test
116
+ 2. ✅ Security Scan
117
+ 3. ✅ Deploy Infrastructure (Bicep) ← **Approval Required**
118
+ 4. ✅ Build Container Image
119
+ 5. ✅ Security Scan (Image)
120
+ 6. ✅ Deploy to Production ← **Approval Required**
121
+ 7. ✅ Smoke Tests (Critical)
122
+ 8. ✅ Monitor & Report
123
+
124
+ **Aprovação:** OBRIGATÓRIA (manual approval gate)
125
+
126
+ **Uso:** Produção, ambiente crítico
127
+
128
+ ---
129
+
130
+ ## 🌐 Desenvolvimento Local
131
+
132
+ **Developers NÃO têm ambiente próprio.** Ao invés disso:
133
+
134
+ - ✅ Rodam projeto **LOCAL** (Visual Studio/Rider/VS Code)
135
+ - ✅ Acessam recursos **REMOTOS** staging (SQL, Storage, Key Vault)
136
+ - ✅ Testam localmente antes de commitar
137
+
138
+ **Ver guia completo:** [`docs/local-development.md`](docs/local-development.md)
139
+
140
+ ---
141
+
142
+ ## 🎯 Fluxo Completo
143
+
144
+ ### Desenvolvimento Diário
145
+
146
+ ```bash
147
+ # 1. Criar feature branch
148
+ git checkout staging
149
+ git pull origin staging
150
+ git checkout -b feature/nova-funcionalidade
151
+
152
+ # 2. Desenvolver LOCAL
153
+ dotnet run # Conecta em recursos staging
154
+
155
+ # 3. Commitar
156
+ git add .
157
+ git commit -m "feat: adiciona nova funcionalidade"
158
+ git push origin feature/nova-funcionalidade
159
+
160
+ # 4. Criar PR para staging
161
+ # Azure DevOps → Repos → Pull Requests → New
162
+ # Source: feature/nova-funcionalidade → Target: staging
163
+ # Self-approve e merge
164
+
165
+ # 5. Staging pipeline triggado automaticamente
166
+ # ✅ Deploy para staging
167
+ ```
168
+
169
+ ### Release para Produção
170
+
171
+ ```bash
172
+ # 1. Criar PR staging → main
173
+ # Azure DevOps → Repos → Pull Requests → New
174
+ # Source: staging → Target: main
175
+
176
+ # 2. Self-review e merge
177
+
178
+ # 3. Prod pipeline triggado
179
+ # ⏸️ Approval gate aparece
180
+ # Revisar deployment summary
181
+ # Aprovar manualmente
182
+
183
+ # 4. Deploy para produção
184
+ # ✅ Aplicação em produção
185
+ ```
186
+
187
+ ---
188
+
189
+ ## 📊 Comparativo de Ambientes
190
+
191
+ | Aspecto | Staging | Prod |
192
+ |---------|---------|------|
193
+ | **Hosting** | Container Apps | Container Apps |
194
+ | **Custo** | $5-10/mês | $10-20/mês |
195
+ | **Disponibilidade** | Scale-to-zero | Always-on (min 1) |
196
+ | **SSL** | Custom domain OK | Custom domain OK |
197
+ | **Auto-scaling** | ✅ Sim | ✅ Sim |
198
+ | **Trigger** | Push to `staging` | Push to `main` |
199
+ | **Aprovação** | Nenhuma | **Obrigatória** |
200
+ | **Tests** | Unit + Integration | Unit + Integration + Security |
201
+
202
+ ---
203
+
204
+ ## 🔐 Workload Identity Federation
205
+
206
+ ### O que é?
207
+
208
+ Autenticação moderna do Azure DevOps para Azure **sem usar secrets/passwords**.
209
+
210
+ ### Vantagens
211
+
212
+ | Tradicional (Service Principal) | Workload Identity |
213
+ |--------------------------------|-------------------|
214
+ | ❌ Secrets expiram (1-2 anos) | ✅ Token auto-renova |
215
+ | ❌ Secrets vazam facilmente | ✅ Sem secrets armazenados |
216
+ | ❌ Rotação manual | ✅ Rotação automática |
217
+ | ❌ Dificil auditar | ✅ Audit trail completo |
218
+
219
+ ### Setup
220
+
221
+ Ver guia completo: [`docs/azure-devops-setup.md`](docs/azure-devops-setup.md)
222
+
223
+ ---
224
+
225
+ ## 🆘 Troubleshooting
226
+
227
+ ### Pipeline falha com "Failed to get federated token"
228
+
229
+ **Causa:** Federated credential não configurado corretamente.
230
+
231
+ **Solução:**
232
+ 1. Verificar subject do federated credential
233
+ 2. Deve ser: `sc://<ORG>/<PROJECT>/<SERVICE_CONNECTION_NAME>`
234
+ 3. Recriar se necessário (ver `docs/azure-devops-setup.md`)
235
+
236
+ ### Pipeline falha com "Insufficient permissions"
237
+
238
+ **Causa:** Service Principal não tem permissões.
239
+
240
+ **Solução:**
241
+ ```bash
242
+ # Adicionar Contributor role
243
+ az role assignment create \
244
+ --assignee <SP_ID> \
245
+ --role Contributor \
246
+ --scope "/subscriptions/<SUB_ID>/resourceGroups/<RG_NAME>"
247
+ ```
248
+
249
+ ### Container não sobe após deploy
250
+
251
+ **Causa:** Possíveis: imagem incorreta, health check falhando, ACR permissions.
252
+
253
+ **Solução:**
254
+ ```bash
255
+ # Ver logs do Container App
256
+ az containerapp logs show \
257
+ -n ca-myapp-staging \
258
+ -g rg-myapp-staging \
259
+ --follow
260
+ ```
261
+
262
+ ---
263
+
264
+ ## 📚 Documentação Completa
265
+
266
+ | Documento | Descrição |
267
+ |-----------|-----------|
268
+ | [Azure DevOps Setup](docs/azure-devops-setup.md) | Setup completo (Workload Identity, Service Connections, Environments) |
269
+ | [Local Development](docs/local-development.md) | Como rodar projeto local e acessar recursos staging |
270
+ | [Branch Strategy](docs/branch-strategy.md) | Estratégia de branches (staging/main, feature branches) |
271
+ | [Migration Guide](../content/.morph/standards/migration-guide.md) | App Service → Container Apps + CI/CD |
272
+ | [Azure Standards](../content/.morph/standards/azure.md) | Padrões Azure e IaC |
273
+
274
+ ---
275
+
276
+ ## ✅ Checklist de Produção
277
+
278
+ Antes de ir para produção:
279
+
280
+ - [ ] Workload Identity configurada (staging/prod)
281
+ - [ ] Service connections criadas e testadas
282
+ - [ ] Variáveis configuradas (ACR_NAME, APP_NAME, SUBSCRIPTION_ID)
283
+ - [ ] Environments criados (staging sem aprovação, prod com aprovação)
284
+ - [ ] Staging pipeline testado com sucesso
285
+ - [ ] Prod pipeline testado com aprovação
286
+ - [ ] Health checks implementados e funcionando
287
+ - [ ] Application Insights configurado
288
+ - [ ] Alerts configurados (CPU, Memory, Availability)
289
+ - [ ] Runbook de rollback documentado
290
+
291
+ ---
292
+
293
+ *MORPH-SPEC by Polymorphism Tech*