@polymorphism-tech/morph-spec 3.2.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +352 -7
- package/README.md +1 -14
- package/bin/detect-agents.js +1 -1
- package/bin/morph-spec.js +122 -34
- package/bin/validate.js +1 -1
- package/docs/getting-started.md +0 -5
- package/docs/v3.0/AGENTS.md +521 -0
- package/docs/v3.0/ANALYSIS.md +555 -0
- package/docs/v3.0/ARCHITECTURE.md +436 -0
- package/docs/v3.0/EXECUTION-FLOW.md +1304 -0
- package/docs/v3.0/FEATURES.md +688 -0
- package/docs/v3.0/README.md +231 -0
- package/docs/v3.0/ROADMAP.md +801 -0
- package/docs/validation-checklist.md +0 -1
- package/package.json +1 -1
- package/src/commands/agents/index.js +4 -0
- package/src/commands/{spawn-team.js → agents/spawn-team.js} +172 -172
- package/src/commands/{create-story.js → feature/create-story.js} +357 -354
- package/src/commands/feature/index.js +6 -0
- package/src/commands/{shard-spec.js → feature/shard-spec.js} +2 -2
- package/src/commands/{sprint-status.js → feature/sprint-status.js} +1 -1
- package/src/commands/{generate-context.js → generation/generate-context.js} +40 -40
- package/src/commands/{generate.js → generation/generate.js} +4 -4
- package/src/commands/generation/index.js +5 -0
- package/src/commands/index.js +16 -0
- package/src/commands/{capture-pattern.js → learning/capture-pattern.js} +121 -121
- package/src/commands/learning/index.js +5 -0
- package/src/commands/{detect-agents.js → project/detect-agents.js} +178 -178
- package/src/commands/project/detect-workflow.js +174 -0
- package/src/commands/{detect.js → project/detect.js} +104 -104
- package/src/commands/{doctor.js → project/doctor.js} +356 -356
- package/src/commands/project/index.js +10 -0
- package/src/commands/{init.js → project/init.js} +305 -295
- package/src/commands/{sync.js → project/sync.js} +167 -167
- package/src/commands/{update.js → project/update.js} +240 -240
- package/src/commands/{advance-phase.js → state/advance-phase.js} +416 -357
- package/src/commands/{approve.js → state/approve.js} +221 -221
- package/src/commands/state/index.js +8 -0
- package/src/commands/{rollback-phase.js → state/rollback-phase.js} +185 -185
- package/src/commands/{state.js → state/state.js} +334 -334
- package/src/commands/{validate-phase.js → state/validate-phase.js} +221 -221
- package/src/commands/tasks/index.js +4 -0
- package/src/commands/{task.js → tasks/task.js} +78 -78
- package/src/commands/templates/index.js +8 -0
- package/src/commands/templates/template-customize.js +101 -0
- package/src/commands/templates/template-list.js +128 -0
- package/src/commands/templates/template-render.js +95 -0
- package/src/commands/templates/template-show.js +131 -0
- package/src/commands/templates/template-validate.js +91 -0
- package/src/commands/utils/index.js +7 -0
- package/src/commands/{session-summary.js → utils/session-summary.js} +291 -291
- package/src/commands/{troubleshoot.js → utils/troubleshoot.js} +222 -222
- package/src/commands/{analyze-blazor-concurrency.js → validation/analyze-blazor-concurrency.js} +193 -193
- package/src/commands/validation/index.js +8 -0
- package/src/commands/{lint-fluent.js → validation/lint-fluent.js} +352 -352
- package/src/commands/{validate-blazor-state.js → validation/validate-blazor-state.js} +210 -210
- package/src/commands/{validate-blazor.js → validation/validate-blazor.js} +156 -156
- package/src/commands/{validate-css.js → validation/validate-css.js} +84 -84
- package/src/core/index.js +10 -0
- package/src/core/registry/command-registry.js +302 -0
- package/src/core/registry/index.js +8 -0
- package/src/core/registry/validator-registry.js +204 -0
- package/src/core/state/index.js +8 -0
- package/src/{lib → core/state}/phase-state-machine.js +214 -214
- package/src/{lib → core/state}/state-manager.js +572 -534
- package/src/core/templates/index.js +9 -0
- package/src/core/templates/template-registry.js +335 -0
- package/src/core/templates/template-renderer.js +477 -0
- package/src/core/templates/template-validator.js +296 -0
- package/src/core/workflows/index.js +7 -0
- package/src/core/workflows/workflow-detector.js +354 -0
- package/src/lib/{complexity-analyzer.js → analysis/complexity-analyzer.js} +441 -441
- package/src/lib/analysis/index.js +7 -0
- package/src/lib/{checkpoint-hooks.js → checkpoints/checkpoint-hooks.js} +258 -258
- package/src/lib/checkpoints/index.js +7 -0
- package/src/lib/detectors/config-detector.js +223 -223
- package/src/lib/detectors/conversation-analyzer.js +163 -163
- package/src/lib/{design-system-detector.js → detectors/design-system-detector.js} +187 -187
- package/src/lib/detectors/index.js +87 -84
- package/src/lib/detectors/standards-generator.js +275 -275
- package/src/lib/detectors/structure-detector.js +245 -245
- package/src/lib/{context-generator.js → generators/context-generator.js} +526 -516
- package/src/lib/generators/index.js +10 -0
- package/src/lib/{metadata-extractor.js → generators/metadata-extractor.js} +387 -380
- package/src/lib/{recap-generator.js → generators/recap-generator.js} +205 -205
- package/src/lib/learning/index.js +7 -0
- package/src/lib/orchestration/index.js +7 -0
- package/src/lib/{team-orchestrator.js → orchestration/team-orchestrator.js} +323 -323
- package/src/lib/stacks/index.js +7 -0
- package/src/lib/{stack-resolver.js → stacks/stack-resolver.js} +180 -148
- package/src/lib/standards/index.js +7 -0
- package/src/lib/{standards-context-injector.js → standards/standards-context-injector.js} +298 -288
- package/src/lib/troubleshooting/index.js +8 -0
- package/src/lib/{troubleshoot-grep.js → troubleshooting/troubleshoot-grep.js} +204 -204
- package/src/lib/{troubleshoot-index.js → troubleshooting/troubleshoot-index.js} +144 -144
- package/src/lib/validators/architecture/architecture-validator.js +387 -0
- package/src/lib/validators/architecture/index.js +7 -0
- package/src/lib/validators/architecture-validator.js +40 -367
- package/src/lib/{blazor-concurrency-analyzer.js → validators/blazor/blazor-concurrency-analyzer.js} +277 -288
- package/src/lib/{blazor-state-validator.js → validators/blazor/blazor-state-validator.js} +279 -291
- package/src/lib/{blazor-validator.js → validators/blazor/blazor-validator.js} +369 -374
- package/src/lib/validators/blazor/index.js +9 -0
- package/src/lib/validators/content/content-validator.js +351 -0
- package/src/lib/validators/content/index.js +7 -0
- package/src/lib/validators/content-validator.js +164 -351
- package/src/lib/validators/{contract-compliance-validator.js → contracts/contract-compliance-validator.js} +273 -273
- package/src/lib/validators/contracts/index.js +7 -0
- package/src/lib/{css-validator.js → validators/css/css-validator.js} +352 -352
- package/src/lib/validators/css/index.js +7 -0
- package/src/lib/validators/{design-system-validator.js → design-system/design-system-validator.js} +231 -231
- package/src/lib/validators/design-system/index.js +7 -0
- package/src/lib/validators/package-validator.js +41 -340
- package/src/lib/validators/packages/index.js +7 -0
- package/src/lib/validators/packages/package-validator.js +360 -0
- package/src/lib/validators/shared/index.js +12 -0
- package/src/lib/validators/shared/issue-counter.js +18 -0
- package/src/lib/validators/shared/result-formatter.js +124 -0
- package/src/lib/{spec-validator.js → validators/spec-validator.js} +258 -258
- package/src/lib/validators/ui/index.js +7 -0
- package/src/lib/validators/ui/ui-contrast-validator.js +422 -0
- package/src/lib/validators/ui-contrast-validator.js +31 -409
- package/src/lib/{validation-runner.js → validators/validation-runner.js} +286 -284
- package/src/ui/wizard-questions.js +0 -2
- package/src/utils/color-utils.js +70 -0
- package/src/utils/file-copier.js +188 -189
- package/src/utils/process-handler.js +97 -0
- package/stacks/blazor-azure/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +3 -3
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/api-designer.md +59 -0
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/dotnet-senior.md +45 -255
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ef-modeler.md +33 -88
- package/stacks/blazor-azure/.claude/skills/level-2-domains/backend/ms-agent-expert.md +25 -89
- package/stacks/blazor-azure/.claude/skills/level-2-domains/integrations/hangfire-orchestrator.md +64 -0
- package/stacks/blazor-azure/.morph/config/agents.json +879 -764
- package/stacks/blazor-azure/.morph/hooks/{pre-commit-tests.sh → pre-commit/tests-csharp.sh} +3 -2
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +41 -0
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +24 -0
- package/stacks/blazor-azure/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +23 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-apply.md +221 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-archive.md +79 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-deploy.md +529 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-infra.md +209 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-preflight.md +227 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-proposal.md +122 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-status.md +86 -0
- package/stacks/nextjs-supabase/.claude/commands/morph-troubleshoot.md +122 -0
- package/stacks/nextjs-supabase/.claude/settings.local.json +6 -0
- package/stacks/nextjs-supabase/.claude/skills/level-2-domains/integrations/supabase-expert.md +30 -150
- package/stacks/nextjs-supabase/.morph/config/agents.json +345 -345
- package/stacks/nextjs-supabase/.morph/hooks/pre-commit/tests-typescript.sh +61 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-prod.yml.hbs +22 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/cd-staging.yml.hbs +22 -0
- package/stacks/nextjs-supabase/.morph/templates/infrastructure/github/workflows/ci-build.yml.hbs +35 -0
- package/stacks/nextjs-supabase/README.md +6 -15
- package/bin/render-template.js +0 -349
- package/bin/semantic-detect-agents.js +0 -247
- package/bin/validate-agents-skills.js +0 -257
- package/bin/validate-agents.js +0 -70
- package/bin/validate-phase.js +0 -263
- package/docs/examples.md +0 -328
- package/scripts/reorganize-skills.cjs +0 -175
- package/scripts/validate-agents-structure.cjs +0 -52
- package/scripts/validate-skills.cjs +0 -180
- package/src/commands/deploy.js +0 -780
- package/src/lib/continuous-validator.js +0 -421
- package/src/lib/decision-constraint-loader.js +0 -109
- package/src/lib/design-system-scaffolder.js +0 -299
- package/src/lib/hook-executor.js +0 -257
- package/src/lib/mockup-generator.js +0 -366
- package/src/lib/ui-detector.js +0 -350
- package/src/llm/schema-validator.js +0 -121
- package/src/sanitizer/.gitkeep +0 -0
- package/src/scanner/.gitkeep +0 -0
- package/src/types/index.js +0 -477
- package/src/ui/.gitkeep +0 -0
- package/src/writer/.gitkeep +0 -0
- package/stacks/blazor-azure/.azure/README.md +0 -293
- package/stacks/blazor-azure/.azure/docs/azure-devops-setup.md +0 -454
- package/stacks/blazor-azure/.azure/docs/branch-strategy.md +0 -398
- package/stacks/blazor-azure/.azure/docs/local-development.md +0 -515
- package/stacks/blazor-azure/.azure/pipelines/pipeline-variables.yml +0 -34
- package/stacks/blazor-azure/.azure/pipelines/prod-pipeline.yml +0 -319
- package/stacks/blazor-azure/.azure/pipelines/staging-pipeline.yml +0 -234
- package/stacks/blazor-azure/.azure/pipelines/templates/build-dotnet.yml +0 -75
- package/stacks/blazor-azure/.azure/pipelines/templates/deploy-app-service.yml +0 -94
- package/stacks/blazor-azure/.azure/pipelines/templates/deploy-container-app.yml +0 -120
- package/stacks/blazor-azure/.azure/pipelines/templates/infra-deploy.yml +0 -90
- package/stacks/blazor-azure/.claude/settings.local.json +0 -15
- package/stacks/blazor-azure/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +0 -392
- package/stacks/blazor-azure/.morph/docs/workflows/design-impl.md +0 -37
- package/stacks/blazor-azure/.morph/docs/workflows/enforcement-pipeline.md +0 -668
- package/stacks/blazor-azure/.morph/docs/workflows/fast-track.md +0 -29
- package/stacks/blazor-azure/.morph/docs/workflows/full-morph.md +0 -76
- package/stacks/blazor-azure/.morph/docs/workflows/standard.md +0 -44
- package/stacks/blazor-azure/.morph/docs/workflows/ui-refresh.md +0 -39
- package/stacks/blazor-azure/.morph/examples/api-nextjs/README.md +0 -241
- package/stacks/blazor-azure/.morph/examples/api-nextjs/contracts.ts +0 -307
- package/stacks/blazor-azure/.morph/examples/api-nextjs/spec.md +0 -399
- package/stacks/blazor-azure/.morph/examples/api-nextjs/tasks.md +0 -168
- package/stacks/blazor-azure/.morph/examples/micro-saas/README.md +0 -125
- package/stacks/blazor-azure/.morph/examples/micro-saas/contracts.cs +0 -358
- package/stacks/blazor-azure/.morph/examples/micro-saas/decisions.md +0 -246
- package/stacks/blazor-azure/.morph/examples/micro-saas/spec.md +0 -236
- package/stacks/blazor-azure/.morph/examples/micro-saas/tasks.md +0 -150
- package/stacks/blazor-azure/.morph/examples/multi-agent/README.md +0 -309
- package/stacks/blazor-azure/.morph/examples/multi-agent/contracts.cs +0 -433
- package/stacks/blazor-azure/.morph/examples/multi-agent/spec.md +0 -479
- package/stacks/blazor-azure/.morph/examples/multi-agent/tasks.md +0 -185
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/decisions.md +0 -158
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/proposal.md +0 -95
- package/stacks/blazor-azure/.morph/examples/scheduled-reports/spec.md +0 -267
- package/stacks/blazor-azure/.morph/examples/state-v3.json +0 -188
- package/stacks/blazor-azure/.morph/hooks/README.md +0 -348
- package/stacks/blazor-azure/.morph/hooks/pre-commit-agents.sh +0 -24
- package/stacks/blazor-azure/.morph/hooks/pre-commit-all.sh +0 -48
- package/stacks/blazor-azure/.morph/hooks/pre-commit-specs.sh +0 -49
- package/stacks/blazor-azure/.morph/hooks/task-completed.js +0 -73
- package/stacks/blazor-azure/.morph/hooks/teammate-idle.js +0 -68
- package/stacks/blazor-azure/.morph/standards/agent-framework-blazor-ui.md +0 -359
- package/stacks/blazor-azure/.morph/standards/agent-framework-production.md +0 -410
- package/stacks/blazor-azure/.morph/standards/agent-framework-setup.md +0 -413
- package/stacks/blazor-azure/.morph/standards/agent-framework-workflows.md +0 -349
- package/stacks/blazor-azure/.morph/standards/agent-teams-workflow.md +0 -474
- package/stacks/blazor-azure/.morph/standards/architecture.md +0 -325
- package/stacks/blazor-azure/.morph/standards/azure.md +0 -605
- package/stacks/blazor-azure/.morph/standards/coding.md +0 -377
- package/stacks/blazor-azure/.morph/standards/dotnet10-migration.md +0 -520
- package/stacks/blazor-azure/.morph/standards/fluent-ui-setup.md +0 -590
- package/stacks/blazor-azure/.morph/standards/migration-guide.md +0 -514
- package/stacks/blazor-azure/.morph/standards/passkeys-auth.md +0 -423
- package/stacks/blazor-azure/.morph/standards/vector-search-rag.md +0 -536
- package/stacks/blazor-azure/.morph/templates/CONTEXT-FEATURE.md +0 -276
- package/stacks/blazor-azure/.morph/templates/CONTEXT.md +0 -170
- package/stacks/blazor-azure/.morph/templates/FluentDesignTheme.cs +0 -149
- package/stacks/blazor-azure/.morph/templates/MudTheme.cs +0 -281
- package/stacks/blazor-azure/.morph/templates/agent.cs +0 -163
- package/stacks/blazor-azure/.morph/templates/clarify-questions.md +0 -159
- package/stacks/blazor-azure/.morph/templates/component.razor +0 -239
- package/stacks/blazor-azure/.morph/templates/contracts/Commands.cs +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts/Entities.cs +0 -25
- package/stacks/blazor-azure/.morph/templates/contracts/Queries.cs +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts/README.md +0 -74
- package/stacks/blazor-azure/.morph/templates/contracts.cs +0 -217
- package/stacks/blazor-azure/.morph/templates/decisions.md +0 -123
- package/stacks/blazor-azure/.morph/templates/design-system.css +0 -226
- package/stacks/blazor-azure/.morph/templates/infra/.dockerignore.example +0 -89
- package/stacks/blazor-azure/.morph/templates/infra/Dockerfile.example +0 -82
- package/stacks/blazor-azure/.morph/templates/infra/README.md +0 -286
- package/stacks/blazor-azure/.morph/templates/infra/app-insights.bicep +0 -63
- package/stacks/blazor-azure/.morph/templates/infra/app-service.bicep +0 -164
- package/stacks/blazor-azure/.morph/templates/infra/azure-pipelines-deploy.yml +0 -480
- package/stacks/blazor-azure/.morph/templates/infra/container-app-env.bicep +0 -49
- package/stacks/blazor-azure/.morph/templates/infra/container-app.bicep +0 -156
- package/stacks/blazor-azure/.morph/templates/infra/deploy-checklist.md +0 -426
- package/stacks/blazor-azure/.morph/templates/infra/deploy.ps1 +0 -229
- package/stacks/blazor-azure/.morph/templates/infra/deploy.sh +0 -208
- package/stacks/blazor-azure/.morph/templates/infra/key-vault.bicep +0 -91
- package/stacks/blazor-azure/.morph/templates/infra/main.bicep +0 -189
- package/stacks/blazor-azure/.morph/templates/infra/parameters.dev.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/parameters.prod.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/parameters.staging.json +0 -29
- package/stacks/blazor-azure/.morph/templates/infra/sql-database.bicep +0 -103
- package/stacks/blazor-azure/.morph/templates/infra/storage.bicep +0 -106
- package/stacks/blazor-azure/.morph/templates/integrations/asaas-client.cs +0 -387
- package/stacks/blazor-azure/.morph/templates/integrations/asaas-webhook.cs +0 -351
- package/stacks/blazor-azure/.morph/templates/integrations/azure-identity-config.cs +0 -288
- package/stacks/blazor-azure/.morph/templates/integrations/clerk-config.cs +0 -258
- package/stacks/blazor-azure/.morph/templates/job.cs +0 -171
- package/stacks/blazor-azure/.morph/templates/migration.cs +0 -83
- package/stacks/blazor-azure/.morph/templates/proposal.md +0 -141
- package/stacks/blazor-azure/.morph/templates/recap.md +0 -94
- package/stacks/blazor-azure/.morph/templates/repository.cs +0 -141
- package/stacks/blazor-azure/.morph/templates/saas/subscription.cs +0 -347
- package/stacks/blazor-azure/.morph/templates/saas/tenant.cs +0 -338
- package/stacks/blazor-azure/.morph/templates/service.cs +0 -139
- package/stacks/blazor-azure/.morph/templates/simulation.md +0 -353
- package/stacks/blazor-azure/.morph/templates/spec.md +0 -149
- package/stacks/blazor-azure/.morph/templates/sprint-status.yaml +0 -68
- package/stacks/blazor-azure/.morph/templates/state.template.json +0 -222
- package/stacks/blazor-azure/.morph/templates/story.md +0 -143
- package/stacks/blazor-azure/.morph/templates/tasks.md +0 -257
- package/stacks/blazor-azure/.morph/templates/test.cs +0 -239
- package/stacks/blazor-azure/.morph/templates/ui-components.md +0 -362
- package/stacks/blazor-azure/.morph/templates/ui-design-system.md +0 -286
- package/stacks/blazor-azure/.morph/templates/ui-flows.md +0 -336
- package/stacks/blazor-azure/.morph/templates/ui-mockups.md +0 -133
- package/stacks/nextjs-supabase/.morph/docs/easypanel-setup.md +0 -169
- package/stacks/nextjs-supabase/.morph/docs/supabase-mcp-setup.md +0 -247
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/README.md +0 -697
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/spec.md +0 -85
- package/stacks/nextjs-supabase/.morph/examples/crud-nextjs-supabase/tasks.md +0 -86
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/README.md +0 -498
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/decisions.md +0 -121
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/spec.md +0 -138
- package/stacks/nextjs-supabase/.morph/examples/saas-nextjs-supabase/tasks.md +0 -162
- package/stacks/nextjs-supabase/.morph/standards/easypanel-deploy.md +0 -191
- package/stacks/nextjs-supabase/.morph/standards/nextjs-patterns.md +0 -193
- package/stacks/nextjs-supabase/.morph/standards/supabase-auth.md +0 -171
- package/stacks/nextjs-supabase/.morph/standards/supabase-pgvector.md +0 -164
- package/stacks/nextjs-supabase/.morph/standards/supabase-rls.md +0 -179
- package/stacks/nextjs-supabase/.morph/standards/supabase-storage.md +0 -148
- package/stacks/nextjs-supabase/.morph/templates/contracts.cs +0 -173
- package/stacks/nextjs-supabase/.morph/templates/contracts.ts +0 -168
- package/stacks/nextjs-supabase/.morph/templates/decisions.md +0 -115
- package/stacks/nextjs-supabase/.morph/templates/dockerfile-api.dockerfile +0 -38
- package/stacks/nextjs-supabase/.morph/templates/dockerfile-web.dockerfile +0 -48
- package/stacks/nextjs-supabase/.morph/templates/proposal.md +0 -145
- package/stacks/nextjs-supabase/.morph/templates/recap.md +0 -134
- package/stacks/nextjs-supabase/.morph/templates/rls-policy.sql +0 -57
- package/stacks/nextjs-supabase/.morph/templates/spec.md +0 -231
- package/stacks/nextjs-supabase/.morph/templates/supabase-migration.sql +0 -100
- package/stacks/nextjs-supabase/.morph/templates/tasks.md +0 -257
- /package/src/commands/{search-patterns.js → learning/search-patterns.js} +0 -0
- /package/src/commands/{migrate-state.js → utils/migrate-state.js} +0 -0
- /package/src/commands/{upgrade.js → utils/upgrade.js} +0 -0
- /package/src/{lib → core/templates}/template-data-sources.js +0 -0
- /package/src/lib/{design-system-generator.js → generators/design-system-generator.js} +0 -0
- /package/src/lib/{learning-system.js → learning/learning-system.js} +0 -0
- /package/{src/generator → stacks/blazor-azure/.morph/templates}/.gitkeep +0 -0
- /package/{src/llm → stacks/nextjs-supabase/.morph/templates}/.gitkeep +0 -0
package/CLAUDE.md
CHANGED
|
@@ -52,6 +52,173 @@ cp stacks/{stack}/CLAUDE.md seu-projeto/CLAUDE.md
|
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
55
|
+
## WORKFLOW DETECTION SYSTEM (Detecção Automática de Complexidade)
|
|
56
|
+
|
|
57
|
+
O framework agora detecta **AUTOMATICAMENTE** o workflow apropriado baseado na análise do pedido do usuário.
|
|
58
|
+
|
|
59
|
+
### 5 Tipos de Workflow
|
|
60
|
+
|
|
61
|
+
| Workflow | Complexidade | Arquivos | Linhas | Keywords Exemplo |
|
|
62
|
+
|----------|--------------|----------|--------|------------------|
|
|
63
|
+
| **fast-track** | Trivial | ≤3 | ≤50 | bug, fix, corrigir, css, typo |
|
|
64
|
+
| **standard** | Média | 3-10 | 50-500 | paginação, filtro, refactor, export |
|
|
65
|
+
| **full-morph** | Alta | >10 | >500 | sistema, autenticação, integração, cqrs |
|
|
66
|
+
| **design-impl** | N/A | N/A | N/A | prototype, figma, html para, replicar |
|
|
67
|
+
| **ui-refresh** | N/A | N/A | N/A | redesign, modernizar, aesthetic, bonito |
|
|
68
|
+
|
|
69
|
+
### Como Funciona
|
|
70
|
+
|
|
71
|
+
**1. Quando Criar Feature:**
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Detecção automática
|
|
75
|
+
npx morph-spec feature create user-pagination \
|
|
76
|
+
--request "add pagination to users table"
|
|
77
|
+
|
|
78
|
+
# Output:
|
|
79
|
+
🔍 Analyzing request...
|
|
80
|
+
✓ Detected workflow: standard (85% confidence)
|
|
81
|
+
Matched keyword: "paginação"
|
|
82
|
+
Estimated: 5 files, ~200 lines
|
|
83
|
+
|
|
84
|
+
📋 Created feature: user-pagination
|
|
85
|
+
Phase: proposal
|
|
86
|
+
Workflow: standard
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**2. Análise Manual (Opcional):**
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
npx morph-spec detect-workflow "implement complete authentication system"
|
|
93
|
+
|
|
94
|
+
# Output:
|
|
95
|
+
Detected Workflow: full-morph (92% confidence)
|
|
96
|
+
|
|
97
|
+
Criteria Match:
|
|
98
|
+
✓ Keywords: "authentication", "complete", "system"
|
|
99
|
+
✓ Estimated: 15 files, ~800 lines
|
|
100
|
+
✓ Infrastructure: detected
|
|
101
|
+
|
|
102
|
+
Phases to Run:
|
|
103
|
+
1. CONTEXT
|
|
104
|
+
2. PROPOSAL - ⏸️ Pause for approval
|
|
105
|
+
3. SETUP
|
|
106
|
+
4. UI/UX - ⏸️ Pause for approval
|
|
107
|
+
5. DESIGN - ⏸️ Pause for approval
|
|
108
|
+
6. CLARIFY
|
|
109
|
+
7. TASKS - ⏸️ Pause for approval
|
|
110
|
+
8. IMPLEMENT
|
|
111
|
+
9. SYNC - ⏸️ Pause for approval
|
|
112
|
+
|
|
113
|
+
Phases Skipped: None (all mandatory for full-morph)
|
|
114
|
+
|
|
115
|
+
Alternative Workflows:
|
|
116
|
+
- standard (15%): If scope reduced to basic login only
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Workflow Behaviors
|
|
120
|
+
|
|
121
|
+
#### fast-track (Trivial)
|
|
122
|
+
- **Objetivo:** Correções rápidas, ajustes CSS, edge cases
|
|
123
|
+
- **Fases:** Quick Analysis (proposal+setup+design combinados) → Implement
|
|
124
|
+
- **Fases Puladas:** UIUX, CLARIFY, TASKS, SYNC
|
|
125
|
+
- **Outputs:** Apenas commit message (sem .md files)
|
|
126
|
+
- **Exemplo:** "fix typo in login button"
|
|
127
|
+
|
|
128
|
+
#### standard (Média Complexidade)
|
|
129
|
+
- **Objetivo:** Features simples, refatorações, otimizações
|
|
130
|
+
- **Fases:** PROPOSAL (simplificado) → DESIGN (conciso) → TASKS (se >5 tasks) → IMPLEMENT
|
|
131
|
+
- **Fases Puladas:** SETUP (contexto já carregado), UIUX (sem frontend significativo), CLARIFY (spec claro), SYNC (decisões táticas)
|
|
132
|
+
- **Outputs:** proposal.md, spec.md, recap.md (minimal)
|
|
133
|
+
- **Exemplo:** "add pagination to users table"
|
|
134
|
+
|
|
135
|
+
#### full-morph (Alta Complexidade)
|
|
136
|
+
- **Objetivo:** Sistemas completos, arquitetura, integrações
|
|
137
|
+
- **Fases:** TODAS (9 fases obrigatórias)
|
|
138
|
+
- **Fases Puladas:** Nenhuma
|
|
139
|
+
- **Outputs:** Completo (proposal, ui-*, spec, contracts, tasks, decisions, recap)
|
|
140
|
+
- **Exemplo:** "implement complete authentication system with OAuth"
|
|
141
|
+
|
|
142
|
+
#### design-impl (Prototipo → Código)
|
|
143
|
+
- **Objetivo:** Converter HTML, Figma, mockups para código funcional
|
|
144
|
+
- **Fases:** ANÁLISE DO PROTÓTIPO → TASKS (lista de telas) → IMPLEMENT (por tela)
|
|
145
|
+
- **Fases Puladas:** PROPOSAL, DESIGN técnico, CLARIFY, SYNC
|
|
146
|
+
- **Outputs:** recap.md, .razor code, CSS
|
|
147
|
+
- **Exemplo:** "convert HTML prototype to Blazor components"
|
|
148
|
+
|
|
149
|
+
#### ui-refresh (Redesign Visual)
|
|
150
|
+
- **Objetivo:** Mudanças apenas visuais, sem lógica de negócio
|
|
151
|
+
- **Fases:** ANÁLISE VISUAL → DESIGN SYSTEM (simplificado) → IMPLEMENT (por página)
|
|
152
|
+
- **Fases Puladas:** SETUP completo, CONTRACTS, TASKS detalhadas, INFRA, CLARIFY, SYNC
|
|
153
|
+
- **Outputs:** design-refresh-checklist.md, CSS, .razor pages, recap.md
|
|
154
|
+
- **Exemplo:** "redesign dashboard to look more modern"
|
|
155
|
+
|
|
156
|
+
### Algoritmo de Detecção
|
|
157
|
+
|
|
158
|
+
O sistema usa 4 fatores ponderados:
|
|
159
|
+
|
|
160
|
+
1. **Keywords (40%):** Matching de palavras-chave (PT + EN)
|
|
161
|
+
2. **Complexity (30%):** Estimativa de arquivos/linhas/componentes
|
|
162
|
+
3. **Priority (20%):** Workflows específicos > genéricos
|
|
163
|
+
4. **Context (10%):** Condições especiais (has prototype? existing pages?)
|
|
164
|
+
|
|
165
|
+
**Penalties:**
|
|
166
|
+
- -50% para workflows sem keyword match (exceto full-morph)
|
|
167
|
+
|
|
168
|
+
**Boosts:**
|
|
169
|
+
- +20% para workflows com 3+ keywords matched
|
|
170
|
+
|
|
171
|
+
### Override Manual
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Forçar workflow específico
|
|
175
|
+
npx morph-spec state set user-auth workflow full-morph
|
|
176
|
+
|
|
177
|
+
# Re-detectar após mudanças no pedido
|
|
178
|
+
npx morph-spec state detect-workflow user-auth \
|
|
179
|
+
"implement basic login only (no OAuth)"
|
|
180
|
+
|
|
181
|
+
# Output:
|
|
182
|
+
🔄 Re-analyzing request...
|
|
183
|
+
✓ New workflow: standard (78% confidence)
|
|
184
|
+
Previous: full-morph
|
|
185
|
+
Reason: Scope reduced - no OAuth, no registration
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Configurações de Workflow
|
|
189
|
+
|
|
190
|
+
Workflows são definidos em `framework/workflows/configs/*.json`:
|
|
191
|
+
|
|
192
|
+
```json
|
|
193
|
+
{
|
|
194
|
+
"id": "standard",
|
|
195
|
+
"criteria": {
|
|
196
|
+
"minFiles": 3,
|
|
197
|
+
"maxFiles": 10,
|
|
198
|
+
"minLines": 50,
|
|
199
|
+
"maxLines": 500
|
|
200
|
+
},
|
|
201
|
+
"keywords": ["paginação", "pagination", "filtro", "filter"],
|
|
202
|
+
"phases": {
|
|
203
|
+
"run": ["proposal", "design", "tasks", "implement"],
|
|
204
|
+
"skip": ["setup", "uiux", "clarify", "sync"]
|
|
205
|
+
},
|
|
206
|
+
"priority": 2
|
|
207
|
+
}
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Documentação Completa
|
|
211
|
+
|
|
212
|
+
Veja `framework/workflows/` para:
|
|
213
|
+
- **docs/STORY-DRIVEN-DEVELOPMENT.md:** Filosofia do sistema
|
|
214
|
+
- **docs/{workflow}.md:** Detalhes de cada workflow (5 arquivos)
|
|
215
|
+
- **configs/{workflow}.json:** Configurações executáveis (5 arquivos)
|
|
216
|
+
- **README.md:** Guia completo do sistema de workflows
|
|
217
|
+
|
|
218
|
+
**REGRA CRÍTICA:** Confie na detecção automática. Override manual apenas se houver contexto que o sistema não detectou (ex: "parece grande mas já temos 80% do código pronto").
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
55
222
|
## APPROVAL GATES (Portões de Aprovação)
|
|
56
223
|
|
|
57
224
|
O sistema agora rastreia aprovações explícitas para cada fase crítica em `state.json`.
|
|
@@ -214,6 +381,103 @@ Fix these issues before proceeding.
|
|
|
214
381
|
|
|
215
382
|
---
|
|
216
383
|
|
|
384
|
+
## CLAUDE CODE HOOKS (Validação em Hooks)
|
|
385
|
+
|
|
386
|
+
O framework integra com o sistema de hooks do Claude Code para validação automática em eventos Git e Agent Teams.
|
|
387
|
+
|
|
388
|
+
### Arquitetura de Hooks
|
|
389
|
+
|
|
390
|
+
**Universal (framework/hooks/):** Hooks compartilhados por todas as stacks
|
|
391
|
+
- **pre-commit/**: `agents.sh`, `specs.sh`, `orchestrator.sh`
|
|
392
|
+
- **commit-msg/**: `conventional-commits.sh` (Conventional Commits format)
|
|
393
|
+
- **pre-push/**: `run-tests.sh` (executa test suite completo)
|
|
394
|
+
- **agent-teams/**: `teammate-idle.js`, `task-completed.js`, `phase-advanced.js`
|
|
395
|
+
|
|
396
|
+
**Stack-Specific (stacks/{stack}/.morph/hooks/):** Hooks específicos de cada stack
|
|
397
|
+
- **pre-commit/**: `tests-csharp.sh` (blazor-azure), `tests-typescript.sh` (nextjs-supabase)
|
|
398
|
+
|
|
399
|
+
### Instalação de Git Hooks
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
# No diretório .git/hooks do projeto
|
|
403
|
+
cd .git/hooks
|
|
404
|
+
|
|
405
|
+
# Pre-commit (valida agents.json, spec.md, executa testes)
|
|
406
|
+
ln -sf ../../framework/hooks/pre-commit/orchestrator.sh pre-commit
|
|
407
|
+
chmod +x pre-commit
|
|
408
|
+
|
|
409
|
+
# Commit-msg (valida formato Conventional Commits)
|
|
410
|
+
ln -sf ../../framework/hooks/commit-msg/conventional-commits.sh commit-msg
|
|
411
|
+
chmod +x commit-msg
|
|
412
|
+
|
|
413
|
+
# Pre-push (executa suite de testes antes de push)
|
|
414
|
+
ln -sf ../../framework/hooks/pre-push/run-tests.sh pre-push
|
|
415
|
+
chmod +x pre-push
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### Configuração de Agent Teams Hooks
|
|
419
|
+
|
|
420
|
+
Adicione em `.claude/settings.local.json`:
|
|
421
|
+
|
|
422
|
+
```json
|
|
423
|
+
{
|
|
424
|
+
"hooks": {
|
|
425
|
+
"TeammateIdle": "node framework/hooks/agent-teams/teammate-idle.js {feature}",
|
|
426
|
+
"TaskCompleted": "node framework/hooks/agent-teams/task-completed.js {feature} {taskId}",
|
|
427
|
+
"PhaseAdvanced": "node framework/hooks/agent-teams/phase-advanced.js {feature} {fromPhase} {toPhase}"
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### Validators com Hook Behavior
|
|
433
|
+
|
|
434
|
+
5 validators tier-4 configurados em `agents.json` com `hook_behavior`:
|
|
435
|
+
|
|
436
|
+
| Validator | Hook Triggers | Valida | Bloqueia? |
|
|
437
|
+
|-----------|---------------|--------|-----------|
|
|
438
|
+
| **security-expert** | TeammateIdle, TaskCompleted | SQL injection, XSS, Secrets | ✅ Sim |
|
|
439
|
+
| **architecture-expert** | TeammateIdle, TaskCompleted | DbContext injection, async/await, DI order | ✅ Sim |
|
|
440
|
+
| **packages-validator** | TaskCompleted | NuGet conflicts, .NET 10 compatibility | ✅ Sim |
|
|
441
|
+
| **design-system-validator** | TeammateIdle | CSS palette, spacing, typography | ⚠️ Warning |
|
|
442
|
+
| **blazor-concurrency-validator** | TaskCompleted | DbContext lifecycle, async void, JSInterop | ✅ Sim |
|
|
443
|
+
|
|
444
|
+
### Como Funciona
|
|
445
|
+
|
|
446
|
+
**Git Hooks:**
|
|
447
|
+
```
|
|
448
|
+
git commit → pre-commit hook → orchestrator.sh
|
|
449
|
+
├─ Executa framework/hooks/pre-commit/*.sh (universal)
|
|
450
|
+
└─ Executa .morph/hooks/pre-commit/*.sh (stack-specific)
|
|
451
|
+
↓
|
|
452
|
+
commit-msg hook → valida formato Conventional Commits
|
|
453
|
+
↓
|
|
454
|
+
git push → pre-push hook → executa test suite
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
**Agent Teams Hooks:**
|
|
458
|
+
```
|
|
459
|
+
Teammate idle → TeammateIdle hook
|
|
460
|
+
├─ Carrega agents.json
|
|
461
|
+
├─ Filtra validators com hook_triggers: ["TeammateIdle"]
|
|
462
|
+
├─ Executa validators via hook-executor.js
|
|
463
|
+
└─ Bloqueia se errors > 0 e blocks_on_fail: true
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### Bypass (Não Recomendado)
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
# Pular hooks Git
|
|
470
|
+
git commit --no-verify
|
|
471
|
+
git push --no-verify
|
|
472
|
+
|
|
473
|
+
# Pular validação de task
|
|
474
|
+
npx morph-spec task done feature-name task-id --skip-validation
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
**IMPORTANTE:** Veja `framework/hooks/README.md` para documentação completa de hooks.
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
217
481
|
## AGENT INVOCATION PATTERNS (Spawning de Agentes)
|
|
218
482
|
|
|
219
483
|
Use **Task tool** para spawnar subagentes quando apropriado.
|
|
@@ -399,11 +663,9 @@ Para features grandes, use `metadata.json` para acesso rápido (reduz uso de tok
|
|
|
399
663
|
# 1. Antes de trabalhar na feature, leia metadata.json
|
|
400
664
|
cat .morph/project/outputs/user-auth/metadata.json
|
|
401
665
|
|
|
402
|
-
# 2. Metadata auto-atualizado após cada task
|
|
666
|
+
# 2. Metadata é auto-atualizado após cada task
|
|
403
667
|
# (Configurado em llm-interaction.json: "updateFrequency": "on_task_done")
|
|
404
|
-
|
|
405
|
-
# 3. Ou gere manualmente
|
|
406
|
-
npx morph-spec generate metadata user-auth
|
|
668
|
+
# NOTA: Não há comando manual para gerar metadata - sempre auto-gerado
|
|
407
669
|
```
|
|
408
670
|
|
|
409
671
|
### Configuração
|
|
@@ -625,14 +887,97 @@ morph-spec-framework/
|
|
|
625
887
|
|
|
626
888
|
## TEMPLATES
|
|
627
889
|
|
|
628
|
-
>
|
|
890
|
+
> **Template System v2.0** - Organizado por tecnologia, reutilizável entre stacks, powered by Handlebars
|
|
891
|
+
|
|
892
|
+
### Overview
|
|
893
|
+
|
|
894
|
+
Templates estão em `framework/templates/` organizados por **tecnologia** (não por stack):
|
|
895
|
+
- `code/dotnet/` - Templates .NET (service, repository, component, etc.)
|
|
896
|
+
- `code/typescript/` - Templates TypeScript (contracts, etc.)
|
|
897
|
+
- `code/sql/` - Templates SQL (Supabase migrations, RLS policies)
|
|
898
|
+
- `infrastructure/azure/` - Bicep templates para Azure
|
|
899
|
+
- `infrastructure/docker/` - Dockerfiles e Docker Compose
|
|
900
|
+
- `integrations/` - Integrações (Asaas, Clerk, Azure Identity)
|
|
901
|
+
- `ui/` - Design systems (CSS, Fluent/Mud themes)
|
|
902
|
+
- `saas/` - Multi-tenant patterns
|
|
903
|
+
|
|
904
|
+
**Por quê tecnologia?** Permite reutilizar templates entre stacks (ex: service.cs funciona para blazor-azure E nextjs-supabase).
|
|
905
|
+
|
|
906
|
+
### CLI Commands
|
|
907
|
+
|
|
908
|
+
```bash
|
|
909
|
+
# Listar todos os templates
|
|
910
|
+
morph-spec template list
|
|
911
|
+
|
|
912
|
+
# Filtrar por categoria/tecnologia
|
|
913
|
+
morph-spec template list --category code
|
|
914
|
+
morph-spec template list --phase implement
|
|
915
|
+
|
|
916
|
+
# Ver detalhes de um template
|
|
917
|
+
morph-spec template show dotnet-backend-service --preview
|
|
918
|
+
|
|
919
|
+
# Renderizar template (usando Handlebars)
|
|
920
|
+
morph-spec template render dotnet-backend-service UserService.cs '{
|
|
921
|
+
"FEATURE_NAME": "user-auth",
|
|
922
|
+
"NAMESPACE": "MyApp.Services"
|
|
923
|
+
}'
|
|
924
|
+
|
|
925
|
+
# Customizar template (criar override stack-specific)
|
|
926
|
+
morph-spec template customize dotnet-backend-service --stack blazor-azure
|
|
927
|
+
```
|
|
928
|
+
|
|
929
|
+
### Handlebars Helpers (v2.0)
|
|
930
|
+
|
|
931
|
+
**✅ USE (novo):**
|
|
932
|
+
|
|
933
|
+
| Helper | Input | Output | Uso |
|
|
934
|
+
|--------|-------|--------|-----|
|
|
935
|
+
| `{{pascalCase str}}` | `user-auth` | `UserAuth` | Classes |
|
|
936
|
+
| `{{camelCase str}}` | `user-auth` | `userAuth` | Variables |
|
|
937
|
+
| `{{snakeCase str}}` | `user-auth` | `user_auth` | SQL |
|
|
938
|
+
| `{{titleCase str}}` | `user-auth` | `User Auth` | Titles |
|
|
939
|
+
| `{{pluralize str}}` | `user` | `users` | Collections |
|
|
940
|
+
|
|
941
|
+
**❌ DEPRECADO (v1.0):**
|
|
942
|
+
|
|
943
|
+
| Placeholder | Status | Use Instead |
|
|
944
|
+
|-------------|--------|-------------|
|
|
945
|
+
| `{{FEATURE_NAME_PASCAL}}` | ❌ Deprecated | `{{pascalCase FEATURE_NAME}}` |
|
|
946
|
+
| `{{FEATURE_NAME_CAMEL}}` | ❌ Deprecated | `{{camelCase FEATURE_NAME}}` |
|
|
947
|
+
| `{{FEATURE_NAME_SNAKE}}` | ❌ Deprecated | `{{snakeCase FEATURE_NAME}}` |
|
|
948
|
+
|
|
949
|
+
### Variáveis Padrão (auto-injetadas)
|
|
629
950
|
|
|
630
951
|
| Placeholder | Exemplo |
|
|
631
952
|
|-------------|---------|
|
|
632
953
|
| `{{FEATURE_NAME}}` | `scheduled-reports` |
|
|
633
|
-
| `{{FEATURE_NAME_PASCAL}}` | `ScheduledReports` |
|
|
634
954
|
| `{{STACK}}` | `Blazor` ou `NextjsSupabase` |
|
|
635
|
-
| `{{DATE}}
|
|
955
|
+
| `{{DATE}}` | `2026-02-17` |
|
|
956
|
+
| `{{YEAR}}` | `2026` |
|
|
957
|
+
| `{{TIMESTAMP}}` | `2026-02-17T19:38:00Z` |
|
|
958
|
+
| `{{NAMESPACE}}` | Auto from config.json |
|
|
959
|
+
| `{{AUTHOR}}` | Auto from config.json |
|
|
960
|
+
|
|
961
|
+
### Stack Overrides
|
|
962
|
+
|
|
963
|
+
Templates são resolvidos com fallback automático:
|
|
964
|
+
1. `stacks/{stack}/.morph/templates/` (override stack-specific)
|
|
965
|
+
2. `.morph/templates/` (override project-local)
|
|
966
|
+
3. `framework/templates/` (fallback padrão)
|
|
967
|
+
|
|
968
|
+
Para customizar um template:
|
|
969
|
+
```bash
|
|
970
|
+
morph-spec template customize dotnet-backend-service --stack blazor-azure
|
|
971
|
+
# Edite: stacks/blazor-azure/.morph/templates/code/dotnet/backend/service.cs
|
|
972
|
+
```
|
|
973
|
+
|
|
974
|
+
### Documentação Completa
|
|
975
|
+
|
|
976
|
+
Veja `framework/templates/README.md` para:
|
|
977
|
+
- Estrutura completa de diretórios
|
|
978
|
+
- Todos os helpers Handlebars disponíveis
|
|
979
|
+
- Como criar novos templates
|
|
980
|
+
- Migração v1 → v2
|
|
636
981
|
|
|
637
982
|
---
|
|
638
983
|
|
package/README.md
CHANGED
|
@@ -488,18 +488,6 @@ MORPH-SPEC possui **30 agentes** organizados em 4 tiers hierárquicos com squads
|
|
|
488
488
|
|
|
489
489
|
---
|
|
490
490
|
|
|
491
|
-
## Exemplos
|
|
492
|
-
|
|
493
|
-
| Exemplo | Descrição |
|
|
494
|
-
|---------|-----------|
|
|
495
|
-
| [micro-saas](stacks/blazor-azure/.morph/examples/micro-saas/) | SaaS completo com Blazor + Asaas billing |
|
|
496
|
-
| [api-nextjs](stacks/blazor-azure/.morph/examples/api-nextjs/) | .NET API + Next.js frontend |
|
|
497
|
-
| [multi-agent](stacks/blazor-azure/.morph/examples/multi-agent/) | Sistema multi-agente com Microsoft Agent Framework |
|
|
498
|
-
|
|
499
|
-
Cada exemplo inclui: `README.md`, `spec.md`, `contracts.cs`, `tasks.md`, `decisions.md`
|
|
500
|
-
|
|
501
|
-
---
|
|
502
|
-
|
|
503
491
|
## Estrutura do Projeto
|
|
504
492
|
|
|
505
493
|
Após a instalação, seu projeto terá:
|
|
@@ -523,7 +511,6 @@ seu-projeto/
|
|
|
523
511
|
│ │ ├── infra/
|
|
524
512
|
│ │ ├── integrations/
|
|
525
513
|
│ │ └── saas/
|
|
526
|
-
│ ├── examples/ # Exemplos completos
|
|
527
514
|
│ ├── features/ # Features em desenvolvimento
|
|
528
515
|
│ └── archive/ # Features concluídas
|
|
529
516
|
└── .claude/
|
|
@@ -703,7 +690,7 @@ Todo código gerado usando MORPH-SPEC é **100% seu** para usar como quiser, inc
|
|
|
703
690
|
|
|
704
691
|
- [npm Package](https://www.npmjs.com/package/@polymorphism-tech/morph-spec)
|
|
705
692
|
- [Documentação](docs/)
|
|
706
|
-
- [
|
|
693
|
+
- [Wiki (Base de Conhecimento)](.wiki/) - 33 artigos sobre .NET, Azure, IA, SaaS e Claude Code
|
|
707
694
|
- [Polymorphism Tech](https://polymorphism.com.br)
|
|
708
695
|
|
|
709
696
|
---
|
package/bin/detect-agents.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
import { readFileSync } from 'fs';
|
|
16
16
|
import { join, dirname } from 'path';
|
|
17
17
|
import { fileURLToPath } from 'url';
|
|
18
|
-
import { resolveAgentsConfigPath } from '../src/lib/stack-resolver.js';
|
|
18
|
+
import { resolveAgentsConfigPath } from '../src/lib/stacks/stack-resolver.js';
|
|
19
19
|
|
|
20
20
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
21
|
const frameworkRoot = join(__dirname, '..');
|
package/bin/morph-spec.js
CHANGED
|
@@ -1,44 +1,70 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { program } from 'commander';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import { fileURLToPath } from 'url';
|
|
6
6
|
import { dirname, join } from 'path';
|
|
7
7
|
import { readFileSync } from 'fs';
|
|
8
|
-
import { setGlobalStack } from '../src/lib/stack-resolver.js';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
8
|
+
import { setGlobalStack } from '../src/lib/stacks/stack-resolver.js';
|
|
9
|
+
|
|
10
|
+
// Project commands
|
|
11
|
+
import { initCommand } from '../src/commands/project/init.js';
|
|
12
|
+
import { updateCommand } from '../src/commands/project/update.js';
|
|
13
|
+
import { doctorCommand } from '../src/commands/project/doctor.js';
|
|
14
|
+
import { detectCommand } from '../src/commands/project/detect.js';
|
|
15
|
+
import { detectAgentsCommand } from '../src/commands/project/detect-agents.js';
|
|
16
|
+
import { detectWorkflowCommand } from '../src/commands/project/detect-workflow.js';
|
|
17
|
+
import { syncCommand } from '../src/commands/project/sync.js';
|
|
18
|
+
|
|
19
|
+
// Feature commands
|
|
20
|
+
import { createStoryCommand } from '../src/commands/feature/create-story.js';
|
|
21
|
+
import { shardSpecCommand } from '../src/commands/feature/shard-spec.js';
|
|
22
|
+
import { sprintStatusCommand } from '../src/commands/feature/sprint-status.js';
|
|
23
|
+
|
|
24
|
+
// State commands
|
|
25
|
+
import { stateCommand } from '../src/commands/state/state.js';
|
|
26
|
+
import { validatePhaseCommand } from '../src/commands/state/validate-phase.js';
|
|
27
|
+
import { rollbackPhaseCommand } from '../src/commands/state/rollback-phase.js';
|
|
28
|
+
import { advancePhaseCommand } from '../src/commands/state/advance-phase.js';
|
|
29
|
+
import { approveCommand, rejectCommand, approvalStatusCommand } from '../src/commands/state/approve.js';
|
|
30
|
+
|
|
31
|
+
// Task commands
|
|
32
|
+
import { taskDoneCommand, taskStartCommand, taskNextCommand } from '../src/commands/tasks/task.js';
|
|
33
|
+
|
|
34
|
+
// Generation commands
|
|
35
|
+
import { generateDesignSystemCommand, generateMetadataCommand } from '../src/commands/generation/generate.js';
|
|
36
|
+
import { generateContextCommand } from '../src/commands/generation/generate-context.js';
|
|
37
|
+
|
|
38
|
+
// Validation commands
|
|
23
39
|
import { validateCommand } from './validate.js';
|
|
24
|
-
import { validateBlazorCommand } from '../src/commands/validate-blazor.js';
|
|
25
|
-
import { lintFluentCommand } from '../src/commands/lint-fluent.js';
|
|
26
|
-
import { analyzeBlazorConcurrencyCommand } from '../src/commands/analyze-blazor-concurrency.js';
|
|
27
|
-
import { validateBlazorStateCommand } from '../src/commands/validate-blazor-state.js';
|
|
28
|
-
import { validateCssCommand } from '../src/commands/validate-css.js';
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
import
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
import
|
|
40
|
+
import { validateBlazorCommand } from '../src/commands/validation/validate-blazor.js';
|
|
41
|
+
import { lintFluentCommand } from '../src/commands/validation/lint-fluent.js';
|
|
42
|
+
import { analyzeBlazorConcurrencyCommand } from '../src/commands/validation/analyze-blazor-concurrency.js';
|
|
43
|
+
import { validateBlazorStateCommand } from '../src/commands/validation/validate-blazor-state.js';
|
|
44
|
+
import { validateCssCommand } from '../src/commands/validation/validate-css.js';
|
|
45
|
+
|
|
46
|
+
// Template commands
|
|
47
|
+
import { templateListCommand } from '../src/commands/templates/template-list.js';
|
|
48
|
+
import { templateShowCommand } from '../src/commands/templates/template-show.js';
|
|
49
|
+
import { templateRenderCommand } from '../src/commands/templates/template-render.js';
|
|
50
|
+
import { templateCustomizeCommand } from '../src/commands/templates/template-customize.js';
|
|
51
|
+
import { templateValidateCommand } from '../src/commands/templates/template-validate.js';
|
|
52
|
+
|
|
53
|
+
// Agent commands
|
|
54
|
+
import { spawnTeamCommand } from '../src/commands/agents/spawn-team.js';
|
|
55
|
+
|
|
56
|
+
// Learning commands
|
|
57
|
+
import capturePatternProgram from '../src/commands/learning/capture-pattern.js';
|
|
58
|
+
import searchPatternsProgram from '../src/commands/learning/search-patterns.js';
|
|
59
|
+
|
|
60
|
+
// Utility commands
|
|
61
|
+
import troubleshootCommand from '../src/commands/utils/troubleshoot.js';
|
|
62
|
+
import { sessionSummaryCommand } from '../src/commands/utils/session-summary.js';
|
|
63
|
+
import migrateStateProgram from '../src/commands/utils/migrate-state.js';
|
|
64
|
+
import upgradeProgram from '../src/commands/utils/upgrade.js';
|
|
65
|
+
|
|
66
|
+
// Libraries
|
|
67
|
+
import { LearningSystem } from '../src/lib/learning/learning-system.js';
|
|
42
68
|
|
|
43
69
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
44
70
|
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf8'));
|
|
@@ -97,6 +123,14 @@ program
|
|
|
97
123
|
.option('-i, --ids-only', 'Output only agent IDs (one per line)')
|
|
98
124
|
.action(detectAgentsCommand);
|
|
99
125
|
|
|
126
|
+
program
|
|
127
|
+
.command('detect-workflow <input...>')
|
|
128
|
+
.description('Detect appropriate workflow for a feature request')
|
|
129
|
+
.option('-v, --verbose', 'Show detailed detection reasoning')
|
|
130
|
+
.option('-j, --json', 'Output as JSON')
|
|
131
|
+
.option('-p, --project-path <path>', 'Project path (default: current directory)')
|
|
132
|
+
.action(detectWorkflowCommand);
|
|
133
|
+
|
|
100
134
|
program
|
|
101
135
|
.command('sync')
|
|
102
136
|
.description('Sync standards from feature decisions')
|
|
@@ -335,6 +369,60 @@ learnCommand
|
|
|
335
369
|
console.log(chalk.green('\n✅ Knowledge base reset\n'));
|
|
336
370
|
});
|
|
337
371
|
|
|
372
|
+
// Template management commands
|
|
373
|
+
const templateCommand = program
|
|
374
|
+
.command('template')
|
|
375
|
+
.description('Template management (list | show | render | customize | validate)');
|
|
376
|
+
|
|
377
|
+
templateCommand
|
|
378
|
+
.command('list')
|
|
379
|
+
.description('List all available templates')
|
|
380
|
+
.option('--category <category>', 'Filter by category (documentation, code, infrastructure, context, examples)')
|
|
381
|
+
.option('--phase <phase>', 'Filter by phase (proposal, design, implement, etc.)')
|
|
382
|
+
.option('--stack <stack>', 'Filter by stack (blazor-azure, nextjs-supabase)')
|
|
383
|
+
.option('--required', 'Show only required templates')
|
|
384
|
+
.action(templateListCommand);
|
|
385
|
+
|
|
386
|
+
templateCommand
|
|
387
|
+
.command('show <template-id>')
|
|
388
|
+
.description('Show detailed information about a template')
|
|
389
|
+
.option('--show-path', 'Show resolved template file path')
|
|
390
|
+
.option('--preview', 'Show first 20 lines of template content')
|
|
391
|
+
.option('--stack <stack>', 'Stack for path resolution (default: blazor-azure)')
|
|
392
|
+
.option('--project-path <path>', 'Project path (default: current directory)')
|
|
393
|
+
.action(templateShowCommand);
|
|
394
|
+
|
|
395
|
+
templateCommand
|
|
396
|
+
.command('render <template-id> <output-path> <variables-json>')
|
|
397
|
+
.description('Render a template with variables')
|
|
398
|
+
.option('--dry-run', 'Preview without writing file')
|
|
399
|
+
.option('--stack <stack>', 'Stack for template resolution (default: blazor-azure)')
|
|
400
|
+
.option('--project-path <path>', 'Project path (default: current directory)')
|
|
401
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
402
|
+
.action(templateRenderCommand);
|
|
403
|
+
|
|
404
|
+
templateCommand
|
|
405
|
+
.command('customize <template-id>')
|
|
406
|
+
.description('Copy framework template to project for customization')
|
|
407
|
+
.option('--stack <stack>', 'Target stack (default: blazor-azure)')
|
|
408
|
+
.option('--local', 'Copy to project .morph/templates/ instead of stack')
|
|
409
|
+
.option('--force', 'Overwrite existing customized template')
|
|
410
|
+
.option('--project-path <path>', 'Project path (default: current directory)')
|
|
411
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
412
|
+
.action(templateCustomizeCommand);
|
|
413
|
+
|
|
414
|
+
templateCommand
|
|
415
|
+
.command('validate [template-id]')
|
|
416
|
+
.description('Validate template(s) for correct Handlebars syntax')
|
|
417
|
+
.option('--category <category>', 'Validate templates in specific category')
|
|
418
|
+
.option('--technology <technology>', 'Validate templates for specific technology')
|
|
419
|
+
.option('--include-deprecated', 'Include deprecated templates')
|
|
420
|
+
.option('--show-valid', 'Show valid templates in output')
|
|
421
|
+
.option('--strict', 'Exit with error on warnings')
|
|
422
|
+
.option('--project-path <path>', 'Project path (default: current directory)')
|
|
423
|
+
.option('-v, --verbose', 'Show detailed validation information')
|
|
424
|
+
.action(templateValidateCommand);
|
|
425
|
+
|
|
338
426
|
// Troubleshooting command
|
|
339
427
|
program
|
|
340
428
|
.command('troubleshoot <keywords...>')
|
package/bin/validate.js
CHANGED
|
@@ -20,7 +20,7 @@ import chalk from 'chalk';
|
|
|
20
20
|
import { validatePackages } from '../src/lib/validators/package-validator.js';
|
|
21
21
|
import { validateArchitecture } from '../src/lib/validators/architecture-validator.js';
|
|
22
22
|
import { validateContrast } from '../src/lib/validators/ui-contrast-validator.js';
|
|
23
|
-
import { LearningSystem } from '../src/lib/learning-system.js';
|
|
23
|
+
import { LearningSystem } from '../src/lib/learning/learning-system.js';
|
|
24
24
|
|
|
25
25
|
const VALIDATORS = {
|
|
26
26
|
packages: {
|
package/docs/getting-started.md
CHANGED
|
@@ -97,11 +97,6 @@ seu-projeto/
|
|
|
97
97
|
│ │ ├── subscription.cs # Modelo de assinaturas
|
|
98
98
|
│ │ └── tenant.cs # Multi-tenancy
|
|
99
99
|
│ │
|
|
100
|
-
│ ├── examples/ # Exemplos completos
|
|
101
|
-
│ │ ├── micro-saas/ # Blazor + Asaas billing
|
|
102
|
-
│ │ ├── api-nextjs/ # .NET API + Next.js
|
|
103
|
-
│ │ └── multi-agent/ # Semantic Kernel agents
|
|
104
|
-
│ │
|
|
105
100
|
│ ├── specs/ # Specs ativas
|
|
106
101
|
│ ├── features/ # Features em desenvolvimento
|
|
107
102
|
│ └── archive/ # Features concluídas
|