@polymorphism-tech/morph-spec 1.0.2 → 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 +114 -12
  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 +71 -46
  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 +63 -0
  152. package/src/utils/version-checker.js +175 -0
@@ -6,12 +6,12 @@ Stack principal para desenvolvimento de aplicações web com .NET e Blazor Serve
6
6
 
7
7
  | Aspecto | Tecnologia |
8
8
  |---------|------------|
9
- | **Backend** | .NET 9+ / C# 13+ |
9
+ | **Backend** | .NET 10 / C# 14 |
10
10
  | **Frontend** | Blazor Server |
11
- | **Database** | Entity Framework Core 9 + Azure SQL |
11
+ | **Database** | Entity Framework Core 10 + Azure SQL |
12
12
  | **Hosting** | Azure Container Apps |
13
13
  | **Background** | Hangfire |
14
- | **AI** | Microsoft Agent Framework |
14
+ | **AI** | Microsoft Agent Framework (exclusivo) |
15
15
 
16
16
  ## Triggers
17
17
 
@@ -63,7 +63,7 @@ src/
63
63
  <!-- {App}.Web.csproj -->
64
64
  <Project Sdk="Microsoft.NET.Sdk.Web">
65
65
  <PropertyGroup>
66
- <TargetFramework>net9.0</TargetFramework>
66
+ <TargetFramework>net10.0</TargetFramework>
67
67
  <Nullable>enable</Nullable>
68
68
  <ImplicitUsings>enable</ImplicitUsings>
69
69
  </PropertyGroup>
@@ -329,12 +329,248 @@ public class OrderService : IOrderService
329
329
  }
330
330
  ```
331
331
 
332
- ## Documentação de Referência
332
+ ---
333
+
334
+ ## 🎨 UI Component Libraries
335
+
336
+ ### Recomendação para Projetos AI-First
337
+
338
+ | Biblioteca | Quando Usar | Vantagens | Desvantagens |
339
+ |------------|-------------|-----------|--------------|
340
+ | **Fluent UI** ⭐ | Projetos AI-first, Micro-SaaS | Componentes AI nativos, Microsoft integration, Performance (~200KB) | Menos componentes prontos |
341
+ | **MudBlazor** | SaaS tradicional, Analytics pesados | 140+ componentes, Charts nativos, Templates prontos | Mais pesado (~500KB), Sem componentes AI |
342
+ | **Híbrido** | SaaS complexo com AI | Melhor dos dois mundos | Maior bundle size (~350KB) |
343
+
344
+ ### Fluent UI Blazor (Recomendado)
345
+
346
+ **Para:**
347
+ - Projetos com AI agents/chat
348
+ - Integração com Microsoft Agent Framework
349
+ - Produtos com UX Copilot-like
350
+ - Micro-SaaS que priorizam performance
351
+
352
+ **Setup rápido:**
353
+ ```bash
354
+ dotnet add package Microsoft.FluentUI.AspNetCore.Components
355
+ ```
356
+
357
+ ```csharp
358
+ // Program.cs
359
+ builder.Services.AddFluentUIComponents();
360
+ ```
361
+
362
+ **Exemplo de Chat AI:**
363
+ ```razor
364
+ <FluentMessageBar Intent="MessageIntent.Success">
365
+ <FluentLabel Weight="FontWeight.Bold">AI Assistant</FluentLabel>
366
+ <FluentLabel>@_aiResponse</FluentLabel>
367
+ </FluentMessageBar>
368
+ ```
369
+
370
+ **Guia completo:** [Fluent UI Setup](../../.morph/standards/fluent-ui-setup.md)
371
+
372
+ ### MudBlazor (Complemento)
373
+
374
+ **Para:**
375
+ - Grids complexos com filtros avançados
376
+ - Charts e dashboards analytics
377
+ - Componentes que Fluent UI não tem
378
+
379
+ **Setup:**
380
+ ```bash
381
+ dotnet add package MudBlazor
382
+ ```
383
+
384
+ **Exemplo de Grid Avançado:**
385
+ ```razor
386
+ <MudDataGrid T="Order" Items="@_orders"
387
+ Filterable="true"
388
+ Groupable="true"
389
+ Dense="true">
390
+ <Columns>
391
+ <PropertyColumn Property="x => x.OrderNumber" />
392
+ <PropertyColumn Property="x => x.Total" Format="C2" />
393
+ </Columns>
394
+ </MudDataGrid>
395
+ ```
396
+
397
+ ### Abordagem Híbrida
398
+
399
+ **Quando usar:**
400
+ - SaaS com AI + analytics complexos
401
+ - Dashboards com charts + chat AI
402
+ - Aplicações enterprise completas
403
+
404
+ **Pattern:**
405
+ - **Base:** Fluent UI (layout, navegação, AI)
406
+ - **Complemento:** MudBlazor (grids, charts)
407
+
408
+ ```razor
409
+ <FluentLayout>
410
+ <FluentHeader>...</FluentHeader>
411
+ <FluentMain>
412
+ @* Grid complexo *@
413
+ <MudDataGrid ... />
414
+
415
+ @* Chat AI *@
416
+ <FluentMessageBar>AI response</FluentMessageBar>
417
+ </FluentMain>
418
+ </FluentLayout>
419
+ ```
420
+
421
+ ---
422
+
423
+ ## 🎯 Novas Features .NET 10
424
+
425
+ ### State Persistence
426
+
427
+ **Novo:** Propriedades com `[PersistentState]` são persist idas automaticamente.
428
+
429
+ ```razor
430
+ @page "/counter"
431
+
432
+ <button @onclick="Increment">Count: @Count</button>
433
+
434
+ @code {
435
+ // Persiste automaticamente em pre-rendering e circuit disconnections
436
+ [PersistentState]
437
+ private int Count { get; set; } = 0;
438
+
439
+ private void Increment() => Count++;
440
+ }
441
+ ```
442
+
443
+ **Quando usar:**
444
+ - Componentes com estado que precisam sobreviver a pre-rendering
445
+ - Aplicações com circuit disconnections frequentes
446
+ - Formulários multi-step
447
+
448
+ **Não usar para:**
449
+ - Dados sensíveis (passwords, tokens)
450
+ - Estado que deve ser recalculado (derived state)
451
+
452
+ ### Circuit Pause/Resume
453
+
454
+ **Novo:** APIs JavaScript para pausar/resumir circuits.
455
+
456
+ ```razor
457
+ @inject IJSRuntime JS
458
+
459
+ @code {
460
+ protected override async Task OnAfterRenderAsync(bool firstRender)
461
+ {
462
+ if (firstRender)
463
+ {
464
+ await JS.InvokeVoidAsync("setupCircuitManagement");
465
+ }
466
+ }
467
+ }
468
+ ```
469
+
470
+ ```javascript
471
+ // wwwroot/app.js
472
+ function setupCircuitManagement() {
473
+ // Pausar quando usuário minimiza/troca de aba
474
+ document.addEventListener('visibilitychange', () => {
475
+ if (document.hidden) {
476
+ Blazor.pauseCircuit(); // Libera recursos do servidor
477
+ } else {
478
+ Blazor.resumeCircuit(); // Restaura estado
479
+ }
480
+ });
481
+ }
482
+ ```
483
+
484
+ **Benefícios:**
485
+ - Reduz uso de memória do servidor
486
+ - Melhora escalabilidade
487
+ - Estado mantido durante pausa
488
+
489
+ ### Blazor Metrics & Observability
490
+
491
+ **Novo:** Métricas específicas de Blazor Server.
492
+
493
+ ```csharp
494
+ // Program.cs
495
+ builder.Services.AddOpenTelemetry()
496
+ .WithTracing(tracing =>
497
+ {
498
+ tracing.AddSource("Microsoft.AspNetCore.Components.Server");
499
+ tracing.AddAspireTracing();
500
+ })
501
+ .WithMetrics(metrics =>
502
+ {
503
+ metrics.AddMeter("Microsoft.AspNetCore.Components.Server");
504
+ metrics.AddAspireMetrics();
505
+ });
506
+ ```
507
+
508
+ **Métricas disponíveis:**
509
+ - Page navigations (por rota/componente)
510
+ - UI events (eventos e duração)
511
+ - Component lifecycle (render diff sizes)
512
+ - Active circuits (usuários simultâneos)
513
+ - Circuit state (connected/disconnected)
514
+
515
+ **Visualização:** Aspire Dashboard integrado.
516
+
517
+ ### Hot Reload Aprimorado
518
+
519
+ **Automático:** 10x mais rápido no Visual Studio 2026.
520
+
521
+ **Nada a fazer:** Apenas use VS 2026 Preview ou `dotnet watch`.
522
+
523
+ ### Formulários com Validação Aninhada
524
+
525
+ **Novo:** Validação automática de modelos aninhados.
526
+
527
+ ```csharp
528
+ public class Order
529
+ {
530
+ [Required]
531
+ public string OrderNumber { get; set; } = null!;
532
+
533
+ // Modelo aninhado - validado automaticamente
534
+ public Customer Customer { get; set; } = new();
535
+ public List<OrderItem> Items { get; set; } = new();
536
+ }
537
+
538
+ public class Customer
539
+ {
540
+ [Required]
541
+ public string Name { get; set; } = null!;
542
+
543
+ [EmailAddress]
544
+ public string Email { get; set; } = null!;
545
+
546
+ // Aninhamento profundo - também validado
547
+ public Address ShippingAddress { get; set; } = new();
548
+ }
549
+ ```
550
+
551
+ ```razor
552
+ <EditForm Model="@_order" OnValidSubmit="HandleSubmit">
553
+ <DataAnnotationsValidator />
554
+ <ValidationSummary />
555
+ <!-- Campos... -->
556
+ </EditForm>
557
+ ```
558
+
559
+ **Configuração (Program.cs):**
560
+ ```csharp
561
+ builder.Services.AddValidation(); // Habilita validação aninhada
562
+ ```
563
+
564
+ ---
565
+
566
+ ## 📚 Documentação de Referência
333
567
 
334
- - [Blazor Documentation](https://learn.microsoft.com/en-us/aspnet/core/blazor/)
335
- - [Entity Framework Core](https://learn.microsoft.com/en-us/ef/core/)
336
- - [ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/)
568
+ - [Blazor Documentation](https://learn.microsoft.com/aspnet/core/blazor/)
569
+ - [Entity Framework Core 10](https://learn.microsoft.com/ef/core/)
570
+ - [ASP.NET Core 10](https://learn.microsoft.com/aspnet/core/)
337
571
  - [Hangfire](https://docs.hangfire.io/)
572
+ - **[Passkeys/WebAuthn](../../.morph/standards/passkeys-auth.md)**
573
+ - **[Agent Framework](../../.morph/standards/agent-framework-setup.md)**
338
574
 
339
575
  ## Checklist de Projeto
340
576
 
@@ -6,9 +6,9 @@ Stack full-stack com .NET Web API no backend e Next.js no frontend.
6
6
 
7
7
  | Aspecto | Tecnologia |
8
8
  |---------|------------|
9
- | **Backend** | .NET 9+ Web API |
9
+ | **Backend** | .NET 10 Web API / C# 14 |
10
10
  | **Frontend** | Next.js 15+ / React 19 |
11
- | **Database** | Entity Framework Core + Azure SQL |
11
+ | **Database** | Entity Framework Core 10 + Azure SQL |
12
12
  | **API** | REST + OpenAPI |
13
13
  | **Hosting** | Azure Container Apps |
14
14
 
@@ -0,0 +1,5 @@
1
+ {
2
+ "morphVersion": "1.0.4",
3
+ "installedAt": "2025-11-28T00:00:00.000Z",
4
+ "cliVersion": "1.0.4"
5
+ }
@@ -7,6 +7,7 @@
7
7
  "name": "Standards Architect",
8
8
  "emoji": "📐",
9
9
  "type": "core",
10
+ "skillPath": ".claude/skills/specialists/standards-architect.md",
10
11
  "description": "Guardião dos padrões de código e arquitetura",
11
12
  "responsibilities": [
12
13
  "Validar aderência aos padrões em .morph/standards/",
@@ -21,6 +22,7 @@
21
22
  "name": "Azure Architect",
22
23
  "emoji": "☁️",
23
24
  "type": "core",
25
+ "skillPath": ".claude/skills/specialists/azure-architect.md",
24
26
  "description": "Especialista em infraestrutura Azure",
25
27
  "responsibilities": [
26
28
  "Desenhar infraestrutura cost-effective",
@@ -35,6 +37,7 @@
35
37
  "name": "Blazor Builder",
36
38
  "emoji": "🔥",
37
39
  "type": "core",
40
+ "skillPath": ".claude/skills/stacks/dotnet-blazor.md",
38
41
  "description": "Especialista em componentes Blazor Server",
39
42
  "responsibilities": [
40
43
  "Criar componentes reutilizáveis",
@@ -49,6 +52,7 @@
49
52
  "name": "EF Modeler",
50
53
  "emoji": "🗄️",
51
54
  "type": "core",
55
+ "skillPath": ".claude/skills/specialists/ef-modeler.md",
52
56
  "description": "Especialista em Entity Framework e modelagem de dados",
53
57
  "responsibilities": [
54
58
  "Modelar entidades e relacionamentos",
@@ -63,6 +67,7 @@
63
67
  "name": "Cost Guardian",
64
68
  "emoji": "💰",
65
69
  "type": "core",
70
+ "skillPath": ".claude/skills/specialists/cost-guardian.md",
66
71
  "description": "Guardião dos custos e otimização financeira",
67
72
  "responsibilities": [
68
73
  "Validar custos de cada recurso proposto",
@@ -81,6 +86,7 @@
81
86
  "name": "MS Agent Expert",
82
87
  "emoji": "🤖",
83
88
  "type": "core",
89
+ "skillPath": ".claude/skills/specialists/ms-agent-expert.md",
84
90
  "description": "Especialista em Microsoft Agent Framework e AI",
85
91
  "responsibilities": [
86
92
  "Integrar Semantic Kernel",
@@ -98,6 +104,7 @@
98
104
  "name": "Hangfire Orchestrator",
99
105
  "emoji": "⏰",
100
106
  "type": "specialist",
107
+ "skillPath": ".claude/skills/specialists/hangfire-orchestrator.md",
101
108
  "description": "Especialista em background jobs",
102
109
  "autoActivation": {
103
110
  "keywords": ["scheduled", "job", "background", "recurring", "batch", "cron", "queue"]
@@ -115,26 +122,63 @@
115
122
  "name": "UI/UX Designer",
116
123
  "emoji": "🎨",
117
124
  "type": "specialist",
118
- "description": "Especialista em interfaces complexas",
125
+ "skillPath": ".claude/skills/specialists/ui-ux-designer.md",
126
+ "description": "Especialista em UI/UX, Fluent UI Blazor e MudBlazor. FASE 1.5 obrigatória para features com front-end.",
119
127
  "autoActivation": {
120
- "keywords": ["wizard", "dashboard", "complex", "drag", "drop", "multi-step", "chart"]
128
+ "keywords": [
129
+ "blazor", "component", "page", "razor", "ui", "ux", "design", "layout", "responsive",
130
+ "wizard", "dashboard", "form", "chart", "table", "dialog", "modal", "button",
131
+ "input", "select", "dropdown", "menu", "navigation", "sidebar", "header", "footer",
132
+ "tela", "telas", "interface", "formulario", "visualizacao", "exibicao",
133
+ "screen", "screens", "view", "views", "display",
134
+ "mostrar", "exibir", "apresentar", "renderizar", "show", "render", "present",
135
+ "card", "cards", "list", "lists", "grid", "panel", "panels", "stepper", "tabs", "tab",
136
+ "login", "signup", "cadastro", "report", "reports", "detail", "details", "edit", "create",
137
+ "frontend", "front-end", "web", "app", "application", "client-side", "clientside"
138
+ ]
121
139
  },
140
+ "validatesPhases": ["uiux-design"],
122
141
  "responsibilities": [
123
- "Desenhar fluxos de usuário",
124
- "Definir componentes complexos",
125
- "Garantir responsividade",
126
- "Acessibilidade WCAG 2.1"
142
+ "Coletar input do usuário sobre preferências de UI/UX",
143
+ "Analisar screenshots/mockups de referência",
144
+ "Gerar wireframes ASCII e mockups",
145
+ "Especificar componentes Fluent UI ou MudBlazor",
146
+ "Desenhar fluxos de usuário completos",
147
+ "Documentar edge cases e estados (loading, error, empty)",
148
+ "Garantir acessibilidade WCAG 2.1",
149
+ "Validar responsividade (desktop, tablet, mobile)"
127
150
  ],
128
- "deliverables": ["Wireframes ASCII", "User flows", "Component specs"]
151
+ "deliverables": [
152
+ "ui-design-system.md (cores, tipografia, spacing)",
153
+ "ui-mockups.md (wireframes ASCII + descrições)",
154
+ "ui-components.md (specs Fluent UI/MudBlazor)",
155
+ "ui-flows.md (fluxos + diagramas + edge cases)"
156
+ ],
157
+ "expertise": [
158
+ "Fluent UI Blazor (AI-first components)",
159
+ "MudBlazor (complex components)",
160
+ "WCAG 2.1 Accessibility",
161
+ "Responsive Design",
162
+ "ASCII wireframing",
163
+ "User flow diagrams"
164
+ ],
165
+ "workflow": [
166
+ "1. Perguntar ao usuário sobre preferências de layout/referências",
167
+ "2. Analisar imagens de exemplo (se fornecidas)",
168
+ "3. Decidir Fluent UI vs MudBlazor (justificar)",
169
+ "4. Gerar ui-mockups.md, ui-components.md, ui-flows.md",
170
+ "5. Pausar para aprovação do usuário"
171
+ ]
129
172
  },
130
173
  {
131
174
  "id": "popm-advisor",
132
175
  "name": "PO/PM Advisor",
133
176
  "emoji": "📋",
134
177
  "type": "specialist",
178
+ "skillPath": ".claude/skills/specialists/po-pm-advisor.md",
135
179
  "description": "Consultor de produto e requisitos",
136
180
  "autoActivation": {
137
- "keywords": ["unclear", "requirements", "priority", "ROI", "business", "value", "scope"]
181
+ "keywords": ["unclear", "requirements", "priority", "roi", "business", "value", "scope"]
138
182
  },
139
183
  "responsibilities": [
140
184
  "Clarificar requisitos vagos",
@@ -143,6 +187,55 @@
143
187
  "Questionar valor de negócio"
144
188
  ],
145
189
  "techniques": ["5 Whys", "MoSCoW", "User story mapping"]
190
+ },
191
+ {
192
+ "id": "ai-system-architect",
193
+ "name": "AI System Architect",
194
+ "emoji": "🏗️",
195
+ "type": "specialist",
196
+ "skillPath": ".claude/skills/specialists/ai-system-architect.md",
197
+ "description": "Especialista em arquitetura de sistemas agênticos e orquestração multi-agente",
198
+ "autoActivation": {
199
+ "keywords": [
200
+ "orchestration", "multi-agent", "workflow", "agent-to-agent", "a2a",
201
+ "system-design", "reflection", "planning", "memory", "rag",
202
+ "vector-search", "chunking", "embedding", "retrieval", "agentic",
203
+ "reasoning", "chain-of-thought", "tree-of-thought", "prompt-chaining",
204
+ "routing", "parallelization", "collaboration", "evaluation",
205
+ "guardrails", "prioritization", "exploration", "discovery"
206
+ ]
207
+ },
208
+ "validatesPhases": ["design"],
209
+ "responsibilities": [
210
+ "Desenhar arquiteturas agênticas complexas e escaláveis",
211
+ "Definir padrões de orquestração (workflows, comunicação inter-agentes)",
212
+ "Implementar pipelines RAG (Retrieval-Augmented Generation)",
213
+ "Avaliar estratégias de chunking, embedding e retrieval",
214
+ "Selecionar padrões adequados dos 20 padrões de design agêntico",
215
+ "Definir estrutura de memória e estado de agentes",
216
+ "Implementar monitoramento e avaliação de sistemas agênticos"
217
+ ],
218
+ "expertise": [
219
+ "20 Padrões de Design Agêntico",
220
+ "Framework TACO (Taskers, Automators, Collaborators, Orchestrators)",
221
+ "Microsoft Agent Framework Workflows",
222
+ "Azure AI Search + RAG Pipeline",
223
+ "Semantic Kernel Memory Connectors",
224
+ "A2A (Agent-to-Agent) Protocol",
225
+ "Reasoning Techniques (Chain of Thought, Tree of Thought)",
226
+ "Multi-Agent Collaboration Patterns"
227
+ ],
228
+ "patterns": [
229
+ "Prompt Chaining",
230
+ "Routing",
231
+ "Parallelization",
232
+ "Reflection",
233
+ "Multi-Agent Collaboration",
234
+ "Memory Management",
235
+ "RAG Pipeline",
236
+ "Resource-Aware Optimization",
237
+ "Evaluation and Monitoring"
238
+ ]
146
239
  }
147
240
  ]
148
241
  }
@@ -0,0 +1,70 @@
1
+ {
2
+ "$schema": "./azure-pricing.schema.json",
3
+ "version": "1.0.0",
4
+ "region": "eastus2",
5
+ "currency": "USD",
6
+ "lastUpdated": "2025-01-10T00:00:00Z",
7
+ "resources": {
8
+ "Microsoft.Sql/servers/databases": {
9
+ "Free": 0,
10
+ "Basic": 4.99,
11
+ "S0": 14.72,
12
+ "S1": 29.44,
13
+ "S2": 73.61,
14
+ "S3": 147.22,
15
+ "S4": 294.44,
16
+ "P1": 465.00,
17
+ "P2": 930.00,
18
+ "GP_Gen5_2": 328.00,
19
+ "GP_Gen5_4": 656.00,
20
+ "BC_Gen5_2": 1092.00
21
+ },
22
+ "Microsoft.App/containerApps": {
23
+ "Consumption": 0,
24
+ "Consumption_Active": 5.00,
25
+ "Dedicated_D2": 55.00,
26
+ "Dedicated_D4": 110.00
27
+ },
28
+ "Microsoft.Storage/storageAccounts": {
29
+ "Standard_LRS": 0.02,
30
+ "Standard_GRS": 0.05,
31
+ "Premium_LRS": 0.15
32
+ },
33
+ "Microsoft.Insights/components": {
34
+ "Free": 0,
35
+ "Basic": 2.30
36
+ },
37
+ "Microsoft.KeyVault/vaults": {
38
+ "Standard": 0.03,
39
+ "Premium": 1.00
40
+ },
41
+ "Microsoft.DocumentDB/databaseAccounts": {
42
+ "Serverless": 0,
43
+ "Provisioned_400RU": 23.36,
44
+ "Provisioned_1000RU": 58.40
45
+ },
46
+ "Microsoft.Web/serverfarms": {
47
+ "F1": 0,
48
+ "D1": 9.67,
49
+ "B1": 13.14,
50
+ "B2": 26.28,
51
+ "S1": 69.35,
52
+ "P1v2": 146.00
53
+ },
54
+ "Microsoft.ServiceBus/namespaces": {
55
+ "Basic": 0.05,
56
+ "Standard": 10.00,
57
+ "Premium": 677.00
58
+ },
59
+ "Microsoft.Cache/redis": {
60
+ "C0": 16.06,
61
+ "C1": 61.32,
62
+ "C2": 122.63,
63
+ "P1": 486.00
64
+ },
65
+ "Microsoft.Web/sites": {
66
+ "Consumption": 0,
67
+ "Premium_EP1": 146.00
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://polymorphism.com.br/schemas/azure-pricing.json",
4
+ "title": "Azure Pricing Table",
5
+ "description": "Monthly pricing for Azure resources by SKU (East US 2 / Brazil South)",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "JSON Schema reference"
11
+ },
12
+ "version": {
13
+ "type": "string",
14
+ "description": "Schema version",
15
+ "pattern": "^\\d+\\.\\d+\\.\\d+$"
16
+ },
17
+ "region": {
18
+ "type": "string",
19
+ "description": "Azure region for pricing",
20
+ "enum": ["eastus2", "brazilsouth", "westus2", "northeurope"]
21
+ },
22
+ "currency": {
23
+ "type": "string",
24
+ "description": "Currency code",
25
+ "enum": ["USD", "BRL", "EUR"]
26
+ },
27
+ "lastUpdated": {
28
+ "type": "string",
29
+ "format": "date-time",
30
+ "description": "Last time pricing was updated"
31
+ },
32
+ "resources": {
33
+ "type": "object",
34
+ "description": "Resource types and their SKU pricing",
35
+ "patternProperties": {
36
+ "^Microsoft\\.[A-Za-z]+/[A-Za-z]+$": {
37
+ "type": "object",
38
+ "description": "SKU pricing for a resource type",
39
+ "additionalProperties": {
40
+ "type": "number",
41
+ "minimum": 0,
42
+ "description": "Monthly cost in specified currency"
43
+ }
44
+ }
45
+ }
46
+ }
47
+ },
48
+ "required": ["version", "region", "currency", "lastUpdated", "resources"],
49
+ "additionalProperties": false
50
+ }
@@ -1,5 +1,4 @@
1
1
  {
2
- "version": "1.0.0",
3
2
  "project": {
4
3
  "name": "MyProject",
5
4
  "description": "Descrição do projeto",
@@ -90,7 +89,20 @@
90
89
  },
91
90
  "costs": {
92
91
  "monthlyBudget": 15,
93
- "alertThreshold": 10,
94
- "requireApprovalAbove": 10
92
+ "currency": "USD",
93
+ "limits": {
94
+ "freeTierOnly": 0,
95
+ "withApproval": 10,
96
+ "requiresADR": 10
97
+ },
98
+ "enforcement": {
99
+ "blockCommitsAboveLimit": true,
100
+ "requireADRInDecisionsMd": true,
101
+ "alertOnApproach": 0.8
102
+ },
103
+ "pricing": {
104
+ "region": "eastus2",
105
+ "lastUpdated": "2024-01-01"
106
+ }
95
107
  }
96
108
  }