@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.
Files changed (251) hide show
  1. package/CLAUDE.md +314 -1673
  2. package/LICENSE +72 -72
  3. package/README.md +515 -516
  4. package/bin/detect-agents.js +225 -225
  5. package/bin/morph-spec.js +358 -173
  6. package/bin/render-template.js +302 -302
  7. package/bin/semantic-detect-agents.js +246 -246
  8. package/bin/task-manager.js +429 -0
  9. package/bin/validate-agents-skills.js +251 -251
  10. package/bin/validate-agents.js +69 -69
  11. package/bin/validate-phase.js +263 -263
  12. package/bin/validate.js +369 -0
  13. package/content/.azure/README.md +293 -293
  14. package/content/.azure/docs/azure-devops-setup.md +454 -454
  15. package/content/.azure/docs/branch-strategy.md +398 -398
  16. package/content/.azure/docs/local-development.md +515 -515
  17. package/content/.azure/pipelines/pipeline-variables.yml +34 -34
  18. package/content/.azure/pipelines/prod-pipeline.yml +319 -319
  19. package/content/.azure/pipelines/staging-pipeline.yml +234 -234
  20. package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
  21. package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
  22. package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
  23. package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
  24. package/content/.claude/commands/morph-apply.md +221 -158
  25. package/content/.claude/commands/morph-archive.md +79 -79
  26. package/content/.claude/commands/morph-infra.md +209 -209
  27. package/content/.claude/commands/morph-preflight.md +227 -0
  28. package/content/.claude/commands/morph-proposal.md +122 -101
  29. package/content/.claude/commands/morph-status.md +86 -86
  30. package/content/.claude/commands/morph-troubleshoot.md +122 -0
  31. package/content/.claude/settings.local.json +15 -15
  32. package/content/.claude/skills/checklists/code-review.md +226 -0
  33. package/content/.claude/skills/checklists/morph-checklist.md +117 -0
  34. package/content/.claude/skills/checklists/simulation-checklist.md +77 -0
  35. package/content/.claude/skills/infra/bicep-architect.md +126 -419
  36. package/content/.claude/skills/infra/container-specialist.md +131 -437
  37. package/content/.claude/skills/infra/devops-engineer.md +119 -405
  38. package/content/.claude/skills/integrations/asaas-financial.md +130 -333
  39. package/content/.claude/skills/integrations/azure-identity.md +142 -309
  40. package/content/.claude/skills/integrations/clerk-auth.md +108 -290
  41. package/content/.claude/skills/integrations/resend-email.md +119 -0
  42. package/content/.claude/skills/specialists/ai-system-architect.md +192 -604
  43. package/content/.claude/skills/specialists/azure-architect.md +142 -142
  44. package/content/.claude/skills/specialists/code-analyzer.md +235 -0
  45. package/content/.claude/skills/specialists/dotnet-senior.md +287 -0
  46. package/content/.claude/skills/specialists/ef-modeler.md +113 -200
  47. package/content/.claude/skills/specialists/hangfire-orchestrator.md +126 -245
  48. package/content/.claude/skills/specialists/ms-agent-expert.md +109 -263
  49. package/content/.claude/skills/specialists/po-pm-advisor.md +197 -197
  50. package/content/.claude/skills/specialists/standards-architect.md +156 -78
  51. package/content/.claude/skills/specialists/testing-specialist.md +126 -0
  52. package/content/.claude/skills/specialists/ui-ux-designer.md +191 -1060
  53. package/content/.claude/skills/stacks/dotnet-blazor.md +210 -588
  54. package/content/.claude/skills/stacks/dotnet-nextjs.md +154 -402
  55. package/content/.claude/skills/workflows/morph-replicate.md +213 -0
  56. package/content/.claude/{commands/morph-clarify.md → skills/workflows/phase-clarify.md} +5 -58
  57. package/content/.claude/{commands/morph-design.md → skills/workflows/phase-design.md} +16 -86
  58. package/content/.claude/{commands/morph-setup.md → skills/workflows/phase-setup.md} +9 -17
  59. package/content/.claude/skills/workflows/phase-tasks.md +164 -0
  60. package/content/.claude/{commands/morph-uiux.md → skills/workflows/phase-uiux.md} +15 -88
  61. package/content/.morph/.morphversion +5 -5
  62. package/content/.morph/archive/.gitkeep +25 -25
  63. package/content/.morph/config/agents.json +378 -242
  64. package/content/.morph/config/config.template.json +89 -108
  65. package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
  66. package/content/.morph/docs/workflows/design-impl.md +37 -0
  67. package/content/.morph/docs/workflows/fast-track.md +29 -0
  68. package/content/.morph/docs/workflows/full-morph.md +76 -0
  69. package/content/.morph/docs/workflows/standard.md +44 -0
  70. package/content/.morph/docs/workflows/ui-refresh.md +39 -0
  71. package/content/.morph/examples/api-nextjs/README.md +241 -241
  72. package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
  73. package/content/.morph/examples/api-nextjs/spec.md +399 -399
  74. package/content/.morph/examples/api-nextjs/tasks.md +168 -168
  75. package/content/.morph/examples/micro-saas/README.md +125 -125
  76. package/content/.morph/examples/micro-saas/contracts.cs +358 -358
  77. package/content/.morph/examples/micro-saas/decisions.md +246 -246
  78. package/content/.morph/examples/micro-saas/spec.md +236 -236
  79. package/content/.morph/examples/micro-saas/tasks.md +150 -150
  80. package/content/.morph/examples/multi-agent/README.md +309 -309
  81. package/content/.morph/examples/multi-agent/contracts.cs +433 -433
  82. package/content/.morph/examples/multi-agent/spec.md +479 -479
  83. package/content/.morph/examples/multi-agent/tasks.md +185 -185
  84. package/content/.morph/examples/scheduled-reports/decisions.md +158 -0
  85. package/content/.morph/examples/scheduled-reports/proposal.md +95 -0
  86. package/content/.morph/examples/scheduled-reports/spec.md +267 -0
  87. package/content/.morph/examples/state-v3.json +188 -0
  88. package/content/.morph/features/.gitkeep +25 -25
  89. package/content/.morph/hooks/README.md +190 -239
  90. package/content/.morph/hooks/pre-commit-agents.sh +24 -24
  91. package/content/.morph/hooks/pre-commit-all.sh +48 -48
  92. package/content/.morph/hooks/pre-commit-specs.sh +49 -49
  93. package/content/.morph/hooks/pre-commit-tests.sh +60 -60
  94. package/content/.morph/project.md +160 -160
  95. package/content/.morph/schemas/agent.schema.json +296 -296
  96. package/content/.morph/schemas/tasks.schema.json +220 -0
  97. package/content/.morph/specs/.gitkeep +20 -20
  98. package/content/.morph/standards/agent-framework-blazor-ui.md +359 -0
  99. package/content/.morph/standards/agent-framework-production.md +410 -0
  100. package/content/.morph/standards/agent-framework-setup.md +413 -453
  101. package/content/.morph/standards/agent-framework-workflows.md +349 -0
  102. package/content/.morph/standards/architecture.md +325 -325
  103. package/content/.morph/standards/azure.md +605 -379
  104. package/content/.morph/standards/coding.md +377 -377
  105. package/content/.morph/standards/dotnet10-migration.md +520 -494
  106. package/content/.morph/standards/fluent-ui-setup.md +590 -590
  107. package/content/.morph/standards/migration-guide.md +514 -514
  108. package/content/.morph/standards/passkeys-auth.md +423 -423
  109. package/content/.morph/standards/vector-search-rag.md +536 -536
  110. package/content/.morph/state.json +17 -17
  111. package/content/.morph/templates/FluentDesignTheme.cs +149 -149
  112. package/content/.morph/templates/MudTheme.cs +281 -281
  113. package/content/.morph/templates/agent.cs +163 -172
  114. package/content/.morph/templates/clarify-questions.md +159 -0
  115. package/content/.morph/templates/component.razor +239 -239
  116. package/content/.morph/templates/contracts/Commands.cs +74 -0
  117. package/content/.morph/templates/contracts/Entities.cs +25 -0
  118. package/content/.morph/templates/contracts/Queries.cs +74 -0
  119. package/content/.morph/templates/contracts/README.md +74 -0
  120. package/content/.morph/templates/contracts.cs +217 -217
  121. package/content/.morph/templates/decisions.md +123 -106
  122. package/content/.morph/templates/design-system.css +226 -226
  123. package/content/.morph/templates/infra/.dockerignore.example +89 -89
  124. package/content/.morph/templates/infra/Dockerfile.example +82 -82
  125. package/content/.morph/templates/infra/README.md +286 -286
  126. package/content/.morph/templates/infra/app-insights.bicep +63 -63
  127. package/content/.morph/templates/infra/app-service.bicep +164 -164
  128. package/content/.morph/templates/infra/container-app-env.bicep +49 -49
  129. package/content/.morph/templates/infra/container-app.bicep +156 -156
  130. package/content/.morph/templates/infra/deploy-checklist.md +426 -0
  131. package/content/.morph/templates/infra/deploy.ps1 +229 -229
  132. package/content/.morph/templates/infra/deploy.sh +208 -208
  133. package/content/.morph/templates/infra/key-vault.bicep +91 -91
  134. package/content/.morph/templates/infra/main.bicep +189 -189
  135. package/content/.morph/templates/infra/parameters.dev.json +29 -29
  136. package/content/.morph/templates/infra/parameters.prod.json +29 -29
  137. package/content/.morph/templates/infra/parameters.staging.json +29 -29
  138. package/content/.morph/templates/infra/sql-database.bicep +103 -103
  139. package/content/.morph/templates/infra/storage.bicep +106 -106
  140. package/content/.morph/templates/integrations/asaas-client.cs +387 -387
  141. package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
  142. package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
  143. package/content/.morph/templates/integrations/clerk-config.cs +258 -258
  144. package/content/.morph/templates/job.cs +171 -171
  145. package/content/.morph/templates/migration.cs +83 -83
  146. package/content/.morph/templates/proposal.md +141 -155
  147. package/content/.morph/templates/recap.md +94 -105
  148. package/content/.morph/templates/repository.cs +141 -141
  149. package/content/.morph/templates/saas/subscription.cs +347 -347
  150. package/content/.morph/templates/saas/tenant.cs +338 -338
  151. package/content/.morph/templates/service.cs +139 -139
  152. package/content/.morph/templates/simulation.md +353 -0
  153. package/content/.morph/templates/spec.md +149 -148
  154. package/content/.morph/templates/sprint-status.yaml +68 -68
  155. package/content/.morph/templates/state.template.json +222 -222
  156. package/content/.morph/templates/story.md +143 -143
  157. package/content/.morph/templates/tasks.md +257 -235
  158. package/content/.morph/templates/test.cs +239 -239
  159. package/content/.morph/templates/ui-components.md +362 -276
  160. package/content/.morph/templates/ui-design-system.md +286 -286
  161. package/content/.morph/templates/ui-flows.md +336 -336
  162. package/content/.morph/templates/ui-mockups.md +133 -133
  163. package/content/.morph/test-infra/example.bicep +59 -59
  164. package/content/CLAUDE.md +150 -442
  165. package/content/README.md +79 -79
  166. package/detectors/config-detector.js +223 -223
  167. package/detectors/conversation-analyzer.js +163 -163
  168. package/detectors/index.js +84 -84
  169. package/detectors/standards-generator.js +275 -275
  170. package/detectors/structure-detector.js +245 -250
  171. package/docs/README.md +144 -149
  172. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
  173. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
  174. package/docs/api/scripts/collapse.js +38 -38
  175. package/docs/api/scripts/commonNav.js +28 -28
  176. package/docs/api/scripts/linenumber.js +25 -25
  177. package/docs/api/scripts/nav.js +12 -12
  178. package/docs/api/scripts/polyfill.js +3 -3
  179. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
  180. package/docs/api/scripts/prettify/lang-css.js +2 -2
  181. package/docs/api/scripts/prettify/prettify.js +28 -28
  182. package/docs/api/scripts/search.js +98 -98
  183. package/docs/api/styles/jsdoc.css +776 -776
  184. package/docs/api/styles/prettify.css +80 -80
  185. package/docs/examples.md +328 -328
  186. package/docs/getting-started.md +301 -302
  187. package/docs/installation.md +361 -361
  188. package/docs/templates.md +418 -418
  189. package/docs/validation-checklist.md +265 -266
  190. package/package.json +80 -80
  191. package/scripts/postinstall.js +132 -132
  192. package/src/commands/advance-phase.js +183 -0
  193. package/src/commands/analyze-blazor-concurrency.js +193 -0
  194. package/src/commands/create-story.js +351 -351
  195. package/src/commands/detect-agents.js +139 -0
  196. package/src/commands/detect.js +104 -104
  197. package/src/commands/doctor.js +356 -280
  198. package/src/commands/generate.js +149 -149
  199. package/src/commands/init.js +258 -245
  200. package/src/commands/lint-fluent.js +352 -0
  201. package/src/commands/rollback-phase.js +185 -0
  202. package/src/commands/session-summary.js +291 -0
  203. package/src/commands/shard-spec.js +224 -224
  204. package/src/commands/sprint-status.js +250 -250
  205. package/src/commands/state.js +333 -333
  206. package/src/commands/sync.js +167 -167
  207. package/src/commands/task.js +78 -0
  208. package/src/commands/troubleshoot.js +222 -0
  209. package/src/commands/update.js +192 -159
  210. package/src/commands/validate-blazor-state.js +210 -0
  211. package/src/commands/validate-blazor.js +156 -0
  212. package/src/commands/validate-css.js +84 -0
  213. package/src/commands/validate-phase.js +221 -0
  214. package/src/lib/blazor-concurrency-analyzer.js +288 -0
  215. package/src/lib/blazor-state-validator.js +291 -0
  216. package/src/lib/blazor-validator.js +374 -0
  217. package/src/lib/complexity-analyzer.js +441 -292
  218. package/src/lib/continuous-validator.js +421 -0
  219. package/src/lib/css-validator.js +352 -0
  220. package/src/lib/decision-constraint-loader.js +109 -0
  221. package/src/lib/design-system-generator.js +298 -298
  222. package/src/lib/learning-system.js +520 -0
  223. package/src/lib/mockup-generator.js +366 -0
  224. package/src/lib/recap-generator.js +205 -0
  225. package/src/lib/state-manager.js +397 -340
  226. package/src/lib/troubleshoot-grep.js +194 -0
  227. package/src/lib/troubleshoot-index.js +144 -0
  228. package/src/lib/ui-detector.js +350 -0
  229. package/src/lib/validation-runner.js +231 -0
  230. package/src/lib/validators/architecture-validator.js +387 -0
  231. package/src/lib/validators/contract-compliance-validator.js +273 -0
  232. package/src/lib/validators/package-validator.js +360 -0
  233. package/src/lib/validators/ui-contrast-validator.js +422 -0
  234. package/src/utils/file-copier.js +179 -139
  235. package/src/utils/logger.js +32 -32
  236. package/src/utils/version-checker.js +175 -175
  237. package/content/.claude/commands/morph-costs.md +0 -206
  238. package/content/.claude/commands/morph-tasks.md +0 -319
  239. package/content/.claude/skills/specialists/cost-guardian.md +0 -110
  240. package/content/.claude/skills/stacks/shopify.md +0 -445
  241. package/content/.morph/config/azure-pricing.json +0 -70
  242. package/content/.morph/config/azure-pricing.schema.json +0 -50
  243. package/content/.morph/hooks/pre-commit-costs.sh +0 -91
  244. package/docs/api/cost-calculator.js.html +0 -513
  245. package/docs/api/design-system-generator.js.html +0 -382
  246. package/docs/api/global.html +0 -5263
  247. package/docs/api/index.html +0 -96
  248. package/docs/api/state-manager.js.html +0 -423
  249. package/src/commands/cost.js +0 -181
  250. package/src/commands/update-pricing.js +0 -206
  251. package/src/lib/cost-calculator.js +0 -429
@@ -1,142 +1,142 @@
1
- # Azure Architect
2
-
3
- Especialista em infraestrutura Azure com foco em Infrastructure as Code (Bicep).
4
-
5
- ## Responsabilidades
6
-
7
- 1. **Desenhar infraestrutura Azure** para projetos
8
- 2. **Criar templates Bicep** para provisionar recursos
9
- 3. **Estimar custos** antes de aprovar recursos
10
- 4. **Garantir zero portal** - tudo via código
11
-
12
- ## Triggers
13
-
14
- Ativado automaticamente em todo projeto MORPH-SPEC (Core Agent).
15
-
16
- Keywords: `azure`, `infrastructure`, `bicep`, `deploy`, `container apps`, `sql`, `storage`, `provision`
17
-
18
- ## Princípio: Zero Portal
19
-
20
- > **NUNCA** criar recursos Azure manualmente no portal. Tudo via Bicep.
21
-
22
- ## Estrutura IaC
23
-
24
- ```
25
- infra/
26
- ├── main.bicep # Entry point
27
- ├── parameters.dev.json # Ambiente dev
28
- ├── parameters.prod.json # Ambiente prod
29
- └── modules/
30
- ├── container-app.bicep # Container Apps
31
- ├── sql-database.bicep # Azure SQL
32
- ├── storage.bicep # Storage Account
33
- ├── key-vault.bicep # Key Vault
34
- ├── app-insights.bicep # Monitoring
35
- └── service-bus.bicep # Mensageria
36
- ```
37
-
38
- ## Template Bicep Base
39
-
40
- ```bicep
41
- // infra/main.bicep
42
- targetScope = 'resourceGroup'
43
-
44
- @description('Environment name')
45
- param environment string = 'dev'
46
-
47
- @description('Location for resources')
48
- param location string = resourceGroup().location
49
-
50
- @description('Application name')
51
- param appName string
52
-
53
- // Variables
54
- var resourcePrefix = '${appName}-${environment}'
55
-
56
- // Container App Environment
57
- module containerAppEnv 'modules/container-app-env.bicep' = {
58
- name: 'containerAppEnv'
59
- params: {
60
- name: '${resourcePrefix}-env'
61
- location: location
62
- }
63
- }
64
-
65
- // Container App
66
- module containerApp 'modules/container-app.bicep' = {
67
- name: 'containerApp'
68
- params: {
69
- name: resourcePrefix
70
- location: location
71
- environmentId: containerAppEnv.outputs.id
72
- }
73
- }
74
- ```
75
-
76
- ## Recursos Recomendados por Tier
77
-
78
- ### Free Tier (Sem aprovação)
79
-
80
- | Recurso | Config | Custo |
81
- |---------|--------|-------|
82
- | Azure SQL | Free 32GB | $0 |
83
- | Container Apps | Scale to zero | ~$0 |
84
- | Storage | LRS 5GB | ~$0 |
85
- | App Insights | Free tier | $0 |
86
-
87
- ### Basic Tier (Até $10/mês)
88
-
89
- | Recurso | Config | Custo |
90
- |---------|--------|-------|
91
- | Azure SQL | Basic DTU | ~$5 |
92
- | Service Bus | Basic | ~$0.05 |
93
- | Key Vault | Standard | ~$0.03 |
94
-
95
- ## Comandos de Deploy
96
-
97
- ```powershell
98
- # Criar resource group
99
- az group create --name rg-{app}-{env} --location brazilsouth
100
-
101
- # Deploy com Bicep
102
- az deployment group create \
103
- --resource-group rg-{app}-{env} \
104
- --template-file infra/main.bicep \
105
- --parameters @infra/parameters.{env}.json
106
-
107
- # Validar antes de deploy
108
- az deployment group what-if \
109
- --resource-group rg-{app}-{env} \
110
- --template-file infra/main.bicep \
111
- --parameters @infra/parameters.{env}.json
112
- ```
113
-
114
- ## Quando usar SDK .NET vs Bicep
115
-
116
- | Recurso | Abordagem | Motivo |
117
- |---------|-----------|--------|
118
- | SQL, Storage, Container Apps | Bicep | Infra estática, declarativa |
119
- | Azure AI, Fabric | SDK .NET | Recursos dinâmicos, runtime |
120
- | Secrets | Key Vault + Bicep | Segurança |
121
-
122
- ## Documentação de Referência
123
-
124
- - [Azure Bicep](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/)
125
- - [Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/)
126
- - [Azure SQL](https://learn.microsoft.com/en-us/azure/azure-sql/)
127
- - [Azure SDK for .NET](https://learn.microsoft.com/en-us/dotnet/azure/)
128
- - [Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/)
129
-
130
- ## Checklist de Infraestrutura
131
-
132
- - [ ] Bicep válido (`az bicep build`)
133
- - [ ] Parâmetros para dev e prod
134
- - [ ] Custos estimados e documentados
135
- - [ ] Secrets no Key Vault (não hardcoded)
136
- - [ ] Logs configurados (App Insights)
137
- - [ ] Scale-to-zero onde possível
138
- - [ ] Naming convention consistente
139
-
140
- ---
141
-
142
- *MORPH-SPEC by Polymorphism Tech*
1
+ # Azure Architect
2
+
3
+ Especialista em infraestrutura Azure com foco em Infrastructure as Code (Bicep).
4
+
5
+ ## Responsabilidades
6
+
7
+ 1. **Desenhar infraestrutura Azure** para projetos
8
+ 2. **Criar templates Bicep** para provisionar recursos
9
+ 3. **Estimar custos** antes de aprovar recursos
10
+ 4. **Garantir zero portal** - tudo via código
11
+
12
+ ## Triggers
13
+
14
+ Ativado automaticamente em todo projeto MORPH-SPEC (Core Agent).
15
+
16
+ Keywords: `azure`, `infrastructure`, `bicep`, `deploy`, `container apps`, `sql`, `storage`, `provision`
17
+
18
+ ## Princípio: Zero Portal
19
+
20
+ > **NUNCA** criar recursos Azure manualmente no portal. Tudo via Bicep.
21
+
22
+ ## Estrutura IaC
23
+
24
+ ```
25
+ infra/
26
+ ├── main.bicep # Entry point
27
+ ├── parameters.dev.json # Ambiente dev
28
+ ├── parameters.prod.json # Ambiente prod
29
+ └── modules/
30
+ ├── container-app.bicep # Container Apps
31
+ ├── sql-database.bicep # Azure SQL
32
+ ├── storage.bicep # Storage Account
33
+ ├── key-vault.bicep # Key Vault
34
+ ├── app-insights.bicep # Monitoring
35
+ └── service-bus.bicep # Mensageria
36
+ ```
37
+
38
+ ## Template Bicep Base
39
+
40
+ ```bicep
41
+ // infra/main.bicep
42
+ targetScope = 'resourceGroup'
43
+
44
+ @description('Environment name')
45
+ param environment string = 'dev'
46
+
47
+ @description('Location for resources')
48
+ param location string = resourceGroup().location
49
+
50
+ @description('Application name')
51
+ param appName string
52
+
53
+ // Variables
54
+ var resourcePrefix = '${appName}-${environment}'
55
+
56
+ // Container App Environment
57
+ module containerAppEnv 'modules/container-app-env.bicep' = {
58
+ name: 'containerAppEnv'
59
+ params: {
60
+ name: '${resourcePrefix}-env'
61
+ location: location
62
+ }
63
+ }
64
+
65
+ // Container App
66
+ module containerApp 'modules/container-app.bicep' = {
67
+ name: 'containerApp'
68
+ params: {
69
+ name: resourcePrefix
70
+ location: location
71
+ environmentId: containerAppEnv.outputs.id
72
+ }
73
+ }
74
+ ```
75
+
76
+ ## Recursos Recomendados por Tier
77
+
78
+ ### Free Tier (Sem aprovação)
79
+
80
+ | Recurso | Config | Custo |
81
+ |---------|--------|-------|
82
+ | Azure SQL | Free 32GB | $0 |
83
+ | Container Apps | Scale to zero | ~$0 |
84
+ | Storage | LRS 5GB | ~$0 |
85
+ | App Insights | Free tier | $0 |
86
+
87
+ ### Basic Tier (Até $10/mês)
88
+
89
+ | Recurso | Config | Custo |
90
+ |---------|--------|-------|
91
+ | Azure SQL | Basic DTU | ~$5 |
92
+ | Service Bus | Basic | ~$0.05 |
93
+ | Key Vault | Standard | ~$0.03 |
94
+
95
+ ## Comandos de Deploy
96
+
97
+ ```powershell
98
+ # Criar resource group
99
+ az group create --name rg-{app}-{env} --location brazilsouth
100
+
101
+ # Deploy com Bicep
102
+ az deployment group create \
103
+ --resource-group rg-{app}-{env} \
104
+ --template-file infra/main.bicep \
105
+ --parameters @infra/parameters.{env}.json
106
+
107
+ # Validar antes de deploy
108
+ az deployment group what-if \
109
+ --resource-group rg-{app}-{env} \
110
+ --template-file infra/main.bicep \
111
+ --parameters @infra/parameters.{env}.json
112
+ ```
113
+
114
+ ## Quando usar SDK .NET vs Bicep
115
+
116
+ | Recurso | Abordagem | Motivo |
117
+ |---------|-----------|--------|
118
+ | SQL, Storage, Container Apps | Bicep | Infra estática, declarativa |
119
+ | Azure AI, Fabric | SDK .NET | Recursos dinâmicos, runtime |
120
+ | Secrets | Key Vault + Bicep | Segurança |
121
+
122
+ ## Documentação de Referência
123
+
124
+ - [Azure Bicep](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/)
125
+ - [Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/)
126
+ - [Azure SQL](https://learn.microsoft.com/en-us/azure/azure-sql/)
127
+ - [Azure SDK for .NET](https://learn.microsoft.com/en-us/dotnet/azure/)
128
+ - [Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/)
129
+
130
+ ## Checklist de Infraestrutura
131
+
132
+ - [ ] Bicep válido (`az bicep build`)
133
+ - [ ] Parâmetros para dev e prod
134
+ - [ ] Custos estimados e documentados
135
+ - [ ] Secrets no Key Vault (não hardcoded)
136
+ - [ ] Logs configurados (App Insights)
137
+ - [ ] Scale-to-zero onde possível
138
+ - [ ] Naming convention consistente
139
+
140
+ ---
141
+
142
+ *MORPH-SPEC by Polymorphism Tech*
@@ -0,0 +1,235 @@
1
+ # Code Analyzer
2
+
3
+ > **Layer:** 2 | **Load:** on-keyword | **Keywords:** analyze, review, refactor, clean, smell, duplicate, architecture, quality, debt, unused, dead code, code review, code quality
4
+
5
+ Deep code analysis specialist. Automates architecture review, clean code checks, and duplication detection.
6
+
7
+ > **Ref:** `framework/standards/coding.md` for naming conventions.
8
+ > **Ref:** `framework/standards/architecture.md` for architectural patterns.
9
+ > **Ref:** `.claude/skills/checklists/code-review.md` for runtime pattern checks.
10
+
11
+ ---
12
+
13
+ ## When to Run
14
+
15
+ | Trigger | Automatic? | Scope |
16
+ |---------|-----------|-------|
17
+ | FASE 5 completion (`/morph-apply` done) | Yes | Full feature code |
18
+ | Checkpoint (every 3 tasks) | Yes | Code since last checkpoint |
19
+ | Manual: `analyze`, `review code`, `code quality` | No | Specified scope |
20
+ | Pre-merge review | Recommended | All changed files |
21
+
22
+ ---
23
+
24
+ ## 3 Analysis Modes
25
+
26
+ Run all 3 modes by default. Use `--mode architecture`, `--mode clean`, or `--mode duplication` for targeted analysis.
27
+
28
+ ---
29
+
30
+ ### Mode 1: Architecture Analysis
31
+
32
+ Analyze the codebase for structural and architectural issues.
33
+
34
+ #### Checklist
35
+
36
+ **Layer Integrity:**
37
+ - [ ] `[CRITICAL]` Domain project has zero references to Infrastructure or Web
38
+ - [ ] `[CRITICAL]` Application does NOT reference Web project
39
+ - [ ] `[HIGH]` No circular dependencies between projects
40
+ - [ ] `[HIGH]` Infrastructure details don't leak into Application (no EF types in DTOs)
41
+
42
+ **Responsibility Separation:**
43
+ - [ ] `[HIGH]` Each class has a single, clear responsibility (< 300 lines)
44
+ - [ ] `[HIGH]` Controllers/pages are thin (< 50 lines logic, delegate to services)
45
+ - [ ] `[MEDIUM]` Interfaces are focused (< 7 methods per interface)
46
+ - [ ] `[MEDIUM]` No "God classes" (classes with 10+ dependencies)
47
+
48
+ **Abstractions:**
49
+ - [ ] `[MEDIUM]` External services accessed through interfaces (testable)
50
+ - [ ] `[LOW]` No over-abstraction (interfaces with exactly 1 implementation that's never mocked)
51
+ - [ ] `[MEDIUM]` Missing abstractions: direct HTTP calls, file I/O, or DB access without interface
52
+
53
+ **File Organization:**
54
+ - [ ] `[MEDIUM]` One class per file (file name matches class name)
55
+ - [ ] `[MEDIUM]` Files in correct project/folder per architecture.md
56
+ - [ ] `[LOW]` Consistent folder structure across all layers
57
+
58
+ **Configuration:**
59
+ - [ ] `[HIGH]` No hardcoded connection strings, URLs, or secrets
60
+ - [ ] `[MEDIUM]` Configuration via Options pattern (`IOptions<T>`)
61
+ - [ ] `[LOW]` No duplicate configuration across projects
62
+
63
+ **Unused Code:**
64
+ - [ ] `[MEDIUM]` No unused classes or interfaces (search for zero references)
65
+ - [ ] `[MEDIUM]` No dead code paths (unreachable branches)
66
+ - [ ] `[LOW]` No commented-out code blocks (> 3 lines)
67
+ - [ ] `[LOW]` No empty or near-empty files (< 10 lines of actual code)
68
+
69
+ ---
70
+
71
+ ### Mode 2: Clean Code Analysis
72
+
73
+ Analyze for code smells, style violations, and improvement opportunities.
74
+
75
+ #### Checklist
76
+
77
+ **Naming (ref: coding.md):**
78
+ - [ ] `[HIGH]` All naming follows coding.md conventions (PascalCase constants, _camelCase fields, etc.)
79
+ - [ ] `[HIGH]` No Hungarian notation (`strName`, `iCount`, `btnSubmit`)
80
+ - [ ] `[HIGH]` No ALL_CAPS constants (`MAX_RETRY` -> `MaxRetry`)
81
+ - [ ] `[MEDIUM]` Descriptive names (no `data`, `info`, `item`, `result` without context)
82
+ - [ ] `[MEDIUM]` No abbreviations in public APIs (`repo` -> `repository`)
83
+
84
+ **Method Quality:**
85
+ - [ ] `[HIGH]` No methods > 30 lines (extract sub-methods)
86
+ - [ ] `[HIGH]` No methods with > 4 parameters (use request object)
87
+ - [ ] `[MEDIUM]` No nested conditionals > 3 levels (extract or use early return)
88
+ - [ ] `[MEDIUM]` No complex conditionals (> 3 conditions in one `if` — extract to named bool or method)
89
+
90
+ **Class Quality:**
91
+ - [ ] `[HIGH]` No classes > 300 lines (SRP violation — split)
92
+ - [ ] `[HIGH]` No classes with > 7 constructor dependencies (God class — split)
93
+ - [ ] `[MEDIUM]` Classes are `sealed` unless designed for inheritance
94
+
95
+ **Magic Values:**
96
+ - [ ] `[HIGH]` No magic strings in comparisons (`if (status == "active")` -> use enum or constant)
97
+ - [ ] `[HIGH]` No magic numbers (`if (items.Count > 50)` -> extract `const int MaxItemsPerPage = 50`)
98
+ - [ ] `[MEDIUM]` No hardcoded URLs, file paths, or configuration values
99
+
100
+ **Dead Code:**
101
+ - [ ] `[MEDIUM]` No unused private methods (zero callers)
102
+ - [ ] `[MEDIUM]` No unused parameters in methods
103
+ - [ ] `[LOW]` No TODO/FIXME/HACK comments older than 2 sprints
104
+ - [ ] `[LOW]` No `#if DEBUG` blocks with substantial logic
105
+
106
+ **Error Handling:**
107
+ - [ ] `[CRITICAL]` No empty catch blocks
108
+ - [ ] `[HIGH]` No generic `catch (Exception)` without re-throw
109
+ - [ ] `[HIGH]` Result pattern used for business errors (not exceptions)
110
+ - [ ] `[MEDIUM]` Consistent error handling pattern across all services
111
+
112
+ **Logging:**
113
+ - [ ] `[HIGH]` No `$""` string interpolation in log methods (use message templates)
114
+ - [ ] `[HIGH]` Critical operations have entry/exit/error logging
115
+ - [ ] `[MEDIUM]` Log messages include correlation IDs (OrderId, UserId)
116
+ - [ ] `[MEDIUM]` Consistent log levels across similar operations
117
+
118
+ ---
119
+
120
+ ### Mode 3: Duplication Detection
121
+
122
+ Find redundant, duplicate, and unnecessary code.
123
+
124
+ #### Targets
125
+
126
+ **Exact/Near-Exact Duplicates:**
127
+ - [ ] `[HIGH]` Methods with identical or near-identical logic in different classes
128
+ - Same method body, different class -> extract to shared service or extension
129
+ - Same logic with different types -> extract to generic method
130
+ - [ ] `[HIGH]` Repeated code blocks (> 5 lines identical in 2+ locations)
131
+
132
+ **Thin Wrappers:**
133
+ - [ ] `[MEDIUM]` Methods that only delegate to another method with same parameters
134
+ ```csharp
135
+ // SMELL: Thin wrapper with no added value
136
+ public Task<Order> GetOrderAsync(int id, CancellationToken ct)
137
+ => _innerService.GetOrderAsync(id, ct);
138
+ ```
139
+ - [ ] `[MEDIUM]` Service methods that only call a repository method (no logic added)
140
+
141
+ **Interface Redundancy:**
142
+ - [ ] `[MEDIUM]` Same method signature appearing in multiple interfaces (extract base interface)
143
+ - [ ] `[LOW]` Interface that exactly mirrors another interface (merge or inherit)
144
+
145
+ **Passthrough Delegates:**
146
+ - [ ] `[MEDIUM]` Controller/page methods that only call one service method and return result
147
+ - If no validation, auth, or mapping: consider simplifying the layer
148
+
149
+ **DTO/Model Duplication:**
150
+ - [ ] `[HIGH]` Duplicate model definitions (same properties in different classes)
151
+ - [ ] `[MEDIUM]` Request/Response DTOs that are identical (merge or use shared base)
152
+ - [ ] `[MEDIUM]` Enums defined in multiple projects (centralize in Domain)
153
+
154
+ ---
155
+
156
+ ## Output Format
157
+
158
+ For each finding, report:
159
+
160
+ ```
161
+ ### [{SEVERITY}] {Category}: {Short Description}
162
+
163
+ **File:** `path/to/file.cs:42`
164
+ **Rule:** {rule reference from checklist above}
165
+
166
+ **Current code:**
167
+ ```csharp
168
+ // problematic code snippet
169
+ ```
170
+
171
+ **Suggested fix:**
172
+ ```csharp
173
+ // corrected code snippet
174
+ ```
175
+
176
+ **Why:** {brief explanation of the problem and impact}
177
+ ```
178
+
179
+ ---
180
+
181
+ ## Summary Template
182
+
183
+ After analysis, generate a summary:
184
+
185
+ ```markdown
186
+ ## Code Analysis Summary
187
+
188
+ **Scope:** {files/feature analyzed}
189
+ **Date:** {date}
190
+ **Modes:** Architecture | Clean Code | Duplication
191
+
192
+ ### Findings by Severity
193
+
194
+ | Severity | Count |
195
+ |----------|-------|
196
+ | CRITICAL | {n} |
197
+ | HIGH | {n} |
198
+ | MEDIUM | {n} |
199
+ | LOW | {n} |
200
+
201
+ ### Top 5 Priorities
202
+
203
+ 1. {Most critical finding with file:line}
204
+ 2. {Second most critical}
205
+ 3. ...
206
+
207
+ ### Estimated Effort
208
+
209
+ | Category | Findings | Effort |
210
+ |----------|----------|--------|
211
+ | Quick fixes (naming, style) | {n} | ~{h}h |
212
+ | Refactoring (extraction, splitting) | {n} | ~{h}h |
213
+ | Architecture (layer changes) | {n} | ~{h}h |
214
+
215
+ ### Recommendations
216
+
217
+ - {Key recommendation 1}
218
+ - {Key recommendation 2}
219
+ - {Key recommendation 3}
220
+ ```
221
+
222
+ ---
223
+
224
+ ## Integration with Other Specialists
225
+
226
+ | Specialist | Handoff |
227
+ |------------|---------|
228
+ | **Standards Architect** | Code Analyzer validates naming rules defined by Standards Architect |
229
+ | **.NET Senior Engineer** | Code Analyzer reviews code produced by dotnet-senior |
230
+ | **Code Review Checklist** | Code Analyzer runs architecture/clean code checks; code-review.md covers runtime patterns |
231
+ | **Testing Specialist** | Findings may generate new test requirements |
232
+
233
+ ---
234
+
235
+ *MORPH-SPEC by Polymorphism Tech*