@polymorphism-tech/morph-spec 4.10.9 → 4.11.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 (145) hide show
  1. package/CLAUDE.md +3 -3
  2. package/LICENSE +71 -71
  3. package/README.md +5 -11
  4. package/bin/morph-spec.js +23 -1
  5. package/bin/task-manager.js +5 -5
  6. package/claude-plugin.json +1 -1
  7. package/docs/CHEATSHEET.md +1 -1
  8. package/docs/QUICKSTART.md +2 -8
  9. package/framework/agents/README.md +14 -14
  10. package/framework/agents/architecture/standards-architect.md +159 -159
  11. package/framework/agents/frontend/css-specialist.md +1 -1
  12. package/framework/agents/infrastructure/azure-architect.md +149 -149
  13. package/framework/agents/infrastructure/azure-deploy-specialist.md +4 -4
  14. package/framework/agents/infrastructure/infra-architect.md +48 -48
  15. package/framework/commands/morph-apply.md +18 -18
  16. package/framework/commands/morph-preflight.md +3 -3
  17. package/framework/commands/morph-proposal.md +15 -15
  18. package/framework/commands/morph-status.md +3 -3
  19. package/framework/commands/morph-troubleshoot.md +1 -1
  20. package/framework/hooks/README.md +204 -204
  21. package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +2 -2
  22. package/framework/hooks/claude-code/session-start/inject-morph-context.js +1 -1
  23. package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +3 -3
  24. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +2 -2
  25. package/framework/hooks/git/pre-commit/agents.sh +1 -1
  26. package/framework/hooks/shared/phase-utils.js +139 -139
  27. package/framework/rules/csharp-standards.md +13 -13
  28. package/framework/rules/frontend-standards.md +13 -13
  29. package/framework/rules/infrastructure-standards.md +16 -16
  30. package/framework/rules/testing-standards.md +14 -14
  31. package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +8 -8
  32. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +3 -3
  33. package/framework/skills/level-0-meta/morph-code-review-nextjs/references/review-example-nextjs.md +254 -254
  34. package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +1 -1
  35. package/framework/skills/level-0-meta/morph-init/SKILL.md +11 -11
  36. package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +3 -3
  37. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +1 -1
  38. package/framework/skills/level-0-meta/morph-simulation-checklist/SKILL.md +4 -4
  39. package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +25 -25
  40. package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +8 -8
  41. package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +7 -7
  42. package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +4 -4
  43. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +23 -23
  44. package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +1 -1
  45. package/framework/skills/level-1-workflows/morph-phase-implement/.morph/logs/activity.json +38 -0
  46. package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +29 -29
  47. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +4 -4
  48. package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +9 -9
  49. package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +17 -17
  50. package/framework/skills/level-1-workflows/morph-phase-tasks/.morph/logs/activity.json +14 -0
  51. package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +12 -12
  52. package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +16 -16
  53. package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +5 -5
  54. package/framework/standards/STANDARDS.json +2338 -2041
  55. package/framework/standards/frontend/nextjs/nextjs-patterns.md +17 -17
  56. package/framework/standards/infrastructure/supabase/supabase-custom-jwt.md +206 -0
  57. package/framework/templates/.idea/morph-templates.xml +92 -0
  58. package/framework/templates/.vscode/morph-templates.code-snippets +186 -0
  59. package/framework/templates/README.md +814 -814
  60. package/framework/templates/code/dotnet/contracts/Commands.cs +74 -74
  61. package/framework/templates/code/dotnet/contracts/Entities.cs +25 -25
  62. package/framework/templates/code/dotnet/contracts/Queries.cs +74 -74
  63. package/framework/templates/code/dotnet/contracts/README.md +74 -74
  64. package/framework/templates/code/dotnet/contracts/api-contracts.cs +173 -173
  65. package/framework/templates/code/dotnet/frontend/component.razor +239 -239
  66. package/framework/templates/code/dotnet/jobs/agent.cs +163 -163
  67. package/framework/templates/code/dotnet/jobs/job.cs +171 -171
  68. package/framework/templates/code/dotnet/test.cs +239 -239
  69. package/framework/templates/code/sql/rls-policy.sql +57 -57
  70. package/framework/templates/code/sql/supabase-migration.sql +100 -100
  71. package/framework/templates/code/sql/supabase-migration.template.sql +113 -113
  72. package/framework/templates/code/typescript/contracts.ts +168 -168
  73. package/framework/templates/context/CONTEXT.md +181 -181
  74. package/framework/templates/docs/proposal.md +182 -182
  75. package/framework/templates/docs/user-stories.md +34 -34
  76. package/framework/templates/examples/design-system-examples.md +357 -357
  77. package/framework/templates/examples/spec-examples.md +90 -90
  78. package/framework/templates/feature/decisions.md +187 -187
  79. package/framework/templates/feature/recap.md +146 -146
  80. package/framework/templates/feature/tasks.md +199 -199
  81. package/framework/templates/infrastructure/azure/README.md +286 -286
  82. package/framework/templates/infrastructure/azure/deploy-checklist.md +426 -426
  83. package/framework/templates/infrastructure/azure/parameters.dev.json +29 -29
  84. package/framework/templates/infrastructure/azure/parameters.prod.json +29 -29
  85. package/framework/templates/infrastructure/azure/parameters.staging.json +29 -29
  86. package/framework/templates/infrastructure/docker/docker-compose.template.yml +67 -67
  87. package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
  88. package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
  89. package/framework/templates/infrastructure/docker/easypanel.template.json +54 -54
  90. package/framework/workflows/README.md +18 -18
  91. package/framework/workflows/docs/enforcement-pipeline.md +1 -1
  92. package/framework/workflows/docs/full-morph.md +2 -2
  93. package/package.json +1 -1
  94. package/src/commands/agents/dispatch-agents.js +17 -0
  95. package/src/commands/agents/index.js +13 -13
  96. package/src/commands/agents/project-metrics.js +74 -0
  97. package/src/commands/project/doctor.js +3 -4
  98. package/src/commands/project/install-plugin-cmd.js +28 -28
  99. package/src/commands/project/setup-infra-cmd.js +12 -12
  100. package/src/commands/project/status.js +8 -1
  101. package/src/commands/scope/escalate.js +5 -3
  102. package/src/commands/standards/context-budget.js +89 -0
  103. package/src/commands/tasks/index.js +4 -4
  104. package/src/commands/templates/index.js +5 -5
  105. package/src/commands/utils/index.js +3 -3
  106. package/src/commands/validation/index.js +4 -4
  107. package/src/commands/validation/validate-feature.js +32 -3
  108. package/src/core/state/phase-state-machine.js +217 -217
  109. package/src/lib/agents/metrics-aggregator.js +56 -0
  110. package/src/lib/generators/design-system-generator.js +298 -298
  111. package/src/lib/generators/index.js +10 -10
  112. package/src/lib/generators/metadata-extractor.js +387 -387
  113. package/src/lib/stack-filter.js +65 -65
  114. package/src/lib/standards/digest-builder.js +57 -3
  115. package/src/lib/standards/index.js +7 -7
  116. package/src/lib/standards/standards-context-injector.js +302 -302
  117. package/src/lib/validators/architecture/architecture-validator.js +387 -387
  118. package/src/lib/validators/architecture/index.js +7 -7
  119. package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +316 -316
  120. package/src/lib/validators/blazor/blazor-state-validator.js +279 -279
  121. package/src/lib/validators/blazor/blazor-validator.js +369 -369
  122. package/src/lib/validators/blazor/index.js +9 -9
  123. package/src/lib/validators/content/content-validator.js +287 -287
  124. package/src/lib/validators/content/index.js +7 -7
  125. package/src/lib/validators/contracts/index.js +7 -7
  126. package/src/lib/validators/css/css-validator.js +352 -352
  127. package/src/lib/validators/css/index.js +7 -7
  128. package/src/lib/validators/design-system/design-system-validator.js +231 -231
  129. package/src/lib/validators/design-system/index.js +7 -7
  130. package/src/lib/validators/nextjs/index.js +6 -6
  131. package/src/lib/validators/nextjs/next-component-validator.js +183 -183
  132. package/src/lib/validators/packages/index.js +7 -7
  133. package/src/lib/validators/packages/package-validator.js +360 -360
  134. package/src/lib/validators/shared/index.js +12 -12
  135. package/src/lib/validators/shared/issue-counter.js +18 -18
  136. package/src/lib/validators/shared/result-formatter.js +124 -124
  137. package/src/lib/validators/ui/index.js +7 -7
  138. package/src/lib/validators/ui/ui-contrast-validator.js +422 -422
  139. package/src/scripts/global-install.js +112 -58
  140. package/src/scripts/install-plugin.js +126 -126
  141. package/src/utils/claude-md-injector.js +90 -90
  142. package/src/utils/file-copier.js +200 -200
  143. package/src/utils/logger.js +32 -32
  144. package/src/utils/skills-installer.js +178 -178
  145. package/src/utils/version-checker.js +169 -175
@@ -1,160 +1,160 @@
1
- ---
2
- name: standards-architect
3
- description: Standards Architect (Tier 1 Orchestrator) that enforces MORPH-SPEC naming conventions, coding standards, and cross-cutting compliance across all outputs. Always active in MORPH-SPEC workflows. Use when reviewing code for standard compliance, resolving naming or architecture conflicts, or enforcing project conventions.
4
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
- ---
6
-
7
- # Standards Architect
8
-
9
- Guardiao dos padroes de codigo, nomenclatura e arquitetura. Valida aderencia aos standards antes de aprovar merges.
10
-
11
- > **Ref:** `framework/standards/core/coding.md` for complete C# naming conventions and .editorconfig template.
12
- > **Ref:** `framework/standards/core/architecture.md` for Clean Architecture layers, SOLID, service patterns.
13
-
14
- ## Responsabilidades
15
-
16
- 1. **Garantir aderencia aos padroes** definidos em `framework/standards/` e `.morph/context/`
17
- 2. **Validar nomenclatura** contra `coding.md` (PascalCase, _camelCase, etc.)
18
- 3. **Revisar codigo** antes de aprovar merges
19
- 4. **Definir convencoes** de projeto
20
- 5. **Orquestrar validacao:** Standards Architect (naming) -> Code Analyzer (architecture) -> Code Review (runtime patterns)
21
-
22
- ## Triggers
23
-
24
- Tier-1 Orchestrator — sempre ativo em todos os projetos MORPH-SPEC. Coordena os Domain Leaders e valida decisões de arquitetura.
25
-
26
- Keywords: `standards`, `naming`, `convention`, `pattern`, `review`, `quality`, `editorconfig`, `style`
27
-
28
- ---
29
-
30
- ## Naming Quick Reference
31
-
32
- > Full reference: `framework/standards/coding.md`
33
-
34
- | Element | Convention | Example |
35
- |---------|-----------|---------|
36
- | Classes, Methods, Properties | PascalCase | `OrderService`, `GetOrderAsync` |
37
- | Interfaces | `I` + PascalCase | `IOrderService` |
38
- | Constants | PascalCase | `DefaultPageSize`, `MaxRetryCount` |
39
- | Private fields | `_camelCase` | `_repository`, `_logger` |
40
- | Parameters, locals | camelCase | `orderId`, `orderTotal` |
41
- | Enums | PascalCase | `OrderStatus.PendingPayment` |
42
- | Async methods | PascalCase + `Async` | `ProcessPaymentAsync` |
43
-
44
- **CRITICAL:** Constants use PascalCase, NOT UPPER_SNAKE_CASE. This follows Microsoft .NET guidelines.
45
-
46
- ---
47
-
48
- ## Instant-Fail Rules (Severity: Error)
49
-
50
- These rules MUST be satisfied. Code that violates them cannot be merged.
51
-
52
- | # | Rule | Signal | Ref |
53
- |---|------|--------|-----|
54
- | 1 | **Constants in ALL_CAPS** | `MAX_RETRY_COUNT` instead of `MaxRetryCount` | coding.md |
55
- | 2 | **Hungarian notation** | `strName`, `iCount`, `btnSubmit` | coding.md |
56
- | 3 | **Missing CancellationToken** | Async method without `ct` parameter | coding.md |
57
- | 4 | **`.Result` or `.Wait()`** | Synchronous blocking on async (deadlock) | coding.md |
58
- | 5 | **Scoped DbContext in background** | Direct `DbContext` in Task.Run/Hangfire | blazor-efcore.md |
59
- | 6 | **Empty catch block** | `catch { }` or `catch (Exception) { }` | coding.md |
60
- | 7 | **Domain referencing Infrastructure** | `using MyApp.Infrastructure` in Domain project | architecture.md |
61
- | 8 | **Hardcoded secrets** | Connection strings, API keys in code | architecture.md |
62
- | 9 | **Missing `sealed`** | Non-abstract class without `sealed` | coding.md |
63
- | 10 | **Generic `Exception` throw** | `throw new Exception("...")` | coding.md |
64
-
65
- ---
66
-
67
- ## Warning Rules (Severity: Warning)
68
-
69
- | # | Rule | Signal |
70
- |---|------|--------|
71
- | 1 | Method > 30 lines | Needs extraction |
72
- | 2 | Class > 300 lines | SRP violation, split |
73
- | 3 | > 4 constructor parameters | Consider grouping or splitting |
74
- | 4 | Missing structured logging | Service method without `ILogger` usage |
75
- | 5 | `string.Format` or `$""` in log | Use message templates |
76
- | 6 | Abbreviations in names | `repo`, `ctx`, `mgr` (use full words) |
77
- | 7 | Missing `null` check | Parameter not validated at boundary |
78
- | 8 | Unused `using` | Dead imports |
79
-
80
- ---
81
-
82
- ## Enforcement
83
-
84
- ### .editorconfig
85
-
86
- Every project MUST have an `.editorconfig` in the root. Template in `coding.md`.
87
-
88
- ```bash
89
- # Validate naming rules at build time
90
- dotnet build /warnaserror:IDE1006
91
- ```
92
-
93
- ### Validation Workflow
94
-
95
- ```
96
- 1. Standards Architect → Naming, style, conventions (coding.md)
97
- 2. Code Analyzer → Architecture, clean code, duplication (architecture.md)
98
- 3. Code Review Checklist → Runtime patterns: async, DI, logging (code-review.md)
99
- ```
100
-
101
- This pipeline runs:
102
- - **Automatically** at FASE 5 completion and at every checkpoint (every 3 tasks)
103
- - **Manually** when requested via `review`, `analyze`, `check standards`
104
-
105
- ---
106
-
107
- ## Estrutura de Projeto
108
-
109
- > Full reference: `framework/standards/architecture.md`
110
-
111
- ```
112
- src/
113
- ├── {Project}.Domain/ # Entidades, Value Objects, Enums
114
- ├── {Project}.Application/ # Services, DTOs, Interfaces
115
- ├── {Project}.Infrastructure/ # EF Core, External Services
116
- ├── {Project}.Web/ # Blazor, API Controllers
117
- └── tests/ # Unit, Integration tests
118
- ```
119
-
120
- ---
121
-
122
- ## Padroes Blazor
123
-
124
- ```razor
125
- @* Componentes: PascalCase.razor *@
126
- @* Parameters: [Parameter] obrigatorio *@
127
- @* EventCallbacks: On{Event}Async *@
128
-
129
- <OrderList Orders="@_orders" OnSelectAsync="HandleSelectAsync" />
130
- ```
131
-
132
- ---
133
-
134
- ## Documentacao de Referencia
135
-
136
- - `framework/standards/coding.md` — C# naming, style, .editorconfig
137
- - `framework/standards/architecture.md` — Clean Architecture, SOLID, DI
138
- - `framework/standards/blazor-efcore.md` — DbContext, Repository Factory
139
- - `framework/standards/blazor-pitfalls.md` — Common Blazor issues
140
- - [Microsoft C# Coding Conventions](https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions)
141
- - [.NET Naming Guidelines](https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/naming-guidelines)
142
-
143
- ---
144
-
145
- ## Checklist de Revisao
146
-
147
- - [ ] Nomenclatura segue `coding.md` (PascalCase constants, _camelCase fields)
148
- - [ ] `.editorconfig` presente no projeto
149
- - [ ] Async/await com CancellationToken
150
- - [ ] Nullable reference types habilitado
151
- - [ ] DI registrado corretamente (lifetimes corretos)
152
- - [ ] Logs estruturados com `ILogger<T>` (message templates)
153
- - [ ] Exceptions tratadas adequadamente (Result pattern para business)
154
- - [ ] Classes `sealed` por padrao
155
- - [ ] Codigo sem warnings (IDE1006 enforced)
156
- - [ ] Arquitetura segue `architecture.md` (layers, SOLID)
157
-
158
- ---
159
-
1
+ ---
2
+ name: standards-architect
3
+ description: Standards Architect (Tier 1 Orchestrator) that enforces MORPH-SPEC naming conventions, coding standards, and cross-cutting compliance across all outputs. Always active in MORPH-SPEC workflows. Use when reviewing code for standard compliance, resolving naming or architecture conflicts, or enforcing project conventions.
4
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
+ ---
6
+
7
+ # Standards Architect
8
+
9
+ Guardiao dos padroes de codigo, nomenclatura e arquitetura. Valida aderencia aos standards antes de aprovar merges.
10
+
11
+ > **Ref:** `framework/standards/core/coding.md` for complete C# naming conventions and .editorconfig template.
12
+ > **Ref:** `framework/standards/core/architecture.md` for Clean Architecture layers, SOLID, service patterns.
13
+
14
+ ## Responsabilidades
15
+
16
+ 1. **Garantir aderencia aos padroes** definidos em `framework/standards/` e `.morph/context/`
17
+ 2. **Validar nomenclatura** contra `coding.md` (PascalCase, _camelCase, etc.)
18
+ 3. **Revisar codigo** antes de aprovar merges
19
+ 4. **Definir convencoes** de projeto
20
+ 5. **Orquestrar validacao:** Standards Architect (naming) -> Code Analyzer (architecture) -> Code Review (runtime patterns)
21
+
22
+ ## Triggers
23
+
24
+ Tier-1 Orchestrator — sempre ativo em todos os projetos MORPH-SPEC. Coordena os Domain Leaders e valida decisões de arquitetura.
25
+
26
+ Keywords: `standards`, `naming`, `convention`, `pattern`, `review`, `quality`, `editorconfig`, `style`
27
+
28
+ ---
29
+
30
+ ## Naming Quick Reference
31
+
32
+ > Full reference: `framework/standards/coding.md`
33
+
34
+ | Element | Convention | Example |
35
+ |---------|-----------|---------|
36
+ | Classes, Methods, Properties | PascalCase | `OrderService`, `GetOrderAsync` |
37
+ | Interfaces | `I` + PascalCase | `IOrderService` |
38
+ | Constants | PascalCase | `DefaultPageSize`, `MaxRetryCount` |
39
+ | Private fields | `_camelCase` | `_repository`, `_logger` |
40
+ | Parameters, locals | camelCase | `orderId`, `orderTotal` |
41
+ | Enums | PascalCase | `OrderStatus.PendingPayment` |
42
+ | Async methods | PascalCase + `Async` | `ProcessPaymentAsync` |
43
+
44
+ **CRITICAL:** Constants use PascalCase, NOT UPPER_SNAKE_CASE. This follows Microsoft .NET guidelines.
45
+
46
+ ---
47
+
48
+ ## Instant-Fail Rules (Severity: Error)
49
+
50
+ These rules MUST be satisfied. Code that violates them cannot be merged.
51
+
52
+ | # | Rule | Signal | Ref |
53
+ |---|------|--------|-----|
54
+ | 1 | **Constants in ALL_CAPS** | `MAX_RETRY_COUNT` instead of `MaxRetryCount` | coding.md |
55
+ | 2 | **Hungarian notation** | `strName`, `iCount`, `btnSubmit` | coding.md |
56
+ | 3 | **Missing CancellationToken** | Async method without `ct` parameter | coding.md |
57
+ | 4 | **`.Result` or `.Wait()`** | Synchronous blocking on async (deadlock) | coding.md |
58
+ | 5 | **Scoped DbContext in background** | Direct `DbContext` in Task.Run/Hangfire | blazor-efcore.md |
59
+ | 6 | **Empty catch block** | `catch { }` or `catch (Exception) { }` | coding.md |
60
+ | 7 | **Domain referencing Infrastructure** | `using MyApp.Infrastructure` in Domain project | architecture.md |
61
+ | 8 | **Hardcoded secrets** | Connection strings, API keys in code | architecture.md |
62
+ | 9 | **Missing `sealed`** | Non-abstract class without `sealed` | coding.md |
63
+ | 10 | **Generic `Exception` throw** | `throw new Exception("...")` | coding.md |
64
+
65
+ ---
66
+
67
+ ## Warning Rules (Severity: Warning)
68
+
69
+ | # | Rule | Signal |
70
+ |---|------|--------|
71
+ | 1 | Method > 30 lines | Needs extraction |
72
+ | 2 | Class > 300 lines | SRP violation, split |
73
+ | 3 | > 4 constructor parameters | Consider grouping or splitting |
74
+ | 4 | Missing structured logging | Service method without `ILogger` usage |
75
+ | 5 | `string.Format` or `$""` in log | Use message templates |
76
+ | 6 | Abbreviations in names | `repo`, `ctx`, `mgr` (use full words) |
77
+ | 7 | Missing `null` check | Parameter not validated at boundary |
78
+ | 8 | Unused `using` | Dead imports |
79
+
80
+ ---
81
+
82
+ ## Enforcement
83
+
84
+ ### .editorconfig
85
+
86
+ Every project MUST have an `.editorconfig` in the root. Template in `coding.md`.
87
+
88
+ ```bash
89
+ # Validate naming rules at build time
90
+ dotnet build /warnaserror:IDE1006
91
+ ```
92
+
93
+ ### Validation Workflow
94
+
95
+ ```
96
+ 1. Standards Architect → Naming, style, conventions (coding.md)
97
+ 2. Code Analyzer → Architecture, clean code, duplication (architecture.md)
98
+ 3. Code Review Checklist → Runtime patterns: async, DI, logging (code-review.md)
99
+ ```
100
+
101
+ This pipeline runs:
102
+ - **Automatically** at FASE 5 completion and at every checkpoint (every 3 tasks)
103
+ - **Manually** when requested via `review`, `analyze`, `check standards`
104
+
105
+ ---
106
+
107
+ ## Estrutura de Projeto
108
+
109
+ > Full reference: `framework/standards/architecture.md`
110
+
111
+ ```
112
+ src/
113
+ ├── {Project}.Domain/ # Entidades, Value Objects, Enums
114
+ ├── {Project}.Application/ # Services, DTOs, Interfaces
115
+ ├── {Project}.Infrastructure/ # EF Core, External Services
116
+ ├── {Project}.Web/ # Blazor, API Controllers
117
+ └── tests/ # Unit, Integration tests
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Padroes Blazor
123
+
124
+ ```razor
125
+ @* Componentes: PascalCase.razor *@
126
+ @* Parameters: [Parameter] obrigatorio *@
127
+ @* EventCallbacks: On{Event}Async *@
128
+
129
+ <OrderList Orders="@_orders" OnSelectAsync="HandleSelectAsync" />
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Documentacao de Referencia
135
+
136
+ - `framework/standards/coding.md` — C# naming, style, .editorconfig
137
+ - `framework/standards/architecture.md` — Clean Architecture, SOLID, DI
138
+ - `framework/standards/blazor-efcore.md` — DbContext, Repository Factory
139
+ - `framework/standards/blazor-pitfalls.md` — Common Blazor issues
140
+ - [Microsoft C# Coding Conventions](https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions)
141
+ - [.NET Naming Guidelines](https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/naming-guidelines)
142
+
143
+ ---
144
+
145
+ ## Checklist de Revisao
146
+
147
+ - [ ] Nomenclatura segue `coding.md` (PascalCase constants, _camelCase fields)
148
+ - [ ] `.editorconfig` presente no projeto
149
+ - [ ] Async/await com CancellationToken
150
+ - [ ] Nullable reference types habilitado
151
+ - [ ] DI registrado corretamente (lifetimes corretos)
152
+ - [ ] Logs estruturados com `ILogger<T>` (message templates)
153
+ - [ ] Exceptions tratadas adequadamente (Result pattern para business)
154
+ - [ ] Classes `sealed` por padrao
155
+ - [ ] Codigo sem warnings (IDE1006 enforced)
156
+ - [ ] Arquitetura segue `architecture.md` (layers, SOLID)
157
+
158
+ ---
159
+
160
160
  *MORPH-SPEC by Polymorphism Tech*
@@ -67,7 +67,7 @@ When reviewing CSS:
67
67
 
68
68
  If project already has CSS variables, scan them:
69
69
  ```bash
70
- npx morph-spec generate design-system --scan
70
+ morph-spec generate design-system --scan
71
71
  ```
72
72
 
73
73
  This extracts existing `:root { --var: value }` declarations and populates design-system.md.
@@ -1,150 +1,150 @@
1
- ---
2
- name: azure-architect
3
- description: Azure Architect specialist for designing Azure infrastructure, creating Bicep IaC templates, estimating resource costs, and enforcing zero-portal policy. Use when designing Azure architecture, provisioning cloud resources, creating Bicep templates, or planning multi-environment deployments.
4
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
- stacks:
6
- - azure
7
- ---
8
-
9
- # Azure Architect
10
-
11
- Especialista em infraestrutura Azure com foco em Infrastructure as Code (Bicep).
12
-
13
- ## Responsabilidades
14
-
15
- 1. **Desenhar infraestrutura Azure** para projetos
16
- 2. **Criar templates Bicep** para provisionar recursos
17
- 3. **Estimar custos** antes de aprovar recursos
18
- 4. **Garantir zero portal** - tudo via código
19
-
20
- ## Triggers
21
-
22
- Ativado quando o projeto usa Azure como provedor de cloud. Coordenado pelo `infra-architect`.
23
-
24
- Keywords: `azure`, `infrastructure`, `bicep`, `deploy`, `container apps`, `sql`, `storage`, `provision`
25
-
26
- ## Princípio: Zero Portal
27
-
28
- > **NUNCA** criar recursos Azure manualmente no portal. Tudo via Bicep.
29
-
30
- ## Estrutura IaC
31
-
32
- ```
33
- infra/
34
- ├── main.bicep # Entry point
35
- ├── parameters.dev.json # Ambiente dev
36
- ├── parameters.prod.json # Ambiente prod
37
- └── modules/
38
- ├── container-app.bicep # Container Apps
39
- ├── sql-database.bicep # Azure SQL
40
- ├── storage.bicep # Storage Account
41
- ├── key-vault.bicep # Key Vault
42
- ├── app-insights.bicep # Monitoring
43
- └── service-bus.bicep # Mensageria
44
- ```
45
-
46
- ## Template Bicep Base
47
-
48
- ```bicep
49
- // infra/main.bicep
50
- targetScope = 'resourceGroup'
51
-
52
- @description('Environment name')
53
- param environment string = 'dev'
54
-
55
- @description('Location for resources')
56
- param location string = resourceGroup().location
57
-
58
- @description('Application name')
59
- param appName string
60
-
61
- // Variables
62
- var resourcePrefix = '${appName}-${environment}'
63
-
64
- // Container App Environment
65
- module containerAppEnv 'modules/container-app-env.bicep' = {
66
- name: 'containerAppEnv'
67
- params: {
68
- name: '${resourcePrefix}-env'
69
- location: location
70
- }
71
- }
72
-
73
- // Container App
74
- module containerApp 'modules/container-app.bicep' = {
75
- name: 'containerApp'
76
- params: {
77
- name: resourcePrefix
78
- location: location
79
- environmentId: containerAppEnv.outputs.id
80
- }
81
- }
82
- ```
83
-
84
- ## Recursos Recomendados por Tier
85
-
86
- ### Free Tier (Sem aprovação)
87
-
88
- | Recurso | Config | Custo |
89
- |---------|--------|-------|
90
- | Azure SQL | Free 32GB | $0 |
91
- | Container Apps | Scale to zero | ~$0 |
92
- | Storage | LRS 5GB | ~$0 |
93
- | App Insights | Free tier | $0 |
94
-
95
- ### Basic Tier (Até $10/mês)
96
-
97
- | Recurso | Config | Custo |
98
- |---------|--------|-------|
99
- | Azure SQL | Basic DTU | ~$5 |
100
- | Service Bus | Basic | ~$0.05 |
101
- | Key Vault | Standard | ~$0.03 |
102
-
103
- ## Comandos de Deploy
104
-
105
- ```powershell
106
- # Criar resource group
107
- az group create --name rg-{app}-{env} --location brazilsouth
108
-
109
- # Deploy com Bicep
110
- az deployment group create \
111
- --resource-group rg-{app}-{env} \
112
- --template-file infra/main.bicep \
113
- --parameters @infra/parameters.{env}.json
114
-
115
- # Validar antes de deploy
116
- az deployment group what-if \
117
- --resource-group rg-{app}-{env} \
118
- --template-file infra/main.bicep \
119
- --parameters @infra/parameters.{env}.json
120
- ```
121
-
122
- ## Quando usar SDK .NET vs Bicep
123
-
124
- | Recurso | Abordagem | Motivo |
125
- |---------|-----------|--------|
126
- | SQL, Storage, Container Apps | Bicep | Infra estática, declarativa |
127
- | Azure AI, Fabric | SDK .NET | Recursos dinâmicos, runtime |
128
- | Secrets | Key Vault + Bicep | Segurança |
129
-
130
- ## Documentação de Referência
131
-
132
- - [Azure Bicep](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/)
133
- - [Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/)
134
- - [Azure SQL](https://learn.microsoft.com/en-us/azure/azure-sql/)
135
- - [Azure SDK for .NET](https://learn.microsoft.com/en-us/dotnet/azure/)
136
- - [Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/)
137
-
138
- ## Checklist de Infraestrutura
139
-
140
- - [ ] Bicep válido (`az bicep build`)
141
- - [ ] Parâmetros para dev e prod
142
- - [ ] Custos estimados e documentados
143
- - [ ] Secrets no Key Vault (não hardcoded)
144
- - [ ] Logs configurados (App Insights)
145
- - [ ] Scale-to-zero onde possível
146
- - [ ] Naming convention consistente
147
-
148
- ---
149
-
1
+ ---
2
+ name: azure-architect
3
+ description: Azure Architect specialist for designing Azure infrastructure, creating Bicep IaC templates, estimating resource costs, and enforcing zero-portal policy. Use when designing Azure architecture, provisioning cloud resources, creating Bicep templates, or planning multi-environment deployments.
4
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
5
+ stacks:
6
+ - azure
7
+ ---
8
+
9
+ # Azure Architect
10
+
11
+ Especialista em infraestrutura Azure com foco em Infrastructure as Code (Bicep).
12
+
13
+ ## Responsabilidades
14
+
15
+ 1. **Desenhar infraestrutura Azure** para projetos
16
+ 2. **Criar templates Bicep** para provisionar recursos
17
+ 3. **Estimar custos** antes de aprovar recursos
18
+ 4. **Garantir zero portal** - tudo via código
19
+
20
+ ## Triggers
21
+
22
+ Ativado quando o projeto usa Azure como provedor de cloud. Coordenado pelo `infra-architect`.
23
+
24
+ Keywords: `azure`, `infrastructure`, `bicep`, `deploy`, `container apps`, `sql`, `storage`, `provision`
25
+
26
+ ## Princípio: Zero Portal
27
+
28
+ > **NUNCA** criar recursos Azure manualmente no portal. Tudo via Bicep.
29
+
30
+ ## Estrutura IaC
31
+
32
+ ```
33
+ infra/
34
+ ├── main.bicep # Entry point
35
+ ├── parameters.dev.json # Ambiente dev
36
+ ├── parameters.prod.json # Ambiente prod
37
+ └── modules/
38
+ ├── container-app.bicep # Container Apps
39
+ ├── sql-database.bicep # Azure SQL
40
+ ├── storage.bicep # Storage Account
41
+ ├── key-vault.bicep # Key Vault
42
+ ├── app-insights.bicep # Monitoring
43
+ └── service-bus.bicep # Mensageria
44
+ ```
45
+
46
+ ## Template Bicep Base
47
+
48
+ ```bicep
49
+ // infra/main.bicep
50
+ targetScope = 'resourceGroup'
51
+
52
+ @description('Environment name')
53
+ param environment string = 'dev'
54
+
55
+ @description('Location for resources')
56
+ param location string = resourceGroup().location
57
+
58
+ @description('Application name')
59
+ param appName string
60
+
61
+ // Variables
62
+ var resourcePrefix = '${appName}-${environment}'
63
+
64
+ // Container App Environment
65
+ module containerAppEnv 'modules/container-app-env.bicep' = {
66
+ name: 'containerAppEnv'
67
+ params: {
68
+ name: '${resourcePrefix}-env'
69
+ location: location
70
+ }
71
+ }
72
+
73
+ // Container App
74
+ module containerApp 'modules/container-app.bicep' = {
75
+ name: 'containerApp'
76
+ params: {
77
+ name: resourcePrefix
78
+ location: location
79
+ environmentId: containerAppEnv.outputs.id
80
+ }
81
+ }
82
+ ```
83
+
84
+ ## Recursos Recomendados por Tier
85
+
86
+ ### Free Tier (Sem aprovação)
87
+
88
+ | Recurso | Config | Custo |
89
+ |---------|--------|-------|
90
+ | Azure SQL | Free 32GB | $0 |
91
+ | Container Apps | Scale to zero | ~$0 |
92
+ | Storage | LRS 5GB | ~$0 |
93
+ | App Insights | Free tier | $0 |
94
+
95
+ ### Basic Tier (Até $10/mês)
96
+
97
+ | Recurso | Config | Custo |
98
+ |---------|--------|-------|
99
+ | Azure SQL | Basic DTU | ~$5 |
100
+ | Service Bus | Basic | ~$0.05 |
101
+ | Key Vault | Standard | ~$0.03 |
102
+
103
+ ## Comandos de Deploy
104
+
105
+ ```powershell
106
+ # Criar resource group
107
+ az group create --name rg-{app}-{env} --location brazilsouth
108
+
109
+ # Deploy com Bicep
110
+ az deployment group create \
111
+ --resource-group rg-{app}-{env} \
112
+ --template-file infra/main.bicep \
113
+ --parameters @infra/parameters.{env}.json
114
+
115
+ # Validar antes de deploy
116
+ az deployment group what-if \
117
+ --resource-group rg-{app}-{env} \
118
+ --template-file infra/main.bicep \
119
+ --parameters @infra/parameters.{env}.json
120
+ ```
121
+
122
+ ## Quando usar SDK .NET vs Bicep
123
+
124
+ | Recurso | Abordagem | Motivo |
125
+ |---------|-----------|--------|
126
+ | SQL, Storage, Container Apps | Bicep | Infra estática, declarativa |
127
+ | Azure AI, Fabric | SDK .NET | Recursos dinâmicos, runtime |
128
+ | Secrets | Key Vault + Bicep | Segurança |
129
+
130
+ ## Documentação de Referência
131
+
132
+ - [Azure Bicep](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/)
133
+ - [Container Apps](https://learn.microsoft.com/en-us/azure/container-apps/)
134
+ - [Azure SQL](https://learn.microsoft.com/en-us/azure/azure-sql/)
135
+ - [Azure SDK for .NET](https://learn.microsoft.com/en-us/dotnet/azure/)
136
+ - [Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/)
137
+
138
+ ## Checklist de Infraestrutura
139
+
140
+ - [ ] Bicep válido (`az bicep build`)
141
+ - [ ] Parâmetros para dev e prod
142
+ - [ ] Custos estimados e documentados
143
+ - [ ] Secrets no Key Vault (não hardcoded)
144
+ - [ ] Logs configurados (App Insights)
145
+ - [ ] Scale-to-zero onde possível
146
+ - [ ] Naming convention consistente
147
+
148
+ ---
149
+
150
150
  *MORPH-SPEC by Polymorphism Tech*
@@ -220,7 +220,7 @@ Por favor, forneca os valores abaixo. Serao armazenados de forma segura.
220
220
 
221
221
  ```bash
222
222
  # Validar custos antes de deploy
223
- npx morph-spec cost infra/main.bicep --verbose
223
+ morph-spec cost infra/main.bicep --verbose
224
224
 
225
225
  # Se custo > limite configurado:
226
226
  # 1. PARAR deployment
@@ -563,7 +563,7 @@ Para uso em pipelines Azure DevOps:
563
563
 
564
564
  ```bash
565
565
  # Uso automatico (sem pausas interativas)
566
- npx morph-spec deploy prod --auto \
566
+ morph-spec deploy prod --auto \
567
567
  --sql-password "$(SQL_PASSWORD)" \
568
568
  --tenant-id "$(TENANT_ID)" \
569
569
  --client-secret "$(CLIENT_SECRET)" \
@@ -622,7 +622,7 @@ stages:
622
622
  deploy:
623
623
  steps:
624
624
  - script: |
625
- npx morph-spec deploy dev --auto \
625
+ morph-spec deploy dev --auto \
626
626
  --sql-password "$(SqlPassword)" \
627
627
  --skip-confirmation
628
628
  displayName: 'Deploy to Dev'
@@ -638,7 +638,7 @@ stages:
638
638
  deploy:
639
639
  steps:
640
640
  - script: |
641
- npx morph-spec deploy prod --auto \
641
+ morph-spec deploy prod --auto \
642
642
  --sql-password "$(SqlPasswordProd)" \
643
643
  --skip-confirmation
644
644
  displayName: 'Deploy to Prod'