@polymorphism-tech/morph-spec 4.3.7 → 4.6.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 +6 -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/{standards → framework/standards}/frontend/nextjs/nextjs-patterns.md +17 -0
- 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/framework/templates/docs/user-stories.md +34 -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 +7 -0
- package/.morph/memory/pre-compact-2026-02-23T15-43-03-521Z.json +16 -0
- package/.morph/state.json +1 -1
- package/CLAUDE.md +77 -155
- 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/{skills/level-2-domains → agents}/ai-agents/ai-system-architect.md +7 -3
- package/framework/{skills/level-2-domains → agents}/architecture/po-pm-advisor.md +7 -1
- package/framework/{skills/level-2-domains → agents}/architecture/prompt-engineer.md +7 -1
- package/framework/{skills/level-2-domains → agents}/architecture/seo-growth-hacker.md +7 -1
- package/framework/{skills/level-2-domains → agents}/architecture/standards-architect.md +10 -6
- package/framework/agents/backend/api-designer.md +103 -0
- package/framework/{skills/level-2-domains → agents}/backend/dotnet-senior.md +7 -1
- package/framework/agents/backend/ef-modeler.md +119 -0
- package/framework/{skills/level-2-domains → agents}/backend/hangfire-orchestrator.md +8 -4
- package/framework/{skills/level-2-domains → agents}/backend/ms-agent-expert.md +7 -3
- package/framework/{skills/level-2-domains → agents}/frontend/blazor-builder.md +7 -3
- package/framework/{skills/level-2-domains → agents}/frontend/nextjs-expert.md +7 -3
- package/framework/{skills/level-2-domains → agents}/frontend/ui-ux-designer.md +8 -2
- package/framework/{skills/level-2-domains → agents}/infrastructure/azure-architect.md +7 -1
- package/framework/{skills/level-2-domains → agents}/infrastructure/azure-deploy-specialist.md +7 -1
- package/framework/{skills/level-2-domains → agents}/infrastructure/bicep-architect.md +7 -3
- package/framework/{skills/level-2-domains → agents}/infrastructure/container-specialist.md +7 -3
- package/framework/{skills/level-2-domains → agents}/infrastructure/devops-engineer.md +7 -3
- package/framework/{skills/level-2-domains → agents}/integrations/asaas-financial.md +7 -3
- package/framework/{skills/level-2-domains → agents}/integrations/azure-identity.md +7 -3
- package/framework/{skills/level-2-domains → agents}/integrations/clerk-auth.md +7 -3
- package/framework/{skills/level-2-domains/integrations/hangfire-orchestrator.md → agents/integrations/hangfire-integration.md} +7 -1
- package/framework/{skills/level-2-domains → agents}/integrations/resend-email.md +7 -3
- package/framework/{skills/level-2-domains → agents}/quality/code-analyzer.md +9 -5
- package/framework/{skills/level-2-domains → agents}/quality/testing-specialist.md +7 -3
- 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 +538 -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/README.md +66 -0
- package/framework/skills/level-0-meta/brainstorming/SKILL.md +135 -0
- package/framework/skills/level-0-meta/brainstorming/references/proposal-example.md +138 -0
- package/framework/skills/level-0-meta/{code-review.md → code-review/SKILL.md} +13 -4
- package/framework/skills/level-0-meta/code-review/references/review-example.md +164 -0
- package/framework/skills/level-0-meta/code-review/scripts/scan-csharp.mjs +121 -0
- package/framework/skills/level-0-meta/mcp-registry.json +207 -0
- package/framework/skills/level-0-meta/{morph-checklist.md → morph-checklist/SKILL.md} +8 -3
- package/framework/skills/{level-1-workflows/morph-replicate.md → level-0-meta/morph-replicate/SKILL.md} +13 -6
- package/framework/skills/level-0-meta/{simulation-checklist.md → simulation-checklist/SKILL.md} +9 -4
- package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +334 -0
- package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +147 -0
- package/framework/skills/level-0-meta/verification-before-completion/scripts/check-phase-outputs.mjs +110 -0
- package/framework/skills/level-1-workflows/{phase-clarify.md → phase-clarify/SKILL.md} +65 -4
- package/framework/skills/level-1-workflows/phase-clarify/references/clarifications-example.md +117 -0
- package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +181 -0
- package/framework/skills/level-1-workflows/phase-design/SKILL.md +303 -0
- package/framework/skills/level-1-workflows/phase-design/references/spec-example.md +253 -0
- package/framework/skills/level-1-workflows/phase-implement/SKILL.md +254 -0
- package/framework/skills/level-1-workflows/phase-implement/references/recap-example.md +132 -0
- package/framework/skills/level-1-workflows/phase-setup/SKILL.md +171 -0
- package/framework/skills/level-1-workflows/{phase-tasks.md → phase-tasks/SKILL.md} +89 -7
- package/framework/skills/level-1-workflows/phase-tasks/references/tasks-example.md +231 -0
- package/framework/skills/level-1-workflows/phase-tasks/scripts/validate-tasks.mjs +112 -0
- package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +246 -0
- 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 -1
- 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 -136
- 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 +60 -88
- 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 +390 -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 +118 -0
- package/.morph/project/context/README.md +0 -17
- 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/framework/skills/level-1-workflows/phase-design.md +0 -213
- package/framework/skills/level-1-workflows/phase-setup.md +0 -106
- package/framework/skills/level-1-workflows/phase-uiux.md +0 -169
- package/framework/skills/level-2-domains/backend/api-designer.md +0 -59
- package/framework/skills/level-2-domains/backend/ef-modeler.md +0 -58
- package/framework/skills/level-3-technologies/README.md +0 -7
- package/framework/skills/level-4-patterns/README.md +0 -7
- 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/{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}/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/{skills/level-2-domains → agents}/README.md +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
package/bin/morph-spec.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { program } from 'commander';
|
|
4
4
|
import chalk from 'chalk';
|
|
@@ -9,11 +9,18 @@ import { readFileSync } from 'fs';
|
|
|
9
9
|
// Project commands
|
|
10
10
|
import { initCommand } from '../src/commands/project/init.js';
|
|
11
11
|
import { updateCommand } from '../src/commands/project/update.js';
|
|
12
|
+
import { updateAgentsCommand } from '../src/commands/project/update-agents.js';
|
|
12
13
|
import { doctorCommand } from '../src/commands/project/doctor.js';
|
|
13
14
|
import { detectCommand } from '../src/commands/project/detect.js';
|
|
14
|
-
|
|
15
|
-
import { detectWorkflowCommand } from '../src/commands/project/detect-workflow.js';
|
|
15
|
+
|
|
16
16
|
import { syncCommand } from '../src/commands/project/sync.js';
|
|
17
|
+
import { statusCommand } from '../src/commands/project/status.js';
|
|
18
|
+
import { diffCommand, diffSaveCommand } from '../src/commands/project/diff.js';
|
|
19
|
+
import { costCommand } from '../src/commands/project/cost.js';
|
|
20
|
+
import { revertCommand } from '../src/commands/project/revert.js';
|
|
21
|
+
import { checkpointSaveCommand, checkpointRestoreCommand, checkpointListCommand } from '../src/commands/project/checkpoint.js';
|
|
22
|
+
|
|
23
|
+
import { changesCommand } from '../src/commands/project/changes.js';
|
|
17
24
|
|
|
18
25
|
// Feature commands
|
|
19
26
|
import { createStoryCommand } from '../src/commands/feature/create-story.js';
|
|
@@ -32,7 +39,7 @@ import { taskDoneCommand, taskStartCommand, taskNextCommand } from '../src/comma
|
|
|
32
39
|
|
|
33
40
|
// Generation commands
|
|
34
41
|
import { generateDesignSystemCommand, generateMetadataCommand } from '../src/commands/generation/generate.js';
|
|
35
|
-
import {
|
|
42
|
+
import { generateOnboardingCommand } from '../src/commands/generation/generate-onboarding.js';
|
|
36
43
|
|
|
37
44
|
// Validation commands
|
|
38
45
|
import { validateCommand } from './validate.js';
|
|
@@ -41,6 +48,7 @@ import { lintFluentCommand } from '../src/commands/validation/lint-fluent.js';
|
|
|
41
48
|
import { analyzeBlazorConcurrencyCommand } from '../src/commands/validation/analyze-blazor-concurrency.js';
|
|
42
49
|
import { validateBlazorStateCommand } from '../src/commands/validation/validate-blazor-state.js';
|
|
43
50
|
import { validateCssCommand } from '../src/commands/validation/validate-css.js';
|
|
51
|
+
import { validateFeatureCommand } from '../src/commands/validation/validate-feature.js';
|
|
44
52
|
|
|
45
53
|
// Template commands
|
|
46
54
|
import { templateListCommand } from '../src/commands/templates/template-list.js';
|
|
@@ -50,7 +58,6 @@ import { templateCustomizeCommand } from '../src/commands/templates/template-cus
|
|
|
50
58
|
import { templateValidateCommand } from '../src/commands/templates/template-validate.js';
|
|
51
59
|
|
|
52
60
|
// Agent commands
|
|
53
|
-
import { spawnTeamCommand } from '../src/commands/agents/spawn-team.js';
|
|
54
61
|
|
|
55
62
|
// Learning commands
|
|
56
63
|
import capturePatternProgram from '../src/commands/learning/capture-pattern.js';
|
|
@@ -58,39 +65,10 @@ import searchPatternsProgram from '../src/commands/learning/search-patterns.js';
|
|
|
58
65
|
|
|
59
66
|
// Utility commands
|
|
60
67
|
import troubleshootCommand from '../src/commands/utils/troubleshoot.js';
|
|
61
|
-
import { sessionSummaryCommand } from '../src/commands/utils/session-summary.js';
|
|
62
|
-
|
|
63
|
-
// Thread, Analytics, Core Four commands
|
|
64
|
-
import {
|
|
65
|
-
threadsListCommand, threadsStatusCommand, threadsKillCommand,
|
|
66
|
-
threadsAnalyticsCommand, threadsWaitAllCommand, threadsWaitAnyCommand
|
|
67
|
-
} from '../src/commands/threads/threads.js';
|
|
68
|
-
import {
|
|
69
|
-
analyticsFeatureCommand, analyticsContextCommand, analyticsProjectCommand
|
|
70
|
-
} from '../src/commands/analytics/analytics.js';
|
|
71
|
-
import { coreFourCommand } from '../src/commands/context/core-four.js';
|
|
72
68
|
|
|
73
69
|
// Context Optimization commands
|
|
74
70
|
import { mcpOptimizeCommand, mcpListCommand } from '../src/commands/mcp/mcp.js';
|
|
75
|
-
import {
|
|
76
|
-
microAgentCreateCommand, microAgentListCommand, microAgentShowCommand
|
|
77
|
-
} from '../src/commands/agents/micro-agent.js';
|
|
78
|
-
import { contextPrimeCommand } from '../src/commands/context/context-prime.js';
|
|
79
|
-
|
|
80
|
-
// Parallelization commands
|
|
81
|
-
import {
|
|
82
|
-
squadTemplateListCommand, squadTemplateUseCommand, squadTemplateShowCommand
|
|
83
|
-
} from '../src/commands/agents/squad-template.js';
|
|
84
|
-
import {
|
|
85
|
-
threadTemplateListCommand, threadTemplateUseCommand
|
|
86
|
-
} from '../src/commands/threads/thread-template.js';
|
|
87
|
-
import { spawnTeamParallelCommand } from '../src/commands/agents/spawn-team.js';
|
|
88
|
-
|
|
89
|
-
// Fusion commands
|
|
90
|
-
import { agentsFuseCommand, agentsReviewAggregateCommand } from '../src/commands/agents/agents-fuse.js';
|
|
91
|
-
|
|
92
|
-
// Meta-Prompts (HOP) commands
|
|
93
|
-
import { hopRenderCommand, hopListCommand } from '../src/commands/templates/template-render.js';
|
|
71
|
+
import { mcpSetupCommand } from '../src/commands/mcp/mcp-setup.js';
|
|
94
72
|
|
|
95
73
|
// Trust commands
|
|
96
74
|
import {
|
|
@@ -127,6 +105,7 @@ program
|
|
|
127
105
|
.description('Initialize MORPH-SPEC in current directory')
|
|
128
106
|
.option('-f, --force', 'Overwrite existing MORPH installation')
|
|
129
107
|
.option('-p, --path <path>', 'Target path (default: current directory)')
|
|
108
|
+
.option('--skip-mcp', 'Skip MCP server auto-setup')
|
|
130
109
|
.action(initCommand);
|
|
131
110
|
|
|
132
111
|
program
|
|
@@ -136,10 +115,16 @@ program
|
|
|
136
115
|
.option('--standards', 'Update only standards')
|
|
137
116
|
.action(updateCommand);
|
|
138
117
|
|
|
118
|
+
program
|
|
119
|
+
.command('update-agents')
|
|
120
|
+
.description('Refresh .claude/agents/ with latest morph orchestrator and domain agents')
|
|
121
|
+
.action(updateAgentsCommand);
|
|
122
|
+
|
|
139
123
|
program
|
|
140
124
|
.command('doctor')
|
|
141
125
|
.description('Check MORPH installation health')
|
|
142
126
|
.option('--full', 'Run full health check (lib files, commands, HOPs, standards, agents, state)')
|
|
127
|
+
.option('--reset', 'Remove morph-managed entries from .claude/settings.local.json')
|
|
143
128
|
.action(doctorCommand);
|
|
144
129
|
|
|
145
130
|
program
|
|
@@ -150,22 +135,6 @@ program
|
|
|
150
135
|
.option('--no-save', 'Do not save results to .morph/project/')
|
|
151
136
|
.action(detectCommand);
|
|
152
137
|
|
|
153
|
-
program
|
|
154
|
-
.command('detect-agents <input...>')
|
|
155
|
-
.description('Detect which agents to activate based on keywords in user input')
|
|
156
|
-
.option('-v, --verbose', 'Show detailed detection results')
|
|
157
|
-
.option('-j, --json', 'Output full result as JSON')
|
|
158
|
-
.option('-i, --ids-only', 'Output only agent IDs (one per line)')
|
|
159
|
-
.action(detectAgentsCommand);
|
|
160
|
-
|
|
161
|
-
program
|
|
162
|
-
.command('detect-workflow <input...>')
|
|
163
|
-
.description('Detect appropriate workflow for a feature request')
|
|
164
|
-
.option('-v, --verbose', 'Show detailed detection reasoning')
|
|
165
|
-
.option('-j, --json', 'Output as JSON')
|
|
166
|
-
.option('-p, --project-path <path>', 'Project path (default: current directory)')
|
|
167
|
-
.action(detectWorkflowCommand);
|
|
168
|
-
|
|
169
138
|
program
|
|
170
139
|
.command('sync')
|
|
171
140
|
.description('Sync standards from feature decisions')
|
|
@@ -173,6 +142,19 @@ program
|
|
|
173
142
|
.option('--dry-run', 'Show what would be synced without updating files')
|
|
174
143
|
.action(syncCommand);
|
|
175
144
|
|
|
145
|
+
program
|
|
146
|
+
.command('status <feature>')
|
|
147
|
+
.description('Show comprehensive feature status dashboard')
|
|
148
|
+
.option('--json', 'Output as JSON')
|
|
149
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
150
|
+
.action(statusCommand);
|
|
151
|
+
|
|
152
|
+
program
|
|
153
|
+
.command('changes <feature>')
|
|
154
|
+
.description('List files created/modified by a feature, grouped by phase')
|
|
155
|
+
.option('--json', 'Output as JSON')
|
|
156
|
+
.action((feature, options) => changesCommand(feature, options));
|
|
157
|
+
|
|
176
158
|
// Story-driven development commands
|
|
177
159
|
const storyCommand = program
|
|
178
160
|
.command('story')
|
|
@@ -258,13 +240,6 @@ generateCommand
|
|
|
258
240
|
await generateRecap('.', feature, options);
|
|
259
241
|
});
|
|
260
242
|
|
|
261
|
-
generateCommand
|
|
262
|
-
.command('context [feature]')
|
|
263
|
-
.description('Generate CONTEXT.md with full project data for Claude Code')
|
|
264
|
-
.action(async (feature) => {
|
|
265
|
-
await generateContextCommand('.', feature);
|
|
266
|
-
});
|
|
267
|
-
|
|
268
243
|
generateCommand
|
|
269
244
|
.command('metadata <feature>')
|
|
270
245
|
.description('Generate metadata.json summary from markdown outputs')
|
|
@@ -272,6 +247,11 @@ generateCommand
|
|
|
272
247
|
.option('--verbose', 'Show detailed extraction info')
|
|
273
248
|
.action((feature, options) => generateMetadataCommand(feature, options));
|
|
274
249
|
|
|
250
|
+
generateCommand
|
|
251
|
+
.command('onboarding')
|
|
252
|
+
.description('Generate onboarding.md guide with project context, MCPs, agents, and workflows')
|
|
253
|
+
.action(generateOnboardingCommand);
|
|
254
|
+
|
|
275
255
|
// Validation commands (Sprint 4: Continuous Validation)
|
|
276
256
|
program
|
|
277
257
|
.command('validate [validator]')
|
|
@@ -404,6 +384,26 @@ learnCommand
|
|
|
404
384
|
console.log(chalk.green('\n✅ Knowledge base reset\n'));
|
|
405
385
|
});
|
|
406
386
|
|
|
387
|
+
// Standards browsing command
|
|
388
|
+
program
|
|
389
|
+
.command('standards')
|
|
390
|
+
.description('Browse framework standards library')
|
|
391
|
+
.option('--list', 'List all standards')
|
|
392
|
+
.option('--search <query>', 'Search standards by keyword')
|
|
393
|
+
.option('--show <id>', 'Show full content of a standard')
|
|
394
|
+
.option('--category <cat>', 'Filter by category (core, backend, frontend, infrastructure, ...)')
|
|
395
|
+
.option('--json', 'Output as JSON')
|
|
396
|
+
.action(async (opts) => {
|
|
397
|
+
const { listStandards, searchStandards, showStandard } = await import('../src/commands/project/standards.js');
|
|
398
|
+
if (opts.search) {
|
|
399
|
+
await searchStandards(opts.search, opts);
|
|
400
|
+
} else if (opts.show) {
|
|
401
|
+
await showStandard(opts.show);
|
|
402
|
+
} else {
|
|
403
|
+
await listStandards(opts);
|
|
404
|
+
}
|
|
405
|
+
});
|
|
406
|
+
|
|
407
407
|
// Template management commands
|
|
408
408
|
const templateCommand = program
|
|
409
409
|
.command('template')
|
|
@@ -454,23 +454,6 @@ templateCommand
|
|
|
454
454
|
.option('-v, --verbose', 'Show detailed validation information')
|
|
455
455
|
.action(templateValidateCommand);
|
|
456
456
|
|
|
457
|
-
// HOP (Higher-Order Prompts) commands
|
|
458
|
-
const hopCommand = program
|
|
459
|
-
.command('hop')
|
|
460
|
-
.description('Higher-Order Prompts — render and manage meta-prompt templates');
|
|
461
|
-
|
|
462
|
-
hopCommand
|
|
463
|
-
.command('list')
|
|
464
|
-
.description('List all available HOP templates')
|
|
465
|
-
.action(hopListCommand);
|
|
466
|
-
|
|
467
|
-
hopCommand
|
|
468
|
-
.command('render <hop-id> [output-path]')
|
|
469
|
-
.description('Render a HOP template with variables')
|
|
470
|
-
.option('--variables <json>', 'Variables JSON string', '{}')
|
|
471
|
-
.option('--dry-run', 'Preview without writing file')
|
|
472
|
-
.action((hopId, outputPath, options) => hopRenderCommand(hopId, outputPath, options.variables, options));
|
|
473
|
-
|
|
474
457
|
// Trust commands
|
|
475
458
|
const trustCommand = program
|
|
476
459
|
.command('trust')
|
|
@@ -529,13 +512,60 @@ program
|
|
|
529
512
|
.option('-v, --verbose', 'Show detailed output')
|
|
530
513
|
.action(validatePhaseCommand);
|
|
531
514
|
|
|
532
|
-
//
|
|
515
|
+
// Feature validation command (content-aware)
|
|
516
|
+
program
|
|
517
|
+
.command('validate-feature <feature>')
|
|
518
|
+
.alias('vf')
|
|
519
|
+
.description('Content-aware validation of feature outputs (sections, schema, contracts)')
|
|
520
|
+
.option('--phase <phase>', 'Validate outputs for a specific phase')
|
|
521
|
+
.option('--json', 'Output as JSON')
|
|
522
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
523
|
+
.action(validateFeatureCommand);
|
|
524
|
+
|
|
525
|
+
// Diff command
|
|
526
|
+
program
|
|
527
|
+
.command('diff <feature> [output-file]')
|
|
528
|
+
.description('Show changes to specifications since last snapshot')
|
|
529
|
+
.option('--json', 'Output as JSON')
|
|
530
|
+
.action(diffCommand);
|
|
531
|
+
|
|
532
|
+
program
|
|
533
|
+
.command('diff-save <feature>')
|
|
534
|
+
.description('Save current outputs as snapshot for future diffs')
|
|
535
|
+
.action(diffSaveCommand);
|
|
536
|
+
|
|
537
|
+
// Cost tracking command
|
|
538
|
+
program
|
|
539
|
+
.command('cost <feature>')
|
|
540
|
+
.description('Track token usage and cost estimates across phases')
|
|
541
|
+
.option('--json', 'Output as JSON')
|
|
542
|
+
.action(costCommand);
|
|
543
|
+
|
|
544
|
+
// Revert command
|
|
533
545
|
program
|
|
534
|
-
.command('
|
|
535
|
-
.
|
|
536
|
-
.
|
|
546
|
+
.command('revert <feature>')
|
|
547
|
+
.description('Revert feature to a previous phase')
|
|
548
|
+
.option('--to <phase>', 'Target phase to revert to')
|
|
549
|
+
.option('--delete-outputs', 'Delete output files (default: preserve files, reset state)')
|
|
550
|
+
.action(revertCommand);
|
|
551
|
+
|
|
552
|
+
// Checkpoint save/restore commands
|
|
553
|
+
program
|
|
554
|
+
.command('checkpoint-save <feature>')
|
|
555
|
+
.description('Save full context at current phase boundary')
|
|
556
|
+
.option('--label <label>', 'Custom label for checkpoint')
|
|
557
|
+
.action(checkpointSaveCommand);
|
|
558
|
+
|
|
559
|
+
program
|
|
560
|
+
.command('checkpoint-restore <feature> [checkpoint]')
|
|
561
|
+
.description('Restore feature from a checkpoint (latest if no name given)')
|
|
562
|
+
.action(checkpointRestoreCommand);
|
|
563
|
+
|
|
564
|
+
program
|
|
565
|
+
.command('checkpoint-list <feature>')
|
|
566
|
+
.description('List all checkpoints for a feature')
|
|
537
567
|
.option('--json', 'Output as JSON')
|
|
538
|
-
.action(
|
|
568
|
+
.action(checkpointListCommand);
|
|
539
569
|
|
|
540
570
|
// Rollback phase command
|
|
541
571
|
program
|
|
@@ -564,93 +594,10 @@ program
|
|
|
564
594
|
.option('--json', 'Output as JSON')
|
|
565
595
|
.action((feature, options) => approvalStatusCommand(feature, options));
|
|
566
596
|
|
|
567
|
-
// Agent team spawning
|
|
568
|
-
program
|
|
569
|
-
.command('spawn-team <feature>')
|
|
570
|
-
.description('Generate agent team configuration for Task tool')
|
|
571
|
-
.option('--json', 'Output as JSON')
|
|
572
|
-
.option('--verbose', 'Show detailed team configuration')
|
|
573
|
-
.action((feature, options) => spawnTeamCommand(feature, options));
|
|
574
|
-
|
|
575
597
|
// Pattern learning system - Add as subcommands
|
|
576
598
|
program.addCommand(capturePatternProgram);
|
|
577
599
|
program.addCommand(searchPatternsProgram);
|
|
578
600
|
|
|
579
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
580
|
-
// Thread Management
|
|
581
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
582
|
-
const threadsCommand = program
|
|
583
|
-
.command('threads')
|
|
584
|
-
.description('Thread lifecycle management');
|
|
585
|
-
|
|
586
|
-
threadsCommand
|
|
587
|
-
.command('list')
|
|
588
|
-
.description('List threads (optionally filtered by feature/status/type)')
|
|
589
|
-
.option('--feature <feature>', 'Filter by feature name')
|
|
590
|
-
.option('--status <status>', 'Filter by status (pending|running|completed|failed|killed)')
|
|
591
|
-
.option('--type <type>', 'Filter by type (base|parallel|fusion|long-running|zero-touch)')
|
|
592
|
-
.action((options) => threadsListCommand(options));
|
|
593
|
-
|
|
594
|
-
threadsCommand
|
|
595
|
-
.command('status <id>')
|
|
596
|
-
.description('Show detailed status of a thread')
|
|
597
|
-
.action((id) => threadsStatusCommand(id));
|
|
598
|
-
|
|
599
|
-
threadsCommand
|
|
600
|
-
.command('kill <id>')
|
|
601
|
-
.description('Terminate a running thread')
|
|
602
|
-
.action((id) => threadsKillCommand(id));
|
|
603
|
-
|
|
604
|
-
threadsCommand
|
|
605
|
-
.command('analytics')
|
|
606
|
-
.description('Show thread analytics dashboard for a feature')
|
|
607
|
-
.option('--feature <feature>', 'Feature name (required)')
|
|
608
|
-
.action((options) => threadsAnalyticsCommand(options));
|
|
609
|
-
|
|
610
|
-
threadsCommand
|
|
611
|
-
.command('wait-all <feature>')
|
|
612
|
-
.description('Block until all threads for a feature complete')
|
|
613
|
-
.option('--timeout <minutes>', 'Timeout in minutes (default: 60)', '60')
|
|
614
|
-
.action((feature, options) => threadsWaitAllCommand(feature, options));
|
|
615
|
-
|
|
616
|
-
threadsCommand
|
|
617
|
-
.command('wait-any <feature>')
|
|
618
|
-
.description('Block until any thread for a feature completes')
|
|
619
|
-
.option('--timeout <minutes>', 'Timeout in minutes (default: 60)', '60')
|
|
620
|
-
.action((feature, options) => threadsWaitAnyCommand(feature, options));
|
|
621
|
-
|
|
622
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
623
|
-
// Analytics
|
|
624
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
625
|
-
const analyticsCommand = program
|
|
626
|
-
.command('analytics')
|
|
627
|
-
.description('Metrics and analytics dashboards');
|
|
628
|
-
|
|
629
|
-
analyticsCommand
|
|
630
|
-
.command('feature <name>')
|
|
631
|
-
.description('Show thread analytics dashboard for a feature')
|
|
632
|
-
.action((name, options) => analyticsFeatureCommand(name, options));
|
|
633
|
-
|
|
634
|
-
analyticsCommand
|
|
635
|
-
.command('context <name>')
|
|
636
|
-
.description('Show context token usage and optimization opportunities')
|
|
637
|
-
.action((name, options) => analyticsContextCommand(name, options));
|
|
638
|
-
|
|
639
|
-
analyticsCommand
|
|
640
|
-
.command('project')
|
|
641
|
-
.description('Show project-wide analytics dashboard (30-day summary)')
|
|
642
|
-
.option('--period <days>', 'Period in days (default: 30)', '30')
|
|
643
|
-
.action((options) => analyticsProjectCommand(options));
|
|
644
|
-
|
|
645
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
646
|
-
// Core Four
|
|
647
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
648
|
-
program
|
|
649
|
-
.command('core-four <feature>')
|
|
650
|
-
.description('Show Core Four dashboard: Context/Model/Prompt/Tools')
|
|
651
|
-
.option('--json', 'Output as JSON')
|
|
652
|
-
.action((feature, options) => coreFourCommand(feature, options));
|
|
653
|
-
|
|
654
601
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
655
602
|
// MCP Optimizer
|
|
656
603
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
@@ -668,108 +615,11 @@ mcpCommand
|
|
|
668
615
|
.description('List configured MCP servers with usage stats')
|
|
669
616
|
.action((options) => mcpListCommand(options));
|
|
670
617
|
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
.
|
|
676
|
-
.
|
|
677
|
-
|
|
678
|
-
microAgentCommand
|
|
679
|
-
.command('create <name>')
|
|
680
|
-
.description('Create a new micro-agent')
|
|
681
|
-
.option('--base-agent <agent>', 'Base agent ID to specialize from')
|
|
682
|
-
.option('--mission <mission>', 'Single focused mission for this agent')
|
|
683
|
-
.option('--standards <files>', 'Comma-separated standards files to load (1-3 max)')
|
|
684
|
-
.option('--tools <tools>', 'Comma-separated tools to allow (default: Read,Write,Edit)')
|
|
685
|
-
.action((name, options) => microAgentCreateCommand(name, options));
|
|
686
|
-
|
|
687
|
-
microAgentCommand
|
|
688
|
-
.command('list')
|
|
689
|
-
.description('List all micro-agents')
|
|
690
|
-
.action((options) => microAgentListCommand(options));
|
|
691
|
-
|
|
692
|
-
microAgentCommand
|
|
693
|
-
.command('show <name>')
|
|
694
|
-
.description('Show micro-agent details')
|
|
695
|
-
.option('--show-prompt', 'Show the generated system prompt')
|
|
696
|
-
.action((name, options) => microAgentShowCommand(name, options));
|
|
697
|
-
|
|
698
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
699
|
-
// Context Prime
|
|
700
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
701
|
-
program
|
|
702
|
-
.command('prime [type]')
|
|
703
|
-
.description('Output context priming file (feature|bug|refactor|design|infra)')
|
|
704
|
-
.option('--json', 'Output as JSON')
|
|
705
|
-
.action((type, options) => contextPrimeCommand(type, options));
|
|
706
|
-
|
|
707
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
708
|
-
// Fusion (F-Thread)
|
|
709
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
710
|
-
const agentsFuseCmd = program
|
|
711
|
-
.command('agents-fuse')
|
|
712
|
-
.description('F-Thread fusion execution: run N agents, aggregate best result');
|
|
713
|
-
|
|
714
|
-
agentsFuseCmd
|
|
715
|
-
.command('run')
|
|
716
|
-
.description('Run fusion: spawn N agents with same prompt, aggregate results')
|
|
717
|
-
.option('--prompt <prompt>', 'Prompt/mission for all fusion agents (required)')
|
|
718
|
-
.option('--count <n>', 'Number of agents to run (default: 3)', '3')
|
|
719
|
-
.option('--strategy <strategy>', 'Aggregation strategy: best-of-n | consensus | manual-select', 'best-of-n')
|
|
720
|
-
.option('--feature <feature>', 'Feature name for tracking')
|
|
721
|
-
.option('--agents <list>', 'Comma-separated agent IDs to use')
|
|
722
|
-
.option('--json', 'Output as JSON')
|
|
723
|
-
.action((options) => agentsFuseCommand(options));
|
|
724
|
-
|
|
725
|
-
agentsFuseCmd
|
|
726
|
-
.command('aggregate-reviews <feature>')
|
|
727
|
-
.description('Aggregate review results from N agents')
|
|
728
|
-
.option('--agents <list>', 'Comma-separated agent IDs (required)')
|
|
729
|
-
.option('--strategy <strategy>', 'Aggregation strategy', 'best-of-n')
|
|
730
|
-
.action((feature, options) => agentsReviewAggregateCommand(feature, options));
|
|
731
|
-
|
|
732
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
733
|
-
// Squad Templates
|
|
734
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
735
|
-
const squadTemplateCmd = program
|
|
736
|
-
.command('squad-template')
|
|
737
|
-
.description('Squad template management for parallel execution');
|
|
738
|
-
|
|
739
|
-
squadTemplateCmd
|
|
740
|
-
.command('list')
|
|
741
|
-
.description('List available squad templates')
|
|
742
|
-
.action((options) => squadTemplateListCommand(options));
|
|
743
|
-
|
|
744
|
-
squadTemplateCmd
|
|
745
|
-
.command('use <template-id>')
|
|
746
|
-
.description('Configure a feature to use a squad template')
|
|
747
|
-
.option('--feature <feature>', 'Feature name (required)')
|
|
748
|
-
.action((id, options) => squadTemplateUseCommand(id, options));
|
|
749
|
-
|
|
750
|
-
squadTemplateCmd
|
|
751
|
-
.command('show <template-id>')
|
|
752
|
-
.description('Show squad template details')
|
|
753
|
-
.option('--json', 'Output as JSON')
|
|
754
|
-
.action((id, options) => squadTemplateShowCommand(id, options));
|
|
755
|
-
|
|
756
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
757
|
-
// Commands — Thread Templates
|
|
758
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
759
|
-
const threadTemplateCmd = program
|
|
760
|
-
.command('thread-template')
|
|
761
|
-
.description('Thread type management');
|
|
762
|
-
|
|
763
|
-
threadTemplateCmd
|
|
764
|
-
.command('list')
|
|
765
|
-
.description('List available thread types (B/P/F/L/Z-Thread)')
|
|
766
|
-
.action((options) => threadTemplateListCommand(options));
|
|
767
|
-
|
|
768
|
-
threadTemplateCmd
|
|
769
|
-
.command('use <type>')
|
|
770
|
-
.description('Configure thread type for a feature')
|
|
771
|
-
.option('--feature <feature>', 'Feature name (required)')
|
|
772
|
-
.action((type, options) => threadTemplateUseCommand(type, options));
|
|
773
|
-
|
|
618
|
+
mcpCommand
|
|
619
|
+
.command('setup [name]')
|
|
620
|
+
.description('Install and configure MCP servers')
|
|
621
|
+
.option('--list', 'Show MCP install status')
|
|
622
|
+
.option('--auto', 'Auto-install credential-free MCPs without prompts')
|
|
623
|
+
.action((name, options) => mcpSetupCommand(name, options));
|
|
774
624
|
|
|
775
625
|
program.parse();
|
package/bin/task-manager.cjs
CHANGED
|
@@ -32,7 +32,7 @@ const chalk = {
|
|
|
32
32
|
* Looks for headings like: ### T001 — Task title
|
|
33
33
|
*/
|
|
34
34
|
async function parseTasksMd(featureName) {
|
|
35
|
-
const tasksPath = path.join(process.cwd(), `.morph/
|
|
35
|
+
const tasksPath = path.join(process.cwd(), `.morph/features/${featureName}/tasks.md`);
|
|
36
36
|
let content = '';
|
|
37
37
|
try {
|
|
38
38
|
content = await fs.readFile(tasksPath, 'utf-8');
|
|
@@ -423,7 +423,7 @@ class TaskManager {
|
|
|
423
423
|
|
|
424
424
|
const outputPath = path.join(
|
|
425
425
|
process.cwd(),
|
|
426
|
-
`.morph/
|
|
426
|
+
`.morph/features/${featureName}/metadata.json`
|
|
427
427
|
);
|
|
428
428
|
|
|
429
429
|
// Ensure directory exists
|
package/bin/validate.js
CHANGED
|
@@ -64,7 +64,7 @@ async function validateSpecVsTasks(projectPath, options = {}) {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
for (const [featureName, feature] of Object.entries(state.features)) {
|
|
67
|
-
const outputsPath = path.join(projectPath, '.morph/
|
|
67
|
+
const outputsPath = path.join(projectPath, '.morph/features', featureName);
|
|
68
68
|
const specPath = path.join(outputsPath, 'spec.md');
|
|
69
69
|
|
|
70
70
|
if (!fs.existsSync(specPath)) {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "morph-spec",
|
|
3
|
+
"version": "4.3.7",
|
|
4
|
+
"displayName": "MORPH-SPEC Framework",
|
|
5
|
+
"description": "Spec-driven development with 37 agents and 5-phase workflow for .NET/Blazor/Next.js",
|
|
6
|
+
"publisher": "polymorphism-tech",
|
|
7
|
+
"skills": {
|
|
8
|
+
"directory": "framework/skills",
|
|
9
|
+
"namespace": "morph-spec"
|
|
10
|
+
},
|
|
11
|
+
"hooks": {
|
|
12
|
+
"directory": "framework/hooks/claude-code"
|
|
13
|
+
}
|
|
14
|
+
}
|