@polymorphism-tech/morph-spec 4.7.2 → 4.8.4
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/LICENSE +1 -2
- package/README.md +379 -414
- package/bin/morph-spec.js +57 -394
- package/bin/validate.js +2 -26
- package/claude-plugin.json +2 -2
- package/docs/CHEATSHEET.md +203 -221
- package/docs/QUICKSTART.md +2 -8
- package/framework/CLAUDE.md +1 -1
- package/framework/commands/morph-proposal.md +3 -3
- package/framework/hooks/README.md +2 -5
- package/framework/hooks/claude-code/pre-tool-use/protect-readonly-files.js +4 -55
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +20 -5
- package/framework/hooks/claude-code/statusline.py +6 -1
- package/framework/hooks/dev/check-sync-health.js +117 -0
- package/framework/hooks/dev/guard-version-numbers.js +57 -0
- package/framework/hooks/dev/sync-standards-registry.js +60 -0
- package/framework/hooks/dev/sync-template-registry.js +60 -0
- package/framework/hooks/dev/validate-skill-format.js +70 -0
- package/framework/hooks/dev/validate-standard-format.js +73 -0
- package/framework/hooks/shared/payload-utils.js +39 -0
- package/framework/hooks/shared/state-reader.js +25 -1
- package/framework/rules/morph-workflow.md +1 -1
- package/framework/skills/level-0-meta/morph-init/SKILL.md +216 -0
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +4 -4
- package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +4 -4
- package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +192 -191
- package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +181 -180
- package/framework/skills/level-1-workflows/phase-design/SKILL.md +339 -338
- package/framework/skills/level-1-workflows/phase-implement/SKILL.md +254 -253
- package/framework/skills/level-1-workflows/phase-setup/SKILL.md +168 -170
- package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +284 -283
- package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +246 -245
- package/framework/templates/examples/design-system-examples.md +1 -1
- package/framework/templates/ui/FluentDesignTheme.cs +1 -1
- package/framework/templates/ui/MudTheme.cs +1 -1
- package/framework/templates/ui/design-system.css +1 -1
- package/package.json +7 -5
- package/src/commands/agents/index.js +1 -2
- package/src/commands/index.js +13 -16
- package/src/commands/project/doctor.js +100 -14
- package/src/commands/project/index.js +7 -10
- package/src/commands/project/init.js +398 -528
- package/src/commands/project/install-plugin-cmd.js +28 -0
- package/src/commands/project/setup-infra-cmd.js +12 -0
- package/src/commands/project/tutorial.js +115 -0
- package/src/commands/state/approve.js +213 -221
- package/src/commands/state/index.js +0 -1
- package/src/commands/state/state.js +337 -365
- package/src/commands/templates/index.js +0 -4
- package/src/commands/trust/trust.js +1 -93
- package/src/commands/utils/index.js +1 -5
- package/src/commands/validation/index.js +1 -5
- package/src/core/registry/command-registry.js +11 -285
- package/src/core/state/state-manager.js +5 -2
- package/src/lib/detectors/index.js +81 -87
- package/src/lib/detectors/structure-detector.js +275 -273
- package/src/lib/generators/recap-generator.js +232 -225
- package/src/scripts/global-install.js +34 -0
- package/src/scripts/install-plugin.js +126 -0
- package/src/scripts/setup-infra.js +203 -0
- package/src/utils/agents-installer.js +10 -1
- package/src/utils/hooks-installer.js +66 -3
- package/.morph/.morphversion +0 -5
- package/.morph/analytics/threads-log.jsonl +0 -5
- package/.morph/config/config.json +0 -8
- package/.morph/framework/agents.json +0 -1815
- package/.morph/framework/hooks/README.md +0 -205
- package/.morph/framework/hooks/claude-code/notification/approval-reminder.js +0 -54
- package/.morph/framework/hooks/claude-code/post-tool-use/dispatch.js +0 -83
- package/.morph/framework/hooks/claude-code/post-tool-use/handle-tool-failure.js +0 -42
- package/.morph/framework/hooks/claude-code/pre-compact/save-morph-context.js +0 -61
- package/.morph/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +0 -71
- package/.morph/framework/hooks/claude-code/pre-tool-use/protect-readonly-files.js +0 -58
- package/.morph/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +0 -64
- package/.morph/framework/hooks/claude-code/session-start/inject-morph-context.js +0 -94
- package/.morph/framework/hooks/claude-code/statusline.py +0 -538
- package/.morph/framework/hooks/claude-code/statusline.sh +0 -7
- package/.morph/framework/hooks/claude-code/stop/validate-completion.js +0 -88
- package/.morph/framework/hooks/claude-code/user-prompt/enrich-prompt.js +0 -91
- package/.morph/framework/hooks/git/commit-msg/conventional-commits.sh +0 -33
- package/.morph/framework/hooks/git/pre-commit/agents.sh +0 -25
- package/.morph/framework/hooks/git/pre-commit/orchestrator.sh +0 -64
- package/.morph/framework/hooks/git/pre-commit/specs.sh +0 -50
- package/.morph/framework/hooks/git/pre-push/run-tests.sh +0 -44
- package/.morph/framework/hooks/shared/hook-response.js +0 -45
- package/.morph/framework/hooks/shared/phase-utils.js +0 -129
- package/.morph/framework/hooks/shared/state-reader.js +0 -138
- package/.morph/framework/hooks/shared/stdin-reader.js +0 -26
- package/.morph/framework/standards/STANDARDS.json +0 -933
- 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/bounded-contexts.md +0 -105
- package/.morph/framework/standards/architecture/ddd/complexity-levels.md +0 -108
- package/.morph/framework/standards/architecture/ddd/entities.md +0 -99
- package/.morph/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
- 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/app-router.md +0 -123
- package/.morph/framework/standards/frontend/nextjs/components.md +0 -132
- package/.morph/framework/standards/frontend/nextjs/data-fetching.md +0 -126
- package/.morph/framework/standards/frontend/nextjs/forms.md +0 -128
- package/.morph/framework/standards/frontend/nextjs/naming-conventions.md +0 -67
- package/.morph/framework/standards/frontend/nextjs/nextjs-patterns.md +0 -215
- package/.morph/framework/standards/frontend/nextjs/project-structure.md +0 -102
- package/.morph/framework/standards/frontend/nextjs/state-management.md +0 -72
- package/.morph/framework/standards/frontend/nextjs/testing.md +0 -111
- 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 -1888
- 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-level1.cs +0 -69
- package/.morph/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
- package/.morph/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
- 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 -198
- 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/docs/user-stories.md +0 -34
- 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/frontend/nextjs/Dockerfile.nextjs.hbs +0 -43
- package/.morph/framework/templates/frontend/nextjs/client-component.tsx.hbs +0 -26
- package/.morph/framework/templates/frontend/nextjs/env.mjs.hbs +0 -32
- package/.morph/framework/templates/frontend/nextjs/feature-form.tsx.hbs +0 -56
- package/.morph/framework/templates/frontend/nextjs/page.tsx.hbs +0 -22
- package/.morph/framework/templates/frontend/nextjs/tsconfig.json.hbs +0 -26
- package/.morph/framework/templates/frontend/nextjs/use-feature.ts.hbs +0 -54
- 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/project-structure/dotnet-ddd.md +0 -70
- 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 -17
- package/.morph/memory/pre-compact-2026-02-24T17-43-30-049Z.json +0 -16
- package/.morph/plans/eager-watching-bunny.md +0 -105
- package/.morph/plans/temporal-seeking-nebula.md +0 -45
- package/.morph/state.json +0 -48
- package/CLAUDE.md +0 -77
- package/docs/ARCHITECTURE.md +0 -331
- package/docs/COMMAND-FLOWS.md +0 -368
- package/docs/claude-alignment-report.md +0 -137
- package/docs/examples/order-management/contracts.cs +0 -84
- package/docs/examples/order-management/proposal.md +0 -24
- package/docs/examples/order-management/spec.md +0 -162
- package/docs/plans/2026-02-22-claude-docs-morph-alignment-analysis.md +0 -512
- package/docs/plans/2026-02-22-claude-settings.md +0 -515
- package/docs/plans/2026-02-22-morph-cc-alignment-impl.md +0 -728
- package/docs/plans/2026-02-22-morph-spec-next.md +0 -478
- package/docs/plans/2026-02-22-native-alignment-design.md +0 -199
- package/docs/plans/2026-02-22-native-alignment-impl.md +0 -925
- package/docs/plans/2026-02-22-native-enrichment-design.md +0 -244
- package/docs/plans/2026-02-22-native-enrichment.md +0 -735
- package/docs/plans/2026-02-23-ddd-architecture-refactor.md +0 -1153
- package/docs/plans/2026-02-23-ddd-nextsteps.md +0 -682
- package/docs/plans/2026-02-23-infra-architect-refactor.md +0 -437
- package/docs/plans/2026-02-23-nextjs-code-review-design.md +0 -156
- package/docs/plans/2026-02-23-nextjs-code-review-impl.md +0 -1254
- package/docs/plans/2026-02-23-nextjs-standards-design.md +0 -149
- package/docs/plans/2026-02-23-nextjs-standards-impl.md +0 -1846
- package/scripts/generate-refs.js +0 -336
- package/scripts/generate-standards-registry.js +0 -44
- package/scripts/scan-nextjs.mjs +0 -169
- package/scripts/validate-real.mjs +0 -255
- package/src/commands/feature/create-story.js +0 -362
- package/src/commands/feature/index.js +0 -6
- package/src/commands/feature/shard-spec.js +0 -225
- package/src/commands/feature/sprint-status.js +0 -250
- package/src/commands/generation/generate-onboarding.js +0 -169
- package/src/commands/generation/generate.js +0 -276
- package/src/commands/generation/index.js +0 -5
- package/src/commands/learning/capture-pattern.js +0 -121
- package/src/commands/learning/index.js +0 -5
- package/src/commands/learning/search-patterns.js +0 -126
- package/src/commands/mcp/mcp.js +0 -102
- package/src/commands/project/changes.js +0 -66
- package/src/commands/project/cost.js +0 -179
- package/src/commands/project/diff.js +0 -278
- package/src/commands/project/revert.js +0 -173
- package/src/commands/project/standards.js +0 -80
- package/src/commands/project/sync.js +0 -167
- package/src/commands/project/update-agents.js +0 -23
- package/src/commands/state/rollback-phase.js +0 -185
- package/src/commands/templates/template-customize.js +0 -87
- package/src/commands/templates/template-list.js +0 -114
- package/src/commands/templates/template-show.js +0 -129
- package/src/commands/templates/template-validate.js +0 -91
- package/src/commands/utils/troubleshoot.js +0 -222
- package/src/commands/validation/analyze-blazor-concurrency.js +0 -193
- package/src/commands/validation/lint-fluent.js +0 -352
- package/src/commands/validation/validate-blazor-state.js +0 -210
- package/src/commands/validation/validate-blazor.js +0 -156
- package/src/commands/validation/validate-css.js +0 -84
- package/src/lib/detectors/conversation-analyzer.js +0 -163
- package/src/lib/learning/index.js +0 -7
- package/src/lib/learning/learning-system.js +0 -520
- package/src/lib/troubleshooting/index.js +0 -8
- package/src/lib/troubleshooting/troubleshoot-grep.js +0 -198
- package/src/lib/troubleshooting/troubleshoot-index.js +0 -144
- package/src/llm/environment-detector.js +0 -43
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
# Feature Proposal: {{titleCase FEATURE_NAME}}
|
|
2
|
-
|
|
3
|
-
> Proposal for a new feature. This document describes WHAT and WHY.
|
|
4
|
-
> For technical details, see `spec.md`.
|
|
5
|
-
|
|
6
|
-
## Metadata
|
|
7
|
-
|
|
8
|
-
| Field | Value |
|
|
9
|
-
|-------|-------|
|
|
10
|
-
| **Proposed** | {{DATE}} |
|
|
11
|
-
| **Author** | {{AUTHOR}} |
|
|
12
|
-
| **Status** | Draft / Under Review / Approved / Rejected |
|
|
13
|
-
| **Priority** | High / Medium / Low |
|
|
14
|
-
{{#if STACK}}| **Stack** | {{STACK}} |{{/if}}
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## Overview
|
|
19
|
-
|
|
20
|
-
{Brief 2-3 sentence summary of the feature}
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Problem Statement
|
|
25
|
-
|
|
26
|
-
### What is the problem?
|
|
27
|
-
|
|
28
|
-
{Describe the problem this feature solves. Be specific.}
|
|
29
|
-
|
|
30
|
-
### Who is affected?
|
|
31
|
-
|
|
32
|
-
{Who suffers from this problem? End users? Developers? Operations?}
|
|
33
|
-
|
|
34
|
-
### What is the impact?
|
|
35
|
-
|
|
36
|
-
{What is the impact of NOT solving this problem?}
|
|
37
|
-
- User productivity loss: {X}
|
|
38
|
-
- Revenue/Cost impact: {X}
|
|
39
|
-
- User satisfaction: {X}
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Proposed Solution
|
|
44
|
-
|
|
45
|
-
### Overview
|
|
46
|
-
|
|
47
|
-
{Describe the proposed solution in 2-3 paragraphs}
|
|
48
|
-
|
|
49
|
-
### Key Features
|
|
50
|
-
|
|
51
|
-
1. **{Feature 1}** - {brief description}
|
|
52
|
-
2. **{Feature 2}** - {brief description}
|
|
53
|
-
3. **{Feature 3}** - {brief description}
|
|
54
|
-
|
|
55
|
-
{{#if (eq STACK "nextjs-supabase")}}
|
|
56
|
-
### Technical Approach
|
|
57
|
-
|
|
58
|
-
| Layer | Technology | Role |
|
|
59
|
-
|-------|-----------|------|
|
|
60
|
-
| **Database** | Supabase (PostgreSQL + RLS) | {tables, policies, storage} |
|
|
61
|
-
| **Backend API** | .NET 10 Minimal API | {endpoints, business logic} |
|
|
62
|
-
| **Frontend** | Next.js 15 (App Router) | {pages, components, auth} |
|
|
63
|
-
| **Infra** | EasyPanel + Docker | {deployment, SSL} |
|
|
64
|
-
{{/if}}
|
|
65
|
-
|
|
66
|
-
### User Journey
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
1. User {initial action}
|
|
70
|
-
2. System {response}
|
|
71
|
-
3. User {next action}
|
|
72
|
-
4. System {final result}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
{{#if (eq STACK "nextjs-supabase")}}
|
|
78
|
-
## Cost Estimate
|
|
79
|
-
|
|
80
|
-
| Resource | Provider | Monthly Cost | Notes |
|
|
81
|
-
|----------|----------|-------------|-------|
|
|
82
|
-
| Supabase | Free / Pro | $0 - $25 | {DB, Auth, Storage, Realtime} |
|
|
83
|
-
| VPS (EasyPanel) | {provider} | ${X} | {API + Web containers} |
|
|
84
|
-
| External APIs | {provider} | ${X} | {if applicable} |
|
|
85
|
-
| **Total** | | **${X}/month** | |
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
{{/if}}
|
|
90
|
-
## Success Metrics
|
|
91
|
-
|
|
92
|
-
How will we know this feature is successful?
|
|
93
|
-
|
|
94
|
-
| Metric | Current | Target |
|
|
95
|
-
|--------|---------|--------|
|
|
96
|
-
| {Metric 1} | {X} | {Y} |
|
|
97
|
-
| {Metric 2} | {X} | {Y} |
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## Scope
|
|
102
|
-
|
|
103
|
-
### In Scope
|
|
104
|
-
|
|
105
|
-
- {Item 1 that is included}
|
|
106
|
-
- {Item 2 that is included}
|
|
107
|
-
- {Item 3 that is included}
|
|
108
|
-
|
|
109
|
-
### Out of Scope
|
|
110
|
-
|
|
111
|
-
- {Item 1 that is NOT included}
|
|
112
|
-
- {Item 2 that is NOT included}
|
|
113
|
-
|
|
114
|
-
### Future Considerations
|
|
115
|
-
|
|
116
|
-
- {Item that could be added later}
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
## Risks & Concerns
|
|
121
|
-
|
|
122
|
-
| Risk | Likelihood | Impact | Mitigation |
|
|
123
|
-
|------|------------|--------|------------|
|
|
124
|
-
| {Risk 1} | High/Med/Low | High/Med/Low | {mitigation strategy} |
|
|
125
|
-
| {Risk 2} | High/Med/Low | High/Med/Low | {mitigation strategy} |
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## Dependencies
|
|
130
|
-
|
|
131
|
-
- [ ] {Dependency 1} - {status}
|
|
132
|
-
- [ ] {Dependency 2} - {status}
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Estimated Effort
|
|
137
|
-
|
|
138
|
-
| Phase | Estimate |
|
|
139
|
-
|-------|----------|
|
|
140
|
-
| Design & Spec | {X}h |
|
|
141
|
-
{{#if (eq STACK "nextjs-supabase")}}| Database & Migrations | {X}h |
|
|
142
|
-
| Backend API | {X}h |
|
|
143
|
-
| Frontend | {X}h |
|
|
144
|
-
{{else}}| Implementation | {X}h |
|
|
145
|
-
{{/if}}| Testing | {X}h |
|
|
146
|
-
| **Total** | **{X}h** |
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
## Questions & Clarifications
|
|
151
|
-
|
|
152
|
-
1. {Question 1 that needs answering}
|
|
153
|
-
2. {Question 2 that needs answering}
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
{{#if (eq STACK "blazor-azure")}}
|
|
158
|
-
## Approval
|
|
159
|
-
|
|
160
|
-
| Role | Name | Decision | Date |
|
|
161
|
-
|------|------|----------|------|
|
|
162
|
-
| Product Owner | | Pending | |
|
|
163
|
-
| Tech Lead | | Pending | |
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
{{/if}}
|
|
168
|
-
## Next Steps
|
|
169
|
-
|
|
170
|
-
Once approved:
|
|
171
|
-
1. Create detailed `spec.md` with technical design
|
|
172
|
-
{{#if (eq STACK "nextjs-supabase")}}2. Define contracts (`contracts.cs` + `contracts.ts`)
|
|
173
|
-
3. Record decisions in `decisions.md`
|
|
174
|
-
4. Break down into `tasks.md`
|
|
175
|
-
5. Begin implementation
|
|
176
|
-
{{else}}2. Break down into `tasks.md`
|
|
177
|
-
3. Begin implementation
|
|
178
|
-
{{/if}}
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
*Created with MORPH Framework*
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
# Schema Analysis - {{FEATURE_NAME_TITLE}}
|
|
2
|
-
|
|
3
|
-
**Feature**: {{FEATURE_NAME}}
|
|
4
|
-
**Date**: {{DATE}}
|
|
5
|
-
**Method**: {{#if method}}{{method}}{{else}}Manual Code Analysis{{/if}}
|
|
6
|
-
**Analyzed By**: {{AUTHOR}}
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Summary
|
|
11
|
-
|
|
12
|
-
**Tables Analyzed**: {{#if tableCount}}{{tableCount}}{{else}}0{{/if}}
|
|
13
|
-
**Code Files Scanned**: {{#if fileCount}}{{fileCount}}{{else}}0{{/if}}
|
|
14
|
-
**MCP Tools Used**: {{#if mcpUsed}}{{mcpUsed}}{{else}}No (manual analysis){{/if}}
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## Tables Analyzed
|
|
19
|
-
|
|
20
|
-
{{#each tables}}
|
|
21
|
-
### Table: {{this.name}}
|
|
22
|
-
|
|
23
|
-
**Source:**
|
|
24
|
-
{{#if this.mcpSource}}- MCP: {{this.mcpSource}}{{/if}}
|
|
25
|
-
{{#if this.codeSource}}- Code: {{this.codeSource}}{{/if}}
|
|
26
|
-
|
|
27
|
-
**Columns:**
|
|
28
|
-
| Column Name | Type | Nullable | Default | Notes |
|
|
29
|
-
|------------|------|----------|---------|-------|
|
|
30
|
-
{{#each this.columns}}
|
|
31
|
-
| {{this.name}} | {{this.type}} | {{#if this.nullable}}YES{{else}}NO{{/if}} | {{#if this.default}}{{this.default}}{{else}}-{{/if}} | {{#if this.notes}}{{this.notes}}{{else}}-{{/if}} |
|
|
32
|
-
{{/each}}
|
|
33
|
-
|
|
34
|
-
**Relationships:**
|
|
35
|
-
{{#each this.relationships}}
|
|
36
|
-
- {{this.description}}
|
|
37
|
-
{{/each}}
|
|
38
|
-
|
|
39
|
-
**Indexes:**
|
|
40
|
-
{{#each this.indexes}}
|
|
41
|
-
- {{this.description}}
|
|
42
|
-
{{/each}}
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
{{/each}}
|
|
46
|
-
|
|
47
|
-
## ⚠️ CRITICAL FINDINGS
|
|
48
|
-
|
|
49
|
-
### Field Name Mismatches (MUST FIX)
|
|
50
|
-
|
|
51
|
-
{{#if fieldMismatches}}
|
|
52
|
-
{{#each fieldMismatches}}
|
|
53
|
-
- ❌ {{this.description}}
|
|
54
|
-
{{/each}}
|
|
55
|
-
{{else}}
|
|
56
|
-
✅ No field name mismatches found
|
|
57
|
-
{{/if}}
|
|
58
|
-
|
|
59
|
-
### Type Mismatches
|
|
60
|
-
|
|
61
|
-
{{#if typeMismatches}}
|
|
62
|
-
{{#each typeMismatches}}
|
|
63
|
-
- ⚠️ {{this.description}}
|
|
64
|
-
{{/each}}
|
|
65
|
-
{{else}}
|
|
66
|
-
✅ No type mismatches found
|
|
67
|
-
{{/if}}
|
|
68
|
-
|
|
69
|
-
### Relationship Corrections
|
|
70
|
-
|
|
71
|
-
{{#if relationshipIssues}}
|
|
72
|
-
{{#each relationshipIssues}}
|
|
73
|
-
- ⚠️ {{this.description}}
|
|
74
|
-
{{/each}}
|
|
75
|
-
{{else}}
|
|
76
|
-
✅ All relationships correctly identified
|
|
77
|
-
{{/if}}
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## Recommendations for contracts.cs
|
|
82
|
-
|
|
83
|
-
Based on real schema analysis:
|
|
84
|
-
|
|
85
|
-
\`\`\`csharp
|
|
86
|
-
{{#each dtoRecommendations}}
|
|
87
|
-
// {{this.tableName}} → {{this.dtoName}}
|
|
88
|
-
public record {{this.dtoName}}(
|
|
89
|
-
{{#each this.fields}}
|
|
90
|
-
{{this.type}} {{this.name}}{{#if this.nullable}}?{{/if}}{{#unless @last}},{{/unless}} // {{#if this.comment}}{{this.comment}}{{/if}}
|
|
91
|
-
{{/each}}
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
{{/each}}
|
|
95
|
-
\`\`\`
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Analysis Notes
|
|
100
|
-
|
|
101
|
-
{{#if notes}}
|
|
102
|
-
{{notes}}
|
|
103
|
-
{{else}}
|
|
104
|
-
_No additional notes._
|
|
105
|
-
{{/if}}
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
## Next Steps
|
|
110
|
-
|
|
111
|
-
- [ ] Verify schema analysis with stakeholders
|
|
112
|
-
- [ ] Generate `contracts.cs` using real field names
|
|
113
|
-
- [ ] Update `spec.md` data model section with findings
|
|
114
|
-
- [ ] Document any schema migrations needed in `decisions.md`
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
*Generated by MORPH-SPEC v{{FRAMEWORK_VERSION}}*
|
|
119
|
-
*Schema analysis helps prevent DTO field name mismatches and ensures contracts match real database schema*
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
# Feature Specification: {{titleCase FEATURE_NAME}}
|
|
2
|
-
|
|
3
|
-
| Field | Value |
|
|
4
|
-
|-------|-------|
|
|
5
|
-
| **ID** | {{FEATURE_NAME}} |
|
|
6
|
-
| **Status** | Draft / In Review / Approved / In Progress / Done |
|
|
7
|
-
| **Created** | {{DATE}} |
|
|
8
|
-
| **Stack** | {{STACK}} |
|
|
9
|
-
| **Complexity** | Low / Medium / High |
|
|
10
|
-
| **Estimated Cost** | $X/month |
|
|
11
|
-
| **Agents** | Core: All / Specialists: {list} |
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Overview
|
|
16
|
-
|
|
17
|
-
**Problem:** {What problem this feature solves}
|
|
18
|
-
|
|
19
|
-
**Solution:** {High-level solution}
|
|
20
|
-
|
|
21
|
-
**Success Criteria:**
|
|
22
|
-
- [ ] {Criterion 1}
|
|
23
|
-
- [ ] {Criterion 2}
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Requirements
|
|
28
|
-
|
|
29
|
-
**Functional:** FR1: {desc} | FR2: {desc} | FR3: {desc}
|
|
30
|
-
|
|
31
|
-
**Non-Functional:** NFR1: Performance - {target} | NFR2: Reliability - {target}
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## User Stories
|
|
36
|
-
|
|
37
|
-
### US001: {Title}
|
|
38
|
-
**As** {user type} **I want** {feature} **so that** {benefit}
|
|
39
|
-
|
|
40
|
-
**Acceptance Criteria:** 1. {criterion} 2. {criterion}
|
|
41
|
-
|
|
42
|
-
**Edge Cases:** {edge case}: {handling}
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## Technical Design
|
|
47
|
-
|
|
48
|
-
### Stack
|
|
49
|
-
| Component | Technology |
|
|
50
|
-
|-----------|------------|
|
|
51
|
-
| Frontend | {Blazor Server / Next.js} |
|
|
52
|
-
| Backend | .NET 10 / C# 14 |
|
|
53
|
-
| Database | {Azure SQL / Cosmos DB} |
|
|
54
|
-
|
|
55
|
-
### Data Model
|
|
56
|
-
|
|
57
|
-
#### {EntityName}
|
|
58
|
-
| Column | Type | Constraints |
|
|
59
|
-
|--------|------|-------------|
|
|
60
|
-
| Id | Guid | PK |
|
|
61
|
-
| {Property} | {Type} | {Constraints} |
|
|
62
|
-
| CreatedAt | datetime2 | Default: GETUTCDATE() |
|
|
63
|
-
|
|
64
|
-
### Contracts
|
|
65
|
-
|
|
66
|
-
> **Ref:** `framework/standards/backend/database/ef-core.md` for background operations
|
|
67
|
-
|
|
68
|
-
```csharp
|
|
69
|
-
public interface I{{pascalCase FEATURE_NAME}}Service
|
|
70
|
-
{
|
|
71
|
-
Task<{{pascalCase FEATURE_NAME}}Dto> GetByIdAsync(int id);
|
|
72
|
-
Task<{{pascalCase FEATURE_NAME}}Dto> CreateAsync(Create{{pascalCase FEATURE_NAME}}Request request);
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
**Contracts Workflow:** Generate `contracts.cs` FIRST → validate names → reference in spec → approve with user.
|
|
77
|
-
|
|
78
|
-
**Validation Checklist:**
|
|
79
|
-
- [ ] Property names are descriptive (not generic "Data", "Value")
|
|
80
|
-
- [ ] Records use correct types (Stream vs byte[], Guid vs string)
|
|
81
|
-
- [ ] Response DTOs have all properties needed for UI
|
|
82
|
-
- [ ] Request DTOs have implicit validations (required, nullable)
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Domain Complexity
|
|
87
|
-
|
|
88
|
-
**Nível:** {1 — CRUD / 2 — Business Logic / 3 — Bounded Context}
|
|
89
|
-
|
|
90
|
-
**Justificativa:** {Por que este nível foi escolhido — mencionar invariants, eventos ou BCs se Nível 2+}
|
|
91
|
-
|
|
92
|
-
**Padrões Aplicados:**
|
|
93
|
-
- {Nível 1: Entity simples, Service CRUD, DTOs}
|
|
94
|
-
- {Nível 2: AggregateRoot, Value Objects, Domain Events, CQRS}
|
|
95
|
-
- {Nível 3: Bounded Context isolation, cross-BC events, Linguagem Ubíqua}
|
|
96
|
-
|
|
97
|
-
**Padrões Omitidos:**
|
|
98
|
-
- {ex: Bounded Contexts — sistema single-domain}
|
|
99
|
-
|
|
100
|
-
---
|
|
101
|
-
|
|
102
|
-
## Aggregate Blueprint (Nível 2+ apenas)
|
|
103
|
-
|
|
104
|
-
> Omitir esta seção se Nível 1 (CRUD).
|
|
105
|
-
|
|
106
|
-
### Aggregate Root: {EntityName}
|
|
107
|
-
|
|
108
|
-
**Invariants:**
|
|
109
|
-
- {Invariant 1 em linguagem natural}
|
|
110
|
-
- {Invariant 2}
|
|
111
|
-
|
|
112
|
-
**Estados e Transições:**
|
|
113
|
-
```
|
|
114
|
-
{Status.Draft} → Confirm() → {Status.Confirmed} → Cancel() → {Status.Cancelled}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Domain Events:**
|
|
118
|
-
- `{EntityName}CreatedEvent` — publicado ao criar
|
|
119
|
-
- `{EntityName}StatusChangedEvent` — publicado em mudança de estado
|
|
120
|
-
|
|
121
|
-
**Value Objects:**
|
|
122
|
-
- `{ValueObjectName}` — {por que não é primitivo simples}
|
|
123
|
-
|
|
124
|
-
**Referências Cross-Aggregate (por ID):**
|
|
125
|
-
- `{OtherEntity}Id: Guid`
|
|
126
|
-
|
|
127
|
-
### Linguagem Ubíqua
|
|
128
|
-
|
|
129
|
-
| Termo | Definição | Código |
|
|
130
|
-
|-------|-----------|--------|
|
|
131
|
-
| {Termo} | {Definição do negócio} | `{ClassName.MethodName()}` |
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## UI/UX Design (if front-end)
|
|
136
|
-
|
|
137
|
-
### Wireframes
|
|
138
|
-
```
|
|
139
|
-
{ASCII wireframe per screen - include states: loading, error, empty}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### User Flow
|
|
143
|
-
1. {Step} → {System response}
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
## Flows
|
|
148
|
-
|
|
149
|
-
### {Flow Name}
|
|
150
|
-
**Trigger:** {what starts this flow}
|
|
151
|
-
1. {Actor} {action} → {system response}
|
|
152
|
-
2. If {condition}: Path A / Else: Path B
|
|
153
|
-
**End State:** {final state}
|
|
154
|
-
|
|
155
|
-
---
|
|
156
|
-
|
|
157
|
-
## Cost Estimate
|
|
158
|
-
|
|
159
|
-
| Resource | SKU | Monthly Cost | Justification |
|
|
160
|
-
|----------|-----|--------------|---------------|
|
|
161
|
-
| {Resource} | {SKU} | ${X} | {Why} |
|
|
162
|
-
| **Total** | | **${X}/month** | |
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
## ADRs (Architectural Decision Records)
|
|
167
|
-
|
|
168
|
-
### ADR-001: {Decision Title}
|
|
169
|
-
**Status:** Proposed / Accepted
|
|
170
|
-
**Context:** {Why decide now}
|
|
171
|
-
**Decision:** {What we chose}
|
|
172
|
-
**Alternatives:** 1. {Alt} (pros/cons) 2. {Alt} (pros/cons)
|
|
173
|
-
**Trade-offs:** {key trade-offs}
|
|
174
|
-
|
|
175
|
-
---
|
|
176
|
-
|
|
177
|
-
## Security
|
|
178
|
-
|
|
179
|
-
| Action | Required Policy |
|
|
180
|
-
|--------|-----------------|
|
|
181
|
-
| View | CanView{Feature} |
|
|
182
|
-
| Create | CanManage{Feature} |
|
|
183
|
-
|
|
184
|
-
## Risks
|
|
185
|
-
|
|
186
|
-
| Risk | Impact | Mitigation |
|
|
187
|
-
|------|--------|------------|
|
|
188
|
-
| {Risk} | {H/M/L} | {Mitigation} |
|
|
189
|
-
|
|
190
|
-
## Out of Scope
|
|
191
|
-
- {Item}
|
|
192
|
-
|
|
193
|
-
## Definition of Done
|
|
194
|
-
- [ ] Code implemented
|
|
195
|
-
- [ ] Tests >80% coverage
|
|
196
|
-
- [ ] Code review approved
|
|
197
|
-
- [ ] Deploy to staging
|
|
198
|
-
- [ ] Recap.md generated
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
# UI Components: {{titleCase FEATURE_NAME}}
|
|
2
|
-
|
|
3
|
-
| Field | Value |
|
|
4
|
-
|-------|-------|
|
|
5
|
-
| **Feature** | {{FEATURE_NAME}} |
|
|
6
|
-
| **Created** | {{DATE}} |
|
|
7
|
-
| **Stack** | {{STACK}} |
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
{{#if (eq STACK "blazor-azure")}}
|
|
12
|
-
## Component Library: FluentUI Blazor / MudBlazor
|
|
13
|
-
|
|
14
|
-
**NuGet Package:**
|
|
15
|
-
```xml
|
|
16
|
-
<PackageReference Include="Microsoft.FluentUI.AspNetCore.Components" Version="4.x.x" />
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
### C001: Header Navigation
|
|
22
|
-
|
|
23
|
-
**Component:** `<FluentHeader>`
|
|
24
|
-
|
|
25
|
-
```razor
|
|
26
|
-
<FluentHeader>
|
|
27
|
-
<FluentLabel>{{FEATURE_NAME}}</FluentLabel>
|
|
28
|
-
<FluentSpacer />
|
|
29
|
-
<FluentPersona Name="@userName" OnClick="@ShowUserMenu" />
|
|
30
|
-
</FluentHeader>
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
### C002: Primary Button
|
|
36
|
-
|
|
37
|
-
**Component:** `<FluentButton>`
|
|
38
|
-
|
|
39
|
-
```razor
|
|
40
|
-
<FluentButton Appearance="Appearance.Accent"
|
|
41
|
-
OnClick="@HandleSave"
|
|
42
|
-
Disabled="@(!isValid)">
|
|
43
|
-
Save
|
|
44
|
-
</FluentButton>
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
### C003: Data Table
|
|
50
|
-
|
|
51
|
-
**Component:** `<FluentDataGrid>`
|
|
52
|
-
|
|
53
|
-
```razor
|
|
54
|
-
<FluentDataGrid Items="@items" Pagination="@pagination">
|
|
55
|
-
<PropertyColumn Property="@(i => i.Name)" Sortable="true" />
|
|
56
|
-
<PropertyColumn Property="@(i => i.Status)" Sortable="true" />
|
|
57
|
-
<TemplateColumn Title="Actions">
|
|
58
|
-
<FluentMenu>
|
|
59
|
-
<FluentMenuItem OnClick="@(() => EditItem(context))">Edit</FluentMenuItem>
|
|
60
|
-
<FluentMenuItem OnClick="@(() => DeleteItem(context))">Delete</FluentMenuItem>
|
|
61
|
-
</FluentMenu>
|
|
62
|
-
</TemplateColumn>
|
|
63
|
-
</FluentDataGrid>
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
### C004: Form Input
|
|
69
|
-
|
|
70
|
-
**Component:** `<FluentTextField>`
|
|
71
|
-
|
|
72
|
-
```razor
|
|
73
|
-
<FluentTextField @bind-Value="model.Name"
|
|
74
|
-
Label="Name"
|
|
75
|
-
Required="true"
|
|
76
|
-
MaxLength="100"
|
|
77
|
-
ErrorMessage="@GetValidationError(nameof(model.Name))">
|
|
78
|
-
</FluentTextField>
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
{{/if}}
|
|
82
|
-
|
|
83
|
-
{{#if (eq STACK "nextjs-supabase")}}
|
|
84
|
-
## Component Library: shadcn/ui
|
|
85
|
-
|
|
86
|
-
### C001: Button
|
|
87
|
-
|
|
88
|
-
```tsx
|
|
89
|
-
import { Button } from '@/components/ui/button';
|
|
90
|
-
|
|
91
|
-
<Button onClick={handleSave} disabled={!isValid}>
|
|
92
|
-
Save
|
|
93
|
-
</Button>
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### C002: Data Table
|
|
97
|
-
|
|
98
|
-
```tsx
|
|
99
|
-
import { DataTable } from '@/components/ui/data-table';
|
|
100
|
-
|
|
101
|
-
<DataTable columns={columns} data={items} />
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
{{/if}}
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## Form Validation
|
|
109
|
-
|
|
110
|
-
| Field | Rule | Error Message |
|
|
111
|
-
|-------|------|---------------|
|
|
112
|
-
| **Name** | Required, max 100 | "Name is required" |
|
|
113
|
-
| **Email** | Valid email | "Invalid email" |
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## Accessibility
|
|
118
|
-
- [ ] All inputs have labels
|
|
119
|
-
- [ ] Error messages announced
|
|
120
|
-
- [ ] Keyboard navigation works
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
*Generated with MORPH Framework*
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# UI Design System: {{titleCase FEATURE_NAME}}
|
|
2
|
-
|
|
3
|
-
| Field | Value |
|
|
4
|
-
|-------|-------|
|
|
5
|
-
| **Feature** | {{FEATURE_NAME}} |
|
|
6
|
-
| **Created** | {{DATE}} |
|
|
7
|
-
| **Project** | {{PROJECT_NAME}} |
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Color Palette
|
|
12
|
-
|
|
13
|
-
### Primary Colors
|
|
14
|
-
| Token | Value | Usage |
|
|
15
|
-
|-------|-------|-------|
|
|
16
|
-
| `--color-primary` | #0078D4 | Primary actions, links |
|
|
17
|
-
| `--color-primary-hover` | #106EBE | Hover states |
|
|
18
|
-
|
|
19
|
-
### Semantic Colors
|
|
20
|
-
| Token | Value | Usage |
|
|
21
|
-
|-------|-------|-------|
|
|
22
|
-
| `--color-success` | #107C10 | Success states |
|
|
23
|
-
| `--color-warning` | #F7630C | Warnings |
|
|
24
|
-
| `--color-error` | #D13438 | Errors |
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Typography
|
|
29
|
-
|
|
30
|
-
| Token | Size | Weight | Usage |
|
|
31
|
-
|-------|------|--------|-------|
|
|
32
|
-
| `--text-h1` | 24px | 600 | Section headers |
|
|
33
|
-
| `--text-body` | 14px | 400 | Body text |
|
|
34
|
-
| `--text-caption` | 12px | 400 | Labels |
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## Spacing
|
|
39
|
-
|
|
40
|
-
| Token | Value | Usage |
|
|
41
|
-
|-------|-------|-------|
|
|
42
|
-
| `--space-sm` | 8px | Compact spacing |
|
|
43
|
-
| `--space-md` | 16px | Standard spacing |
|
|
44
|
-
| `--space-lg` | 24px | Wide spacing |
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Components
|
|
49
|
-
|
|
50
|
-
### Buttons
|
|
51
|
-
- **Primary**: `--color-primary` background, white text
|
|
52
|
-
- **Secondary**: Transparent, `--color-primary` border
|
|
53
|
-
- **Sizes**: Small (24px), Medium (32px), Large (40px)
|
|
54
|
-
|
|
55
|
-
### Forms
|
|
56
|
-
- **Input height**: 32px
|
|
57
|
-
- **Focus**: 2px solid `--color-primary`
|
|
58
|
-
- **Error**: 1px solid `--color-error`
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Accessibility
|
|
63
|
-
- [ ] 4.5:1 contrast ratio (WCAG AA)
|
|
64
|
-
- [ ] Touch targets minimum 44x44px
|
|
65
|
-
- [ ] Keyboard navigation supported
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## Responsive Breakpoints
|
|
70
|
-
- **Mobile**: < 768px
|
|
71
|
-
- **Tablet**: 768px - 1199px
|
|
72
|
-
- **Desktop**: ≥ 1200px
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
*Generated with MORPH Framework*
|