@polymorphism-tech/morph-spec 4.5.0 → 4.7.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/CLAUDE.md +77 -56
- package/README.md +394 -700
- package/docs/ARCHITECTURE.md +331 -0
- package/docs/CHEATSHEET.md +221 -0
- package/docs/COMMAND-FLOWS.md +368 -0
- package/docs/QUICKSTART.md +212 -0
- package/docs/examples/order-management/contracts.cs +84 -0
- package/docs/examples/order-management/proposal.md +24 -0
- package/docs/examples/order-management/spec.md +162 -0
- package/docs/plans/2026-02-23-ddd-architecture-refactor.md +1153 -0
- package/docs/plans/2026-02-23-ddd-nextsteps.md +682 -0
- package/docs/plans/2026-02-23-infra-architect-refactor.md +437 -0
- package/docs/plans/2026-02-23-nextjs-code-review-design.md +156 -0
- package/docs/plans/2026-02-23-nextjs-code-review-impl.md +1254 -0
- package/docs/plans/2026-02-23-nextjs-standards-design.md +149 -0
- package/docs/plans/2026-02-23-nextjs-standards-impl.md +1846 -0
- package/framework/{skills/level-2-domains → agents}/README.md +14 -14
- package/framework/{skills/level-2-domains → agents}/ai-agents/ai-system-architect.md +1 -4
- package/framework/{skills/level-2-domains → agents}/architecture/po-pm-advisor.md +1 -2
- package/framework/{skills/level-2-domains → agents}/architecture/prompt-engineer.md +1 -2
- package/framework/{skills/level-2-domains → agents}/architecture/seo-growth-hacker.md +1 -2
- package/framework/{skills/level-2-domains → agents}/architecture/standards-architect.md +159 -162
- package/framework/agents/backend/api-designer.md +103 -0
- package/framework/{skills/level-2-domains → agents}/backend/dotnet-senior.md +1 -2
- package/framework/agents/backend/ef-modeler.md +119 -0
- package/framework/{skills/level-2-domains → agents}/backend/hangfire-orchestrator.md +1 -4
- package/framework/{skills/level-2-domains → agents}/backend/ms-agent-expert.md +1 -4
- package/framework/{skills/level-2-domains → agents}/frontend/blazor-builder.md +1 -4
- package/framework/agents/frontend/nextjs-expert.md +118 -0
- package/framework/{skills/level-2-domains → agents}/frontend/ui-ux-designer.md +1 -2
- package/framework/{skills/level-2-domains → agents}/infrastructure/azure-architect.md +147 -148
- package/framework/{skills/level-2-domains → agents}/infrastructure/azure-deploy-specialist.md +1 -2
- package/framework/{skills/level-2-domains → agents}/infrastructure/bicep-architect.md +1 -4
- package/framework/{skills/level-2-domains → agents}/infrastructure/container-specialist.md +1 -4
- package/framework/{skills/level-2-domains → agents}/infrastructure/devops-engineer.md +1 -4
- package/framework/agents/infrastructure/infra-architect.md +45 -0
- package/framework/{skills/level-2-domains → agents}/integrations/asaas-financial.md +1 -4
- package/framework/{skills/level-2-domains → agents}/integrations/azure-identity.md +1 -4
- package/framework/{skills/level-2-domains → agents}/integrations/clerk-auth.md +1 -4
- package/framework/{skills/level-2-domains → agents}/integrations/hangfire-integration.md +1 -2
- package/framework/{skills/level-2-domains → agents}/integrations/resend-email.md +1 -4
- package/framework/{skills/level-2-domains → agents}/quality/code-analyzer.md +1 -4
- package/framework/{skills/level-2-domains → agents}/quality/testing-specialist.md +1 -4
- package/framework/agents.json +1145 -278
- package/framework/hooks/claude-code/statusline.py +384 -85
- package/framework/hooks/shared/phase-utils.js +129 -129
- package/framework/rules/frontend-standards.md +0 -3
- package/framework/rules/nextjs-standards.md +17 -0
- package/framework/skills/README.md +66 -0
- package/framework/skills/level-0-meta/{brainstorming.md → brainstorming/SKILL.md} +3 -1
- package/framework/skills/level-0-meta/brainstorming/references/proposal-example.md +138 -0
- package/framework/skills/level-0-meta/{code-review.md → code-review/SKILL.md} +3 -2
- package/framework/skills/level-0-meta/code-review/references/review-example.md +164 -0
- package/framework/skills/level-0-meta/code-review/scripts/scan-csharp.mjs +121 -0
- package/framework/skills/level-0-meta/code-review-nextjs/SKILL.md +147 -0
- package/framework/skills/level-0-meta/code-review-nextjs/references/review-example-nextjs.md +254 -0
- package/framework/skills/level-0-meta/{morph-checklist.md → morph-checklist/SKILL.md} +2 -5
- package/framework/skills/{level-1-workflows/morph-replicate.md → level-0-meta/morph-replicate/SKILL.md} +6 -7
- package/framework/skills/level-0-meta/{simulation-checklist.md → simulation-checklist/SKILL.md} +3 -6
- package/framework/skills/level-0-meta/{tool-usage-guide.md → tool-usage-guide/SKILL.md} +4 -5
- package/framework/skills/level-0-meta/{verification-before-completion.md → verification-before-completion/SKILL.md} +3 -1
- package/framework/skills/level-0-meta/verification-before-completion/scripts/check-phase-outputs.mjs +110 -0
- package/framework/skills/level-1-workflows/{phase-clarify.md → phase-clarify/SKILL.md} +3 -3
- package/framework/skills/level-1-workflows/phase-clarify/references/clarifications-example.md +117 -0
- package/framework/skills/level-1-workflows/{phase-codebase-analysis.md → phase-codebase-analysis/SKILL.md} +2 -3
- package/framework/skills/level-1-workflows/{phase-design.md → phase-design/SKILL.md} +46 -182
- package/framework/skills/level-1-workflows/phase-design/references/spec-example.md +253 -0
- package/framework/skills/level-1-workflows/{phase-implement.md → phase-implement/SKILL.md} +3 -3
- package/framework/skills/level-1-workflows/phase-implement/references/recap-example.md +132 -0
- package/framework/skills/level-1-workflows/{phase-setup.md → phase-setup/SKILL.md} +2 -3
- package/framework/skills/level-1-workflows/{phase-tasks.md → phase-tasks/SKILL.md} +42 -3
- package/framework/skills/level-1-workflows/phase-tasks/references/tasks-example.md +231 -0
- package/framework/skills/level-1-workflows/phase-tasks/scripts/validate-tasks.mjs +112 -0
- package/framework/skills/level-1-workflows/{phase-uiux.md → phase-uiux/SKILL.md} +2 -3
- package/framework/standards/STANDARDS.json +121 -0
- package/framework/standards/architecture/ddd/bounded-contexts.md +105 -0
- package/framework/standards/architecture/ddd/complexity-levels.md +108 -0
- package/framework/standards/architecture/ddd/ubiquitous-language.md +58 -0
- package/framework/standards/frontend/nextjs/app-router.md +123 -0
- package/framework/standards/frontend/nextjs/components.md +132 -0
- package/framework/standards/frontend/nextjs/data-fetching.md +126 -0
- package/framework/standards/frontend/nextjs/forms.md +128 -0
- package/framework/standards/frontend/nextjs/naming-conventions.md +67 -0
- package/framework/standards/frontend/nextjs/project-structure.md +102 -0
- package/framework/standards/frontend/nextjs/state-management.md +72 -0
- package/framework/standards/frontend/nextjs/testing.md +111 -0
- package/framework/templates/REGISTRY.json +538 -142
- package/framework/templates/code/dotnet/contracts/contracts-level1.cs +69 -0
- package/framework/templates/code/dotnet/contracts/contracts-level2.cs +86 -0
- package/framework/templates/code/dotnet/contracts/contracts-level3.cs +41 -0
- package/framework/templates/docs/spec.md +49 -0
- package/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs +43 -0
- package/framework/templates/frontend/nextjs/client-component.tsx.hbs +26 -0
- package/framework/templates/frontend/nextjs/env.mjs.hbs +32 -0
- package/framework/templates/frontend/nextjs/feature-form.tsx.hbs +56 -0
- package/framework/templates/frontend/nextjs/page.tsx.hbs +22 -0
- package/framework/templates/frontend/nextjs/tsconfig.json.hbs +26 -0
- package/framework/templates/frontend/nextjs/use-feature.ts.hbs +54 -0
- package/framework/templates/project-structure/dotnet-ddd.md +70 -0
- package/framework/workflows/docs/enforcement-pipeline.md +2 -1
- package/package.json +1 -1
- package/scripts/scan-nextjs.mjs +169 -0
- package/src/commands/project/doctor.js +52 -1
- package/src/commands/project/init.js +19 -65
- package/src/commands/project/update.js +7 -63
- package/src/lib/detectors/claude-config-detector.js +1 -3
- package/src/lib/standards/standards-context-injector.js +5 -0
- package/src/lib/validators/nextjs/index.js +6 -0
- package/src/lib/validators/nextjs/next-component-validator.js +181 -0
- package/src/lib/validators/validation-runner.js +5 -0
- package/src/utils/agents-installer.js +16 -4
- package/src/utils/skills-installer.js +59 -15
- package/.morph/.morphversion +0 -5
- package/.morph/analytics/threads-log.jsonl +0 -44
- package/.morph/config/config.json +0 -8
- package/.morph/context/README.md +0 -17
- package/.morph/framework/agents.json +0 -948
- package/.morph/framework/standards/STANDARDS.json +0 -812
- package/.morph/framework/standards/ai-agents/blazor-ui.md +0 -364
- package/.morph/framework/standards/ai-agents/production.md +0 -415
- package/.morph/framework/standards/ai-agents/setup.md +0 -418
- package/.morph/framework/standards/ai-agents/team-orchestration.md +0 -479
- package/.morph/framework/standards/ai-agents/workflows.md +0 -354
- package/.morph/framework/standards/architecture/ddd/aggregates.md +0 -120
- package/.morph/framework/standards/architecture/ddd/entities.md +0 -99
- package/.morph/framework/standards/architecture/ddd/value-objects.md +0 -124
- package/.morph/framework/standards/backend/api/minimal-api.md +0 -494
- package/.morph/framework/standards/backend/api/rest.md +0 -492
- package/.morph/framework/standards/backend/api/validation.md +0 -88
- package/.morph/framework/standards/backend/authentication/passkeys.md +0 -428
- package/.morph/framework/standards/backend/database/ef-core.md +0 -199
- package/.morph/framework/standards/backend/database/migrations.md +0 -393
- package/.morph/framework/standards/backend/database/postgresql/database.md +0 -352
- package/.morph/framework/standards/backend/database/repository-patterns.md +0 -528
- package/.morph/framework/standards/backend/database/vector-search-rag.md +0 -541
- package/.morph/framework/standards/backend/dotnet/async.md +0 -366
- package/.morph/framework/standards/backend/dotnet/core.md +0 -117
- package/.morph/framework/standards/backend/dotnet/di.md +0 -439
- package/.morph/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
- package/.morph/framework/standards/backend/integrations/asaas/asaas-api.md +0 -216
- package/.morph/framework/standards/backend/integrations/clerk/clerk-auth.md +0 -290
- package/.morph/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +0 -350
- package/.morph/framework/standards/backend/integrations/resend/resend-email.md +0 -385
- package/.morph/framework/standards/context/analytics.md +0 -96
- package/.morph/framework/standards/context/bundles.md +0 -110
- package/.morph/framework/standards/context/priming.md +0 -78
- package/.morph/framework/standards/core/architecture.md +0 -185
- package/.morph/framework/standards/core/coding.md +0 -214
- package/.morph/framework/standards/core/git-branching-strategy.md +0 -403
- package/.morph/framework/standards/core/git.md +0 -185
- package/.morph/framework/standards/core/testing.md +0 -295
- package/.morph/framework/standards/data/nosql/blob-storage.md +0 -102
- package/.morph/framework/standards/data/nosql/cache/redis.md +0 -97
- package/.morph/framework/standards/data/nosql/cosmos-db.md +0 -118
- package/.morph/framework/standards/data/vector-search/azure-ai-search.md +0 -121
- package/.morph/framework/standards/data/vector-search/rag-chunking.md +0 -104
- package/.morph/framework/standards/frontend/blazor/design-checklist.md +0 -222
- package/.morph/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
- package/.morph/framework/standards/frontend/blazor/fluent-ui.md +0 -137
- package/.morph/framework/standards/frontend/blazor/html-conversion.md +0 -184
- package/.morph/framework/standards/frontend/blazor/lifecycle.md +0 -195
- package/.morph/framework/standards/frontend/blazor/pitfalls.md +0 -198
- package/.morph/framework/standards/frontend/blazor/state.md +0 -191
- package/.morph/framework/standards/frontend/design-system/animations.md +0 -151
- package/.morph/framework/standards/frontend/design-system/naming.md +0 -64
- package/.morph/framework/standards/frontend/nextjs/nextjs-patterns.md +0 -198
- package/.morph/framework/standards/infrastructure/azure/azure.md +0 -624
- package/.morph/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
- package/.morph/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
- package/.morph/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
- package/.morph/framework/standards/infrastructure/azure/services/functions.md +0 -486
- package/.morph/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
- package/.morph/framework/standards/infrastructure/azure/services/storage.md +0 -407
- package/.morph/framework/standards/infrastructure/docker/easypanel-deploy.md +0 -196
- package/.morph/framework/standards/infrastructure/supabase/mcp-setup.md +0 -252
- package/.morph/framework/standards/infrastructure/supabase/supabase-auth.md +0 -176
- package/.morph/framework/standards/infrastructure/supabase/supabase-pgvector.md +0 -169
- package/.morph/framework/standards/infrastructure/supabase/supabase-rls.md +0 -184
- package/.morph/framework/standards/infrastructure/supabase/supabase-storage.md +0 -153
- package/.morph/framework/standards/integration/api/graphql.md +0 -91
- package/.morph/framework/standards/integration/api/grpc.md +0 -114
- package/.morph/framework/standards/integration/api/rest-design.md +0 -95
- package/.morph/framework/standards/integration/event-driven/cqrs.md +0 -101
- package/.morph/framework/standards/integration/event-driven/event-sourcing.md +0 -124
- package/.morph/framework/standards/integration/event-driven/service-bus.md +0 -95
- package/.morph/framework/standards/integration/mcp/mcp-tools.md +0 -384
- package/.morph/framework/standards/observability/logging.md +0 -131
- package/.morph/framework/standards/observability/metrics.md +0 -121
- package/.morph/framework/standards/observability/monitoring.md +0 -114
- package/.morph/framework/standards/observability/tracing.md +0 -132
- package/.morph/framework/standards/workflows/parallel-execution.md +0 -112
- package/.morph/framework/standards/workflows/thread-management.md +0 -113
- package/.morph/framework/templates/.idea/morph-templates.xml +0 -92
- package/.morph/framework/templates/.vscode/morph-templates.code-snippets +0 -186
- package/.morph/framework/templates/IDE-SNIPPETS.md +0 -266
- package/.morph/framework/templates/README.md +0 -814
- package/.morph/framework/templates/REGISTRY.json +0 -1492
- package/.morph/framework/templates/code/dotnet/backend/repository.cs +0 -141
- package/.morph/framework/templates/code/dotnet/backend/service.cs +0 -139
- package/.morph/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
- package/.morph/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
- package/.morph/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
- package/.morph/framework/templates/code/dotnet/contracts/README.md +0 -74
- package/.morph/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
- package/.morph/framework/templates/code/dotnet/contracts/contracts.cs +0 -217
- package/.morph/framework/templates/code/dotnet/contracts/contracts.cs.hbs +0 -172
- package/.morph/framework/templates/code/dotnet/database/migration.cs +0 -83
- package/.morph/framework/templates/code/dotnet/frontend/component.razor +0 -239
- package/.morph/framework/templates/code/dotnet/jobs/agent.cs +0 -163
- package/.morph/framework/templates/code/dotnet/jobs/job.cs +0 -171
- package/.morph/framework/templates/code/dotnet/test.cs +0 -239
- package/.morph/framework/templates/code/sql/rls-policy.sql +0 -57
- package/.morph/framework/templates/code/sql/supabase-migration.sql +0 -100
- package/.morph/framework/templates/code/sql/supabase-migration.template.sql +0 -113
- package/.morph/framework/templates/code/typescript/contracts.ts +0 -168
- package/.morph/framework/templates/context/CONTEXT-FEATURE.md +0 -276
- package/.morph/framework/templates/context/CONTEXT.md +0 -181
- package/.morph/framework/templates/docs/clarifications.md +0 -253
- package/.morph/framework/templates/docs/onboarding.md +0 -123
- package/.morph/framework/templates/docs/proposal.md +0 -182
- package/.morph/framework/templates/docs/schema-analysis.md +0 -119
- package/.morph/framework/templates/docs/spec.md +0 -149
- package/.morph/framework/templates/docs/ui-components.md +0 -124
- package/.morph/framework/templates/docs/ui-design-system.md +0 -76
- package/.morph/framework/templates/docs/ui-flows.md +0 -167
- package/.morph/framework/templates/docs/ui-mockups.md +0 -98
- package/.morph/framework/templates/examples/design-system-examples.md +0 -357
- package/.morph/framework/templates/examples/spec-examples.md +0 -90
- package/.morph/framework/templates/feature/decisions.md +0 -187
- package/.morph/framework/templates/feature/recap.md +0 -146
- package/.morph/framework/templates/feature/tasks.md +0 -199
- package/.morph/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
- package/.morph/framework/templates/infrastructure/azure/README.md +0 -286
- package/.morph/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
- package/.morph/framework/templates/infrastructure/azure/app-service.bicep +0 -164
- package/.morph/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
- package/.morph/framework/templates/infrastructure/azure/container-app.bicep +0 -156
- package/.morph/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
- package/.morph/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
- package/.morph/framework/templates/infrastructure/azure/deploy.sh +0 -208
- package/.morph/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
- package/.morph/framework/templates/infrastructure/azure/main.bicep +0 -189
- package/.morph/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
- package/.morph/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
- package/.morph/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
- package/.morph/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
- package/.morph/framework/templates/infrastructure/azure/storage.bicep +0 -106
- package/.morph/framework/templates/infrastructure/docker/Dockerfile.template +0 -58
- package/.morph/framework/templates/infrastructure/docker/docker-compose.template.yml +0 -67
- package/.morph/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +0 -38
- package/.morph/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +0 -48
- package/.morph/framework/templates/infrastructure/docker/easypanel.template.json +0 -54
- package/.morph/framework/templates/infrastructure/github/README.md +0 -593
- package/.morph/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
- package/.morph/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +0 -45
- package/.morph/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +0 -27
- package/.morph/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
- package/.morph/framework/templates/infrastructure/github/workflows/deploy-easypanel.yml.hbs +0 -31
- package/.morph/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +0 -59
- package/.morph/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +0 -39
- package/.morph/framework/templates/integrations/asaas-client.cs +0 -387
- package/.morph/framework/templates/integrations/asaas-webhook.cs +0 -351
- package/.morph/framework/templates/integrations/azure-identity-config.cs +0 -288
- package/.morph/framework/templates/integrations/clerk-config.cs +0 -258
- package/.morph/framework/templates/meta-prompts/fusion/fusion-agent.md +0 -76
- package/.morph/framework/templates/meta-prompts/fusion/fusion-aggregator.md +0 -100
- package/.morph/framework/templates/meta-prompts/hops/hop-retry.md +0 -78
- package/.morph/framework/templates/meta-prompts/hops/hop-validation.md +0 -97
- package/.morph/framework/templates/meta-prompts/hops/hop-wrapper.md +0 -36
- package/.morph/framework/templates/meta-prompts/parallel-workers/parallel-coordinator.md +0 -113
- package/.morph/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +0 -80
- package/.morph/framework/templates/meta-prompts/squad-leaders/backend-squad.md +0 -90
- package/.morph/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +0 -126
- package/.morph/framework/templates/meta-prompts/squad-leaders/squad-leader.md +0 -43
- package/.morph/framework/templates/meta-prompts/validators/checkpoint-validator.md +0 -107
- package/.morph/framework/templates/meta-prompts/validators/pre-commit-validator.md +0 -95
- package/.morph/framework/templates/saas/subscription.cs +0 -347
- package/.morph/framework/templates/saas/tenant.cs +0 -338
- package/.morph/framework/templates/state.template.json +0 -17
- package/.morph/framework/templates/ui/FluentDesignTheme.cs +0 -149
- package/.morph/framework/templates/ui/MudTheme.cs +0 -281
- package/.morph/framework/templates/ui/design-system.css +0 -226
- package/.morph/logs/tool-failures.log +0 -51
- package/.morph/memory/pre-compact-2026-02-22T17-01-01-658Z.json +0 -16
- package/.morph/state.json +0 -48
- package/framework/skills/level-2-domains/backend/api-designer.md +0 -66
- package/framework/skills/level-2-domains/backend/ef-modeler.md +0 -65
- package/framework/skills/level-2-domains/frontend/nextjs-expert.md +0 -161
- package/framework/skills/level-3-technologies/README.md +0 -7
- package/framework/skills/level-4-patterns/README.md +0 -7
- package/framework/templates/code/dotnet/contracts/contracts.cs +0 -217
- package/framework/templates/code/dotnet/contracts/contracts.cs.hbs +0 -172
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# Level 2: Domains
|
|
2
|
-
|
|
3
|
-
Domain expertise skills organized by squad.
|
|
4
|
-
|
|
5
|
-
**Purpose:** Skills that provide deep domain knowledge (backend, frontend, infra, quality, ai-agents, integrations).
|
|
6
|
-
|
|
7
|
-
**Squads:**
|
|
8
|
-
- backend/ - Backend Squad (led by dotnet-senior)
|
|
9
|
-
- frontend/ - Frontend Squad (led by ui-designer)
|
|
10
|
-
- infrastructure/ - Infrastructure Squad (led by
|
|
11
|
-
- quality/ - Quality Squad (coordinated by standards-architect)
|
|
12
|
-
- ai-agents/ - AI/Agent specialists
|
|
13
|
-
- integrations/ - External integration specialists
|
|
14
|
-
- architecture/ - Architecture and planning
|
|
1
|
+
# Level 2: Domains
|
|
2
|
+
|
|
3
|
+
Domain expertise skills organized by squad.
|
|
4
|
+
|
|
5
|
+
**Purpose:** Skills that provide deep domain knowledge (backend, frontend, infra, quality, ai-agents, integrations).
|
|
6
|
+
|
|
7
|
+
**Squads:**
|
|
8
|
+
- backend/ - Backend Squad (led by dotnet-senior)
|
|
9
|
+
- frontend/ - Frontend Squad (led by ui-designer)
|
|
10
|
+
- infrastructure/ - Infrastructure Squad (led by infra-architect)
|
|
11
|
+
- quality/ - Quality Squad (coordinated by standards-architect)
|
|
12
|
+
- ai-agents/ - AI/Agent specialists
|
|
13
|
+
- integrations/ - External integration specialists
|
|
14
|
+
- architecture/ - Architecture and planning
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ai-system-architect
|
|
3
|
-
description:
|
|
4
|
-
AI System Architect specialist for agent systems, LLM orchestration, and AI pipeline design. Activates for keywords: semantic kernel, microsoft agents, ai pipeline, llm, embeddings.
|
|
3
|
+
description: AI System Architect specialist for designing multi-agent systems, LLM orchestration, RAG pipelines, and Semantic Kernel patterns. Use when designing AI agent architectures, implementing LLM-powered features, building RAG pipelines, or integrating Microsoft Agent Framework.
|
|
5
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
5
|
---
|
|
7
6
|
|
|
@@ -9,8 +8,6 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
|
9
8
|
|
|
10
9
|
Expert in agentic system architecture, multi-agent orchestration, and RAG pipelines.
|
|
11
10
|
|
|
12
|
-
> **Layer:** 2 | **Load:** on-keyword | **Keywords:** orchestration, multi-agent, rag, vector search, embedding, agentic, memory, reasoning
|
|
13
|
-
|
|
14
11
|
> **Ref:** `framework/standards/ai-agents/workflows.md` — Workflow patterns with AgentWorkflowBuilder
|
|
15
12
|
> **Ref:** `framework/standards/ai-agents/production.md` — Middleware, A2A, MCP, caching
|
|
16
13
|
> **Ref:** `framework/standards/backend/database/vector-search-rag.md` — Vector Search + RAG with EF Core 10
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: po-pm-advisor
|
|
3
|
-
description:
|
|
4
|
-
PO/PM Advisor specialist for product requirements, roadmaps, and user stories. Activates for keywords: product, roadmap, requirements, user stories, acceptance criteria.
|
|
3
|
+
description: PO/PM Advisor specialist for clarifying product requirements, defining acceptance criteria, writing user stories, and evaluating feature ROI. Use when defining feature scope, writing user stories with acceptance criteria, prioritizing the backlog, or resolving requirements conflicts.
|
|
5
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
5
|
---
|
|
7
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prompt-engineer
|
|
3
|
-
description:
|
|
4
|
-
Prompt Engineer specialist for designing system prompts, few-shot examples, and LLM interaction patterns. Activates for keywords: prompts, system prompts, llm, few-shot, chain-of-thought.
|
|
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.
|
|
5
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
5
|
---
|
|
7
6
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: seo-growth-hacker
|
|
3
|
-
description:
|
|
4
|
-
SEO and Growth specialist for performance optimization, analytics, and search engine ranking. Activates for keywords: seo, performance, analytics, lighthouse, core web vitals.
|
|
3
|
+
description: SEO and Growth specialist for technical SEO, Core Web Vitals optimization, content strategy, and organic growth for SaaS and landing pages. Use when optimizing for search engine ranking, improving Lighthouse scores, implementing SEO for Next.js/Blazor pages, or planning content-driven growth.
|
|
5
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
5
|
---
|
|
7
6
|
|
|
@@ -1,163 +1,160 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: standards-architect
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
|
38
|
-
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
|
56
|
-
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
63
|
-
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
|
73
|
-
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
├── {Project}.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
- `framework/standards/
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
- [ ]
|
|
151
|
-
- [ ]
|
|
152
|
-
- [ ]
|
|
153
|
-
- [ ]
|
|
154
|
-
- [ ]
|
|
155
|
-
- [ ]
|
|
156
|
-
- [ ]
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
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
|
+
|
|
163
160
|
*MORPH-SPEC by Polymorphism Tech*
|
|
@@ -0,0 +1,103 @@
|
|
|
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
|
+
---
|
|
6
|
+
|
|
7
|
+
# API Designer
|
|
8
|
+
|
|
9
|
+
REST API design specialist for .NET Minimal API. Focuses on clean endpoint design, DTO contracts, and HTTP semantics.
|
|
10
|
+
|
|
11
|
+
## Standards
|
|
12
|
+
|
|
13
|
+
- `framework/standards/backend/api/rest.md`
|
|
14
|
+
- `framework/standards/backend/api/validation.md`
|
|
15
|
+
- `framework/standards/backend/dotnet/async.md`
|
|
16
|
+
- `framework/standards/core/coding.md`
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Minimal API Pattern
|
|
21
|
+
|
|
22
|
+
```csharp
|
|
23
|
+
// Endpoint group — one file per feature
|
|
24
|
+
public static class PhotoProcessingEndpoints
|
|
25
|
+
{
|
|
26
|
+
public static IEndpointRouteBuilder MapPhotoProcessing(this IEndpointRouteBuilder app)
|
|
27
|
+
{
|
|
28
|
+
var group = app.MapGroup("/api/photos").RequireAuthorization();
|
|
29
|
+
|
|
30
|
+
group.MapPost("/upload", UploadAsync)
|
|
31
|
+
.DisableAntiforgery();
|
|
32
|
+
|
|
33
|
+
group.MapGet("/status/{jobId:guid}", GetStatusAsync);
|
|
34
|
+
group.MapGet("/download/{jobId:guid}", DownloadAsync);
|
|
35
|
+
|
|
36
|
+
return app;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private static async Task<IResult> UploadAsync(
|
|
40
|
+
IFormFile file,
|
|
41
|
+
IPhotoProcessingService service,
|
|
42
|
+
ClaimsPrincipal user,
|
|
43
|
+
CancellationToken ct)
|
|
44
|
+
{
|
|
45
|
+
var result = await service.UploadAsync(new(file, user.GetUserId()), ct);
|
|
46
|
+
return result.IsSuccess
|
|
47
|
+
? TypedResults.Ok(new { result.Value.JobId })
|
|
48
|
+
: TypedResults.ValidationProblem(result.Errors);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## HTTP Status Codes
|
|
54
|
+
|
|
55
|
+
| Scenario | Code | Method |
|
|
56
|
+
|----------|------|--------|
|
|
57
|
+
| Created resource | 201 | `TypedResults.Created(location, dto)` |
|
|
58
|
+
| Success, no body | 204 | `TypedResults.NoContent()` |
|
|
59
|
+
| Validation error | 400 | `TypedResults.ValidationProblem(errors)` |
|
|
60
|
+
| Unauthorized | 401 | `TypedResults.Unauthorized()` |
|
|
61
|
+
| Forbidden | 403 | `TypedResults.Forbid()` |
|
|
62
|
+
| Not found | 404 | `TypedResults.NotFound()` |
|
|
63
|
+
| Server error | 500 | let exception middleware handle |
|
|
64
|
+
|
|
65
|
+
## DTO Rules
|
|
66
|
+
|
|
67
|
+
```csharp
|
|
68
|
+
// Request DTOs: record + required init
|
|
69
|
+
public record UploadPhotoCommand(IFormFile Photo, Guid UserId);
|
|
70
|
+
|
|
71
|
+
// Response DTOs: include only what UI needs
|
|
72
|
+
public record JobStatusDto(Guid JobId, ProcessingStatus Status, string? DownloadUrl, DateTime CreatedAt);
|
|
73
|
+
|
|
74
|
+
// Never expose domain entities directly — always map to DTO
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Validation (FluentValidation)
|
|
78
|
+
|
|
79
|
+
```csharp
|
|
80
|
+
public class UploadPhotoCommandValidator : AbstractValidator<UploadPhotoCommand>
|
|
81
|
+
{
|
|
82
|
+
public UploadPhotoCommandValidator()
|
|
83
|
+
{
|
|
84
|
+
RuleFor(x => x.Photo).NotNull();
|
|
85
|
+
RuleFor(x => x.Photo.Length).LessThanOrEqualTo(10 * 1024 * 1024)
|
|
86
|
+
.WithMessage("File must be under 10MB");
|
|
87
|
+
RuleFor(x => x.Photo.ContentType)
|
|
88
|
+
.Must(t => t is "image/jpeg" or "image/png")
|
|
89
|
+
.WithMessage("Only JPG and PNG are allowed");
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Collaborates With
|
|
95
|
+
|
|
96
|
+
- **dotnet-senior** — service layer consumed by endpoints
|
|
97
|
+
- **ef-modeler** — entity → DTO mapping
|
|
98
|
+
- **blazor-builder** — frontend consuming API
|
|
99
|
+
- **testing-specialist** — integration tests
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
*MORPH-SPEC by Polymorphism Tech*
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dotnet-senior
|
|
3
|
-
description:
|
|
4
|
-
.NET Senior Engineer specialist for C#, Minimal API, and .NET ecosystem patterns. Activates for keywords: dotnet, csharp, minimal api, ef core, asp.net.
|
|
3
|
+
description: Senior .NET engineer and Backend Squad Leader for C#, Minimal API, async patterns, and Clean Architecture implementation. Use when implementing .NET/C# services, designing backend architecture, implementing async operations with CancellationToken, or coordinating backend domain specialists.
|
|
5
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
5
|
---
|
|
7
6
|
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ef-modeler
|
|
3
|
+
description: Entity Framework Modeler specialist for database schema design, EF Core migrations, DbContext configuration, and ORM patterns including IDbContextFactory. Use when designing database models, creating EF Core migrations, configuring DbContext, or implementing repository patterns with EF Core.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# EF Modeler
|
|
8
|
+
|
|
9
|
+
Entity Framework Core specialist for database modeling, entities, configurations, and migrations.
|
|
10
|
+
|
|
11
|
+
## Standards
|
|
12
|
+
|
|
13
|
+
- `framework/standards/backend/database/ef-core.md`
|
|
14
|
+
- `framework/standards/backend/database/migrations.md`
|
|
15
|
+
- `framework/standards/backend/database/repository-patterns.md`
|
|
16
|
+
- `framework/standards/core/coding.md`
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Entity Pattern
|
|
21
|
+
|
|
22
|
+
```csharp
|
|
23
|
+
// Private setters + factory method + domain state methods
|
|
24
|
+
public sealed class ProcessingJob
|
|
25
|
+
{
|
|
26
|
+
private ProcessingJob() { } // EF constructor
|
|
27
|
+
|
|
28
|
+
public Guid Id { get; private set; }
|
|
29
|
+
public string OriginalPhotoUrl { get; private set; } = default!;
|
|
30
|
+
public string? ProcessedPhotoUrl { get; private set; }
|
|
31
|
+
public ProcessingStatus Status { get; private set; }
|
|
32
|
+
public int RetryCount { get; private set; }
|
|
33
|
+
public DateTime CreatedAt { get; private set; }
|
|
34
|
+
public DateTime UpdatedAt { get; private set; }
|
|
35
|
+
|
|
36
|
+
// Factory method — enforces invariants at creation
|
|
37
|
+
public static ProcessingJob Create(string originalPhotoUrl)
|
|
38
|
+
{
|
|
39
|
+
ArgumentException.ThrowIfNullOrEmpty(originalPhotoUrl);
|
|
40
|
+
return new() { Id = Guid.NewGuid(), OriginalPhotoUrl = originalPhotoUrl,
|
|
41
|
+
Status = ProcessingStatus.Pending, CreatedAt = DateTime.UtcNow,
|
|
42
|
+
UpdatedAt = DateTime.UtcNow };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Domain state methods — encapsulate transitions
|
|
46
|
+
public void MarkProcessing() => (Status, UpdatedAt) = (ProcessingStatus.Processing, DateTime.UtcNow);
|
|
47
|
+
|
|
48
|
+
public void MarkCompleted(string processedUrl)
|
|
49
|
+
{
|
|
50
|
+
ProcessedPhotoUrl = processedUrl;
|
|
51
|
+
Status = ProcessingStatus.Completed;
|
|
52
|
+
UpdatedAt = DateTime.UtcNow;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public void MarkFailed() { RetryCount++; Status = RetryCount >= 3 ? ProcessingStatus.Failed : ProcessingStatus.Pending;
|
|
56
|
+
UpdatedAt = DateTime.UtcNow; }
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Configuration Pattern
|
|
61
|
+
|
|
62
|
+
```csharp
|
|
63
|
+
// One IEntityTypeConfiguration per entity — never configure in OnModelCreating
|
|
64
|
+
public sealed class ProcessingJobConfiguration : IEntityTypeConfiguration<ProcessingJob>
|
|
65
|
+
{
|
|
66
|
+
public void Configure(EntityTypeBuilder<ProcessingJob> builder)
|
|
67
|
+
{
|
|
68
|
+
builder.HasKey(j => j.Id);
|
|
69
|
+
builder.Property(j => j.OriginalPhotoUrl).HasMaxLength(500).IsRequired();
|
|
70
|
+
builder.Property(j => j.ProcessedPhotoUrl).HasMaxLength(500);
|
|
71
|
+
builder.Property(j => j.Status).HasConversion<int>();
|
|
72
|
+
builder.Property(j => j.CreatedAt).HasDefaultValueSql("GETUTCDATE()");
|
|
73
|
+
builder.HasIndex(j => j.Status); // index frequently filtered columns
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Migration Checklist
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# 1. Create migration
|
|
82
|
+
dotnet ef migrations add AddProcessingJob --project src/Infrastructure --startup-project src/Web
|
|
83
|
+
|
|
84
|
+
# 2. Review generated migration — check Up() and Down() for correctness
|
|
85
|
+
# 3. Apply
|
|
86
|
+
dotnet ef database update --project src/Infrastructure --startup-project src/Web
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
- Never use `EnsureCreated()` in production — always explicit migrations
|
|
90
|
+
- Never edit a migration that's been applied to a shared environment — add a new one
|
|
91
|
+
- Soft-delete columns: add nullable `DeletedAt`, filter in repository (`HasQueryFilter`)
|
|
92
|
+
|
|
93
|
+
## IDbContextFactory (Background Jobs)
|
|
94
|
+
|
|
95
|
+
```csharp
|
|
96
|
+
// DbContext is HTTP-scoped — background jobs MUST use IDbContextFactory
|
|
97
|
+
public class PhotoProcessingJob(IDbContextFactory<AppDbContext> dbFactory)
|
|
98
|
+
{
|
|
99
|
+
public async Task ProcessAsync(Guid jobId, CancellationToken ct)
|
|
100
|
+
{
|
|
101
|
+
await using var db = await dbFactory.CreateDbContextAsync(ct);
|
|
102
|
+
var job = await db.ProcessingJobs.FindAsync([jobId], ct)
|
|
103
|
+
?? throw new InvalidOperationException($"Job {jobId} not found");
|
|
104
|
+
job.MarkProcessing();
|
|
105
|
+
await db.SaveChangesAsync(ct);
|
|
106
|
+
// ... process ...
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Collaborates With
|
|
112
|
+
|
|
113
|
+
- **dotnet-senior** — service layer consuming repositories
|
|
114
|
+
- **api-designer** — DTO mapping from entities
|
|
115
|
+
- **azure-architect** — Azure SQL / Cosmos DB provisioning
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
*MORPH-SPEC by Polymorphism Tech*
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hangfire-orchestrator
|
|
3
|
-
description:
|
|
4
|
-
Hangfire Orchestrator specialist for background jobs, recurring tasks, queue management, and job scheduling. Activates for keywords: background jobs, queue, scheduling, hangfire, recurring.
|
|
3
|
+
description: Hangfire Orchestrator specialist for background job design, recurring task scheduling, queue management, and idempotent job patterns in .NET. Use when implementing background jobs, scheduling recurring tasks, managing job queues, or integrating Hangfire with .NET services.
|
|
5
4
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
5
|
---
|
|
7
6
|
|
|
8
7
|
# Hangfire Orchestrator
|
|
9
8
|
|
|
10
|
-
> **Layer:** 2 | **Load:** on-keyword | **Keywords:** scheduled, job, background, cron, recurring, batch, queue, hangfire
|
|
11
|
-
|
|
12
9
|
Especialista em background jobs, tarefas agendadas e processamento assíncrono com Hangfire.
|
|
13
10
|
|
|
14
11
|
## .NET 10 Compatibility
|