@polymorphism-tech/morph-spec 4.3.6 → 4.5.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/.morph/.morphversion +3 -3
- package/.morph/analytics/threads-log.jsonl +44 -9
- package/.morph/config/config.json +2 -3
- package/.morph/framework/standards/STANDARDS.json +812 -0
- package/.morph/{standards → framework/standards}/ai-agents/team-orchestration.md +3 -3
- package/.morph/framework/standards/integration/mcp/mcp-tools.md +384 -0
- package/.morph/{templates → framework/templates}/README.md +17 -17
- package/.morph/{templates → framework/templates}/REGISTRY.json +48 -233
- package/.morph/framework/templates/code/dotnet/contracts/contracts.cs.hbs +172 -0
- package/.morph/{templates → framework/templates}/context/CONTEXT-FEATURE.md +1 -1
- package/.morph/{templates → framework/templates}/context/CONTEXT.md +3 -3
- package/.morph/framework/templates/docs/clarifications.md +253 -0
- package/.morph/framework/templates/docs/onboarding.md +123 -0
- package/.morph/framework/templates/docs/schema-analysis.md +119 -0
- package/.morph/{templates → framework/templates}/docs/spec.md +149 -149
- package/.morph/framework/templates/docs/ui-components.md +124 -0
- package/.morph/framework/templates/docs/ui-design-system.md +76 -0
- package/.morph/framework/templates/docs/ui-flows.md +167 -0
- package/.morph/framework/templates/docs/ui-mockups.md +98 -0
- package/.morph/{templates → framework/templates}/examples/spec-examples.md +1 -1
- package/.morph/{templates → framework/templates}/infrastructure/github/README.md +11 -11
- package/.morph/{templates → framework/templates}/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +2 -2
- package/.morph/{templates → framework/templates}/meta-prompts/parallel-workers/parallel-worker.md +2 -2
- package/.morph/{templates → framework/templates}/meta-prompts/validators/pre-commit-validator.md +1 -1
- package/.morph/logs/tool-failures.log +51 -0
- package/.morph/memory/pre-compact-2026-02-22T17-01-01-658Z.json +16 -0
- package/.morph/state.json +1 -1
- package/CLAUDE.md +20 -119
- package/README.md +20 -18
- package/bin/detect-agents.js +1 -1
- package/bin/morph-spec.js +116 -266
- package/bin/task-manager.cjs +2 -2
- package/bin/validate.js +1 -1
- package/claude-plugin.json +14 -0
- package/docs/claude-alignment-report.md +137 -0
- package/docs/plans/2026-02-22-claude-docs-morph-alignment-analysis.md +512 -0
- package/docs/plans/2026-02-22-claude-settings.md +515 -0
- package/docs/plans/2026-02-22-morph-cc-alignment-impl.md +728 -0
- package/docs/plans/2026-02-22-morph-spec-next.md +478 -0
- package/docs/plans/2026-02-22-native-alignment-design.md +199 -0
- package/docs/plans/2026-02-22-native-alignment-impl.md +925 -0
- package/docs/plans/2026-02-22-native-enrichment-design.md +244 -0
- package/docs/plans/2026-02-22-native-enrichment.md +735 -0
- package/framework/CLAUDE.md +77 -0
- package/framework/commands/morph-apply.md +9 -9
- package/framework/commands/morph-archive.md +8 -8
- package/framework/commands/morph-infra.md +1 -1
- package/framework/commands/morph-proposal.md +9 -9
- package/framework/commands/morph-status.md +3 -3
- package/framework/commands/morph-troubleshoot.md +1 -1
- package/framework/hooks/README.md +201 -282
- package/framework/hooks/claude-code/notification/approval-reminder.js +52 -0
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +83 -0
- package/framework/hooks/claude-code/post-tool-use/handle-tool-failure.js +42 -0
- package/framework/hooks/claude-code/pre-compact/save-morph-context.js +61 -0
- package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +71 -0
- package/framework/hooks/claude-code/pre-tool-use/protect-readonly-files.js +58 -0
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +64 -0
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +94 -0
- package/framework/hooks/claude-code/statusline.py +239 -0
- package/framework/hooks/claude-code/statusline.sh +7 -0
- package/framework/hooks/claude-code/stop/validate-completion.js +88 -0
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +91 -0
- package/framework/hooks/shared/hook-response.js +45 -0
- package/framework/hooks/shared/phase-utils.js +129 -0
- package/framework/hooks/shared/state-reader.js +138 -0
- package/framework/hooks/shared/stdin-reader.js +26 -0
- package/framework/phases.json +145 -0
- package/framework/rules/csharp-standards.md +10 -0
- package/framework/rules/frontend-standards.md +14 -0
- package/framework/rules/infrastructure-standards.md +13 -0
- package/framework/rules/morph-workflow.md +86 -0
- package/framework/rules/testing-standards.md +11 -0
- package/framework/skills/level-0-meta/brainstorming.md +133 -0
- package/framework/skills/level-0-meta/code-review.md +12 -4
- package/framework/skills/level-0-meta/mcp-registry.json +207 -0
- package/framework/skills/level-0-meta/morph-checklist.md +9 -1
- package/framework/skills/level-0-meta/simulation-checklist.md +9 -1
- package/framework/skills/level-0-meta/tool-usage-guide.md +335 -0
- package/framework/skills/level-0-meta/verification-before-completion.md +145 -0
- package/framework/skills/level-1-workflows/morph-replicate.md +9 -1
- package/framework/skills/level-1-workflows/phase-clarify.md +65 -4
- package/framework/skills/level-1-workflows/phase-codebase-analysis.md +182 -0
- package/framework/skills/level-1-workflows/phase-design.md +342 -80
- package/framework/skills/level-1-workflows/phase-implement.md +254 -0
- package/framework/skills/level-1-workflows/phase-setup.md +76 -10
- package/framework/skills/level-1-workflows/phase-tasks.md +88 -7
- package/framework/skills/level-1-workflows/phase-uiux.md +95 -17
- package/framework/skills/level-2-domains/ai-agents/ai-system-architect.md +8 -1
- package/framework/skills/level-2-domains/architecture/po-pm-advisor.md +8 -1
- package/framework/skills/level-2-domains/architecture/prompt-engineer.md +8 -1
- package/framework/skills/level-2-domains/architecture/seo-growth-hacker.md +8 -1
- package/framework/skills/level-2-domains/architecture/standards-architect.md +11 -4
- package/framework/skills/level-2-domains/backend/api-designer.md +8 -1
- package/framework/skills/level-2-domains/backend/dotnet-senior.md +8 -1
- package/framework/skills/level-2-domains/backend/ef-modeler.md +8 -1
- package/framework/skills/level-2-domains/backend/hangfire-orchestrator.md +9 -2
- package/framework/skills/level-2-domains/backend/ms-agent-expert.md +8 -1
- package/framework/skills/level-2-domains/frontend/blazor-builder.md +8 -1
- package/framework/skills/level-2-domains/frontend/nextjs-expert.md +8 -1
- package/framework/skills/level-2-domains/frontend/ui-ux-designer.md +9 -2
- package/framework/skills/level-2-domains/infrastructure/azure-architect.md +8 -1
- package/framework/skills/level-2-domains/infrastructure/azure-deploy-specialist.md +8 -1
- package/framework/skills/level-2-domains/infrastructure/bicep-architect.md +8 -1
- package/framework/skills/level-2-domains/infrastructure/container-specialist.md +8 -1
- package/framework/skills/level-2-domains/infrastructure/devops-engineer.md +8 -1
- package/framework/skills/level-2-domains/integrations/asaas-financial.md +8 -1
- package/framework/skills/level-2-domains/integrations/azure-identity.md +8 -1
- package/framework/skills/level-2-domains/integrations/clerk-auth.md +8 -1
- package/framework/skills/level-2-domains/integrations/{hangfire-orchestrator.md → hangfire-integration.md} +8 -1
- package/framework/skills/level-2-domains/integrations/resend-email.md +8 -1
- package/framework/skills/level-2-domains/quality/code-analyzer.md +10 -3
- package/framework/skills/level-2-domains/quality/testing-specialist.md +8 -1
- package/framework/standards/STANDARDS.json +812 -0
- package/framework/standards/ai-agents/team-orchestration.md +3 -3
- package/framework/standards/frontend/nextjs/nextjs-patterns.md +17 -0
- package/framework/standards/integration/mcp/mcp-tools.md +384 -0
- package/framework/templates/README.md +17 -17
- package/framework/templates/REGISTRY.json +48 -233
- package/framework/templates/code/dotnet/contracts/contracts.cs.hbs +172 -0
- package/framework/templates/context/CONTEXT-FEATURE.md +1 -1
- package/framework/templates/context/CONTEXT.md +3 -3
- package/framework/templates/docs/clarifications.md +253 -0
- package/framework/templates/docs/onboarding.md +123 -0
- package/framework/templates/docs/schema-analysis.md +119 -0
- package/framework/templates/docs/spec.md +149 -149
- package/framework/templates/docs/ui-components.md +124 -0
- package/framework/templates/docs/ui-design-system.md +76 -0
- package/framework/templates/docs/ui-flows.md +167 -0
- package/framework/templates/docs/ui-mockups.md +98 -0
- package/framework/templates/docs/user-stories.md +34 -0
- package/framework/templates/examples/spec-examples.md +1 -1
- package/framework/templates/infrastructure/github/README.md +11 -11
- package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +2 -2
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +2 -2
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +1 -1
- package/framework/workflows/configs/express.json +45 -0
- package/framework/workflows/configs/spec-only.json +43 -0
- package/framework/workflows/docs/enforcement-pipeline.md +8 -8
- package/framework/workflows/docs/full-morph.md +3 -3
- package/package.json +3 -2
- package/scripts/generate-refs.js +336 -0
- package/scripts/generate-standards-registry.js +44 -0
- package/scripts/validate-real.mjs +255 -0
- package/src/commands/feature/create-story.js +362 -361
- package/src/commands/feature/shard-spec.js +225 -224
- package/src/commands/feature/sprint-status.js +1 -1
- package/src/commands/generation/generate-onboarding.js +169 -0
- package/src/commands/generation/generate.js +2 -2
- package/src/commands/mcp/mcp-setup.js +315 -0
- package/src/commands/project/changes.js +66 -0
- package/src/commands/project/checkpoint.js +209 -0
- package/src/commands/project/cost.js +179 -0
- package/src/commands/project/diff.js +278 -0
- package/src/commands/project/doctor.js +55 -7
- package/src/commands/project/init.js +318 -76
- package/src/commands/project/revert.js +173 -0
- package/src/commands/project/standards.js +80 -0
- package/src/commands/project/status.js +376 -0
- package/src/commands/project/update-agents.js +23 -0
- package/src/commands/project/update.js +63 -30
- package/src/commands/state/advance-phase.js +4 -3
- package/src/commands/state/state.js +10 -3
- package/src/commands/state/validate-phase.js +19 -2
- package/src/commands/templates/template-customize.js +4 -4
- package/src/commands/templates/template-render.js +1 -1
- package/src/commands/templates/template-show.js +1 -1
- package/src/commands/validation/validate-feature.js +359 -0
- package/src/core/orchestrator.js +3 -38
- package/src/core/paths/output-schema.js +135 -0
- package/src/core/state/state-manager.js +831 -592
- package/src/core/templates/template-registry.js +2 -2
- package/src/core/workflows/workflow-detector.js +17 -1
- package/src/lib/agents/micro-agent-factory.js +1 -1
- package/src/lib/context/context-bundler.js +2 -1
- package/src/lib/detectors/claude-config-detector.js +392 -0
- package/src/lib/detectors/conversation-analyzer.js +4 -4
- package/src/lib/detectors/design-system-detector.js +6 -5
- package/src/lib/detectors/standards-generator.js +2 -2
- package/src/lib/generators/context-generator.js +539 -538
- package/src/lib/generators/recap-generator.js +1 -1
- package/src/lib/generators/settings-generator.js +210 -0
- package/src/lib/hooks/hook-executor.js +1 -1
- package/src/lib/installers/mcp-installer.js +299 -0
- package/src/lib/learning/learning-system.js +3 -3
- package/src/lib/orchestration/team-orchestrator.js +1 -1
- package/src/lib/standards/standards-context-injector.js +7 -7
- package/src/lib/threads/thread-coordinator.js +1 -1
- package/src/lib/troubleshooting/troubleshoot-grep.js +1 -1
- package/src/lib/validators/contracts/contract-compliance-validator.js +274 -273
- package/src/lib/validators/design-system/design-system-validator.js +1 -1
- package/src/lib/validators/spec-validator.js +258 -258
- package/src/lib/validators/validation-runner.js +270 -269
- package/src/utils/agents-installer.js +206 -0
- package/src/utils/claude-settings-manager.js +258 -0
- package/src/utils/file-copier.js +1 -1
- package/src/utils/hooks-installer.js +354 -28
- package/src/utils/skills-installer.js +74 -0
- package/.morph/project/context/detection-log.md +0 -16
- package/.morph/project/standards/inferred.md +0 -59
- package/framework/hooks/agent-stop/validate-and-continue.js +0 -96
- package/framework/hooks/agent-stop/validate-checkpoints.js +0 -101
- package/framework/hooks/agent-stop/validate-tests.js +0 -109
- package/framework/hooks/agent-teams/dispatch.js +0 -67
- package/framework/hooks/agent-teams/phase-advanced.js +0 -80
- package/framework/hooks/agent-teams/task-completed.js +0 -76
- package/framework/hooks/agent-teams/teammate-idle.js +0 -70
- package/src/commands/agents/agents-fuse.js +0 -97
- package/src/commands/agents/micro-agent.js +0 -112
- package/src/commands/agents/spawn-team.js +0 -237
- package/src/commands/agents/squad-template.js +0 -146
- package/src/commands/analytics/analytics.js +0 -176
- package/src/commands/context/context-prime.js +0 -63
- package/src/commands/context/core-four.js +0 -54
- package/src/commands/generation/generate-context.js +0 -40
- package/src/commands/project/detect-agents.js +0 -207
- package/src/commands/project/detect-workflow.js +0 -174
- package/src/commands/threads/thread-template.js +0 -103
- package/src/commands/threads/threads.js +0 -261
- package/src/commands/utils/session-summary.js +0 -291
- package/src/llm/analyzer.js +0 -215
- package/src/llm/few-shot-examples.js +0 -216
- package/src/llm/project-config-schema.json +0 -188
- package/src/llm/prompt-builder.js +0 -96
- /package/.morph/{project/context → context}/README.md +0 -0
- /package/.morph/{config → framework}/agents.json +0 -0
- /package/.morph/{standards → framework/standards}/ai-agents/blazor-ui.md +0 -0
- /package/.morph/{standards → framework/standards}/ai-agents/production.md +0 -0
- /package/.morph/{standards → framework/standards}/ai-agents/setup.md +0 -0
- /package/.morph/{standards → framework/standards}/ai-agents/workflows.md +0 -0
- /package/.morph/{standards → framework/standards}/architecture/ddd/aggregates.md +0 -0
- /package/.morph/{standards → framework/standards}/architecture/ddd/entities.md +0 -0
- /package/.morph/{standards → framework/standards}/architecture/ddd/value-objects.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/api/minimal-api.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/api/rest.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/api/validation.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/authentication/passkeys.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/database/ef-core.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/database/migrations.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/database/postgresql/database.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/database/repository-patterns.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/database/vector-search-rag.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/dotnet/async.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/dotnet/core.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/dotnet/di.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/dotnet/program-cs-checklist.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/integrations/asaas/asaas-api.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/integrations/clerk/clerk-auth.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/integrations/hangfire/hangfire-jobs.md +0 -0
- /package/.morph/{standards → framework/standards}/backend/integrations/resend/resend-email.md +0 -0
- /package/.morph/{standards → framework/standards}/context/analytics.md +0 -0
- /package/.morph/{standards → framework/standards}/context/bundles.md +0 -0
- /package/.morph/{standards → framework/standards}/context/priming.md +0 -0
- /package/.morph/{standards → framework/standards}/core/architecture.md +0 -0
- /package/.morph/{standards → framework/standards}/core/coding.md +0 -0
- /package/.morph/{standards → framework/standards}/core/git-branching-strategy.md +0 -0
- /package/.morph/{standards → framework/standards}/core/git.md +0 -0
- /package/.morph/{standards → framework/standards}/core/testing.md +0 -0
- /package/.morph/{standards → framework/standards}/data/nosql/blob-storage.md +0 -0
- /package/.morph/{standards → framework/standards}/data/nosql/cache/redis.md +0 -0
- /package/.morph/{standards → framework/standards}/data/nosql/cosmos-db.md +0 -0
- /package/.morph/{standards → framework/standards}/data/vector-search/azure-ai-search.md +0 -0
- /package/.morph/{standards → framework/standards}/data/vector-search/rag-chunking.md +0 -0
- /package/.morph/{standards → framework/standards}/frontend/blazor/design-checklist.md +0 -0
- /package/.morph/{standards → framework/standards}/frontend/blazor/fluent-ui-setup.md +0 -0
- /package/.morph/{standards → framework/standards}/frontend/blazor/fluent-ui.md +0 -0
- /package/.morph/{standards → framework/standards}/frontend/blazor/html-conversion.md +0 -0
- /package/.morph/{standards → framework/standards}/frontend/blazor/lifecycle.md +0 -0
- /package/.morph/{standards → framework/standards}/frontend/blazor/pitfalls.md +0 -0
- /package/.morph/{standards → framework/standards}/frontend/blazor/state.md +0 -0
- /package/.morph/{standards → framework/standards}/frontend/design-system/animations.md +0 -0
- /package/.morph/{standards → framework/standards}/frontend/design-system/naming.md +0 -0
- /package/.morph/{standards → framework/standards}/frontend/nextjs/nextjs-patterns.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/azure/azure.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/azure/bicep/bicep-patterns.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/azure/devops/azure-devops-setup.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/azure/devops/local-development.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/azure/services/functions.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/azure/services/service-bus.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/azure/services/storage.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/docker/easypanel-deploy.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/supabase/mcp-setup.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/supabase/supabase-auth.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/supabase/supabase-pgvector.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/supabase/supabase-rls.md +0 -0
- /package/.morph/{standards → framework/standards}/infrastructure/supabase/supabase-storage.md +0 -0
- /package/.morph/{standards → framework/standards}/integration/api/graphql.md +0 -0
- /package/.morph/{standards → framework/standards}/integration/api/grpc.md +0 -0
- /package/.morph/{standards → framework/standards}/integration/api/rest-design.md +0 -0
- /package/.morph/{standards → framework/standards}/integration/event-driven/cqrs.md +0 -0
- /package/.morph/{standards → framework/standards}/integration/event-driven/event-sourcing.md +0 -0
- /package/.morph/{standards → framework/standards}/integration/event-driven/service-bus.md +0 -0
- /package/.morph/{standards → framework/standards}/observability/logging.md +0 -0
- /package/.morph/{standards → framework/standards}/observability/metrics.md +0 -0
- /package/.morph/{standards → framework/standards}/observability/monitoring.md +0 -0
- /package/.morph/{standards → framework/standards}/observability/tracing.md +0 -0
- /package/.morph/{standards → framework/standards}/workflows/parallel-execution.md +0 -0
- /package/.morph/{standards → framework/standards}/workflows/thread-management.md +0 -0
- /package/.morph/{templates → framework/templates}/.idea/morph-templates.xml +0 -0
- /package/.morph/{templates → framework/templates}/.vscode/morph-templates.code-snippets +0 -0
- /package/.morph/{templates → framework/templates}/IDE-SNIPPETS.md +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/backend/repository.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/backend/service.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/contracts/Commands.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/contracts/Entities.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/contracts/Queries.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/contracts/README.md +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/contracts/api-contracts.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/contracts/contracts.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/database/migration.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/frontend/component.razor +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/jobs/agent.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/jobs/job.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/dotnet/test.cs +0 -0
- /package/.morph/{templates → framework/templates}/code/sql/rls-policy.sql +0 -0
- /package/.morph/{templates → framework/templates}/code/sql/supabase-migration.sql +0 -0
- /package/.morph/{templates → framework/templates}/code/sql/supabase-migration.template.sql +0 -0
- /package/.morph/{templates → framework/templates}/code/typescript/contracts.ts +0 -0
- /package/.morph/{templates → framework/templates}/docs/proposal.md +0 -0
- /package/.morph/{templates → framework/templates}/examples/design-system-examples.md +0 -0
- /package/.morph/{templates → framework/templates}/feature/decisions.md +0 -0
- /package/.morph/{templates → framework/templates}/feature/recap.md +0 -0
- /package/.morph/{templates → framework/templates}/feature/tasks.md +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/Dockerfile.example +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/README.md +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/app-insights.bicep +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/app-service.bicep +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/container-app-env.bicep +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/container-app.bicep +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/deploy-checklist.md +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/deploy.ps1 +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/deploy.sh +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/key-vault.bicep +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/main.bicep +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/parameters.dev.json +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/parameters.prod.json +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/parameters.staging.json +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/sql-database.bicep +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/azure/storage.bicep +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/docker/Dockerfile.template +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/docker/docker-compose.template.yml +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/docker/dockerfile-api.dockerfile +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/docker/dockerfile-web.dockerfile +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/docker/easypanel.template.json +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/github/actions/docker-build-push/action.yml.hbs +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/github/actions/health-check/action.yml.hbs +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/github/workflows/deploy-easypanel.yml.hbs +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/github/workflows/docker-build-push.yml.hbs +0 -0
- /package/.morph/{templates → framework/templates}/infrastructure/github/workflows/dotnet-build.yml.hbs +0 -0
- /package/.morph/{templates → framework/templates}/integrations/asaas-client.cs +0 -0
- /package/.morph/{templates → framework/templates}/integrations/asaas-webhook.cs +0 -0
- /package/.morph/{templates → framework/templates}/integrations/azure-identity-config.cs +0 -0
- /package/.morph/{templates → framework/templates}/integrations/clerk-config.cs +0 -0
- /package/.morph/{templates → framework/templates}/meta-prompts/fusion/fusion-agent.md +0 -0
- /package/.morph/{templates → framework/templates}/meta-prompts/fusion/fusion-aggregator.md +0 -0
- /package/.morph/{templates → framework/templates}/meta-prompts/hops/hop-retry.md +0 -0
- /package/.morph/{templates → framework/templates}/meta-prompts/hops/hop-validation.md +0 -0
- /package/.morph/{templates → framework/templates}/meta-prompts/hops/hop-wrapper.md +0 -0
- /package/.morph/{templates → framework/templates}/meta-prompts/parallel-workers/parallel-coordinator.md +0 -0
- /package/.morph/{templates → framework/templates}/meta-prompts/squad-leaders/backend-squad.md +0 -0
- /package/.morph/{templates → framework/templates}/meta-prompts/squad-leaders/frontend-squad.md +0 -0
- /package/.morph/{templates → framework/templates}/meta-prompts/squad-leaders/squad-leader.md +0 -0
- /package/.morph/{templates → framework/templates}/meta-prompts/validators/checkpoint-validator.md +0 -0
- /package/.morph/{templates → framework/templates}/saas/subscription.cs +0 -0
- /package/.morph/{templates → framework/templates}/saas/tenant.cs +0 -0
- /package/.morph/{templates → framework/templates}/state.template.json +0 -0
- /package/.morph/{templates → framework/templates}/ui/FluentDesignTheme.cs +0 -0
- /package/.morph/{templates → framework/templates}/ui/MudTheme.cs +0 -0
- /package/.morph/{templates → framework/templates}/ui/design-system.css +0 -0
- /package/framework/hooks/{commit-msg → git/commit-msg}/conventional-commits.sh +0 -0
- /package/framework/hooks/{pre-commit → git/pre-commit}/agents.sh +0 -0
- /package/framework/hooks/{pre-commit → git/pre-commit}/orchestrator.sh +0 -0
- /package/framework/hooks/{pre-commit → git/pre-commit}/specs.sh +0 -0
- /package/framework/hooks/{pre-push → git/pre-push}/run-tests.sh +0 -0
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: phase-design
|
|
3
|
+
description: >
|
|
4
|
+
MORPH-SPEC Phase 2 (Design). Expands the approved proposal into spec.md, contracts.cs, decisions.md, and schema-analysis.md. Called by /morph-proposal after setup completes.
|
|
5
|
+
argument-hint: "[feature-name]"
|
|
6
|
+
user-invocable: false
|
|
7
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
8
|
+
---
|
|
9
|
+
|
|
1
10
|
# MORPH Design - FASE 2
|
|
2
11
|
|
|
3
12
|
> INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
|
|
@@ -10,6 +19,38 @@ Expanda a proposta em especificação técnica completa, contracts, decisões ar
|
|
|
10
19
|
- [ ] FASE 1.5 (UI/UX) concluída OU pulada (se não houver front-end)
|
|
11
20
|
- [ ] Proposta aprovada pelo usuário
|
|
12
21
|
|
|
22
|
+
## Ferramentas Recomendadas
|
|
23
|
+
|
|
24
|
+
> **Ref:** `framework/skills/level-0-meta/tool-usage-guide.md` para guia completo.
|
|
25
|
+
> **Ref:** `framework/standards/integration/mcp/mcp-tools.md` para referência MCP.
|
|
26
|
+
|
|
27
|
+
| Ação | Ferramenta | Alternativa |
|
|
28
|
+
|------|------------|-------------|
|
|
29
|
+
| Ler proposal + UI specs | **Read** output files | — |
|
|
30
|
+
| Obter schema do banco | **Supabase MCP** `list_tables()`, `get_table_schema()` | **Grep** queries + **Read** types |
|
|
31
|
+
| Obter relacionamentos de FK | **Supabase MCP** `get_relationships()` | **Grep** JOIN/FK no código |
|
|
32
|
+
| Obter políticas RLS | **Supabase MCP** `query()` com pg_policies | **Read** arquivos de políticas |
|
|
33
|
+
| Encontrar arquivos de query (fallback) | **Grep** `\.from\(` em `*.ts,*.tsx,*.js,*.cs` | — |
|
|
34
|
+
| Encontrar definições de tipo (fallback) | **Glob** `src/**/types/**/*.ts` ou `**/Entities/**/*.cs` | — |
|
|
35
|
+
| Ler arquivos de query/tipos (fallback) | **Read** cada arquivo encontrado | — |
|
|
36
|
+
| Pesquisar biblioteca para ADR | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
|
|
37
|
+
| Buscar padrões no código | **GitHub MCP** `search_code()` | **Grep** padrões no projeto |
|
|
38
|
+
| Renderizar template contracts.cs | **Bash** `npx morph-spec template render code/dotnet/contracts/contracts.cs ...` | — |
|
|
39
|
+
| Renderizar template spec.md | **Bash** `npx morph-spec template render docs/spec ...` | — |
|
|
40
|
+
| Renderizar template decisions.md | **Bash** `npx morph-spec template render docs/decisions ...` | — |
|
|
41
|
+
| Criar schema-analysis.md | **Write** no diretório de outputs | — |
|
|
42
|
+
| Atualizar state | **Bash** `npx morph-spec state mark-output ...` | — |
|
|
43
|
+
|
|
44
|
+
**MCPs desta fase:** Supabase (schema analysis — **PRIORITÁRIO**), Context7 (research), GitHub (code search).
|
|
45
|
+
|
|
46
|
+
**Anti-padrões:**
|
|
47
|
+
- ❌ Adivinhar nomes de campos sem verificar schema (use MCP ou Grep primeiro!)
|
|
48
|
+
- ❌ Task agent para ler um único arquivo spec (use Read direto)
|
|
49
|
+
- ❌ WebSearch para schema do banco (use Supabase MCP ou análise de código)
|
|
50
|
+
- ❌ Escrever contracts.cs do zero (use template render)
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
13
54
|
## Workflow
|
|
14
55
|
|
|
15
56
|
### Passo 1: Carregar Contexto e Standards
|
|
@@ -17,7 +58,7 @@ Expanda a proposta em especificação técnica completa, contracts, decisões ar
|
|
|
17
58
|
**Obtenha feature state e standards context:**
|
|
18
59
|
|
|
19
60
|
```bash
|
|
20
|
-
npx morph-spec state get
|
|
61
|
+
npx morph-spec state get $ARGUMENTS
|
|
21
62
|
```
|
|
22
63
|
|
|
23
64
|
Parse o JSON para obter `activeAgents`, então use standards context (já carregado na FASE 1):
|
|
@@ -25,24 +66,215 @@ Parse o JSON para obter `activeAgents`, então use standards context (já carreg
|
|
|
25
66
|
- Padrões já incluem project overrides + inferred learnings
|
|
26
67
|
|
|
27
68
|
**Leia outputs existentes:**
|
|
28
|
-
1. `.morph/
|
|
29
|
-
2. `.morph/
|
|
69
|
+
1. `.morph/features/$ARGUMENTS/0-proposal/proposal.md` - Proposta inicial
|
|
70
|
+
2. `.morph/features/$ARGUMENTS/2-ui/*.md` - UI/UX specs (se existirem)
|
|
30
71
|
|
|
31
72
|
**Use standards context ao gerar spec.md:**
|
|
32
73
|
- Architecture standards → guiam Technical Architecture section
|
|
33
74
|
- Coding standards → definem contracts.cs patterns
|
|
34
75
|
- Azure standards → determinam Infrastructure Requirements
|
|
35
76
|
|
|
36
|
-
### Passo 2:
|
|
77
|
+
### Passo 2: Analisar Código Existente (CRÍTICO - FAZER ANTES DE CONTRACTS!)
|
|
78
|
+
|
|
79
|
+
**⚠️ ATENÇÃO:** Este passo é OBRIGATÓRIO antes de gerar `contracts.cs`. Previne geração de DTOs com nomes de campos errados.
|
|
80
|
+
|
|
81
|
+
#### 2.1. Detectar Se Análise É Necessária
|
|
82
|
+
|
|
83
|
+
A análise de código é necessária se:
|
|
84
|
+
- Feature interage com banco de dados existente
|
|
85
|
+
- Feature usa APIs ou serviços existentes
|
|
86
|
+
- Projeto tem código frontend/backend que será integrado
|
|
87
|
+
|
|
88
|
+
**Pule este passo apenas se:**
|
|
89
|
+
- Feature é 100% nova (sem dependências em código existente)
|
|
90
|
+
- Não há banco de dados ou APIs envolvidas
|
|
91
|
+
|
|
92
|
+
#### 2.2. Tentar MCP Tools Primeiro (Preferencial)
|
|
93
|
+
|
|
94
|
+
**Se MCP Supabase disponível:**
|
|
95
|
+
|
|
96
|
+
```javascript
|
|
97
|
+
// Verificar se MCP está disponível (procure por ferramentas mcp__supabase__*)
|
|
98
|
+
// Se disponível, use para obter schema real:
|
|
99
|
+
|
|
100
|
+
// 1. Listar todas as tabelas
|
|
101
|
+
await mcp__supabase__list_tables();
|
|
102
|
+
|
|
103
|
+
// 2. Para cada tabela relevante, obter schema completo
|
|
104
|
+
await mcp__supabase__get_table_schema({ table: 'leads' });
|
|
105
|
+
await mcp__supabase__get_table_schema({ table: 'users' });
|
|
106
|
+
|
|
107
|
+
// 3. Obter relacionamentos
|
|
108
|
+
await mcp__supabase__get_relationships({ table: 'leads' });
|
|
109
|
+
|
|
110
|
+
// 4. Documentar findings em SCHEMA-ANALYSIS.md
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Se MCP Database/ORM disponível:**
|
|
114
|
+
- Use ferramentas MCP equivalentes para PostgreSQL, MySQL, EF Core, etc.
|
|
115
|
+
- Obtenha schema diretamente do banco
|
|
116
|
+
|
|
117
|
+
#### 2.3. Fallback: Análise Manual de Código
|
|
118
|
+
|
|
119
|
+
**Se MCP não disponível, use análise estática:**
|
|
120
|
+
|
|
121
|
+
**Passo A: Encontrar Queries no Código**
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Use Grep tool para encontrar todas as queries:
|
|
125
|
+
pattern: "\.from\(|\.select\(|SELECT |supabase\.|context\.|dbContext\.|ef\.Database\."
|
|
126
|
+
type: "ts,tsx,js,jsx,cs"
|
|
127
|
+
output_mode: "files_with_matches"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Passo B: Ler Arquivos de Query**
|
|
131
|
+
|
|
132
|
+
Para cada arquivo encontrado, use Read tool para extrair:
|
|
133
|
+
- **Nomes de tabelas:** `from('leads')`, `DbSet<Lead>`, `FROM leads`
|
|
134
|
+
- **Nomes de colunas:** `.select('fullname, phonenumber')`, `l.FullName`, `SELECT full_name`
|
|
135
|
+
- **Tipos de dados:** TypeScript interfaces, C# DTOs, column types
|
|
136
|
+
- **Relacionamentos:** JOIN clauses, navigation properties, foreign keys
|
|
137
|
+
|
|
138
|
+
**Passo C: Encontrar Type Definitions**
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# TypeScript/JavaScript projects:
|
|
142
|
+
Glob: "src/**/types/**/*.ts"
|
|
143
|
+
Glob: "src/**/*.d.ts"
|
|
144
|
+
Glob: "src/**/interfaces/*.ts"
|
|
145
|
+
|
|
146
|
+
# .NET projects:
|
|
147
|
+
Glob: "**/*Dto.cs"
|
|
148
|
+
Glob: "**/Entities/**/*.cs"
|
|
149
|
+
Glob: "**/Models/**/*.cs"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Leia cada arquivo e mapeie:
|
|
153
|
+
- Interface/Type → Database Table
|
|
154
|
+
- Property names → Column names
|
|
155
|
+
- Data types → SQL types
|
|
156
|
+
|
|
157
|
+
**Passo D: Inferir Schema Real**
|
|
158
|
+
|
|
159
|
+
Com base nos arquivos lidos, criar um mapa:
|
|
160
|
+
|
|
161
|
+
```markdown
|
|
162
|
+
| Frontend/Code | Database | Type | Notes |
|
|
163
|
+
|--------------|----------|------|-------|
|
|
164
|
+
| user.name | users.fullname | string | MISMATCH! |
|
|
165
|
+
| lead.phone | leads.phonenumber | string | MISMATCH! |
|
|
166
|
+
| order.metadata | orders.metadata | JSONB | Complex type |
|
|
167
|
+
| user.orders | users → orders (1:N) | relation | Foreign key: orders.user_id |
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### 2.4. Criar SCHEMA-ANALYSIS.md
|
|
171
|
+
|
|
172
|
+
Documente os findings em `.morph/features/$ARGUMENTS/1-design/schema-analysis.md`:
|
|
173
|
+
|
|
174
|
+
```markdown
|
|
175
|
+
# Schema Analysis - {Feature Name}
|
|
176
|
+
|
|
177
|
+
**Date:** {DATE}
|
|
178
|
+
**Method:** {MCP Supabase / Manual Code Analysis}
|
|
179
|
+
|
|
180
|
+
## Tables Analyzed
|
|
181
|
+
|
|
182
|
+
### Table: leads
|
|
183
|
+
|
|
184
|
+
**Source:**
|
|
185
|
+
- MCP: supabase.list_tables()
|
|
186
|
+
- Code: src/lib/database/queries.ts
|
|
187
|
+
|
|
188
|
+
**Columns:**
|
|
189
|
+
| Column Name | Type | Nullable | Default | Notes |
|
|
190
|
+
|------------|------|----------|---------|-------|
|
|
191
|
+
| id | uuid | NO | gen_random_uuid() | Primary key |
|
|
192
|
+
| fullname | varchar(255) | NO | - | NOT 'name'! |
|
|
193
|
+
| phonenumber | varchar(20) | YES | - | NOT 'phone'! |
|
|
194
|
+
| metadata | jsonb | YES | {} | Complex object |
|
|
195
|
+
| created_at | timestamptz | NO | now() | Auto-generated |
|
|
196
|
+
| user_id | uuid | YES | - | FK to users table |
|
|
197
|
+
|
|
198
|
+
**Relationships:**
|
|
199
|
+
- leads.user_id → users.id (N:1)
|
|
200
|
+
- leads.id ← roulette_spins.lead_id (1:N)
|
|
201
|
+
|
|
202
|
+
**Indexes:**
|
|
203
|
+
- PRIMARY KEY (id)
|
|
204
|
+
- INDEX idx_leads_user_id ON (user_id)
|
|
205
|
+
|
|
206
|
+
### Table: users
|
|
207
|
+
{Repetir para cada tabela}
|
|
37
208
|
|
|
38
|
-
|
|
209
|
+
## ⚠️ CRITICAL FINDINGS
|
|
39
210
|
|
|
40
|
-
|
|
211
|
+
**Field Name Mismatches (MUST FIX):**
|
|
212
|
+
- ❌ Use `fullname`, NOT `name` (column doesn't exist!)
|
|
213
|
+
- ❌ Use `phonenumber`, NOT `phone` (column doesn't exist!)
|
|
214
|
+
|
|
215
|
+
**Type Mismatches:**
|
|
216
|
+
- ⚠️ `metadata` is JSONB, not `Record<string, string>` (use proper type)
|
|
217
|
+
|
|
218
|
+
**Relationship Corrections:**
|
|
219
|
+
- ✅ Lead → User is N:1 (NOT 1:1)
|
|
220
|
+
- ✅ Lead → RouletteSpins is 1:N (NOT 1:1)
|
|
221
|
+
|
|
222
|
+
## Recommendations for contracts.cs
|
|
223
|
+
|
|
224
|
+
Based on real schema, DTOs should use:
|
|
225
|
+
\`\`\`csharp
|
|
226
|
+
public record LeadDto(
|
|
227
|
+
Guid Id,
|
|
228
|
+
string Fullname, // NOT 'Name'!
|
|
229
|
+
string? Phonenumber, // NOT 'Phone'! Nullable!
|
|
230
|
+
JsonObject? Metadata, // NOT Record<string,string>!
|
|
231
|
+
Guid? UserId, // Nullable FK
|
|
232
|
+
DateTime CreatedAt
|
|
233
|
+
);
|
|
234
|
+
\`\`\`
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
#### 2.5. CHECKPOINT OBRIGATÓRIO: Revisar Schema Analysis
|
|
238
|
+
|
|
239
|
+
**⏸️ PAUSE - Validar findings antes de continuar:**
|
|
240
|
+
|
|
241
|
+
Apresente ao usuário:
|
|
242
|
+
- [ ] Analisei {N} arquivos de código
|
|
243
|
+
- [ ] Identifiquei {N} tabelas: {lista}
|
|
244
|
+
- [ ] Encontrei {N} field name mismatches
|
|
245
|
+
- [ ] Encontrei {N} type mismatches
|
|
246
|
+
- [ ] Mapeei {N} relacionamentos
|
|
247
|
+
- [ ] Criei `schema-analysis.md` com todos os findings
|
|
248
|
+
|
|
249
|
+
**Perguntas ao usuário:**
|
|
250
|
+
1. "O schema analysis está correto?"
|
|
251
|
+
2. "Encontrei field mismatches (fullname vs name). Confirma?"
|
|
252
|
+
3. "Posso prosseguir para gerar contracts.cs com base nesse schema real?"
|
|
253
|
+
|
|
254
|
+
**❌ Se usuário responder "Não" ou encontrar erros:**
|
|
255
|
+
→ VOLTAR e revisar análise
|
|
256
|
+
→ Corrigir schema-analysis.md
|
|
257
|
+
→ Re-apresentar para aprovação
|
|
258
|
+
|
|
259
|
+
**✅ Se usuário aprovar:**
|
|
260
|
+
→ Prosseguir para Passo 3 (Gerar spec.md)
|
|
261
|
+
|
|
262
|
+
#### 2.6. Atualizar State
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
npx morph-spec state mark-output $ARGUMENTS schema-analysis
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Passo 3: Gerar `spec.md`
|
|
269
|
+
|
|
270
|
+
Crie `.morph/features/$ARGUMENTS/1-design/spec.md` com:
|
|
271
|
+
|
|
272
|
+
#### 3.1. Overview
|
|
41
273
|
- **Objetivo:** Resumo de 1-2 parágrafos
|
|
42
274
|
- **Usuários afetados:** Quem vai usar?
|
|
43
275
|
- **Problema resolvido:** Qual dor/necessidade?
|
|
44
276
|
|
|
45
|
-
####
|
|
277
|
+
#### 3.2. Functional Requirements
|
|
46
278
|
Lista detalhada de requisitos funcionais:
|
|
47
279
|
```markdown
|
|
48
280
|
### FR001: {Requisito}
|
|
@@ -53,24 +285,24 @@ Lista detalhada de requisitos funcionais:
|
|
|
53
285
|
**Priority:** High/Medium/Low
|
|
54
286
|
```
|
|
55
287
|
|
|
56
|
-
####
|
|
288
|
+
#### 3.3. Non-Functional Requirements
|
|
57
289
|
- Performance (tempos de resposta esperados)
|
|
58
290
|
- Segurança (autenticação, autorização)
|
|
59
291
|
- Escalabilidade (volume de dados/usuários)
|
|
60
292
|
- Disponibilidade (uptime esperado)
|
|
61
293
|
|
|
62
|
-
####
|
|
294
|
+
#### 3.4. Technical Architecture
|
|
63
295
|
- **Camadas:** (Presentation, Application, Domain, Infrastructure)
|
|
64
296
|
- **Patterns:** (Repository, CQRS, DI, etc.)
|
|
65
297
|
- **Dependências:** Bibliotecas/serviços externos necessários
|
|
66
298
|
|
|
67
|
-
####
|
|
299
|
+
#### 3.5. Data Model
|
|
68
300
|
- Entities principais
|
|
69
301
|
- Relacionamentos (1:1, 1:N, N:N)
|
|
70
302
|
- Campos obrigatórios vs opcionais
|
|
71
303
|
- Validações de negócio
|
|
72
304
|
|
|
73
|
-
####
|
|
305
|
+
#### 3.6. Infrastructure Requirements
|
|
74
306
|
Se houver recursos Azure:
|
|
75
307
|
- Banco de dados (Azure SQL, Cosmos DB)
|
|
76
308
|
- Storage (Blob Storage)
|
|
@@ -79,87 +311,91 @@ Se houver recursos Azure:
|
|
|
79
311
|
|
|
80
312
|
**SEMPRE usar Bicep para infra!**
|
|
81
313
|
|
|
82
|
-
### Passo
|
|
314
|
+
### Passo 4: Gerar `contracts.cs` (BASEADO NO SCHEMA REAL!)
|
|
83
315
|
|
|
84
|
-
|
|
316
|
+
**⚠️ IMPORTANTE:** Use `schema-analysis.md` (do Passo 2) para gerar DTOs corretos!
|
|
85
317
|
|
|
86
|
-
|
|
87
|
-
// Interfaces, DTOs, Enums, Value Objects
|
|
318
|
+
**Renderizar template:**
|
|
88
319
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
320
|
+
```bash
|
|
321
|
+
# Use o template de contracts com dados do schema-analysis.md:
|
|
322
|
+
npx morph-spec template render \
|
|
323
|
+
code/dotnet/contracts/contracts.cs \
|
|
324
|
+
.morph/features/$ARGUMENTS/1-design/contracts.cs \
|
|
325
|
+
'{
|
|
326
|
+
"FEATURE_NAME": "$ARGUMENTS",
|
|
327
|
+
"NAMESPACE": "{ProjectNamespace}",
|
|
328
|
+
"dtos": [...], # Extrair de schema-analysis.md
|
|
329
|
+
"interfaces": [...],
|
|
330
|
+
"enums": [...],
|
|
331
|
+
"valueObjects": [...]
|
|
332
|
+
}'
|
|
333
|
+
```
|
|
96
334
|
|
|
97
|
-
|
|
98
|
-
Guid Id,
|
|
99
|
-
string Name,
|
|
100
|
-
DateTime Date,
|
|
101
|
-
DateTime CreatedAt
|
|
102
|
-
);
|
|
335
|
+
**OU use Read tool para ler template:**
|
|
103
336
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
{
|
|
114
|
-
|
|
115
|
-
Active,
|
|
116
|
-
Completed
|
|
117
|
-
}
|
|
337
|
+
```bash
|
|
338
|
+
# Leia o template base:
|
|
339
|
+
Read: .morph/framework/templates/code/dotnet/contracts/contracts.cs.hbs
|
|
340
|
+
|
|
341
|
+
# Preencha manualmente usando dados de schema-analysis.md
|
|
342
|
+
# Template contém placeholders para:
|
|
343
|
+
# - {{FEATURE_NAME_PASCAL}}
|
|
344
|
+
# - {{NAMESPACE}}
|
|
345
|
+
# - {{#each dtos}}...{{/each}}
|
|
346
|
+
# - {{#each interfaces}}...{{/each}}
|
|
347
|
+
# - {{#each enums}}...{{/each}}
|
|
118
348
|
```
|
|
119
349
|
|
|
120
|
-
**Padrões obrigatórios:**
|
|
350
|
+
**Padrões obrigatórios (já incluídos no template):**
|
|
121
351
|
- Records para DTOs (immutable)
|
|
122
352
|
- Interfaces para serviços
|
|
123
353
|
- CancellationToken em métodos async
|
|
124
354
|
- Nullable reference types habilitados
|
|
355
|
+
- **USAR NOMES DE CAMPOS REAIS DO SCHEMA** (NÃO assumir!)
|
|
356
|
+
- XML documentation comments
|
|
357
|
+
- Value objects para complex types
|
|
125
358
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
## ADR-001: {Decisão Arquitetural}
|
|
134
|
-
|
|
135
|
-
**Status:** Proposed/Accepted/Deprecated
|
|
136
|
-
|
|
137
|
-
**Context:**
|
|
138
|
-
{Por que esta decisão foi necessária}
|
|
139
|
-
|
|
140
|
-
**Decision:**
|
|
141
|
-
{O que foi decidido}
|
|
359
|
+
**⚠️ CHECKPOINT: Verificar contra schema-analysis.md**
|
|
360
|
+
- [ ] Todos os field names correspondem ao schema real?
|
|
361
|
+
- [ ] Tipos de dados corretos (JSONB → JsonObject, não string)?
|
|
362
|
+
- [ ] Nullability correta (campo opcional no banco → nullable no DTO)?
|
|
363
|
+
- [ ] Relacionamentos mapeados corretamente?
|
|
364
|
+
- [ ] Template foi renderizado corretamente?
|
|
142
365
|
|
|
143
|
-
|
|
144
|
-
**Pros:**
|
|
145
|
-
- Pro 1
|
|
366
|
+
### Passo 5: Iniciar `decisions.md`
|
|
146
367
|
|
|
147
|
-
**
|
|
148
|
-
- Con 1
|
|
368
|
+
**Renderizar template:**
|
|
149
369
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
370
|
+
```bash
|
|
371
|
+
# Use o template de decisions:
|
|
372
|
+
Read: .morph/framework/templates/feature/decisions.md
|
|
373
|
+
|
|
374
|
+
# OU renderize via CLI:
|
|
375
|
+
npx morph-spec template render \
|
|
376
|
+
feature/decisions \
|
|
377
|
+
.morph/features/$ARGUMENTS/1-design/decisions.md \
|
|
378
|
+
'{
|
|
379
|
+
"FEATURE_NAME": "$ARGUMENTS",
|
|
380
|
+
"DATE": "{{DATE}}",
|
|
381
|
+
"decisions": []
|
|
382
|
+
}'
|
|
154
383
|
```
|
|
155
384
|
|
|
385
|
+
**Template contém estrutura para ADRs (Architecture Decision Records):**
|
|
386
|
+
- Status, Context, Decision, Consequences
|
|
387
|
+
- Pros/Cons analysis
|
|
388
|
+
- Alternatives Considered section
|
|
389
|
+
- Date tracking
|
|
390
|
+
|
|
156
391
|
**ADRs obrigatórios:**
|
|
157
392
|
- Escolha de biblioteca UI (se FASE 1.5 executou)
|
|
158
393
|
- Padrões arquiteturais (CQRS, Repository, etc.)
|
|
159
394
|
- Recursos Azure (se houver infra)
|
|
160
395
|
- Integrações externas (APIs, webhooks, etc.)
|
|
396
|
+
- Análise de custos (se houver recursos pagos)
|
|
161
397
|
|
|
162
|
-
### Passo
|
|
398
|
+
### Passo 6: Estimar Custos
|
|
163
399
|
|
|
164
400
|
Se houver recursos Azure na spec:
|
|
165
401
|
|
|
@@ -171,24 +407,26 @@ Se houver recursos Azure na spec:
|
|
|
171
407
|
Documente custos em `decisions.md` e atualize state:
|
|
172
408
|
|
|
173
409
|
```bash
|
|
174
|
-
npx morph-spec state set
|
|
175
|
-
npx morph-spec state set
|
|
410
|
+
npx morph-spec state set $ARGUMENTS costs.estimated {X.XX}
|
|
411
|
+
npx morph-spec state set $ARGUMENTS costs.approved {true/false}
|
|
176
412
|
```
|
|
177
413
|
|
|
178
|
-
### Passo
|
|
414
|
+
### Passo 7: Atualizar State
|
|
179
415
|
|
|
180
416
|
```bash
|
|
181
|
-
npx morph-spec state set
|
|
182
|
-
npx morph-spec state mark-output
|
|
183
|
-
npx morph-spec state mark-output
|
|
184
|
-
npx morph-spec state mark-output
|
|
417
|
+
npx morph-spec state set $ARGUMENTS phase design
|
|
418
|
+
npx morph-spec state mark-output $ARGUMENTS schema-analysis
|
|
419
|
+
npx morph-spec state mark-output $ARGUMENTS spec
|
|
420
|
+
npx morph-spec state mark-output $ARGUMENTS contracts
|
|
421
|
+
npx morph-spec state mark-output $ARGUMENTS decisions
|
|
185
422
|
```
|
|
186
423
|
|
|
187
424
|
## Outputs Gerados
|
|
188
425
|
|
|
189
|
-
- `.morph/
|
|
190
|
-
- `.morph/
|
|
191
|
-
- `.morph/
|
|
426
|
+
- `.morph/features/$ARGUMENTS/1-design/schema-analysis.md` - **NOVO!** Análise do schema real
|
|
427
|
+
- `.morph/features/$ARGUMENTS/1-design/spec.md` - Especificação técnica completa
|
|
428
|
+
- `.morph/features/$ARGUMENTS/1-design/contracts.cs` - Interfaces, DTOs, Enums (baseados no schema real!)
|
|
429
|
+
- `.morph/features/$ARGUMENTS/1-design/decisions.md` - ADRs (novo ou atualizado)
|
|
192
430
|
- State atualizado com custos estimados
|
|
193
431
|
|
|
194
432
|
## PAUSA OBRIGATÓRIA
|
|
@@ -210,4 +448,28 @@ Apresente ao usuário 3 ações sugeridas:
|
|
|
210
448
|
|
|
211
449
|
---
|
|
212
450
|
|
|
213
|
-
|
|
451
|
+
## Integração com Superpowers
|
|
452
|
+
|
|
453
|
+
> Disponível quando o plugin `superpowers` está instalado.
|
|
454
|
+
|
|
455
|
+
| Skill | Quando Usar | Invocação |
|
|
456
|
+
|-------|-------------|-----------|
|
|
457
|
+
| `writing-plans` | Após spec aprovado, para estruturar abordagem de implementação | `Skill(superpowers:writing-plans)` |
|
|
458
|
+
| `brainstorming` | Para explorar alternativas de arquitetura (use morph-spec version) | Use `brainstorming` (morph-spec version) |
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
## Outputs desta Fase
|
|
463
|
+
|
|
464
|
+
<!-- morph:outputs:design -->
|
|
465
|
+
| Output | Caminho |
|
|
466
|
+
|--------|---------|
|
|
467
|
+
| `schemaAnalysis` | `.morph/features/{feature}/1-design/schema-analysis.md` |
|
|
468
|
+
| `spec` | `.morph/features/{feature}/1-design/spec.md` |
|
|
469
|
+
| `contracts` | `.morph/features/{feature}/1-design/contracts.cs` |
|
|
470
|
+
| `decisions` | `.morph/features/{feature}/1-design/decisions.md` |
|
|
471
|
+
<!-- /morph:outputs -->
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
Continuar automaticamente para FASE 3 (Clarify) após aprovação.
|