@polymorphism-tech/morph-spec 2.3.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.
Files changed (166) hide show
  1. package/CLAUDE.md +446 -1730
  2. package/README.md +515 -516
  3. package/bin/morph-spec.js +366 -294
  4. package/bin/task-manager.js +429 -368
  5. package/bin/validate.js +369 -268
  6. package/content/.claude/commands/morph-apply.md +221 -158
  7. package/content/.claude/commands/morph-deploy.md +529 -0
  8. package/content/.claude/commands/morph-preflight.md +227 -0
  9. package/content/.claude/commands/morph-proposal.md +122 -101
  10. package/content/.claude/commands/morph-status.md +86 -86
  11. package/content/.claude/commands/morph-troubleshoot.md +122 -0
  12. package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
  13. package/content/.claude/skills/level-0-meta/README.md +7 -0
  14. package/content/.claude/skills/level-0-meta/code-review.md +226 -0
  15. package/content/.claude/skills/level-0-meta/morph-checklist.md +117 -0
  16. package/content/.claude/skills/level-0-meta/simulation-checklist.md +77 -0
  17. package/content/.claude/skills/level-1-workflows/README.md +7 -0
  18. package/content/.claude/skills/level-1-workflows/morph-replicate.md +213 -0
  19. package/content/.claude/{commands/morph-clarify.md → skills/level-1-workflows/phase-clarify.md} +131 -184
  20. package/content/.claude/{commands/morph-design.md → skills/level-1-workflows/phase-design.md} +213 -275
  21. package/content/.claude/skills/level-1-workflows/phase-setup.md +106 -0
  22. package/content/.claude/skills/level-1-workflows/phase-tasks.md +164 -0
  23. package/content/.claude/{commands/morph-uiux.md → skills/level-1-workflows/phase-uiux.md} +169 -211
  24. package/content/.claude/skills/level-2-domains/README.md +14 -0
  25. package/content/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +192 -0
  26. package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +197 -197
  27. package/content/.claude/skills/level-2-domains/architecture/standards-architect.md +156 -0
  28. package/content/.claude/skills/level-2-domains/backend/dotnet-senior.md +287 -0
  29. package/content/.claude/skills/level-2-domains/backend/ef-modeler.md +113 -0
  30. package/content/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +126 -0
  31. package/content/.claude/skills/level-2-domains/backend/ms-agent-expert.md +109 -0
  32. package/content/.claude/skills/level-2-domains/frontend/blazor-builder.md +210 -0
  33. package/content/.claude/skills/level-2-domains/frontend/nextjs-expert.md +154 -0
  34. package/content/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +191 -0
  35. package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +142 -142
  36. package/content/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +126 -0
  37. package/content/.claude/skills/level-2-domains/infrastructure/container-specialist.md +131 -0
  38. package/content/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +119 -0
  39. package/content/.claude/skills/level-2-domains/integrations/asaas-financial.md +130 -0
  40. package/content/.claude/skills/level-2-domains/integrations/azure-identity.md +142 -0
  41. package/content/.claude/skills/level-2-domains/integrations/clerk-auth.md +108 -0
  42. package/content/.claude/skills/level-2-domains/integrations/resend-email.md +119 -0
  43. package/content/.claude/skills/level-2-domains/quality/code-analyzer.md +235 -0
  44. package/content/.claude/skills/level-2-domains/quality/testing-specialist.md +126 -0
  45. package/content/.claude/skills/level-3-technologies/README.md +7 -0
  46. package/content/.claude/skills/level-4-patterns/README.md +7 -0
  47. package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
  48. package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
  49. package/content/.morph/config/agents.json +762 -242
  50. package/content/.morph/config/config.template.json +122 -108
  51. package/content/.morph/docs/workflows/design-impl.md +37 -0
  52. package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
  53. package/content/.morph/docs/workflows/fast-track.md +29 -0
  54. package/content/.morph/docs/workflows/full-morph.md +76 -0
  55. package/content/.morph/docs/workflows/standard.md +44 -0
  56. package/content/.morph/docs/workflows/ui-refresh.md +39 -0
  57. package/content/.morph/examples/scheduled-reports/decisions.md +158 -0
  58. package/content/.morph/examples/scheduled-reports/proposal.md +95 -0
  59. package/content/.morph/examples/scheduled-reports/spec.md +267 -0
  60. package/content/.morph/hooks/README.md +348 -239
  61. package/content/.morph/hooks/pre-commit-agents.sh +24 -24
  62. package/content/.morph/hooks/task-completed.js +73 -0
  63. package/content/.morph/hooks/teammate-idle.js +68 -0
  64. package/content/.morph/schemas/tasks.schema.json +220 -0
  65. package/content/.morph/standards/agent-framework-blazor-ui.md +359 -0
  66. package/content/.morph/standards/agent-framework-production.md +410 -0
  67. package/content/.morph/standards/agent-framework-setup.md +413 -453
  68. package/content/.morph/standards/agent-framework-workflows.md +349 -0
  69. package/content/.morph/standards/agent-teams-workflow.md +474 -0
  70. package/content/.morph/standards/architecture.md +325 -325
  71. package/content/.morph/standards/azure.md +605 -379
  72. package/content/.morph/standards/dotnet10-migration.md +520 -494
  73. package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
  74. package/content/.morph/templates/CONTEXT.md +170 -0
  75. package/content/.morph/templates/agent.cs +163 -172
  76. package/content/.morph/templates/clarify-questions.md +159 -0
  77. package/content/.morph/templates/contracts/Commands.cs +74 -0
  78. package/content/.morph/templates/contracts/Entities.cs +25 -0
  79. package/content/.morph/templates/contracts/Queries.cs +74 -0
  80. package/content/.morph/templates/contracts/README.md +74 -0
  81. package/content/.morph/templates/decisions.md +123 -106
  82. package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
  83. package/content/.morph/templates/infra/deploy-checklist.md +426 -0
  84. package/content/.morph/templates/proposal.md +141 -155
  85. package/content/.morph/templates/recap.md +94 -105
  86. package/content/.morph/templates/simulation.md +353 -0
  87. package/content/.morph/templates/spec.md +149 -148
  88. package/content/.morph/templates/state.template.json +222 -222
  89. package/content/.morph/templates/tasks.md +257 -235
  90. package/content/.morph/templates/ui-components.md +362 -276
  91. package/content/CLAUDE.md +150 -442
  92. package/detectors/structure-detector.js +245 -250
  93. package/docs/README.md +144 -149
  94. package/docs/getting-started.md +301 -302
  95. package/docs/installation.md +361 -361
  96. package/docs/validation-checklist.md +265 -266
  97. package/package.json +80 -80
  98. package/src/commands/advance-phase.js +266 -0
  99. package/src/commands/analyze-blazor-concurrency.js +193 -0
  100. package/src/commands/deploy.js +780 -0
  101. package/src/commands/detect-agents.js +167 -0
  102. package/src/commands/doctor.js +356 -280
  103. package/src/commands/generate-context.js +40 -0
  104. package/src/commands/init.js +258 -245
  105. package/src/commands/lint-fluent.js +352 -0
  106. package/src/commands/rollback-phase.js +185 -0
  107. package/src/commands/session-summary.js +291 -0
  108. package/src/commands/task.js +78 -75
  109. package/src/commands/troubleshoot.js +222 -0
  110. package/src/commands/update.js +192 -159
  111. package/src/commands/validate-blazor-state.js +210 -0
  112. package/src/commands/validate-blazor.js +156 -0
  113. package/src/commands/validate-css.js +84 -0
  114. package/src/commands/validate-phase.js +221 -0
  115. package/src/lib/blazor-concurrency-analyzer.js +288 -0
  116. package/src/lib/blazor-state-validator.js +291 -0
  117. package/src/lib/blazor-validator.js +374 -0
  118. package/src/lib/complexity-analyzer.js +441 -292
  119. package/src/lib/context-generator.js +513 -0
  120. package/src/lib/continuous-validator.js +421 -440
  121. package/src/lib/css-validator.js +352 -0
  122. package/src/lib/decision-constraint-loader.js +109 -0
  123. package/src/lib/design-system-detector.js +187 -0
  124. package/src/lib/design-system-scaffolder.js +299 -0
  125. package/src/lib/hook-executor.js +256 -0
  126. package/src/lib/recap-generator.js +205 -0
  127. package/src/lib/spec-validator.js +258 -0
  128. package/src/lib/standards-context-injector.js +287 -0
  129. package/src/lib/state-manager.js +397 -340
  130. package/src/lib/team-orchestrator.js +322 -0
  131. package/src/lib/troubleshoot-grep.js +194 -0
  132. package/src/lib/troubleshoot-index.js +144 -0
  133. package/src/lib/validation-runner.js +283 -0
  134. package/src/lib/validators/contract-compliance-validator.js +273 -0
  135. package/src/lib/validators/design-system-validator.js +231 -0
  136. package/src/utils/file-copier.js +187 -139
  137. package/content/.claude/commands/morph-costs.md +0 -206
  138. package/content/.claude/commands/morph-setup.md +0 -100
  139. package/content/.claude/commands/morph-tasks.md +0 -319
  140. package/content/.claude/skills/infra/bicep-architect.md +0 -419
  141. package/content/.claude/skills/infra/container-specialist.md +0 -437
  142. package/content/.claude/skills/infra/devops-engineer.md +0 -405
  143. package/content/.claude/skills/integrations/asaas-financial.md +0 -333
  144. package/content/.claude/skills/integrations/azure-identity.md +0 -309
  145. package/content/.claude/skills/integrations/clerk-auth.md +0 -290
  146. package/content/.claude/skills/specialists/ai-system-architect.md +0 -604
  147. package/content/.claude/skills/specialists/cost-guardian.md +0 -110
  148. package/content/.claude/skills/specialists/ef-modeler.md +0 -211
  149. package/content/.claude/skills/specialists/hangfire-orchestrator.md +0 -255
  150. package/content/.claude/skills/specialists/ms-agent-expert.md +0 -263
  151. package/content/.claude/skills/specialists/standards-architect.md +0 -78
  152. package/content/.claude/skills/specialists/ui-ux-designer.md +0 -1100
  153. package/content/.claude/skills/stacks/dotnet-blazor.md +0 -606
  154. package/content/.claude/skills/stacks/dotnet-nextjs.md +0 -402
  155. package/content/.claude/skills/stacks/shopify.md +0 -445
  156. package/content/.morph/config/azure-pricing.json +0 -70
  157. package/content/.morph/config/azure-pricing.schema.json +0 -50
  158. package/content/.morph/hooks/pre-commit-costs.sh +0 -91
  159. package/docs/api/cost-calculator.js.html +0 -513
  160. package/docs/api/design-system-generator.js.html +0 -382
  161. package/docs/api/global.html +0 -5263
  162. package/docs/api/index.html +0 -96
  163. package/docs/api/state-manager.js.html +0 -423
  164. package/src/commands/cost.js +0 -181
  165. package/src/commands/update-pricing.js +0 -206
  166. package/src/lib/cost-calculator.js +0 -429
@@ -1,290 +0,0 @@
1
- # Clerk Auth
2
-
3
- Especialista em autenticação com Clerk para aplicações .NET/Blazor.
4
-
5
- ## Responsabilidades
6
-
7
- 1. **Configurar Clerk** em projetos .NET
8
- 2. **Implementar autenticação** com SDK oficial
9
- 3. **Gerenciar sessões** e tokens
10
- 4. **Proteger endpoints** e páginas
11
-
12
- ## Triggers
13
-
14
- Keywords: `clerk`, `auth`, `login`, `signup`, `authentication`, `session`, `jwt`, `user`
15
-
16
- ## Sobre o Clerk
17
-
18
- - **Plataforma de autenticação** SaaS moderna
19
- - **SDK oficial C#** lançado em Janeiro/2025
20
- - **Suporta**: Email/senha, Social login, MFA, Passkeys
21
- - **Dashboard** para gerenciar usuários
22
- - **Ideal para**: SaaS B2C, MVPs rápidos
23
-
24
- ## Instalação
25
-
26
- ```bash
27
- dotnet add package Clerk.Net.AspNetCore.Security
28
- ```
29
-
30
- ## Configuração Básica
31
-
32
- ```csharp
33
- // appsettings.json
34
- {
35
- "Clerk": {
36
- "SecretKey": "${CLERK_SECRET_KEY}",
37
- "PublishableKey": "pk_test_xxx" // Para frontend
38
- }
39
- }
40
-
41
- // Program.cs
42
- builder.Services.AddClerk(builder.Configuration);
43
-
44
- // Ou manualmente
45
- builder.Services.AddClerk(options =>
46
- {
47
- options.SecretKey = builder.Configuration["Clerk:SecretKey"]!;
48
- });
49
-
50
- // Adicionar autenticação
51
- builder.Services.AddAuthentication(ClerkAuthenticationDefaults.AuthenticationScheme)
52
- .AddClerk(options =>
53
- {
54
- options.Authority = "https://clerk.{your-instance}.com";
55
- options.ValidAudiences = new[] { "your-app-id" };
56
- });
57
-
58
- builder.Services.AddAuthorization();
59
-
60
- // Pipeline
61
- app.UseAuthentication();
62
- app.UseAuthorization();
63
- ```
64
-
65
- ## Proteger Endpoints (Minimal API)
66
-
67
- ```csharp
68
- // Endpoint protegido
69
- app.MapGet("/api/profile", async (ClaimsPrincipal user, IClerkClient clerk) =>
70
- {
71
- var userId = user.FindFirstValue(ClaimTypes.NameIdentifier);
72
-
73
- if (userId is null)
74
- return Results.Unauthorized();
75
-
76
- var clerkUser = await clerk.Users.GetUserAsync(userId);
77
-
78
- return Results.Ok(new
79
- {
80
- Id = clerkUser.Id,
81
- Email = clerkUser.EmailAddresses.FirstOrDefault()?.EmailAddress,
82
- Name = $"{clerkUser.FirstName} {clerkUser.LastName}"
83
- });
84
- })
85
- .RequireAuthorization();
86
-
87
- // Endpoint público
88
- app.MapGet("/api/public", () => "Hello World!")
89
- .AllowAnonymous();
90
- ```
91
-
92
- ## Proteger Endpoints (Controllers)
93
-
94
- ```csharp
95
- [ApiController]
96
- [Route("api/[controller]")]
97
- [Authorize] // Requer autenticação
98
- public class ProfileController : ControllerBase
99
- {
100
- private readonly IClerkClient _clerk;
101
-
102
- public ProfileController(IClerkClient clerk)
103
- {
104
- _clerk = clerk;
105
- }
106
-
107
- [HttpGet]
108
- public async Task<IActionResult> GetProfile()
109
- {
110
- var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
111
-
112
- if (userId is null)
113
- return Unauthorized();
114
-
115
- var user = await _clerk.Users.GetUserAsync(userId);
116
-
117
- return Ok(new
118
- {
119
- user.Id,
120
- Email = user.EmailAddresses.FirstOrDefault()?.EmailAddress,
121
- Name = $"{user.FirstName} {user.LastName}"
122
- });
123
- }
124
-
125
- [HttpGet("admin")]
126
- [Authorize(Roles = "admin")] // Requer role admin
127
- public IActionResult AdminOnly()
128
- {
129
- return Ok("Admin access granted");
130
- }
131
- }
132
- ```
133
-
134
- ## Blazor Server
135
-
136
- ```csharp
137
- // Program.cs
138
- builder.Services.AddClerk(builder.Configuration);
139
- builder.Services.AddAuthentication(ClerkAuthenticationDefaults.AuthenticationScheme)
140
- .AddClerk();
141
-
142
- // App.razor
143
- <CascadingAuthenticationState>
144
- <Router AppAssembly="@typeof(App).Assembly">
145
- <Found Context="routeData">
146
- <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)">
147
- <NotAuthorized>
148
- <RedirectToLogin />
149
- </NotAuthorized>
150
- </AuthorizeRouteView>
151
- </Found>
152
- </Router>
153
- </CascadingAuthenticationState>
154
-
155
- // Components/RedirectToLogin.razor
156
- @inject NavigationManager Navigation
157
-
158
- @code {
159
- protected override void OnInitialized()
160
- {
161
- Navigation.NavigateTo($"/sign-in?redirect_url={Uri.EscapeDataString(Navigation.Uri)}", forceLoad: true);
162
- }
163
- }
164
- ```
165
-
166
- ## Páginas Protegidas
167
-
168
- ```razor
169
- @* Pages/Dashboard.razor *@
170
- @page "/dashboard"
171
- @attribute [Authorize]
172
-
173
- <h1>Dashboard</h1>
174
-
175
- <AuthorizeView>
176
- <Authorized>
177
- <p>Bem-vindo, @context.User.Identity?.Name!</p>
178
- </Authorized>
179
- </AuthorizeView>
180
-
181
- @* Verificar role específica *@
182
- <AuthorizeView Roles="admin">
183
- <Authorized>
184
- <AdminPanel />
185
- </Authorized>
186
- <NotAuthorized>
187
- <p>Acesso restrito a administradores.</p>
188
- </NotAuthorized>
189
- </AuthorizeView>
190
- ```
191
-
192
- ## Clerk Client para Operações
193
-
194
- ```csharp
195
- // Buscar usuário
196
- var user = await _clerk.Users.GetUserAsync(userId);
197
-
198
- // Listar usuários
199
- var users = await _clerk.Users.GetUserListAsync(new()
200
- {
201
- Limit = 10,
202
- Offset = 0
203
- });
204
-
205
- // Atualizar metadata
206
- await _clerk.Users.UpdateUserMetadataAsync(userId, new()
207
- {
208
- PublicMetadata = new Dictionary<string, object>
209
- {
210
- ["plan"] = "pro",
211
- ["company"] = "Acme Inc"
212
- }
213
- });
214
-
215
- // Deletar usuário
216
- await _clerk.Users.DeleteUserAsync(userId);
217
- ```
218
-
219
- ## Webhooks
220
-
221
- ```csharp
222
- // Controllers/ClerkWebhookController.cs
223
- [ApiController]
224
- [Route("api/webhooks/clerk")]
225
- public class ClerkWebhookController : ControllerBase
226
- {
227
- private readonly IUserService _userService;
228
-
229
- public ClerkWebhookController(IUserService userService)
230
- {
231
- _userService = userService;
232
- }
233
-
234
- [HttpPost]
235
- public async Task<IActionResult> HandleWebhook([FromBody] ClerkWebhookPayload payload)
236
- {
237
- // Verificar signature (importante em produção!)
238
-
239
- switch (payload.Type)
240
- {
241
- case "user.created":
242
- await _userService.SyncUserAsync(payload.Data);
243
- break;
244
-
245
- case "user.updated":
246
- await _userService.UpdateUserAsync(payload.Data);
247
- break;
248
-
249
- case "user.deleted":
250
- await _userService.DeleteUserAsync(payload.Data.Id);
251
- break;
252
- }
253
-
254
- return Ok();
255
- }
256
- }
257
- ```
258
-
259
- ## Clerk vs Azure Identity
260
-
261
- | Aspecto | Clerk | Azure Identity |
262
- |---------|-------|----------------|
263
- | **Setup** | Mais rápido | Mais complexo |
264
- | **Custo** | Freemium (5k MAU grátis) | Grátis (Azure AD) |
265
- | **Multi-tenant** | Built-in | Requer config |
266
- | **Social login** | 20+ providers | Limitado |
267
- | **UI components** | Pré-construídos | Precisa criar |
268
- | **Ideal para** | SaaS B2C | Enterprise/Azure |
269
-
270
- ## Documentação de Referência
271
-
272
- - [Clerk C# SDK](https://clerk.com/changelog/2025-01-09-csharp-sdk)
273
- - [Clerk.Net GitHub](https://github.com/Hawxy/Clerk.Net)
274
- - [Clerk Documentation](https://clerk.com/docs)
275
- - [Webhooks](https://clerk.com/docs/integrations/webhooks)
276
-
277
- ## Checklist de Integração
278
-
279
- - [ ] Secret Key no Key Vault (não hardcoded)
280
- - [ ] Publishable Key para frontend
281
- - [ ] Authentication scheme configurado
282
- - [ ] Authorization policies definidas
283
- - [ ] Webhook endpoint para sync de usuários
284
- - [ ] Verificação de webhook signature
285
- - [ ] Redirect após login configurado
286
- - [ ] Error handling para sessões expiradas
287
-
288
- ---
289
-
290
- *MORPH-SPEC by Polymorphism Tech*