@polymorphism-tech/morph-spec 4.11.1 → 4.13.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.
- package/README.md +21 -29
- package/bin/morph-spec.js +41 -24
- package/bin/task-manager.js +962 -1341
- package/bin/validate.js +1 -1
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +10 -11
- package/docs/QUICKSTART.md +15 -15
- package/framework/CLAUDE.md +5 -2
- package/framework/agents/README.md +3 -4
- package/framework/agents/ai-agents/ai-system-architect.md +6 -10
- package/framework/agents/architecture/seo-growth-hacker.md +166 -326
- package/framework/agents/architecture/standards-architect.md +21 -31
- package/framework/agents/backend/dotnet-senior.md +160 -86
- package/framework/agents/backend/ef-modeler.md +2 -6
- package/framework/agents/backend/hangfire-orchestrator.md +8 -9
- package/framework/agents/backend/ms-agent-expert.md +1 -1
- package/framework/agents/frontend/nextjs-expert.md +198 -133
- package/framework/agents/frontend/ui-ux-designer.md +226 -267
- package/framework/agents/infrastructure/infra-architect.md +191 -27
- package/framework/agents/integrations/clerk-auth.md +19 -26
- package/framework/agents/integrations/hangfire-integration.md +1 -4
- package/framework/agents.json +226 -1454
- package/framework/commands/morph-apply.md +4 -4
- package/framework/commands/morph-preflight.md +4 -26
- package/framework/commands/morph-proposal.md +19 -19
- package/framework/commands/morph-status.md +2 -2
- package/framework/commands/morph-troubleshoot.md +6 -13
- package/framework/hooks/README.md +1 -6
- package/framework/hooks/claude-code/post-tool-use/agent-complete.js +122 -0
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +4 -6
- package/framework/hooks/claude-code/pre-compact/save-morph-context.js +12 -7
- package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +2 -2
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +2 -2
- package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +5 -10
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +63 -30
- package/framework/hooks/claude-code/session-start/resume-context.js +77 -0
- package/framework/hooks/claude-code/statusline.py +4 -5
- package/framework/hooks/claude-code/stop/validate-completion.js +4 -4
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +8 -8
- package/framework/hooks/shared/compact-restore.js +28 -5
- package/framework/hooks/shared/dispatch-helpers.js +17 -0
- package/framework/hooks/shared/phase-utils.js +4 -8
- package/framework/hooks/shared/state-reader.js +34 -3
- package/framework/phases.json +7 -45
- package/framework/rules/ai-agents-standards.md +15 -0
- package/framework/rules/asaas-standards.md +13 -0
- package/framework/rules/clerk-standards.md +13 -0
- package/framework/rules/csharp-standards.md +8 -4
- package/framework/rules/data-standards.md +18 -0
- package/framework/rules/dotnet-templates.md +87 -0
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/hangfire-standards.md +13 -0
- package/framework/rules/infrastructure-standards.md +27 -16
- package/framework/rules/morph-workflow.md +73 -13
- package/framework/rules/nextjs-standards.md +1 -0
- package/framework/rules/nextjs-templates.md +40 -0
- package/framework/rules/resend-standards.md +12 -0
- package/framework/rules/supabase-standards.md +29 -0
- package/framework/skills/README.md +6 -8
- package/framework/skills/level-0-meta/mcp-registry.json +21 -99
- package/framework/{standards/ai-agents/team-orchestration.md → skills/level-0-meta/morph-agent-teams/SKILL.md} +472 -479
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +28 -1
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
- package/framework/skills/level-0-meta/morph-code-review/SKILL.md +1 -5
- package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +1 -1
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +23 -41
- package/framework/skills/level-0-meta/morph-init/SKILL.md +18 -14
- package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +225 -0
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +20 -0
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +4 -8
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +15 -59
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +7 -19
- package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +8 -8
- package/framework/skills/level-1-workflows/README.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +49 -50
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +58 -124
- package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +5 -50
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +127 -159
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +4 -3
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +2 -2
- package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +17 -13
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +22 -40
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +0 -2
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +5 -5
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +275 -61
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
- package/framework/squad-templates/backend-only.json +6 -6
- package/framework/squad-templates/frontend-only.json +17 -8
- package/framework/squad-templates/full-stack.json +29 -24
- package/framework/standards/STANDARDS.json +1021 -2338
- package/framework/standards/backend/dotnet/fluent-validation-vsa.md +200 -0
- package/framework/standards/backend/dotnet/result-pattern.md +213 -0
- package/framework/standards/backend/dotnet/scalar-ui.md +172 -0
- package/framework/standards/backend/dotnet/scrutor.md +158 -0
- package/framework/standards/backend/dotnet/vsa-handler-patterns.md +274 -0
- package/framework/standards/frontend/nextjs/motion-patterns.md +1 -1
- package/framework/standards/infrastructure/supabase/mcp-setup.md +83 -193
- package/framework/standards/integration/mcp/mcp-tools.md +91 -77
- package/framework/templates/IDE-SNIPPETS.md +2 -6
- package/framework/templates/README.md +709 -814
- package/framework/templates/REGISTRY.json +223 -762
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -0
- package/framework/templates/code/dotnet/abstractions/error.cs +60 -0
- package/framework/templates/code/dotnet/abstractions/handler.cs +12 -0
- package/framework/templates/code/dotnet/abstractions/result.cs +74 -0
- package/framework/templates/code/dotnet/backend/repository.cs +148 -141
- package/framework/templates/code/dotnet/constants/api-tags.cs +6 -0
- package/framework/templates/code/dotnet/exceptions/exception-handler.cs +32 -0
- package/framework/templates/code/dotnet/extensions/database-extensions.cs +20 -0
- package/framework/templates/code/dotnet/extensions/handler-registration.cs +38 -0
- package/framework/templates/code/dotnet/extensions/health-checks.cs +24 -0
- package/framework/templates/code/dotnet/extensions/map-endpoints.cs +35 -0
- package/framework/templates/code/dotnet/extensions/result-extensions.cs +29 -0
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -0
- package/framework/templates/code/dotnet/feature/entity.cs.hbs +8 -0
- package/framework/templates/code/dotnet/feature/errors.cs.hbs +8 -0
- package/framework/templates/code/dotnet/feature/handler.cs.hbs +24 -0
- package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -0
- package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -0
- package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -0
- package/framework/templates/code/dotnet/jobs/job.cs +21 -17
- package/framework/templates/code/dotnet/pipelines/logging-decorator.cs +31 -0
- package/framework/templates/code/dotnet/pipelines/validation-decorator.cs +97 -0
- package/framework/templates/code/dotnet/test.cs +192 -106
- package/framework/templates/context/ARCHITECTURE.md +89 -0
- package/framework/templates/context/CONTEXT-FEATURE.md +2 -2
- package/framework/templates/context/CONTEXT.md +180 -181
- package/framework/templates/context/design-system.md +342 -211
- package/framework/templates/docs/onboarding.md +2 -3
- package/framework/templates/docs/proposal.md +171 -182
- package/framework/templates/docs/spec.md +1 -3
- package/framework/templates/docs/ui-components.md +0 -72
- package/framework/templates/examples/design-system-examples.md +4 -4
- package/framework/templates/feature/decisions.md +0 -66
- package/framework/templates/feature/recap.md +1 -2
- package/framework/templates/infrastructure/github/README.md +56 -593
- package/framework/templates/integrations/clerk-config.cs +0 -41
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +2 -2
- package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +1 -2
- package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +83 -126
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +2 -2
- package/framework/templates/project/validate.js +2 -4
- package/framework/templates/ui/design-system.css +1 -1
- package/framework/workflows/README.md +8 -8
- package/framework/workflows/configs/fast-track.json +51 -0
- package/framework/workflows/configs/full.json +68 -0
- package/framework/workflows/configs/standard.json +7 -3
- package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +1 -1
- package/framework/workflows/docs/enforcement-pipeline.md +18 -19
- package/framework/workflows/docs/full-morph.md +69 -76
- package/framework/workflows/docs/standard.md +49 -44
- package/framework/workflows/docs/ui-refresh.md +1 -1
- package/package.json +3 -3
- package/src/commands/agents/dispatch-agents.js +55 -116
- package/src/commands/context/context-refresh.js +79 -0
- package/src/commands/mcp/mcp-setup.js +28 -6
- package/src/commands/phase/phase-reset.js +1 -1
- package/src/commands/project/doctor.js +10 -32
- package/src/commands/project/init.js +32 -1
- package/src/commands/project/status.js +6 -12
- package/src/commands/scaffold/scaffold.js +131 -0
- package/src/commands/scope/escalate.js +1 -1
- package/src/commands/state/advance-phase.js +15 -29
- package/src/commands/state/state.js +20 -5
- package/src/commands/tasks/task.js +0 -30
- package/src/commands/validation/validate-feature.js +3 -10
- package/src/core/paths/output-schema.js +12 -13
- package/src/core/state/phase-state-machine.js +211 -217
- package/src/core/state/state-manager.js +9 -9
- package/src/lib/agents/agents-manager.js +2 -2
- package/src/lib/agents/output-collector.js +1 -2
- package/src/lib/detectors/design-system-detector.js +4 -4
- package/src/lib/detectors/index.js +1 -11
- package/src/lib/generators/architecture-scanner.js +640 -0
- package/src/lib/generators/context-generator.js +3 -3
- package/src/lib/generators/design-system-generator.js +508 -298
- package/src/lib/generators/index.js +12 -10
- package/src/lib/generators/metadata-extractor.js +386 -387
- package/src/lib/generators/recap-generator.js +4 -4
- package/src/lib/generators/scaffold-generator.js +317 -0
- package/src/lib/generators/settings-generator.js +0 -1
- package/src/lib/phase-chain/phase-validator.js +64 -42
- package/src/lib/stack/stack-profile.js +2 -2
- package/src/lib/standards/digest-builder.js +72 -285
- package/src/lib/tasks/task-parser.js +11 -5
- package/src/lib/validators/architecture/architecture-validator.js +259 -387
- package/src/lib/validators/content/content-validator.js +287 -287
- package/src/lib/validators/css/css-validator.js +340 -352
- package/src/lib/validators/design-system/design-system-validator.js +11 -5
- package/src/lib/validators/packages/package-validator.js +347 -360
- package/src/lib/validators/shared/issue-counter.js +14 -18
- package/src/lib/validators/validation-runner.js +3 -19
- package/src/scripts/setup-infra.js +1 -1
- package/src/utils/agents-installer.js +24 -3
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +21 -19
- package/src/utils/skills-installer.js +178 -178
- package/framework/agents/architecture/prompt-engineer.md +0 -195
- package/framework/agents/backend/api-designer.md +0 -106
- package/framework/agents/frontend/blazor-builder.md +0 -229
- package/framework/agents/frontend/nextjs-ui-specialist.md +0 -218
- package/framework/agents/infrastructure/azure-architect.md +0 -150
- package/framework/agents/infrastructure/azure-deploy-specialist.md +0 -707
- package/framework/agents/infrastructure/bicep-architect.md +0 -132
- package/framework/agents/infrastructure/container-specialist.md +0 -137
- package/framework/agents/infrastructure/devops-engineer.md +0 -126
- package/framework/agents/integrations/azure-identity.md +0 -148
- package/framework/agents/quality/code-analyzer.md +0 -239
- package/framework/agents/quality/testing-specialist.md +0 -130
- package/framework/hooks/claude-code/notification/approval-reminder.js +0 -57
- package/framework/hooks/claude-code/post-tool-use/context-refresh.js +0 -109
- package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +0 -78
- package/framework/index/troubleshooting-index.json +0 -184
- package/framework/rules/testing-standards.md +0 -14
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +0 -230
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +0 -70
- package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +0 -256
- package/framework/skills/level-1-workflows/morph-phase-clarify/references/clarifications-example.md +0 -117
- package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +0 -269
- package/framework/standards/ai-agents/blazor-ui.md +0 -364
- package/framework/standards/architecture/ddd/aggregates.md +0 -120
- package/framework/standards/architecture/ddd/bounded-contexts.md +0 -105
- package/framework/standards/architecture/ddd/complexity-levels.md +0 -108
- package/framework/standards/architecture/ddd/entities.md +0 -99
- package/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
- package/framework/standards/architecture/ddd/value-objects.md +0 -124
- package/framework/standards/backend/api/minimal-api.md +0 -494
- package/framework/standards/backend/api/rest.md +0 -492
- package/framework/standards/backend/authentication/passkeys.md +0 -428
- package/framework/standards/backend/database/ef-core.md +0 -199
- package/framework/standards/backend/database/migrations.md +0 -393
- package/framework/standards/backend/database/repository-patterns.md +0 -528
- package/framework/standards/backend/dotnet/async.md +0 -366
- package/framework/standards/backend/dotnet/core.md +0 -117
- package/framework/standards/backend/dotnet/di.md +0 -439
- package/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
- package/framework/standards/context/analytics.md +0 -96
- package/framework/standards/context/bundles.md +0 -110
- package/framework/standards/context/priming.md +0 -78
- package/framework/standards/core/architecture.md +0 -185
- package/framework/standards/core/coding.md +0 -214
- package/framework/standards/core/git-branching-strategy.md +0 -403
- package/framework/standards/core/git.md +0 -185
- package/framework/standards/core/testing.md +0 -295
- package/framework/standards/data/nosql/blob-storage.md +0 -102
- package/framework/standards/data/vector-search/azure-ai-search.md +0 -121
- package/framework/standards/frontend/blazor/design-checklist.md +0 -222
- package/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
- package/framework/standards/frontend/blazor/fluent-ui.md +0 -137
- package/framework/standards/frontend/blazor/html-conversion.md +0 -184
- package/framework/standards/frontend/blazor/lifecycle.md +0 -195
- package/framework/standards/frontend/blazor/pitfalls.md +0 -198
- package/framework/standards/frontend/blazor/state.md +0 -191
- package/framework/standards/frontend/design-system/aesthetic-direction.md +0 -213
- package/framework/standards/infrastructure/azure/azure.md +0 -624
- package/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
- package/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
- package/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
- package/framework/standards/infrastructure/azure/services/functions.md +0 -486
- package/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
- package/framework/standards/infrastructure/azure/services/storage.md +0 -407
- package/framework/standards/infrastructure/vercel/vercel-database.md +0 -106
- package/framework/standards/integration/api/graphql.md +0 -91
- package/framework/standards/integration/api/grpc.md +0 -114
- package/framework/standards/integration/api/rest-design.md +0 -95
- package/framework/standards/integration/event-driven/cqrs.md +0 -101
- package/framework/standards/integration/event-driven/event-sourcing.md +0 -124
- package/framework/standards/integration/event-driven/service-bus.md +0 -95
- package/framework/standards/observability/logging.md +0 -131
- package/framework/standards/observability/metrics.md +0 -121
- package/framework/standards/observability/monitoring.md +0 -114
- package/framework/standards/observability/tracing.md +0 -132
- package/framework/standards/workflows/parallel-execution.md +0 -112
- package/framework/standards/workflows/thread-management.md +0 -113
- package/framework/templates/code/dotnet/backend/service.cs +0 -139
- package/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
- package/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
- package/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
- package/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
- package/framework/templates/code/dotnet/contracts/contracts-level1.cs +0 -69
- package/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
- package/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
- package/framework/templates/code/dotnet/frontend/component.razor +0 -239
- package/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
- package/framework/templates/infrastructure/azure/README.md +0 -286
- package/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
- package/framework/templates/infrastructure/azure/app-service.bicep +0 -164
- package/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
- package/framework/templates/infrastructure/azure/container-app.bicep +0 -156
- package/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
- package/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
- package/framework/templates/infrastructure/azure/deploy.sh +0 -208
- package/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
- package/framework/templates/infrastructure/azure/main.bicep +0 -189
- package/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
- package/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
- package/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
- package/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
- package/framework/templates/infrastructure/azure/storage.bicep +0 -106
- package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
- package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
- package/framework/templates/integrations/azure-identity-config.cs +0 -288
- package/framework/templates/project-structure/dotnet-ddd.md +0 -70
- package/framework/templates/saas/subscription.cs +0 -347
- package/framework/templates/saas/tenant.cs +0 -338
- package/framework/templates/ui/FluentDesignTheme.cs +0 -149
- package/framework/templates/ui/MudTheme.cs +0 -281
- package/framework/workflows/configs/nodejs-cli.json +0 -40
- package/src/commands/standards/context-budget.js +0 -89
- package/src/lib/standards/index.js +0 -7
- package/src/lib/standards/standards-context-injector.js +0 -302
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +0 -316
- package/src/lib/validators/blazor/blazor-state-validator.js +0 -279
- package/src/lib/validators/blazor/blazor-validator.js +0 -369
- package/src/lib/validators/blazor/index.js +0 -9
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: prompt-engineer
|
|
3
|
-
description: Prompt Engineer specialist for designing system prompts, few-shot examples, chain-of-thought patterns, and LLM interaction optimization. Use when building AI features, writing or improving system prompts, designing LLM agent instructions, or optimizing prompt performance.
|
|
4
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Prompt Engineer
|
|
8
|
-
|
|
9
|
-
Especialista em engenharia de prompts para LLMs e sistemas de IA. Use PROATIVAMENTE ao construir features de IA, melhorar performance de agentes ou criar system prompts.
|
|
10
|
-
|
|
11
|
-
## Responsabilidades
|
|
12
|
-
|
|
13
|
-
1. Criar prompts otimizados para LLMs
|
|
14
|
-
2. Aplicar técnicas avançadas de prompting
|
|
15
|
-
3. Definir formatos de output estruturados
|
|
16
|
-
4. Otimizar prompts existentes
|
|
17
|
-
5. Adaptar prompts para diferentes modelos
|
|
18
|
-
|
|
19
|
-
## Triggers
|
|
20
|
-
|
|
21
|
-
Keywords: `prompt`, `prompting`, `system prompt`, `few-shot`, `chain-of-thought`, `llm prompt`, `agent prompt`, `engenharia de prompt`
|
|
22
|
-
|
|
23
|
-
## Áreas de Expertise
|
|
24
|
-
|
|
25
|
-
### Otimização de Prompts
|
|
26
|
-
|
|
27
|
-
- Seleção few-shot vs zero-shot
|
|
28
|
-
- Raciocínio chain-of-thought
|
|
29
|
-
- Role-playing e definição de perspectiva
|
|
30
|
-
- Especificação de formato de output
|
|
31
|
-
- Definição de constraints e limites
|
|
32
|
-
|
|
33
|
-
### Arsenal de Técnicas
|
|
34
|
-
|
|
35
|
-
- Constitutional AI principles
|
|
36
|
-
- Recursive prompting
|
|
37
|
-
- Tree of thoughts
|
|
38
|
-
- Self-consistency checking
|
|
39
|
-
- Prompt chaining e pipelines
|
|
40
|
-
|
|
41
|
-
### Otimização por Modelo
|
|
42
|
-
|
|
43
|
-
- **Claude**: Ênfase em helpful, harmless, honest
|
|
44
|
-
- **GPT**: Estrutura clara e exemplos
|
|
45
|
-
- **Open models**: Necessidades específicas de formatação
|
|
46
|
-
- **Modelos especializados**: Adaptação de domínio
|
|
47
|
-
|
|
48
|
-
## Processo de Otimização
|
|
49
|
-
|
|
50
|
-
1. Analisar caso de uso pretendido
|
|
51
|
-
2. Identificar requisitos e constraints chave
|
|
52
|
-
3. Selecionar técnicas de prompting apropriadas
|
|
53
|
-
4. Criar prompt inicial com estrutura clara
|
|
54
|
-
5. Testar e iterar baseado em outputs
|
|
55
|
-
6. Documentar padrões efetivos
|
|
56
|
-
|
|
57
|
-
## Formato de Output Obrigatório
|
|
58
|
-
|
|
59
|
-
**IMPORTANTE:** SEMPRE que criar qualquer prompt, DEVE exibir o texto completo. NUNCA apenas descreva um prompt.
|
|
60
|
-
|
|
61
|
-
### O Prompt
|
|
62
|
-
```
|
|
63
|
-
[Exibir texto completo do prompt aqui]
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Notas de Implementação
|
|
67
|
-
- Técnicas chave usadas
|
|
68
|
-
- Por que essas escolhas foram feitas
|
|
69
|
-
- Outcomes esperados
|
|
70
|
-
|
|
71
|
-
## Deliverables
|
|
72
|
-
|
|
73
|
-
- **O texto do prompt** (exibido completo, formatado)
|
|
74
|
-
- Explicação das escolhas de design
|
|
75
|
-
- Guidelines de uso
|
|
76
|
-
- Exemplos de outputs esperados
|
|
77
|
-
- Benchmarks de performance
|
|
78
|
-
- Estratégias de tratamento de erro
|
|
79
|
-
|
|
80
|
-
## Padrões Comuns
|
|
81
|
-
|
|
82
|
-
### Estrutura System/User/Assistant
|
|
83
|
-
```
|
|
84
|
-
<system>
|
|
85
|
-
[Contexto e personalidade]
|
|
86
|
-
</system>
|
|
87
|
-
|
|
88
|
-
<user>
|
|
89
|
-
[Input do usuário]
|
|
90
|
-
</user>
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Tags XML para Seções Claras
|
|
94
|
-
```xml
|
|
95
|
-
<context>
|
|
96
|
-
[Background information]
|
|
97
|
-
</context>
|
|
98
|
-
|
|
99
|
-
<instructions>
|
|
100
|
-
[What to do]
|
|
101
|
-
</instructions>
|
|
102
|
-
|
|
103
|
-
<output_format>
|
|
104
|
-
[Expected format]
|
|
105
|
-
</output_format>
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Outros Padrões
|
|
109
|
-
- Formatos de output explícitos
|
|
110
|
-
- Raciocínio passo-a-passo
|
|
111
|
-
- Critérios de auto-avaliação
|
|
112
|
-
|
|
113
|
-
## Exemplo de Output
|
|
114
|
-
|
|
115
|
-
Quando solicitado a criar prompt para code review:
|
|
116
|
-
|
|
117
|
-
### O Prompt
|
|
118
|
-
```
|
|
119
|
-
You are an expert code reviewer with 10+ years of experience. Review the provided code focusing on:
|
|
120
|
-
1. Security vulnerabilities
|
|
121
|
-
2. Performance optimizations
|
|
122
|
-
3. Code maintainability
|
|
123
|
-
4. Best practices
|
|
124
|
-
|
|
125
|
-
For each issue found, provide:
|
|
126
|
-
- Severity level (Critical/High/Medium/Low)
|
|
127
|
-
- Specific line numbers
|
|
128
|
-
- Explanation of the issue
|
|
129
|
-
- Suggested fix with code example
|
|
130
|
-
|
|
131
|
-
Format your response as a structured report with clear sections.
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
### Notas de Implementação
|
|
135
|
-
- Usa role-playing para estabelecer expertise
|
|
136
|
-
- Fornece critérios de avaliação claros
|
|
137
|
-
- Especifica formato de output para consistência
|
|
138
|
-
- Inclui requisitos de feedback acionável
|
|
139
|
-
|
|
140
|
-
## Técnicas Avançadas
|
|
141
|
-
|
|
142
|
-
### Few-Shot Prompting
|
|
143
|
-
```
|
|
144
|
-
Here are examples of good responses:
|
|
145
|
-
|
|
146
|
-
Example 1:
|
|
147
|
-
Input: [example input]
|
|
148
|
-
Output: [example output]
|
|
149
|
-
|
|
150
|
-
Example 2:
|
|
151
|
-
Input: [example input]
|
|
152
|
-
Output: [example output]
|
|
153
|
-
|
|
154
|
-
Now process this:
|
|
155
|
-
Input: [actual input]
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### Chain-of-Thought
|
|
159
|
-
```
|
|
160
|
-
Think through this step by step:
|
|
161
|
-
1. First, identify...
|
|
162
|
-
2. Then, analyze...
|
|
163
|
-
3. Finally, conclude...
|
|
164
|
-
|
|
165
|
-
Show your reasoning before giving the final answer.
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### Self-Consistency
|
|
169
|
-
```
|
|
170
|
-
Generate 3 different approaches to solve this problem.
|
|
171
|
-
Compare the approaches and select the most robust one.
|
|
172
|
-
Explain why this approach is best.
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## Checklist Antes de Completar
|
|
176
|
-
|
|
177
|
-
- [ ] Exibiu texto completo do prompt (não apenas descreveu)
|
|
178
|
-
- [ ] Marcou claramente com headers ou code blocks
|
|
179
|
-
- [ ] Forneceu instruções de uso
|
|
180
|
-
- [ ] Explicou escolhas de design
|
|
181
|
-
- [ ] Incluiu exemplos de outputs esperados
|
|
182
|
-
|
|
183
|
-
## Documentação de Referência
|
|
184
|
-
|
|
185
|
-
- [Anthropic Prompt Engineering Guide](https://docs.anthropic.com/claude/docs/prompt-engineering)
|
|
186
|
-
- [OpenAI Prompt Engineering](https://platform.openai.com/docs/guides/prompt-engineering)
|
|
187
|
-
- [Prompt Engineering Patterns](https://www.promptingguide.ai/)
|
|
188
|
-
|
|
189
|
-
## Anti-Patterns a Evitar
|
|
190
|
-
|
|
191
|
-
1. **Prompts vagos**: "Faça algo bom" → Especifique critérios claros
|
|
192
|
-
2. **Sem formato de output**: Sempre definir estrutura esperada
|
|
193
|
-
3. **Instruções contraditórias**: Revisar consistência antes de usar
|
|
194
|
-
4. **Overloading**: Muitas instruções = confusão. Priorize as essenciais
|
|
195
|
-
5. **Falta de exemplos**: Few-shot geralmente supera zero-shot
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: api-designer
|
|
3
|
-
description: API Designer specialist for REST API design, OpenAPI/Swagger specs, endpoint architecture, and HTTP contract definitions. Use when designing API endpoints, creating OpenAPI specs, defining REST contracts, or implementing Minimal API controllers in .NET.
|
|
4
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
-
stacks:
|
|
6
|
-
- dotnet
|
|
7
|
-
- nextjs
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# API Designer
|
|
11
|
-
|
|
12
|
-
REST API design specialist for .NET Minimal API. Focuses on clean endpoint design, DTO contracts, and HTTP semantics.
|
|
13
|
-
|
|
14
|
-
## Standards
|
|
15
|
-
|
|
16
|
-
- `framework/standards/backend/api/rest.md`
|
|
17
|
-
- `framework/standards/backend/api/validation.md`
|
|
18
|
-
- `framework/standards/backend/dotnet/async.md`
|
|
19
|
-
- `framework/standards/core/coding.md`
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## Minimal API Pattern
|
|
24
|
-
|
|
25
|
-
```csharp
|
|
26
|
-
// Endpoint group — one file per feature
|
|
27
|
-
public static class PhotoProcessingEndpoints
|
|
28
|
-
{
|
|
29
|
-
public static IEndpointRouteBuilder MapPhotoProcessing(this IEndpointRouteBuilder app)
|
|
30
|
-
{
|
|
31
|
-
var group = app.MapGroup("/api/photos").RequireAuthorization();
|
|
32
|
-
|
|
33
|
-
group.MapPost("/upload", UploadAsync)
|
|
34
|
-
.DisableAntiforgery();
|
|
35
|
-
|
|
36
|
-
group.MapGet("/status/{jobId:guid}", GetStatusAsync);
|
|
37
|
-
group.MapGet("/download/{jobId:guid}", DownloadAsync);
|
|
38
|
-
|
|
39
|
-
return app;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
private static async Task<IResult> UploadAsync(
|
|
43
|
-
IFormFile file,
|
|
44
|
-
IPhotoProcessingService service,
|
|
45
|
-
ClaimsPrincipal user,
|
|
46
|
-
CancellationToken ct)
|
|
47
|
-
{
|
|
48
|
-
var result = await service.UploadAsync(new(file, user.GetUserId()), ct);
|
|
49
|
-
return result.IsSuccess
|
|
50
|
-
? TypedResults.Ok(new { result.Value.JobId })
|
|
51
|
-
: TypedResults.ValidationProblem(result.Errors);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## HTTP Status Codes
|
|
57
|
-
|
|
58
|
-
| Scenario | Code | Method |
|
|
59
|
-
|----------|------|--------|
|
|
60
|
-
| Created resource | 201 | `TypedResults.Created(location, dto)` |
|
|
61
|
-
| Success, no body | 204 | `TypedResults.NoContent()` |
|
|
62
|
-
| Validation error | 400 | `TypedResults.ValidationProblem(errors)` |
|
|
63
|
-
| Unauthorized | 401 | `TypedResults.Unauthorized()` |
|
|
64
|
-
| Forbidden | 403 | `TypedResults.Forbid()` |
|
|
65
|
-
| Not found | 404 | `TypedResults.NotFound()` |
|
|
66
|
-
| Server error | 500 | let exception middleware handle |
|
|
67
|
-
|
|
68
|
-
## DTO Rules
|
|
69
|
-
|
|
70
|
-
```csharp
|
|
71
|
-
// Request DTOs: record + required init
|
|
72
|
-
public record UploadPhotoCommand(IFormFile Photo, Guid UserId);
|
|
73
|
-
|
|
74
|
-
// Response DTOs: include only what UI needs
|
|
75
|
-
public record JobStatusDto(Guid JobId, ProcessingStatus Status, string? DownloadUrl, DateTime CreatedAt);
|
|
76
|
-
|
|
77
|
-
// Never expose domain entities directly — always map to DTO
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Validation (FluentValidation)
|
|
81
|
-
|
|
82
|
-
```csharp
|
|
83
|
-
public class UploadPhotoCommandValidator : AbstractValidator<UploadPhotoCommand>
|
|
84
|
-
{
|
|
85
|
-
public UploadPhotoCommandValidator()
|
|
86
|
-
{
|
|
87
|
-
RuleFor(x => x.Photo).NotNull();
|
|
88
|
-
RuleFor(x => x.Photo.Length).LessThanOrEqualTo(10 * 1024 * 1024)
|
|
89
|
-
.WithMessage("File must be under 10MB");
|
|
90
|
-
RuleFor(x => x.Photo.ContentType)
|
|
91
|
-
.Must(t => t is "image/jpeg" or "image/png")
|
|
92
|
-
.WithMessage("Only JPG and PNG are allowed");
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
## Collaborates With
|
|
98
|
-
|
|
99
|
-
- **dotnet-senior** — service layer consumed by endpoints
|
|
100
|
-
- **ef-modeler** — entity → DTO mapping
|
|
101
|
-
- **blazor-builder** — frontend consuming API
|
|
102
|
-
- **testing-specialist** — integration tests
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
*MORPH-SPEC by Polymorphism Tech*
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: blazor-builder
|
|
3
|
-
description: Blazor Builder specialist for .NET + Blazor Server stack, Razor components, Fluent UI Blazor, MudBlazor, and .NET 10 patterns. Use when implementing Blazor components and pages, configuring Program.cs, handling Blazor lifecycle patterns, or choosing between Fluent UI and MudBlazor libraries.
|
|
4
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
-
stacks:
|
|
6
|
-
- blazor
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# .NET + Blazor Stack
|
|
10
|
-
|
|
11
|
-
Stack principal para aplicações web com .NET e Blazor Server.
|
|
12
|
-
|
|
13
|
-
| Aspecto | Tecnologia |
|
|
14
|
-
|---------|------------|
|
|
15
|
-
| **Backend** | .NET 10 / C# 14 |
|
|
16
|
-
| **Frontend** | Blazor Server |
|
|
17
|
-
| **Database** | EF Core 10 + Azure SQL |
|
|
18
|
-
| **Hosting** | Azure Container Apps |
|
|
19
|
-
| **Background** | Hangfire |
|
|
20
|
-
| **AI** | Microsoft Agent Framework |
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Critical Standards (Read FIRST)
|
|
25
|
-
|
|
26
|
-
| Standard | What |
|
|
27
|
-
|----------|------|
|
|
28
|
-
| `framework/standards/coding.md` | **C# naming conventions, code style, .editorconfig template** |
|
|
29
|
-
| `framework/standards/architecture.md` | **Clean Architecture layers, SOLID, service patterns** |
|
|
30
|
-
| `framework/standards/blazor-efcore.md` | DbContext concurrency, Repository Factory, background ops, migrations |
|
|
31
|
-
| `framework/standards/blazor-pitfalls.md` | Common Blazor issues & solutions |
|
|
32
|
-
| `framework/standards/fluent-ui-blazor.md` | Fluent UI APIs, icon sizes, dialog patterns |
|
|
33
|
-
| `framework/standards/blazor-lifecycle.md` | Component lifecycle patterns |
|
|
34
|
-
| `framework/standards/program-cs-checklist.md` | Required Program.cs setup |
|
|
35
|
-
|
|
36
|
-
## Mandatory Design System Protocol
|
|
37
|
-
|
|
38
|
-
**Before any UI implementation:**
|
|
39
|
-
|
|
40
|
-
1. **READ** `.morph/context/design-system.md`
|
|
41
|
-
2. **Use EXCLUSIVELY** the tokens defined there — never hardcode hex values, pixel values, or durations
|
|
42
|
-
3. **If a token is missing:** add it to `design-system.md` in the correct section before using it
|
|
43
|
-
4. **Register in Changelog:** add `- YYYY-MM-DD [blazor-builder] Description of addition`
|
|
44
|
-
|
|
45
|
-
> Tokens map to CSS custom properties in `wwwroot/css/app.css`. Use `var(--token-name)` in Blazor component styles.
|
|
46
|
-
|
|
47
|
-
### Quick Checklist
|
|
48
|
-
- [ ] Read `.morph/context/design-system.md` before any UI work
|
|
49
|
-
- [ ] No hardcoded colors in .razor files — use CSS token variables
|
|
50
|
-
- [ ] Background ops: Use `IDbContextFactory` / Repository Factory (ref: blazor-efcore.md)
|
|
51
|
-
- [ ] JSRuntime: ONLY in `OnAfterRenderAsync(firstRender)`
|
|
52
|
-
- [ ] Program.cs: `UseStaticFiles()` BEFORE `UseAntiforgery()`
|
|
53
|
-
- [ ] File Upload: Specify `maxAllowedSize` in `OpenReadStream()`
|
|
54
|
-
- [ ] RenderMode: NO `@rendermode` on MainLayout
|
|
55
|
-
- [ ] Package Versions: MudBlazor >= 8.15.0 for .NET 10
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Mandatory Code Patterns
|
|
60
|
-
|
|
61
|
-
### Status Validation
|
|
62
|
-
|
|
63
|
-
```csharp
|
|
64
|
-
// ✅ Validate INVALID states (allows future extensions)
|
|
65
|
-
if (order.Status >= OrderStatus.Completed || order.Status == OrderStatus.Failed)
|
|
66
|
-
throw new InvalidOperationException("Cannot process completed or failed order");
|
|
67
|
-
|
|
68
|
-
// ❌ Never assume single valid flow
|
|
69
|
-
if (order.Status != OrderStatus.PendingPayment)
|
|
70
|
-
throw new InvalidOperationException("Invalid status");
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Enums with Logical Order
|
|
74
|
-
|
|
75
|
-
```csharp
|
|
76
|
-
public enum OrderStatus
|
|
77
|
-
{
|
|
78
|
-
Created = 0, PendingPayment = 1, Processing = 2, Completed = 3, // Normal flow
|
|
79
|
-
Failed = 100, Cancelled = 101, Refunded = 102 // Error states (high values)
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### Service Pattern
|
|
84
|
-
|
|
85
|
-
```csharp
|
|
86
|
-
public async Task<Result<Order>> ProcessAsync(Guid orderId, CancellationToken ct)
|
|
87
|
-
{
|
|
88
|
-
_logger.LogInformation("Processing order {OrderId}", orderId);
|
|
89
|
-
var order = await _repository.GetByIdAsync(orderId, ct);
|
|
90
|
-
if (order == null) return Result.Failure<Order>("Order not found");
|
|
91
|
-
if (order.Status >= OrderStatus.Completed)
|
|
92
|
-
return Result.Failure<Order>("Order already completed");
|
|
93
|
-
// ... process ...
|
|
94
|
-
return Result.Success(order);
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
**Rules:** Logging at critical points, CancellationToken propagated, Result pattern for business errors, exceptions for infrastructure.
|
|
99
|
-
|
|
100
|
-
**More patterns:** See `code-review.md` for DTOs/contracts naming and service checklists.
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Project Structure
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
src/
|
|
108
|
-
├── {App}.Domain/ # Entities, Value Objects, Enums, Exceptions
|
|
109
|
-
├── {App}.Application/ # Services, DTOs, Interfaces, Validators
|
|
110
|
-
├── {App}.Infrastructure/ # EF Core (DbContext, Configs, Migrations), External Services
|
|
111
|
-
├── {App}.Web/ # Blazor Server (Program.cs, Components, Pages, wwwroot)
|
|
112
|
-
└── tests/ # UnitTests, IntegrationTests
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Program.cs Essentials
|
|
116
|
-
|
|
117
|
-
```csharp
|
|
118
|
-
var builder = WebApplication.CreateBuilder(args);
|
|
119
|
-
builder.Services.AddRazorComponents().AddInteractiveServerComponents();
|
|
120
|
-
builder.Services.AddDbContext<AppDbContext>(o => o.UseSqlServer(connString));
|
|
121
|
-
builder.Services.AddDbContextFactory<AppDbContext>(o => o.UseSqlServer(connString));
|
|
122
|
-
// Register services, factories, Hangfire...
|
|
123
|
-
|
|
124
|
-
var app = builder.Build();
|
|
125
|
-
app.UseHttpsRedirection();
|
|
126
|
-
app.UseStaticFiles(); // BEFORE UseAntiforgery!
|
|
127
|
-
app.UseAntiforgery();
|
|
128
|
-
app.MapRazorComponents<App>().AddInteractiveServerRenderMode();
|
|
129
|
-
app.Run();
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## Blazor Component Patterns
|
|
135
|
-
|
|
136
|
-
### Page with List
|
|
137
|
-
|
|
138
|
-
```razor
|
|
139
|
-
@page "/orders"
|
|
140
|
-
@inject IOrderService OrderService
|
|
141
|
-
|
|
142
|
-
@if (_orders is null) { <Loading /> }
|
|
143
|
-
else if (!_orders.Any()) { <EmptyState Message="No orders found" /> }
|
|
144
|
-
else
|
|
145
|
-
{
|
|
146
|
-
@foreach (var order in _orders)
|
|
147
|
-
{
|
|
148
|
-
<FluentCard>@order.OrderNumber - @order.Total.ToString("C")</FluentCard>
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
@code {
|
|
153
|
-
private List<OrderDto>? _orders;
|
|
154
|
-
protected override async Task OnInitializedAsync()
|
|
155
|
-
=> _orders = await OrderService.GetAllAsync();
|
|
156
|
-
}
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### Form with Validation
|
|
160
|
-
|
|
161
|
-
```razor
|
|
162
|
-
@page "/orders/new"
|
|
163
|
-
<EditForm Model="_model" OnValidSubmit="HandleSubmit">
|
|
164
|
-
<DataAnnotationsValidator />
|
|
165
|
-
<InputSelect @bind-Value="_model.CustomerId">...</InputSelect>
|
|
166
|
-
<ValidationMessage For="() => _model.CustomerId" />
|
|
167
|
-
<button type="submit" disabled="@_isSubmitting">Save</button>
|
|
168
|
-
</EditForm>
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## UI Libraries
|
|
174
|
-
|
|
175
|
-
> **Decision matrix:** See `ui-ux-designer.md` skill for full comparison.
|
|
176
|
-
|
|
177
|
-
| Library | When | Key Advantage |
|
|
178
|
-
|---------|------|---------------|
|
|
179
|
-
| **Fluent UI** | AI-first, Microsoft stack | Performance (~200KB), AI components |
|
|
180
|
-
| **MudBlazor** | Complex dashboards | 140+ components, charts |
|
|
181
|
-
| **Hybrid** | SaaS with AI + analytics | Best of both |
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## .NET 10 Features
|
|
186
|
-
|
|
187
|
-
### PersistentState (new)
|
|
188
|
-
```razor
|
|
189
|
-
@code {
|
|
190
|
-
[PersistentState]
|
|
191
|
-
private int Count { get; set; } = 0; // Survives pre-rendering & circuit disconnections
|
|
192
|
-
}
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
### Circuit Pause/Resume (new)
|
|
196
|
-
```javascript
|
|
197
|
-
document.addEventListener('visibilitychange', () => {
|
|
198
|
-
document.hidden ? Blazor.pauseCircuit() : Blazor.resumeCircuit();
|
|
199
|
-
});
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### Nested Model Validation (new)
|
|
203
|
-
```csharp
|
|
204
|
-
builder.Services.AddValidation(); // Enables automatic nested model validation
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
### Blazor Metrics
|
|
208
|
-
```csharp
|
|
209
|
-
builder.Services.AddOpenTelemetry()
|
|
210
|
-
.WithTracing(t => t.AddSource("Microsoft.AspNetCore.Components.Server"))
|
|
211
|
-
.WithMetrics(m => m.AddMeter("Microsoft.AspNetCore.Components.Server"));
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
---
|
|
215
|
-
|
|
216
|
-
## Project Checklist
|
|
217
|
-
|
|
218
|
-
- [ ] Clean Architecture layers (Domain, Application, Infrastructure, Web)
|
|
219
|
-
- [ ] EF Core with migrations + IDbContextFactory
|
|
220
|
-
- [ ] Repository Factory for background ops (ref: blazor-efcore.md)
|
|
221
|
-
- [ ] Blazor Server with reusable components
|
|
222
|
-
- [ ] Services with DI + structured logging
|
|
223
|
-
- [ ] Validation (FluentValidation or DataAnnotations)
|
|
224
|
-
- [ ] Hangfire for background jobs
|
|
225
|
-
- [ ] Dockerfile for containerization
|
|
226
|
-
|
|
227
|
-
---
|
|
228
|
-
|
|
229
|
-
*MORPH-SPEC by Polymorphism Tech*
|