@polymorphism-tech/morph-spec 4.12.0 → 4.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -29
- package/bin/morph-spec.js +41 -24
- package/bin/task-manager.js +962 -1341
- package/bin/validate.js +1 -1
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +10 -11
- package/docs/QUICKSTART.md +15 -15
- package/framework/CLAUDE.md +5 -2
- package/framework/agents/README.md +3 -4
- package/framework/agents/ai-agents/ai-system-architect.md +6 -10
- package/framework/agents/architecture/seo-growth-hacker.md +166 -326
- package/framework/agents/architecture/standards-architect.md +21 -31
- package/framework/agents/backend/dotnet-senior.md +160 -86
- package/framework/agents/backend/ef-modeler.md +2 -6
- package/framework/agents/backend/hangfire-orchestrator.md +8 -9
- package/framework/agents/backend/ms-agent-expert.md +1 -1
- package/framework/agents/frontend/nextjs-expert.md +198 -133
- package/framework/agents/frontend/ui-ux-designer.md +226 -267
- package/framework/agents/infrastructure/infra-architect.md +191 -27
- package/framework/agents/integrations/clerk-auth.md +19 -26
- package/framework/agents/integrations/hangfire-integration.md +1 -4
- package/framework/agents.json +215 -1453
- package/framework/commands/morph-apply.md +4 -4
- package/framework/commands/morph-preflight.md +4 -26
- package/framework/commands/morph-proposal.md +19 -19
- package/framework/commands/morph-status.md +2 -2
- package/framework/commands/morph-troubleshoot.md +6 -13
- package/framework/hooks/README.md +1 -6
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +4 -6
- package/framework/hooks/claude-code/pre-compact/save-morph-context.js +12 -7
- package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +2 -2
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +2 -2
- package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +5 -10
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +63 -30
- package/framework/hooks/claude-code/session-start/resume-context.js +77 -0
- package/framework/hooks/claude-code/statusline.py +4 -5
- package/framework/hooks/claude-code/stop/validate-completion.js +4 -4
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +8 -8
- package/framework/hooks/shared/compact-restore.js +28 -5
- package/framework/hooks/shared/phase-utils.js +4 -8
- package/framework/hooks/shared/state-reader.js +34 -3
- package/framework/phases.json +7 -45
- package/framework/rules/ai-agents-standards.md +15 -0
- package/framework/rules/asaas-standards.md +13 -0
- package/framework/rules/clerk-standards.md +13 -0
- package/framework/rules/csharp-standards.md +8 -4
- package/framework/rules/data-standards.md +18 -0
- package/framework/rules/dotnet-templates.md +87 -0
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/hangfire-standards.md +13 -0
- package/framework/rules/infrastructure-standards.md +27 -16
- package/framework/rules/morph-workflow.md +73 -13
- package/framework/rules/nextjs-standards.md +1 -0
- package/framework/rules/nextjs-templates.md +40 -0
- package/framework/rules/resend-standards.md +12 -0
- package/framework/rules/supabase-standards.md +29 -0
- package/framework/skills/README.md +6 -8
- package/framework/skills/level-0-meta/mcp-registry.json +21 -99
- package/framework/{standards/ai-agents/team-orchestration.md → skills/level-0-meta/morph-agent-teams/SKILL.md} +472 -479
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +28 -1
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
- package/framework/skills/level-0-meta/morph-code-review/SKILL.md +1 -5
- package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +1 -1
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +23 -41
- package/framework/skills/level-0-meta/morph-init/SKILL.md +18 -14
- package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +225 -0
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +20 -0
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +4 -8
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +15 -59
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +7 -19
- package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +8 -8
- package/framework/skills/level-1-workflows/README.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +49 -50
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +58 -124
- package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +5 -50
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +127 -159
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +4 -3
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +2 -2
- package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +17 -13
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +22 -40
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +0 -2
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +5 -5
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +57 -77
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
- package/framework/squad-templates/backend-only.json +6 -6
- package/framework/squad-templates/frontend-only.json +17 -8
- package/framework/squad-templates/full-stack.json +29 -24
- package/framework/standards/STANDARDS.json +1021 -2369
- package/framework/standards/backend/dotnet/fluent-validation-vsa.md +200 -0
- package/framework/standards/backend/dotnet/result-pattern.md +213 -0
- package/framework/standards/backend/dotnet/scalar-ui.md +172 -0
- package/framework/standards/backend/dotnet/scrutor.md +158 -0
- package/framework/standards/backend/dotnet/vsa-handler-patterns.md +274 -0
- package/framework/standards/frontend/nextjs/motion-patterns.md +1 -1
- package/framework/standards/infrastructure/supabase/mcp-setup.md +83 -193
- package/framework/standards/integration/mcp/mcp-tools.md +91 -77
- package/framework/templates/IDE-SNIPPETS.md +2 -6
- package/framework/templates/README.md +709 -814
- package/framework/templates/REGISTRY.json +223 -762
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -0
- package/framework/templates/code/dotnet/abstractions/error.cs +60 -0
- package/framework/templates/code/dotnet/abstractions/handler.cs +12 -0
- package/framework/templates/code/dotnet/abstractions/result.cs +74 -0
- package/framework/templates/code/dotnet/backend/repository.cs +148 -141
- package/framework/templates/code/dotnet/constants/api-tags.cs +6 -0
- package/framework/templates/code/dotnet/exceptions/exception-handler.cs +32 -0
- package/framework/templates/code/dotnet/extensions/database-extensions.cs +20 -0
- package/framework/templates/code/dotnet/extensions/handler-registration.cs +38 -0
- package/framework/templates/code/dotnet/extensions/health-checks.cs +24 -0
- package/framework/templates/code/dotnet/extensions/map-endpoints.cs +35 -0
- package/framework/templates/code/dotnet/extensions/result-extensions.cs +29 -0
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -0
- package/framework/templates/code/dotnet/feature/entity.cs.hbs +8 -0
- package/framework/templates/code/dotnet/feature/errors.cs.hbs +8 -0
- package/framework/templates/code/dotnet/feature/handler.cs.hbs +24 -0
- package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -0
- package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -0
- package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -0
- package/framework/templates/code/dotnet/jobs/job.cs +21 -17
- package/framework/templates/code/dotnet/pipelines/logging-decorator.cs +31 -0
- package/framework/templates/code/dotnet/pipelines/validation-decorator.cs +97 -0
- package/framework/templates/code/dotnet/test.cs +192 -106
- package/framework/templates/context/ARCHITECTURE.md +89 -0
- package/framework/templates/context/CONTEXT-FEATURE.md +2 -2
- package/framework/templates/context/CONTEXT.md +180 -181
- package/framework/templates/context/design-system.md +1 -5
- package/framework/templates/docs/onboarding.md +2 -3
- package/framework/templates/docs/proposal.md +171 -182
- package/framework/templates/docs/spec.md +1 -3
- package/framework/templates/docs/ui-components.md +0 -72
- package/framework/templates/examples/design-system-examples.md +4 -4
- package/framework/templates/feature/decisions.md +0 -66
- package/framework/templates/feature/recap.md +1 -2
- package/framework/templates/infrastructure/github/README.md +56 -593
- package/framework/templates/integrations/clerk-config.cs +0 -41
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +2 -2
- package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +1 -2
- package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +83 -126
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +2 -2
- package/framework/templates/project/validate.js +2 -4
- package/framework/templates/ui/design-system.css +1 -1
- package/framework/workflows/README.md +8 -8
- package/framework/workflows/configs/fast-track.json +51 -0
- package/framework/workflows/configs/full.json +68 -0
- package/framework/workflows/configs/standard.json +7 -3
- package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +1 -1
- package/framework/workflows/docs/enforcement-pipeline.md +18 -19
- package/framework/workflows/docs/full-morph.md +69 -76
- package/framework/workflows/docs/standard.md +49 -44
- package/framework/workflows/docs/ui-refresh.md +1 -1
- package/package.json +3 -3
- package/src/commands/agents/dispatch-agents.js +55 -116
- package/src/commands/context/context-refresh.js +79 -0
- package/src/commands/phase/phase-reset.js +1 -1
- package/src/commands/project/doctor.js +10 -32
- package/src/commands/project/init.js +12 -0
- package/src/commands/project/status.js +6 -12
- package/src/commands/scaffold/scaffold.js +131 -0
- package/src/commands/scope/escalate.js +1 -1
- package/src/commands/state/advance-phase.js +15 -29
- package/src/commands/state/state.js +20 -5
- package/src/commands/tasks/task.js +0 -30
- package/src/commands/validation/validate-feature.js +3 -10
- package/src/core/paths/output-schema.js +12 -13
- package/src/core/state/phase-state-machine.js +211 -217
- package/src/core/state/state-manager.js +9 -9
- package/src/lib/agents/agents-manager.js +2 -2
- package/src/lib/agents/output-collector.js +1 -2
- package/src/lib/detectors/design-system-detector.js +4 -4
- package/src/lib/detectors/index.js +1 -11
- package/src/lib/generators/architecture-scanner.js +640 -0
- package/src/lib/generators/context-generator.js +3 -3
- package/src/lib/generators/design-system-generator.js +508 -587
- package/src/lib/generators/index.js +12 -10
- package/src/lib/generators/metadata-extractor.js +386 -387
- package/src/lib/generators/recap-generator.js +4 -4
- package/src/lib/generators/scaffold-generator.js +317 -0
- package/src/lib/generators/settings-generator.js +0 -1
- package/src/lib/phase-chain/phase-validator.js +64 -42
- package/src/lib/stack/stack-profile.js +2 -2
- package/src/lib/standards/digest-builder.js +72 -285
- package/src/lib/tasks/task-parser.js +11 -5
- package/src/lib/validators/architecture/architecture-validator.js +259 -387
- package/src/lib/validators/content/content-validator.js +287 -287
- package/src/lib/validators/css/css-validator.js +340 -352
- package/src/lib/validators/packages/package-validator.js +347 -360
- package/src/lib/validators/shared/issue-counter.js +14 -18
- package/src/lib/validators/validation-runner.js +3 -19
- package/src/scripts/setup-infra.js +1 -1
- package/src/utils/agents-installer.js +24 -3
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +11 -19
- package/src/utils/skills-installer.js +178 -178
- package/framework/agents/architecture/prompt-engineer.md +0 -195
- package/framework/agents/backend/api-designer.md +0 -106
- package/framework/agents/frontend/blazor-builder.md +0 -229
- package/framework/agents/frontend/nextjs-ui-specialist.md +0 -218
- package/framework/agents/infrastructure/azure-architect.md +0 -150
- package/framework/agents/infrastructure/azure-deploy-specialist.md +0 -707
- package/framework/agents/infrastructure/bicep-architect.md +0 -132
- package/framework/agents/infrastructure/container-specialist.md +0 -137
- package/framework/agents/infrastructure/devops-engineer.md +0 -126
- package/framework/agents/integrations/azure-identity.md +0 -148
- package/framework/agents/quality/code-analyzer.md +0 -239
- package/framework/agents/quality/testing-specialist.md +0 -130
- package/framework/hooks/claude-code/notification/approval-reminder.js +0 -57
- package/framework/hooks/claude-code/post-tool-use/context-refresh.js +0 -109
- package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +0 -78
- package/framework/index/troubleshooting-index.json +0 -184
- package/framework/rules/testing-standards.md +0 -14
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +0 -230
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +0 -70
- package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +0 -256
- package/framework/skills/level-1-workflows/morph-phase-clarify/references/clarifications-example.md +0 -117
- package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +0 -269
- package/framework/standards/ai-agents/blazor-ui.md +0 -364
- package/framework/standards/architecture/ddd/aggregates.md +0 -120
- package/framework/standards/architecture/ddd/bounded-contexts.md +0 -105
- package/framework/standards/architecture/ddd/complexity-levels.md +0 -108
- package/framework/standards/architecture/ddd/entities.md +0 -99
- package/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
- package/framework/standards/architecture/ddd/value-objects.md +0 -124
- package/framework/standards/backend/api/minimal-api.md +0 -494
- package/framework/standards/backend/api/rest.md +0 -492
- package/framework/standards/backend/authentication/passkeys.md +0 -428
- package/framework/standards/backend/database/ef-core.md +0 -199
- package/framework/standards/backend/database/migrations.md +0 -393
- package/framework/standards/backend/database/repository-patterns.md +0 -528
- package/framework/standards/backend/dotnet/async.md +0 -366
- package/framework/standards/backend/dotnet/core.md +0 -117
- package/framework/standards/backend/dotnet/di.md +0 -439
- package/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
- package/framework/standards/context/analytics.md +0 -96
- package/framework/standards/context/bundles.md +0 -110
- package/framework/standards/context/priming.md +0 -78
- package/framework/standards/core/architecture.md +0 -185
- package/framework/standards/core/coding.md +0 -214
- package/framework/standards/core/git-branching-strategy.md +0 -403
- package/framework/standards/core/git.md +0 -185
- package/framework/standards/core/testing.md +0 -295
- package/framework/standards/data/nosql/blob-storage.md +0 -102
- package/framework/standards/data/vector-search/azure-ai-search.md +0 -121
- package/framework/standards/frontend/blazor/design-checklist.md +0 -222
- package/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
- package/framework/standards/frontend/blazor/fluent-ui.md +0 -137
- package/framework/standards/frontend/blazor/html-conversion.md +0 -184
- package/framework/standards/frontend/blazor/lifecycle.md +0 -195
- package/framework/standards/frontend/blazor/pitfalls.md +0 -198
- package/framework/standards/frontend/blazor/state.md +0 -191
- package/framework/standards/frontend/design-system/aesthetic-direction.md +0 -266
- package/framework/standards/frontend/design-system/design-trends.md +0 -171
- package/framework/standards/infrastructure/azure/azure.md +0 -624
- package/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
- package/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
- package/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
- package/framework/standards/infrastructure/azure/services/functions.md +0 -486
- package/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
- package/framework/standards/infrastructure/azure/services/storage.md +0 -407
- package/framework/standards/infrastructure/vercel/vercel-database.md +0 -106
- package/framework/standards/integration/api/graphql.md +0 -91
- package/framework/standards/integration/api/grpc.md +0 -114
- package/framework/standards/integration/api/rest-design.md +0 -95
- package/framework/standards/integration/event-driven/cqrs.md +0 -101
- package/framework/standards/integration/event-driven/event-sourcing.md +0 -124
- package/framework/standards/integration/event-driven/service-bus.md +0 -95
- package/framework/standards/observability/logging.md +0 -131
- package/framework/standards/observability/metrics.md +0 -121
- package/framework/standards/observability/monitoring.md +0 -114
- package/framework/standards/observability/tracing.md +0 -132
- package/framework/standards/workflows/parallel-execution.md +0 -112
- package/framework/standards/workflows/thread-management.md +0 -113
- package/framework/templates/code/dotnet/backend/service.cs +0 -139
- package/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
- package/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
- package/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
- package/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
- package/framework/templates/code/dotnet/contracts/contracts-level1.cs +0 -69
- package/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
- package/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
- package/framework/templates/code/dotnet/frontend/component.razor +0 -239
- package/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
- package/framework/templates/infrastructure/azure/README.md +0 -286
- package/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
- package/framework/templates/infrastructure/azure/app-service.bicep +0 -164
- package/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
- package/framework/templates/infrastructure/azure/container-app.bicep +0 -156
- package/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
- package/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
- package/framework/templates/infrastructure/azure/deploy.sh +0 -208
- package/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
- package/framework/templates/infrastructure/azure/main.bicep +0 -189
- package/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
- package/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
- package/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
- package/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
- package/framework/templates/infrastructure/azure/storage.bicep +0 -106
- package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
- package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
- package/framework/templates/integrations/azure-identity-config.cs +0 -288
- package/framework/templates/project-structure/dotnet-ddd.md +0 -70
- package/framework/templates/saas/subscription.cs +0 -347
- package/framework/templates/saas/tenant.cs +0 -338
- package/framework/templates/ui/FluentDesignTheme.cs +0 -149
- package/framework/templates/ui/MudTheme.cs +0 -281
- package/framework/workflows/configs/nodejs-cli.json +0 -40
- package/src/commands/standards/context-budget.js +0 -89
- package/src/lib/standards/index.js +0 -7
- package/src/lib/standards/standards-context-injector.js +0 -302
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +0 -316
- package/src/lib/validators/blazor/blazor-state-validator.js +0 -279
- package/src/lib/validators/blazor/blazor-validator.js +0 -369
- package/src/lib/validators/blazor/index.js +0 -9
|
@@ -4,7 +4,7 @@ description: MORPH-SPEC Phase 4 (Tasks). Breaks approved spec into bottom-up ord
|
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
7
|
-
cliVersion: "4.
|
|
7
|
+
cliVersion: "4.13.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# MORPH Tasks — Phase 4
|
|
@@ -15,9 +15,9 @@ Break the approved specification into executable tasks, define execution order,
|
|
|
15
15
|
|
|
16
16
|
## Prerequisites
|
|
17
17
|
|
|
18
|
-
- [ ]
|
|
19
|
-
- [ ] `spec.md`
|
|
20
|
-
- [ ]
|
|
18
|
+
- [ ] Design phase completed and approved
|
|
19
|
+
- [ ] `spec.md` exists and approved
|
|
20
|
+
- [ ] Plan phase completed
|
|
21
21
|
|
|
22
22
|
## Recommended Tools
|
|
23
23
|
|
|
@@ -42,7 +42,7 @@ Break the approved specification into executable tasks, define execution order,
|
|
|
42
42
|
- Task agent to break down a simple single-domain spec (do it directly)
|
|
43
43
|
- Creating tasks without reading all design outputs first
|
|
44
44
|
- **(VSA)** Creating separate tasks for Handler, Validator, and Endpoint — one slice = one task
|
|
45
|
-
- **(VSA)** Using
|
|
45
|
+
- **(VSA)** Using generic layer categories (`domain`, `application`, `infrastructure`) in VSA projects — use VSA categories: `entity`, `errors`, `tags`, `migration`, `slice`, `frontend`, `tests`
|
|
46
46
|
- **(VSA)** Creating a "Implement Service layer" task — there is no Service layer in VSA
|
|
47
47
|
- Using vague effort labels ("Low", "Medium", "S/M") — always use specific minute estimates
|
|
48
48
|
- Using non-standard task IDs (TASK-001, T01) — always use **T001** format (T + 3 digits)
|
|
@@ -61,9 +61,8 @@ Check the `"phase"` field:
|
|
|
61
61
|
|
|
62
62
|
**If `"phase": "tasks"`** → correct phase, proceed.
|
|
63
63
|
|
|
64
|
-
**If `"phase": "
|
|
65
|
-
1. `morph-spec
|
|
66
|
-
2. `morph-spec phase advance $ARGUMENTS` (→ tasks)
|
|
64
|
+
**If `"phase": "plan"`** → run:
|
|
65
|
+
1. `morph-spec phase advance $ARGUMENTS` (→ tasks)
|
|
67
66
|
|
|
68
67
|
**Any other value** → STOP — inconsistent state, report to user.
|
|
69
68
|
|
|
@@ -83,10 +82,10 @@ Check the `"phase"` field:
|
|
|
83
82
|
|
|
84
83
|
```
|
|
85
84
|
# Single parallel call, not sequential:
|
|
86
|
-
Read: .morph/features/{feature}/
|
|
87
|
-
+ Read: .morph/features/{feature}/
|
|
88
|
-
+ Read: .morph/features/{feature}/
|
|
89
|
-
+ Read: .morph/features/{feature}/
|
|
85
|
+
Read: .morph/features/{feature}/2-design/spec.md
|
|
86
|
+
+ Read: .morph/features/{feature}/2-design/contracts.cs (or contracts.ts for TypeScript projects)
|
|
87
|
+
+ Read: .morph/features/{feature}/2-design/decisions.md
|
|
88
|
+
+ Read: .morph/features/{feature}/2-design/schema-analysis.md (if exists)
|
|
90
89
|
+ Read: .morph/config/config.json (→ architecture.style)
|
|
91
90
|
```
|
|
92
91
|
|
|
@@ -116,25 +115,25 @@ morph-spec approval-status $ARGUMENTS
|
|
|
116
115
|
|
|
117
116
|
### Step 0: Detect Architecture Style
|
|
118
117
|
|
|
119
|
-
Before anything else, determine
|
|
118
|
+
Before anything else, determine the architecture style:
|
|
120
119
|
|
|
121
120
|
```bash
|
|
122
121
|
cat .morph/config/config.json | grep -A3 '"architecture"'
|
|
123
122
|
```
|
|
124
123
|
|
|
125
|
-
**If `config.architecture.style === "vertical-slice"`** → follow **Step 0.5 (VSA)
|
|
126
|
-
**Otherwise** →
|
|
124
|
+
**If `config.architecture.style === "vertical-slice"`** → follow **Step 0.5 (VSA)**.
|
|
125
|
+
**Otherwise** → proceed to **Step 1 (Analyze Spec)** with standard layer-based task breakdown.
|
|
127
126
|
|
|
128
127
|
---
|
|
129
128
|
|
|
130
129
|
### Step 0.5: VSA Task Plan
|
|
131
130
|
|
|
132
|
-
> For VSA task patterns
|
|
131
|
+
> For VSA task patterns, see `references/task-planning-patterns.md`
|
|
133
132
|
|
|
134
133
|
Read the `## Architecture Style: Vertical Slice` section from spec.md for the **VSA Blueprint**:
|
|
135
134
|
|
|
136
135
|
```bash
|
|
137
|
-
grep -A30 "## Architecture Style" ".morph/features/$ARGUMENTS/
|
|
136
|
+
grep -A30 "## Architecture Style" ".morph/features/$ARGUMENTS/2-design/spec.md"
|
|
138
137
|
```
|
|
139
138
|
|
|
140
139
|
Create one task per slice following this order: entity → errors → tags → migration → CRUD slices → custom slices → frontend → tests. Each slice = Handler + Validator + Endpoint in a **single task**. `GetAll` operations do NOT have a Validator (no input parameters to validate).
|
|
@@ -145,30 +144,13 @@ Use VSA-specific categories: `entity`, `errors`, `tags`, `migration`, `slice`, `
|
|
|
145
144
|
|
|
146
145
|
---
|
|
147
146
|
|
|
148
|
-
### Step 0.6: Read Domain Level — DDD
|
|
149
|
-
|
|
150
|
-
Read the `## Domain Complexity` section from spec.md:
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
grep -A15 "## Domain Complexity" ".morph/features/$ARGUMENTS/1-design/spec.md"
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
> If the section doesn't exist, assume **Level 1 (CRUD)**.
|
|
157
|
-
|
|
158
|
-
Use the level to constrain categories:
|
|
159
|
-
- **Level 1**: domain → infrastructure → application → presentation → tests
|
|
160
|
-
- **Level 2**: adds AggregateRoot, ValueObjects, DomainEvents, CQRS handlers
|
|
161
|
-
- **Level 3**: adds BC setup, Integration Events
|
|
162
|
-
|
|
163
|
-
See `references/task-planning-patterns.md` for the complete table.
|
|
164
|
-
|
|
165
147
|
---
|
|
166
148
|
|
|
167
149
|
### Step 1: Analyze Spec
|
|
168
150
|
|
|
169
151
|
> **VSA:** If coming from Step 0.5, the task breakdown was already defined — use the generated examples as a base and skip to Step 3 (Dependencies).
|
|
170
152
|
|
|
171
|
-
Read `.morph/features/$ARGUMENTS/
|
|
153
|
+
Read `.morph/features/$ARGUMENTS/2-design/spec.md` and identify:
|
|
172
154
|
|
|
173
155
|
1. **Functional requirements** (FR001, FR002, ...)
|
|
174
156
|
2. **Technical components** (Entities, Services/Slices, Controllers/Endpoints, Pages)
|
|
@@ -274,7 +256,7 @@ Use `AskUserQuestion` to capture explicit approval before advancing. This gate p
|
|
|
274
256
|
|
|
275
257
|
- [x] `tasks.md` created with all tasks
|
|
276
258
|
- [x] Tasks use T### format (T001, T002, ...) consistently
|
|
277
|
-
- [x] Tasks categorized correctly (
|
|
259
|
+
- [x] Tasks categorized correctly (VSA categories or standard layers)
|
|
278
260
|
- [x] Dependencies mapped
|
|
279
261
|
- [x] Checkpoints defined (every 3 tasks)
|
|
280
262
|
- [x] Effort estimated in minutes per task
|
|
@@ -298,10 +280,10 @@ Use `AskUserQuestion` to capture explicit approval before advancing. This gate p
|
|
|
298
280
|
|
|
299
281
|
## Phase Outputs
|
|
300
282
|
|
|
301
|
-
<!-- morph-outputs:tasks -->
|
|
302
|
-
| Output | Caminho |
|
|
303
|
-
|--------|---------|
|
|
304
|
-
| `tasks` | `.morph/features/{feature}/4-tasks/tasks.md` |
|
|
283
|
+
<!-- morph-outputs:tasks -->
|
|
284
|
+
| Output | Caminho |
|
|
285
|
+
|--------|---------|
|
|
286
|
+
| `tasks` | `.morph/features/{feature}/4-tasks/tasks.md` |
|
|
305
287
|
<!-- /morph-outputs -->
|
|
306
288
|
|
|
307
289
|
---
|
|
@@ -81,7 +81,7 @@ Add `ProcessingJob` to `AppDbContext`, configure via Fluent API (column lengths,
|
|
|
81
81
|
- **Type:** Infrastructure
|
|
82
82
|
- **Priority:** 1
|
|
83
83
|
- **Estimate:** 45min
|
|
84
|
-
- **Assigned:**
|
|
84
|
+
- **Assigned:** infra-architect
|
|
85
85
|
- **Dependencies:** None
|
|
86
86
|
|
|
87
87
|
**Description:**
|
|
@@ -154,11 +154,11 @@ Create two endpoints per spec.md:
|
|
|
154
154
|
- **Type:** UI
|
|
155
155
|
- **Priority:** 2
|
|
156
156
|
- **Estimate:** 1h
|
|
157
|
-
- **Assigned:**
|
|
157
|
+
- **Assigned:** nextjs-expert
|
|
158
158
|
- **Dependencies:** T007
|
|
159
159
|
|
|
160
160
|
**Description:**
|
|
161
|
-
|
|
161
|
+
Frontend page at `/upload`. File input with client-side validation (type + size before submit). Loading state during upload. Redirect to `/processing/{jobId}` on success. Error message display per spec wireframe.
|
|
162
162
|
|
|
163
163
|
**Deliverables:**
|
|
164
164
|
- [ ] Create: `src/Web/Pages/Upload.razor`
|
|
@@ -170,11 +170,11 @@ Blazor Server page at `/upload`. File input with client-side validation (type +
|
|
|
170
170
|
- **Type:** UI
|
|
171
171
|
- **Priority:** 3
|
|
172
172
|
- **Estimate:** 1h
|
|
173
|
-
- **Assigned:**
|
|
173
|
+
- **Assigned:** nextjs-expert
|
|
174
174
|
- **Dependencies:** T007
|
|
175
175
|
|
|
176
176
|
**Description:**
|
|
177
|
-
|
|
177
|
+
Frontend page at `/processing/{jobId}`. Polls `GET /api/status/{jobId}` every 5 seconds using `PeriodicTimer`. Shows status label + progress indicator. "Download" button when Completed. "Retry" suggestion when Failed. Stops polling on terminal state.
|
|
178
178
|
|
|
179
179
|
**Deliverables:**
|
|
180
180
|
- [ ] Create: `src/Web/Pages/ProcessingStatus.razor`
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: morph-phase-uiux
|
|
3
|
-
description: MORPH-SPEC Phase
|
|
3
|
+
description: MORPH-SPEC Phase 2 (UI/UX). Creates design-system.md, mockups.md, components.md, and flows.md using Playwright/Context7 MCPs. Use after setup for features with frontend UI components, pages, dashboards, forms, wizards, or visual interactions requiring design documentation.
|
|
4
4
|
argument-hint: "[feature-name]"
|
|
5
5
|
user-invocable: false
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
7
|
-
cliVersion: "4.
|
|
7
|
+
cliVersion: "4.13.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# MORPH UI/UX Design - Phase
|
|
10
|
+
# MORPH UI/UX Design - Phase 2
|
|
11
11
|
|
|
12
12
|
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
13
13
|
|
|
@@ -15,8 +15,8 @@ Conditional phase for features with front-end. Collects UI/UX requirements, gene
|
|
|
15
15
|
|
|
16
16
|
## Prerequisites
|
|
17
17
|
|
|
18
|
-
- [ ]
|
|
19
|
-
- [ ] Feature has detected UI keywords (
|
|
18
|
+
- [ ] Proposal approved by the user
|
|
19
|
+
- [ ] Feature has detected UI keywords (ui, component, page, dashboard, wizard, form, chart)
|
|
20
20
|
- [ ] `ui-designer` agent activated
|
|
21
21
|
|
|
22
22
|
## Recommended Tools
|
|
@@ -29,7 +29,7 @@ Conditional phase for features with front-end. Collects UI/UX requirements, gene
|
|
|
29
29
|
| Check existing design system | **Read** `.morph/context/design-system.md` | — |
|
|
30
30
|
| Read user screenshots | **Read** (image file) | — |
|
|
31
31
|
| Search for existing CSS variables | **Grep** `--root:` in `*.css,*.scss` | — |
|
|
32
|
-
| Find existing components | **Glob** `**/
|
|
32
|
+
| Find existing components | **Glob** `**/components/**/*.tsx` | — |
|
|
33
33
|
| UI component documentation | **Context7 MCP** `query_docs({ libraryId, query })` | **WebSearch** + **WebFetch** |
|
|
34
34
|
| Preview existing page | **Playwright MCP** `browser_navigate()` + `browser_take_screenshot()` | **WebFetch** URL |
|
|
35
35
|
| Generate visual mockup | **Playwright MCP** `browser_navigate()` + `browser_resize()` + `browser_take_screenshot()` | HTML file + manual screenshot |
|
|
@@ -42,13 +42,11 @@ Conditional phase for features with front-end. Collects UI/UX requirements, gene
|
|
|
42
42
|
| Auto-detect dev server | **Glob** `next.config.*`, `vite.config.*`, `*.csproj` | **Read** `package.json` scripts |
|
|
43
43
|
| Capture existing app | **Playwright MCP** `browser_navigate()` + `browser_take_screenshot()` | — |
|
|
44
44
|
| Read Tailwind config | **Read** `tailwind.config.{js,ts}` | **Grep** `colors:` |
|
|
45
|
-
|
|
|
46
|
-
| Trend research | **Read** `design-trends.md` standard | **Context7 MCP** / **WebSearch** |
|
|
45
|
+
| Trend research | **Context7 MCP** / **WebSearch** | — |
|
|
47
46
|
|
|
48
47
|
**MCPs for this phase:** Playwright (preview, inspection, responsiveness), Context7 (component docs).
|
|
49
48
|
|
|
50
49
|
**Anti-patterns:**
|
|
51
|
-
- WebSearch for MudBlazor docs (use Context7 MCP — more precise)
|
|
52
50
|
- Task agent to read a screenshot (use Read directly on image)
|
|
53
51
|
- Guess component props (use Context7 for actual API)
|
|
54
52
|
|
|
@@ -66,12 +64,13 @@ Check the `"phase"` field in the output:
|
|
|
66
64
|
|
|
67
65
|
**If `"phase": "uiux"`** → correct phase, proceed.
|
|
68
66
|
|
|
69
|
-
**If `"phase": "
|
|
70
|
-
1. `morph-spec
|
|
67
|
+
**If `"phase": "proposal"`** → execute in sequence:
|
|
68
|
+
1. `morph-spec state mark-output $ARGUMENTS proposal`
|
|
69
|
+
2. `morph-spec phase advance $ARGUMENTS` (→ uiux)
|
|
71
70
|
|
|
72
71
|
**Any other value** → do not proceed — inconsistent state, report to user.
|
|
73
72
|
|
|
74
|
-
> **Rule:** Never write to `
|
|
73
|
+
> **Rule:** Never write to `1-ui/` until the phase is `uiux`. The hook will block writes.
|
|
75
74
|
|
|
76
75
|
---
|
|
77
76
|
|
|
@@ -88,8 +87,7 @@ Check in priority order:
|
|
|
88
87
|
2. **`package.json` port flags**: Read `package.json` scripts → scan for `--port`, `-p` flags → extract port
|
|
89
88
|
3. **Next.js**: Glob `next.config.*` → try `http://localhost:3000`
|
|
90
89
|
4. **Vite**: Glob `vite.config.*` → try `http://localhost:5173`
|
|
91
|
-
5. **.NET
|
|
92
|
-
6. **.NET fallback**: Glob `*.csproj` → try `https://localhost:5001`
|
|
90
|
+
5. **.NET**: Glob `**/Properties/launchSettings.json` → Read → extract `applicationUrl`
|
|
93
91
|
|
|
94
92
|
Track: `detectedUrl` (string or null).
|
|
95
93
|
|
|
@@ -147,11 +145,11 @@ Once connected, take screenshots of up to 5 pages:
|
|
|
147
145
|
mcp__plugin_playwright_playwright__browser_resize({ width: 1440, height: 900 })
|
|
148
146
|
mcp__plugin_playwright_playwright__browser_take_screenshot({})
|
|
149
147
|
```
|
|
150
|
-
4. Save screenshots to `.morph/features/$ARGUMENTS/
|
|
148
|
+
4. Save screenshots to `.morph/features/$ARGUMENTS/1-ui/existing-*.png`
|
|
151
149
|
|
|
152
150
|
#### 0.2.4 — Visual analysis
|
|
153
151
|
|
|
154
|
-
Analyze the captured screenshots and write `.morph/features/$ARGUMENTS/
|
|
152
|
+
Analyze the captured screenshots and write `.morph/features/$ARGUMENTS/1-ui/existing-ui-analysis.md`:
|
|
155
153
|
|
|
156
154
|
> **Note:** This is an intermediate artifact — NOT a tracked output in `output-schema.js`. It will not appear in `state mark-output`. Advisory warnings from `task-tracking-guard.js` are expected.
|
|
157
155
|
|
|
@@ -217,21 +215,12 @@ If found, Read the file and extract:
|
|
|
217
215
|
Glob: `components.json`
|
|
218
216
|
If found and contains `"style"` field, also scan `src/lib/utils.ts` or `lib/utils.ts` for CSS var references.
|
|
219
217
|
|
|
220
|
-
**D.
|
|
221
|
-
Glob: `**/MudTheme*.cs`, `**/*Theme*.cs`, `**/CustomTheme*.cs`
|
|
222
|
-
If found, Grep for `PaletteLight`, `PaletteDark`, `Typography` property assignments.
|
|
223
|
-
Extract: Primary, Secondary, Tertiary, Background, Surface colors + font families.
|
|
224
|
-
|
|
225
|
-
**E. Fluent UI Theme (.NET):**
|
|
226
|
-
Glob: `**/FluentDesignTheme*.cs`, `**/DesignTheme*.cs`
|
|
227
|
-
If found, Grep for `DesignThemePalette` properties.
|
|
228
|
-
|
|
229
|
-
**F. Global theme files:**
|
|
218
|
+
**D. Global theme files:**
|
|
230
219
|
Glob: `**/theme.{ts,js}`, `**/tokens.{ts,js}`, `**/design-tokens.{ts,js}`
|
|
231
220
|
If found, Read and extract exported color/spacing/font objects.
|
|
232
221
|
|
|
233
222
|
Classify ALL found tokens into:
|
|
234
|
-
- **Colors**: `--color-*`, hex values, rgb()
|
|
223
|
+
- **Colors**: `--color-*`, hex values, rgb()
|
|
235
224
|
- **Fonts**: `--font-*`, `font-family:`, fontFamily config
|
|
236
225
|
- **Spacing**: `--space-*`, `--gap-*`, spacing config
|
|
237
226
|
- **Radius**: `--radius-*`, borderRadius config
|
|
@@ -253,7 +242,7 @@ Track: `dsExists` (bool).
|
|
|
253
242
|
|------|-----------|--------|
|
|
254
243
|
| **A** | `dsExists` AND `cssTokensFound` | Cross-check DS vs scanned tokens. If >2 colors diverge, flag misalignment and ask user if they want to update DS with `AskUserQuestion`. Proceed to Step 1. |
|
|
255
244
|
| **B** | `dsExists` AND NOT `cssTokensFound` | Print: `✓ Design system found (no CSS tokens to cross-check)`. Proceed to Step 1. |
|
|
256
|
-
| **C** | NOT `dsExists` AND tokens found | Auto-generate `.morph/context/design-system.md` from ALL scanned token sources (CSS vars, Tailwind config,
|
|
245
|
+
| **C** | NOT `dsExists` AND tokens found | Auto-generate `.morph/context/design-system.md` from ALL scanned token sources (CSS vars, Tailwind config, etc.). Merge tokens from multiple sources, preferring Tailwind/Theme config over raw CSS. If Step 0.2 produced `existing-ui-analysis.md`, cross-reference visual analysis with extracted tokens. Proceed to Step 1. |
|
|
257
246
|
| **D** | NOT `dsExists` AND NOT `cssTokensFound` | Greenfield project. Ask user for aesthetic direction + brand color using `AskUserQuestion` (same options as morph-init). Scaffold from template. Proceed to Step 1. |
|
|
258
247
|
|
|
259
248
|
**Case C — auto-generate from scanned tokens:**
|
|
@@ -267,7 +256,7 @@ Create `.morph/context/design-system.md` with these sections populated from scan
|
|
|
267
256
|
|
|
268
257
|
Print: `✓ Design system generated from [N] tokens — .morph/context/design-system.md`
|
|
269
258
|
|
|
270
|
-
> **Design system is mandatory** for UI features. The implementation gate (Phase
|
|
259
|
+
> **Design system is mandatory** for UI features. The implementation gate (Phase 7) will block if no design system exists.
|
|
271
260
|
|
|
272
261
|
## MANDATORY: Session Tasks
|
|
273
262
|
|
|
@@ -285,16 +274,18 @@ Check if active agents include `ui-designer`:
|
|
|
285
274
|
morph-spec state get $ARGUMENTS
|
|
286
275
|
```
|
|
287
276
|
|
|
288
|
-
If `ui-designer` is NOT in `activeAgents`, skip this phase and continue to Phase
|
|
277
|
+
If `ui-designer` is NOT in `activeAgents`, skip this phase and continue to Phase 3 (Design).
|
|
289
278
|
|
|
290
279
|
### Step 1.3: Trend Research
|
|
291
280
|
|
|
292
281
|
> **Purpose:** Before defining aesthetic direction, research current design trends relevant to this project's domain.
|
|
293
|
-
>
|
|
282
|
+
> Use Context7 MCP or web search for current design trends.
|
|
294
283
|
|
|
295
|
-
#### 1.3.1 —
|
|
284
|
+
#### 1.3.1 — Research current trends
|
|
296
285
|
|
|
297
|
-
|
|
286
|
+
> **MCP:** Use **WebSearch** to research current design trends for the detected domain (e.g., "{currentYear} UI design trends {detectedDomain}"). WebSearch provides real-time results that are more current than any static reference. If WebSearch is not available, use **Context7 MCP** to query UI library documentation for latest component patterns and best practices. If neither is available, rely on your training knowledge of current design trends.
|
|
287
|
+
|
|
288
|
+
Research current design trends relevant to the project's domain and stack. Identify 3-5 techniques that fit the project.
|
|
298
289
|
|
|
299
290
|
#### 1.3.2 — Detect project domain
|
|
300
291
|
|
|
@@ -343,8 +334,6 @@ Selected trends feed into Step 1.5 (Aesthetic Direction) and Step 4 (Deliverable
|
|
|
343
334
|
|
|
344
335
|
### Step 1.5: Design Thinking — Aesthetic Direction
|
|
345
336
|
|
|
346
|
-
> **Ref:** `framework/standards/frontend/design-system/aesthetic-direction.md`
|
|
347
|
-
|
|
348
337
|
**BEFORE collecting technical requirements**, define visual direction with 4 questions:
|
|
349
338
|
|
|
350
339
|
1. **Purpose**: What problem does it solve? Who uses it? What is the professional context?
|
|
@@ -352,16 +341,14 @@ Selected trends feed into Step 1.5 (Aesthetic Direction) and Step 4 (Deliverable
|
|
|
352
341
|
3. **Differentiation**: What is the 1 memorable element of this interface?
|
|
353
342
|
4. **Constraints**: Framework, performance budget, existing brand guidelines
|
|
354
343
|
|
|
355
|
-
**CRITICAL:** Commit to direction BEFORE technical specs. Document in `
|
|
344
|
+
**CRITICAL:** Commit to direction BEFORE technical specs. Document in `design-system.md`
|
|
356
345
|
in section `## Aesthetic Direction` (template available in the standard above).
|
|
357
346
|
|
|
358
347
|
#### Domain-Adaptive Patterns
|
|
359
348
|
|
|
360
349
|
After defining aesthetic direction, apply domain-specific pattern suggestions:
|
|
361
350
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
Based on the domain detected in Step 1.3.2, suggest patterns from the Domain Adaptation guide:
|
|
351
|
+
Based on the domain detected in Step 1.3.2, suggest domain-adaptive patterns:
|
|
365
352
|
|
|
366
353
|
| Domain | Preferred Directions | Key Patterns to Suggest |
|
|
367
354
|
|--------|---------------------|------------------------|
|
|
@@ -391,8 +378,7 @@ If the user's chosen direction conflicts with domain recommendations (e.g., Indu
|
|
|
391
378
|
|
|
392
379
|
Incorporate the trends selected in Step 1.3.4 into the aesthetic direction documentation:
|
|
393
380
|
|
|
394
|
-
- Add selected trends to `## Aesthetic Direction` in `
|
|
395
|
-
- Reference the specific implementation from `design-trends.md`
|
|
381
|
+
- Add selected trends to `## Aesthetic Direction` in `design-system.md`
|
|
396
382
|
- Document how each trend maps to the chosen direction
|
|
397
383
|
|
|
398
384
|
**Anti-patterns to avoid:**
|
|
@@ -422,16 +408,14 @@ Incorporate the trends selected in Step 1.3.4 into the aesthetic direction docum
|
|
|
422
408
|
|
|
423
409
|
Detect the stack from `.morph/config/config.json` and recommend the appropriate library:
|
|
424
410
|
|
|
425
|
-
**Blazor stack:**
|
|
426
|
-
- **Fluent UI Blazor** — dashboards, simple forms, AI components, Microsoft design language
|
|
427
|
-
- **MudBlazor** — advanced data grids, complex charts, material design
|
|
428
|
-
|
|
429
411
|
**Next.js stack:**
|
|
430
412
|
- **shadcn/ui + Radix** (recommended) — composable primitives, full control, Tailwind-native
|
|
431
413
|
- **MUI** — feature-rich, enterprise-grade, material design
|
|
432
414
|
|
|
433
415
|
**Document the decision as an ADR in `decisions.md`** with: context, options considered, decision, and rationale.
|
|
434
416
|
|
|
417
|
+
> **MCP:** After selecting the UI library, use **Context7 MCP** (`resolve-library-id` → `query-docs`) to fetch the library's latest component API (e.g., shadcn/ui primitives, Radix props, MUI component APIs). This ensures component specs in `components.md` reference real, current props — not outdated or hallucinated ones. If Context7 is not available, use **WebSearch** + **WebFetch** to check the official component documentation.
|
|
418
|
+
|
|
435
419
|
### Step 3.5: Visual Mockup (Playwright MCP)
|
|
436
420
|
|
|
437
421
|
> **Purpose:** Generate a real HTML preview using project design tokens before writing formal specs.
|
|
@@ -448,7 +432,7 @@ Create an HTML file that represents the main screen/layout using **real tokens f
|
|
|
448
432
|
- Include representative content (realistic text, placeholder images)
|
|
449
433
|
- All colors via CSS variables: `color: var(--color-primary)` not `color: #3b82f6`
|
|
450
434
|
|
|
451
|
-
**Save to:** `.morph/features/$ARGUMENTS/
|
|
435
|
+
**Save to:** `.morph/features/$ARGUMENTS/1-ui/mockup.html`
|
|
452
436
|
|
|
453
437
|
Example structure:
|
|
454
438
|
```html
|
|
@@ -491,7 +475,7 @@ Example structure:
|
|
|
491
475
|
|
|
492
476
|
**Navigate to the file:**
|
|
493
477
|
```
|
|
494
|
-
mcp__plugin_playwright_playwright__browser_navigate({ url: "file:///[ABSOLUTE_PATH_TO].morph/features/$ARGUMENTS/
|
|
478
|
+
mcp__plugin_playwright_playwright__browser_navigate({ url: "file:///[ABSOLUTE_PATH_TO].morph/features/$ARGUMENTS/1-ui/mockup.html" })
|
|
495
479
|
```
|
|
496
480
|
|
|
497
481
|
**Take screenshots at 3 breakpoints** (resize then screenshot for each):
|
|
@@ -499,19 +483,19 @@ mcp__plugin_playwright_playwright__browser_navigate({ url: "file:///[ABSOLUTE_PA
|
|
|
499
483
|
**Mobile (375px):**
|
|
500
484
|
```
|
|
501
485
|
mcp__plugin_playwright_playwright__browser_resize({ width: 375, height: 812 })
|
|
502
|
-
mcp__plugin_playwright_playwright__browser_take_screenshot({}) → save as .morph/features/$ARGUMENTS/
|
|
486
|
+
mcp__plugin_playwright_playwright__browser_take_screenshot({}) → save as .morph/features/$ARGUMENTS/1-ui/mockup-mobile.png
|
|
503
487
|
```
|
|
504
488
|
|
|
505
489
|
**Tablet (768px):**
|
|
506
490
|
```
|
|
507
491
|
mcp__plugin_playwright_playwright__browser_resize({ width: 768, height: 1024 })
|
|
508
|
-
mcp__plugin_playwright_playwright__browser_take_screenshot({}) → save as .morph/features/$ARGUMENTS/
|
|
492
|
+
mcp__plugin_playwright_playwright__browser_take_screenshot({}) → save as .morph/features/$ARGUMENTS/1-ui/mockup-tablet.png
|
|
509
493
|
```
|
|
510
494
|
|
|
511
495
|
**Desktop (1440px):**
|
|
512
496
|
```
|
|
513
497
|
mcp__plugin_playwright_playwright__browser_resize({ width: 1440, height: 900 })
|
|
514
|
-
mcp__plugin_playwright_playwright__browser_take_screenshot({}) → save as .morph/features/$ARGUMENTS/
|
|
498
|
+
mcp__plugin_playwright_playwright__browser_take_screenshot({}) → save as .morph/features/$ARGUMENTS/1-ui/mockup-desktop.png
|
|
515
499
|
```
|
|
516
500
|
|
|
517
501
|
#### 3.5.3 — Present and Iterate
|
|
@@ -523,7 +507,7 @@ mcp__plugin_playwright_playwright__browser_take_screenshot({}) → save as .morp
|
|
|
523
507
|
3. **Iterate:** Refine `mockup.html` → re-take screenshots → show updated previews
|
|
524
508
|
4. **Continue only when user approves** this visual direction
|
|
525
509
|
|
|
526
|
-
> **Note:** `
|
|
510
|
+
> **Note:** `mockups.md` (Step 4.2) continues to exist as the reference for states and interactions.
|
|
527
511
|
> The PNGs are the visual reference; the .md covers behavior and edge cases.
|
|
528
512
|
|
|
529
513
|
---
|
|
@@ -534,22 +518,22 @@ Create the following files in `.morph/features/$ARGUMENTS/`:
|
|
|
534
518
|
|
|
535
519
|
> **Use templates:** Use `morph-spec template render` to generate files from templates in `.morph/framework/templates/docs/`. Available templates: `ui-design-system`, `ui-mockups`, `ui-components`, `ui-flows`.
|
|
536
520
|
|
|
537
|
-
#### 4.1. `
|
|
521
|
+
#### 4.1. `design-system.md`
|
|
538
522
|
|
|
539
523
|
**If project-level design system exists (`.morph/context/design-system.md`):**
|
|
540
524
|
- Reference it in specs: "Uses project design system at .morph/context/design-system.md"
|
|
541
|
-
- Create `
|
|
525
|
+
- Create `design-system.md` only if there are feature-specific colors/components
|
|
542
526
|
|
|
543
527
|
**If it doesn't exist:**
|
|
544
528
|
- Create complete feature-level design system with:
|
|
545
|
-
- **Section `## Aesthetic Direction
|
|
529
|
+
- **Section `## Aesthetic Direction`**:
|
|
546
530
|
direction, font pair, color philosophy, motion intent, composition approach
|
|
547
531
|
- Color palette (primary, secondary, accent, semantic)
|
|
548
532
|
- Typography (heading scales, body text, code)
|
|
549
533
|
- Spacing and layout (grid, margins, paddings)
|
|
550
534
|
- Base components (buttons, inputs, cards)
|
|
551
535
|
|
|
552
|
-
#### 4.2. `
|
|
536
|
+
#### 4.2. `mockups.md`
|
|
553
537
|
|
|
554
538
|
ASCII wireframes + descriptions:
|
|
555
539
|
- General layout of each screen/page
|
|
@@ -557,15 +541,15 @@ ASCII wireframes + descriptions:
|
|
|
557
541
|
- Responsiveness (desktop, tablet, mobile)
|
|
558
542
|
- States (loading, error, empty, success)
|
|
559
543
|
|
|
560
|
-
#### 4.3. `
|
|
544
|
+
#### 4.3. `components.md`
|
|
561
545
|
|
|
562
|
-
Technical specs for
|
|
563
|
-
- Component to use (
|
|
546
|
+
Technical specs for UI library components:
|
|
547
|
+
- Component to use (Button, DataTable, etc.)
|
|
564
548
|
- Props and configurations
|
|
565
549
|
- Events and bindings
|
|
566
550
|
- Validations and states
|
|
567
551
|
|
|
568
|
-
#### 4.4. `
|
|
552
|
+
#### 4.4. `flows.md`
|
|
569
553
|
|
|
570
554
|
Complete user flows:
|
|
571
555
|
- User stories
|
|
@@ -577,7 +561,7 @@ Complete user flows:
|
|
|
577
561
|
|
|
578
562
|
**PAUSE - Before proceeding to accessibility:**
|
|
579
563
|
|
|
580
|
-
- [ ] Aesthetic direction defined and documented in `
|
|
564
|
+
- [ ] Aesthetic direction defined and documented in `design-system.md`?
|
|
581
565
|
- [ ] Font pair specified (not just Inter/Roboto for display)?
|
|
582
566
|
- [ ] Color philosophy: dominant + accent + rationale documented?
|
|
583
567
|
- [ ] Design system defined (project-level or feature-level)?
|
|
@@ -623,11 +607,11 @@ morph-spec state mark-output $ARGUMENTS ui-flows
|
|
|
623
607
|
|
|
624
608
|
## Generated Outputs
|
|
625
609
|
|
|
626
|
-
- `.morph/features/$ARGUMENTS/
|
|
627
|
-
- `.morph/features/$ARGUMENTS/
|
|
628
|
-
- `.morph/features/$ARGUMENTS/
|
|
629
|
-
- `.morph/features/$ARGUMENTS/
|
|
630
|
-
- `.morph/features/$ARGUMENTS/
|
|
610
|
+
- `.morph/features/$ARGUMENTS/1-ui/design-system.md`
|
|
611
|
+
- `.morph/features/$ARGUMENTS/1-ui/mockups.md`
|
|
612
|
+
- `.morph/features/$ARGUMENTS/1-ui/components.md`
|
|
613
|
+
- `.morph/features/$ARGUMENTS/1-ui/flows.md`
|
|
614
|
+
- `.morph/features/$ARGUMENTS/2-design/decisions.md` (updated with UI library ADR)
|
|
631
615
|
|
|
632
616
|
### Step 7: Validate Design with Frontend Review
|
|
633
617
|
|
|
@@ -682,19 +666,15 @@ Use `AskUserQuestion` to capture explicit approval before advancing:
|
|
|
682
666
|
|
|
683
667
|
## Phase Outputs
|
|
684
668
|
|
|
685
|
-
<!-- morph-outputs:uiux -->
|
|
686
|
-
| Output | Caminho |
|
|
687
|
-
|--------|---------|
|
|
688
|
-
| `uiDesignSystem` | `.morph/features/{feature}/
|
|
689
|
-
| `uiMockups` | `.morph/features/{feature}/
|
|
690
|
-
| `uiComponents` | `.morph/features/{feature}/
|
|
691
|
-
| `uiFlows` | `.morph/features/{feature}/
|
|
692
|
-
| `uiMockupHtml` | `.morph/features/{feature}/2-ui/mockup.html` |
|
|
693
|
-
| `uiMockupMobile` | `.morph/features/{feature}/2-ui/mockup-mobile.png` |
|
|
694
|
-
| `uiMockupTablet` | `.morph/features/{feature}/2-ui/mockup-tablet.png` |
|
|
695
|
-
| `uiMockupDesktop` | `.morph/features/{feature}/2-ui/mockup-desktop.png` |
|
|
669
|
+
<!-- morph-outputs:uiux -->
|
|
670
|
+
| Output | Caminho |
|
|
671
|
+
|--------|---------|
|
|
672
|
+
| `uiDesignSystem` | `.morph/features/{feature}/1-ui/design-system.md` |
|
|
673
|
+
| `uiMockups` | `.morph/features/{feature}/1-ui/mockups.md` |
|
|
674
|
+
| `uiComponents` | `.morph/features/{feature}/1-ui/components.md` |
|
|
675
|
+
| `uiFlows` | `.morph/features/{feature}/1-ui/flows.md` |
|
|
696
676
|
<!-- /morph-outputs -->
|
|
697
677
|
|
|
698
678
|
---
|
|
699
679
|
|
|
700
|
-
Continue automatically to Phase
|
|
680
|
+
Continue automatically to Phase 3 (Design) after approval.
|
|
@@ -4,7 +4,7 @@ description: Guided workflow for mid-implementation scope escalation — analyze
|
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: "[feature-name]"
|
|
6
6
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
7
|
-
cliVersion: "4.
|
|
7
|
+
cliVersion: "4.13.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Scope Escalation Workflow
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
"standards": ["coding.md", "ef-core.md"]
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
|
-
"id": "
|
|
23
|
-
"role": "
|
|
22
|
+
"id": "hangfire-orchestrator",
|
|
23
|
+
"role": "Background Jobs & Scheduling",
|
|
24
24
|
"domain": "backend",
|
|
25
|
-
"standards": ["coding.md"
|
|
25
|
+
"standards": ["coding.md"]
|
|
26
26
|
}
|
|
27
27
|
],
|
|
28
28
|
"deliverables": {
|
|
29
|
-
"dotnet-senior": "Application services, business logic, command/query handlers",
|
|
29
|
+
"dotnet-senior": "Application services, business logic, command/query handlers, API endpoints, DTOs",
|
|
30
30
|
"ef-modeler": "Entity models, DbContext, migrations",
|
|
31
|
-
"
|
|
31
|
+
"hangfire-orchestrator": "Background jobs, recurring tasks, job scheduling"
|
|
32
32
|
},
|
|
33
33
|
"estimatedParallelGain": "2-3x throughput vs sequential",
|
|
34
34
|
"agent_team": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
{
|
|
39
39
|
"id": "dotnet-senior",
|
|
40
40
|
"spawn_context": "standards/coding.md, standards/architecture/, contracts.cs, spec.md",
|
|
41
|
-
"task_scope": "backend tasks (domain logic, application services, EF Core, API endpoints, DTOs)"
|
|
41
|
+
"task_scope": "backend tasks (domain logic, application services, EF Core, API endpoints, DTOs, background jobs)"
|
|
42
42
|
}
|
|
43
43
|
],
|
|
44
44
|
"coordination_notes": "Single-domain squad — Agent Teams not required. Use subagents for parallelization.",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "frontend-only",
|
|
3
3
|
"name": "Frontend Squad",
|
|
4
|
-
"description": "Frontend-focused squad:
|
|
4
|
+
"description": "Frontend-focused squad: UI components + CSS + UX",
|
|
5
5
|
"parallel": true,
|
|
6
6
|
"coordination": "ui-designer",
|
|
7
7
|
"waitForAll": true,
|
|
@@ -10,24 +10,33 @@
|
|
|
10
10
|
"id": "ui-designer",
|
|
11
11
|
"role": "UI Design Lead",
|
|
12
12
|
"domain": "frontend",
|
|
13
|
-
"standards": [
|
|
13
|
+
"standards": [
|
|
14
|
+
"css-architecture.md",
|
|
15
|
+
"css-design-system.md"
|
|
16
|
+
]
|
|
14
17
|
},
|
|
15
18
|
{
|
|
16
|
-
"id": "
|
|
17
|
-
"role": "
|
|
19
|
+
"id": "nextjs-expert",
|
|
20
|
+
"role": "Frontend Developer",
|
|
18
21
|
"domain": "frontend",
|
|
19
|
-
"standards": [
|
|
22
|
+
"standards": [
|
|
23
|
+
"coding.md",
|
|
24
|
+
"nextjs-components.md"
|
|
25
|
+
]
|
|
20
26
|
},
|
|
21
27
|
{
|
|
22
28
|
"id": "css-specialist",
|
|
23
29
|
"role": "CSS/Design System Specialist",
|
|
24
30
|
"domain": "frontend",
|
|
25
|
-
"standards": [
|
|
31
|
+
"standards": [
|
|
32
|
+
"css-architecture.md",
|
|
33
|
+
"css-design-system.md"
|
|
34
|
+
]
|
|
26
35
|
}
|
|
27
36
|
],
|
|
28
37
|
"deliverables": {
|
|
29
38
|
"ui-designer": "Design system tokens, component specs, mockup annotations",
|
|
30
|
-
"
|
|
39
|
+
"nextjs-expert": "React components, pages, state management",
|
|
31
40
|
"css-specialist": "CSS modules, design system implementation, responsive layout"
|
|
32
41
|
},
|
|
33
42
|
"estimatedParallelGain": "2x throughput vs sequential",
|
|
@@ -38,7 +47,7 @@
|
|
|
38
47
|
{
|
|
39
48
|
"id": "ui-designer",
|
|
40
49
|
"spawn_context": "standards/css-architecture.md, standards/css-design-system.md, design-system.md, spec.md",
|
|
41
|
-
"task_scope": "frontend tasks (
|
|
50
|
+
"task_scope": "frontend tasks (UI components, CSS, design system implementation, responsive layout)"
|
|
42
51
|
}
|
|
43
52
|
],
|
|
44
53
|
"coordination_notes": "Single-domain squad — Agent Teams not required. Use subagents for parallelization.",
|