@polymorphism-tech/morph-spec 4.12.0 → 4.14.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 +7 -7
- package/README.md +28 -34
- package/bin/morph-spec.js +41 -24
- package/bin/task-manager.js +962 -1341
- package/bin/validate.js +1 -1
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +14 -16
- package/docs/QUICKSTART.md +15 -15
- package/framework/CLAUDE.md +5 -2
- package/framework/agents/README.md +3 -4
- package/framework/agents/ai-agents/ai-system-architect.md +6 -10
- package/framework/agents/architecture/seo-growth-hacker.md +166 -326
- package/framework/agents/architecture/standards-architect.md +21 -31
- package/framework/agents/backend/dotnet-senior.md +160 -86
- package/framework/agents/backend/ef-modeler.md +2 -6
- package/framework/agents/backend/hangfire-orchestrator.md +8 -9
- package/framework/agents/backend/ms-agent-expert.md +1 -1
- package/framework/agents/frontend/nextjs-expert.md +198 -133
- package/framework/agents/frontend/ui-ux-designer.md +226 -267
- package/framework/agents/infrastructure/infra-architect.md +191 -27
- package/framework/agents/integrations/clerk-auth.md +19 -26
- package/framework/agents/integrations/hangfire-integration.md +1 -4
- package/framework/agents.json +1084 -2278
- package/framework/commands/morph-apply.md +4 -6
- package/framework/commands/morph-preflight.md +192 -269
- package/framework/commands/morph-proposal.md +210 -238
- package/framework/commands/morph-status.md +72 -92
- package/framework/commands/morph-troubleshoot.md +6 -13
- package/framework/hooks/README.md +1 -6
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +4 -6
- package/framework/hooks/claude-code/pre-compact/save-morph-context.js +12 -7
- package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +2 -2
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +2 -2
- package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +5 -10
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +63 -30
- package/framework/hooks/claude-code/session-start/resume-context.js +77 -0
- package/framework/hooks/claude-code/statusline.py +4 -5
- package/framework/hooks/claude-code/stop/validate-completion.js +4 -4
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +8 -8
- package/framework/hooks/shared/compact-restore.js +28 -5
- package/framework/hooks/shared/phase-utils.js +4 -8
- package/framework/hooks/shared/state-reader.js +34 -3
- package/framework/phases.json +162 -200
- package/framework/rules/ai-agents-standards.md +15 -0
- package/framework/rules/asaas-standards.md +13 -0
- package/framework/rules/clerk-standards.md +13 -0
- package/framework/rules/csharp-standards.md +8 -4
- package/framework/rules/data-standards.md +18 -0
- package/framework/rules/dotnet-templates.md +87 -0
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/hangfire-standards.md +13 -0
- package/framework/rules/infrastructure-standards.md +27 -16
- package/framework/rules/morph-workflow.md +73 -13
- package/framework/rules/nextjs-standards.md +1 -0
- package/framework/rules/nextjs-templates.md +40 -0
- package/framework/rules/resend-standards.md +12 -0
- package/framework/rules/supabase-standards.md +29 -0
- package/framework/skills/README.md +6 -8
- package/framework/skills/level-0-meta/mcp-registry.json +21 -99
- package/framework/{standards/ai-agents/team-orchestration.md → skills/level-0-meta/morph-agent-teams/SKILL.md} +472 -479
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +28 -1
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
- package/framework/skills/level-0-meta/morph-code-review/SKILL.md +1 -5
- package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +1 -1
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +23 -41
- package/framework/skills/level-0-meta/morph-init/SKILL.md +18 -14
- package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +225 -0
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +20 -0
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +4 -8
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +15 -59
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +7 -19
- package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +8 -8
- package/framework/skills/level-1-workflows/README.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +49 -50
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +57 -123
- package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +5 -50
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +127 -159
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +4 -3
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +2 -2
- package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +17 -13
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +22 -40
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +143 -172
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +5 -5
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +57 -77
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
- package/framework/squad-templates/backend-only.json +6 -6
- package/framework/squad-templates/frontend-only.json +17 -8
- package/framework/squad-templates/full-stack.json +29 -24
- package/framework/standards/STANDARDS.json +1021 -2369
- package/framework/standards/backend/dotnet/fluent-validation-vsa.md +200 -0
- package/framework/standards/backend/dotnet/result-pattern.md +213 -0
- package/framework/standards/backend/dotnet/scalar-ui.md +172 -0
- package/framework/standards/backend/dotnet/scrutor.md +158 -0
- package/framework/standards/backend/dotnet/vsa-handler-patterns.md +274 -0
- package/framework/standards/frontend/nextjs/motion-patterns.md +1 -1
- package/framework/standards/infrastructure/supabase/mcp-setup.md +83 -193
- package/framework/standards/integration/mcp/mcp-tools.md +91 -77
- package/framework/templates/IDE-SNIPPETS.md +2 -6
- package/framework/templates/README.md +709 -814
- package/framework/templates/REGISTRY.json +223 -762
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -0
- package/framework/templates/code/dotnet/abstractions/error.cs +60 -0
- package/framework/templates/code/dotnet/abstractions/handler.cs +12 -0
- package/framework/templates/code/dotnet/abstractions/result.cs +74 -0
- package/framework/templates/code/dotnet/backend/repository.cs +148 -141
- package/framework/templates/code/dotnet/constants/api-tags.cs +6 -0
- package/framework/templates/code/dotnet/exceptions/exception-handler.cs +32 -0
- package/framework/templates/code/dotnet/extensions/database-extensions.cs +20 -0
- package/framework/templates/code/dotnet/extensions/handler-registration.cs +38 -0
- package/framework/templates/code/dotnet/extensions/health-checks.cs +24 -0
- package/framework/templates/code/dotnet/extensions/map-endpoints.cs +35 -0
- package/framework/templates/code/dotnet/extensions/result-extensions.cs +29 -0
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -0
- package/framework/templates/code/dotnet/feature/entity.cs.hbs +8 -0
- package/framework/templates/code/dotnet/feature/errors.cs.hbs +8 -0
- package/framework/templates/code/dotnet/feature/handler.cs.hbs +24 -0
- package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -0
- package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -0
- package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -0
- package/framework/templates/code/dotnet/jobs/job.cs +21 -17
- package/framework/templates/code/dotnet/pipelines/logging-decorator.cs +31 -0
- package/framework/templates/code/dotnet/pipelines/validation-decorator.cs +97 -0
- package/framework/templates/code/dotnet/test.cs +192 -106
- package/framework/templates/context/ARCHITECTURE.md +89 -0
- package/framework/templates/context/CONTEXT-FEATURE.md +2 -2
- package/framework/templates/context/CONTEXT.md +180 -181
- package/framework/templates/context/design-system.md +1 -5
- package/framework/templates/docs/onboarding.md +2 -3
- package/framework/templates/docs/proposal.md +171 -182
- package/framework/templates/docs/spec.md +1 -3
- package/framework/templates/docs/ui-components.md +0 -72
- package/framework/templates/examples/design-system-examples.md +4 -4
- package/framework/templates/feature/decisions.md +0 -66
- package/framework/templates/feature/recap.md +1 -2
- package/framework/templates/infrastructure/github/README.md +56 -593
- package/framework/templates/integrations/clerk-config.cs +0 -41
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +2 -2
- package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +1 -2
- package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +83 -126
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +2 -2
- package/framework/templates/project/validate.js +2 -4
- package/framework/templates/ui/design-system.css +1 -1
- package/framework/workflows/README.md +8 -8
- package/framework/workflows/configs/fast-track.json +51 -0
- package/framework/workflows/configs/full.json +68 -0
- package/framework/workflows/configs/standard.json +7 -3
- package/framework/workflows/docs/STORY-DRIVEN-DEVELOPMENT.md +1 -1
- package/framework/workflows/docs/enforcement-pipeline.md +18 -19
- package/framework/workflows/docs/full-morph.md +69 -76
- package/framework/workflows/docs/standard.md +49 -44
- package/framework/workflows/docs/ui-refresh.md +1 -1
- package/package.json +3 -3
- package/src/commands/agents/dispatch-agents.js +55 -116
- package/src/commands/context/context-refresh.js +79 -0
- package/src/commands/phase/phase-reset.js +1 -1
- package/src/commands/project/doctor.js +10 -32
- package/src/commands/project/init.js +12 -0
- package/src/commands/project/status.js +6 -12
- package/src/commands/scaffold/scaffold.js +131 -0
- package/src/commands/scope/escalate.js +1 -1
- package/src/commands/state/advance-phase.js +15 -29
- package/src/commands/state/state.js +20 -5
- package/src/commands/tasks/task.js +0 -30
- package/src/commands/validation/validate-feature.js +3 -10
- package/src/core/paths/output-schema.js +12 -13
- package/src/core/state/phase-state-machine.js +211 -217
- package/src/core/state/state-manager.js +9 -9
- package/src/lib/agents/agents-manager.js +2 -2
- package/src/lib/agents/output-collector.js +1 -2
- package/src/lib/detectors/design-system-detector.js +4 -4
- package/src/lib/detectors/index.js +1 -11
- package/src/lib/generators/architecture-scanner.js +640 -0
- package/src/lib/generators/context-generator.js +3 -3
- package/src/lib/generators/design-system-generator.js +508 -587
- package/src/lib/generators/index.js +12 -10
- package/src/lib/generators/metadata-extractor.js +386 -387
- package/src/lib/generators/recap-generator.js +4 -4
- package/src/lib/generators/scaffold-generator.js +317 -0
- package/src/lib/generators/settings-generator.js +0 -1
- package/src/lib/phase-chain/phase-validator.js +64 -42
- package/src/lib/stack/stack-profile.js +2 -2
- package/src/lib/standards/digest-builder.js +72 -285
- package/src/lib/tasks/task-parser.js +11 -5
- package/src/lib/validators/architecture/architecture-validator.js +259 -387
- package/src/lib/validators/content/content-validator.js +287 -287
- package/src/lib/validators/css/css-validator.js +340 -352
- package/src/lib/validators/packages/package-validator.js +347 -360
- package/src/lib/validators/shared/issue-counter.js +14 -18
- package/src/lib/validators/validation-runner.js +3 -19
- package/src/scripts/setup-infra.js +1 -1
- package/src/utils/agents-installer.js +61 -10
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +11 -19
- package/src/utils/skills-installer.js +178 -178
- package/framework/agents/architecture/prompt-engineer.md +0 -195
- package/framework/agents/backend/api-designer.md +0 -106
- package/framework/agents/frontend/blazor-builder.md +0 -229
- package/framework/agents/frontend/nextjs-ui-specialist.md +0 -218
- package/framework/agents/infrastructure/azure-architect.md +0 -150
- package/framework/agents/infrastructure/azure-deploy-specialist.md +0 -707
- package/framework/agents/infrastructure/bicep-architect.md +0 -132
- package/framework/agents/infrastructure/container-specialist.md +0 -137
- package/framework/agents/infrastructure/devops-engineer.md +0 -126
- package/framework/agents/integrations/azure-identity.md +0 -148
- package/framework/agents/quality/code-analyzer.md +0 -239
- package/framework/agents/quality/testing-specialist.md +0 -130
- package/framework/hooks/claude-code/notification/approval-reminder.js +0 -57
- package/framework/hooks/claude-code/post-tool-use/context-refresh.js +0 -109
- package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +0 -78
- package/framework/index/troubleshooting-index.json +0 -184
- package/framework/rules/testing-standards.md +0 -14
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +0 -230
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +0 -70
- package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +0 -256
- package/framework/skills/level-1-workflows/morph-phase-clarify/references/clarifications-example.md +0 -117
- package/framework/skills/level-1-workflows/morph-phase-setup/SKILL.md +0 -269
- package/framework/standards/ai-agents/blazor-ui.md +0 -364
- package/framework/standards/architecture/ddd/aggregates.md +0 -120
- package/framework/standards/architecture/ddd/bounded-contexts.md +0 -105
- package/framework/standards/architecture/ddd/complexity-levels.md +0 -108
- package/framework/standards/architecture/ddd/entities.md +0 -99
- package/framework/standards/architecture/ddd/ubiquitous-language.md +0 -58
- package/framework/standards/architecture/ddd/value-objects.md +0 -124
- package/framework/standards/backend/api/minimal-api.md +0 -494
- package/framework/standards/backend/api/rest.md +0 -492
- package/framework/standards/backend/authentication/passkeys.md +0 -428
- package/framework/standards/backend/database/ef-core.md +0 -199
- package/framework/standards/backend/database/migrations.md +0 -393
- package/framework/standards/backend/database/repository-patterns.md +0 -528
- package/framework/standards/backend/dotnet/async.md +0 -366
- package/framework/standards/backend/dotnet/core.md +0 -117
- package/framework/standards/backend/dotnet/di.md +0 -439
- package/framework/standards/backend/dotnet/program-cs-checklist.md +0 -92
- package/framework/standards/context/analytics.md +0 -96
- package/framework/standards/context/bundles.md +0 -110
- package/framework/standards/context/priming.md +0 -78
- package/framework/standards/core/architecture.md +0 -185
- package/framework/standards/core/coding.md +0 -214
- package/framework/standards/core/git-branching-strategy.md +0 -403
- package/framework/standards/core/git.md +0 -185
- package/framework/standards/core/testing.md +0 -295
- package/framework/standards/data/nosql/blob-storage.md +0 -102
- package/framework/standards/data/vector-search/azure-ai-search.md +0 -121
- package/framework/standards/frontend/blazor/design-checklist.md +0 -222
- package/framework/standards/frontend/blazor/fluent-ui-setup.md +0 -595
- package/framework/standards/frontend/blazor/fluent-ui.md +0 -137
- package/framework/standards/frontend/blazor/html-conversion.md +0 -184
- package/framework/standards/frontend/blazor/lifecycle.md +0 -195
- package/framework/standards/frontend/blazor/pitfalls.md +0 -198
- package/framework/standards/frontend/blazor/state.md +0 -191
- package/framework/standards/frontend/design-system/aesthetic-direction.md +0 -266
- package/framework/standards/frontend/design-system/design-trends.md +0 -171
- package/framework/standards/infrastructure/azure/azure.md +0 -624
- package/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +0 -422
- package/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +0 -516
- package/framework/standards/infrastructure/azure/devops/local-development.md +0 -520
- package/framework/standards/infrastructure/azure/services/functions.md +0 -486
- package/framework/standards/infrastructure/azure/services/service-bus.md +0 -459
- package/framework/standards/infrastructure/azure/services/storage.md +0 -407
- package/framework/standards/infrastructure/vercel/vercel-database.md +0 -106
- package/framework/standards/integration/api/graphql.md +0 -91
- package/framework/standards/integration/api/grpc.md +0 -114
- package/framework/standards/integration/api/rest-design.md +0 -95
- package/framework/standards/integration/event-driven/cqrs.md +0 -101
- package/framework/standards/integration/event-driven/event-sourcing.md +0 -124
- package/framework/standards/integration/event-driven/service-bus.md +0 -95
- package/framework/standards/observability/logging.md +0 -131
- package/framework/standards/observability/metrics.md +0 -121
- package/framework/standards/observability/monitoring.md +0 -114
- package/framework/standards/observability/tracing.md +0 -132
- package/framework/standards/workflows/parallel-execution.md +0 -112
- package/framework/standards/workflows/thread-management.md +0 -113
- package/framework/templates/code/dotnet/backend/service.cs +0 -139
- package/framework/templates/code/dotnet/contracts/Commands.cs +0 -74
- package/framework/templates/code/dotnet/contracts/Entities.cs +0 -25
- package/framework/templates/code/dotnet/contracts/Queries.cs +0 -74
- package/framework/templates/code/dotnet/contracts/api-contracts.cs +0 -173
- package/framework/templates/code/dotnet/contracts/contracts-level1.cs +0 -69
- package/framework/templates/code/dotnet/contracts/contracts-level2.cs +0 -86
- package/framework/templates/code/dotnet/contracts/contracts-level3.cs +0 -41
- package/framework/templates/code/dotnet/frontend/component.razor +0 -239
- package/framework/templates/infrastructure/azure/Dockerfile.example +0 -82
- package/framework/templates/infrastructure/azure/README.md +0 -286
- package/framework/templates/infrastructure/azure/app-insights.bicep +0 -63
- package/framework/templates/infrastructure/azure/app-service.bicep +0 -164
- package/framework/templates/infrastructure/azure/container-app-env.bicep +0 -49
- package/framework/templates/infrastructure/azure/container-app.bicep +0 -156
- package/framework/templates/infrastructure/azure/deploy-checklist.md +0 -426
- package/framework/templates/infrastructure/azure/deploy.ps1 +0 -229
- package/framework/templates/infrastructure/azure/deploy.sh +0 -208
- package/framework/templates/infrastructure/azure/key-vault.bicep +0 -91
- package/framework/templates/infrastructure/azure/main.bicep +0 -189
- package/framework/templates/infrastructure/azure/parameters.dev.json +0 -29
- package/framework/templates/infrastructure/azure/parameters.prod.json +0 -29
- package/framework/templates/infrastructure/azure/parameters.staging.json +0 -29
- package/framework/templates/infrastructure/azure/sql-database.bicep +0 -103
- package/framework/templates/infrastructure/azure/storage.bicep +0 -106
- package/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +0 -22
- package/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +0 -61
- package/framework/templates/integrations/azure-identity-config.cs +0 -288
- package/framework/templates/project-structure/dotnet-ddd.md +0 -70
- package/framework/templates/saas/subscription.cs +0 -347
- package/framework/templates/saas/tenant.cs +0 -338
- package/framework/templates/ui/FluentDesignTheme.cs +0 -149
- package/framework/templates/ui/MudTheme.cs +0 -281
- package/framework/workflows/configs/nodejs-cli.json +0 -40
- package/src/commands/standards/context-budget.js +0 -89
- package/src/lib/standards/index.js +0 -7
- package/src/lib/standards/standards-context-injector.js +0 -302
- package/src/lib/validators/blazor/blazor-concurrency-analyzer.js +0 -316
- package/src/lib/validators/blazor/blazor-state-validator.js +0 -279
- package/src/lib/validators/blazor/blazor-validator.js +0 -369
- package/src/lib/validators/blazor/index.js +0 -9
|
@@ -1,238 +1,210 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: MORPH Spec Pipeline — creates or resumes feature planning through phases
|
|
3
|
-
argument-hint: <feature-name>
|
|
4
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# MORPH Spec Pipeline
|
|
8
|
-
|
|
9
|
-
Guide a feature through the full planning pipeline (proposal through tasks) with mandatory approval pauses at each gate.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## 1. Resume Logic
|
|
14
|
-
|
|
15
|
-
Check if the feature already has state:
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
morph-spec state get {feature-name}
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
- **Exists:** Read the current phase and resume from where it stopped (skip completed phases). Create pipeline master tasks (Step 6) and mark already-completed phases as `completed`.
|
|
22
|
-
- **Does not exist:** Start from scratch (PHASE 0)
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## 2. PHASE 0: PROPOSAL
|
|
27
|
-
|
|
28
|
-
### Step 1: Load project context
|
|
29
|
-
|
|
30
|
-
Read these files to understand the project before writing anything:
|
|
31
|
-
- `.morph/context/README.md` — project overview, tech stack, architecture
|
|
32
|
-
- `.morph/config/config.json` — project configuration (language, workflow, architecture style)
|
|
33
|
-
|
|
34
|
-
### Step 2: Detect agents
|
|
35
|
-
|
|
36
|
-
Read `framework/agents.json` (or `.morph/framework/agents.json` in client projects). For each agent:
|
|
37
|
-
1. Check if `always_active: true` — include automatically
|
|
38
|
-
2. Compare agent `keywords[]` and `domains[]` against the feature description — include on match
|
|
39
|
-
3. **Document false-positive exclusions**: for agents that match on keywords but are irrelevant to this feature, note why they were excluded (this helps audit agent selection later)
|
|
40
|
-
|
|
41
|
-
Register each selected agent:
|
|
42
|
-
```bash
|
|
43
|
-
morph-spec state add-agent {feature-name} {agent-id}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### Step 3: Determine if UI/UX phase is needed
|
|
47
|
-
|
|
48
|
-
If `ui-designer` is among the selected agents, the feature will trigger the UI/UX phase later. Note this decision — it affects the pipeline path.
|
|
49
|
-
|
|
50
|
-
### Step 4: Create proposal
|
|
51
|
-
|
|
52
|
-
Read the proposal template at `framework/templates/docs/proposal.md` first, then create:
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
.morph/features/{feature-name}/
|
|
56
|
-
0-proposal/proposal.md
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Fill every section of the template. In particular:
|
|
60
|
-
- **Metadata table**: date, author, status, priority, stack
|
|
61
|
-
- **Problem Statement**: use the What/Who/Impact structure from the template
|
|
62
|
-
- **Proposed Solution**: technical approach, key features, user journey
|
|
63
|
-
- **Success Metrics**: quantified current vs target values
|
|
64
|
-
- **Scope**: explicit In Scope, Out of Scope, and Future Considerations
|
|
65
|
-
- **Risks**: table with likelihood, impact, mitigation
|
|
66
|
-
- **Dependencies**: checklist of prerequisites
|
|
67
|
-
- **Estimated Effort**: broken down by phase (in hours)
|
|
68
|
-
- **Questions &
|
|
69
|
-
|
|
70
|
-
### Step 5: Register state
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
morph-spec state init {feature-name}
|
|
74
|
-
morph-spec state set {feature-name} status draft
|
|
75
|
-
morph-spec state mark-output {feature-name} proposal
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Step 6: Create pipeline master tasks
|
|
79
|
-
|
|
80
|
-
> **MANDATORY** — Create one native task per pipeline phase for progress visibility.
|
|
81
|
-
> These are high-level tasks — one per phase, not per workflow step.
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
TaskCreate: "
|
|
85
|
-
TaskCreate: "
|
|
86
|
-
TaskCreate: "
|
|
87
|
-
TaskCreate: "
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## 4. PHASE
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
Summary: break spec into tasks T001-TXXX with dependencies, checkpoints, estimates.
|
|
213
|
-
|
|
214
|
-
### MANDATORY PAUSE
|
|
215
|
-
|
|
216
|
-
Present: task breakdown, execution order, total estimate. Use `AskUserQuestion` with options: Approve tasks / Reprioritize / Add or remove tasks.
|
|
217
|
-
|
|
218
|
-
After approval:
|
|
219
|
-
```bash
|
|
220
|
-
morph-spec approve {feature-name} tasks
|
|
221
|
-
morph-spec phase advance {feature-name}
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
|
-
## 9. Planning Complete
|
|
227
|
-
|
|
228
|
-
> **Task lifecycle:** `TaskUpdate` the "Phase 5: Tasks" task → `completed`.
|
|
229
|
-
|
|
230
|
-
After task approval:
|
|
231
|
-
|
|
232
|
-
```
|
|
233
|
-
Planning complete! Run /morph-apply {feature-name} to start implementation.
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
**Feature requested:** $ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: MORPH Spec Pipeline — creates or resumes feature planning through proposal, design, plan, and tasks phases with mandatory approval pauses. Use whenever the user wants to plan, spec, or design a new feature, or when they say /morph-proposal. This is the primary entry point for all MORPH-SPEC feature work.
|
|
3
|
+
argument-hint: <feature-name>
|
|
4
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# MORPH Spec Pipeline
|
|
8
|
+
|
|
9
|
+
Guide a feature through the full planning pipeline (proposal through tasks) with mandatory approval pauses at each gate.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Resume Logic
|
|
14
|
+
|
|
15
|
+
Check if the feature already has state:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
morph-spec state get {feature-name}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- **Exists:** Read the current phase and resume from where it stopped (skip completed phases). Create pipeline master tasks (Step 6) and mark already-completed phases as `completed`.
|
|
22
|
+
- **Does not exist:** Start from scratch (PHASE 0)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. PHASE 0: PROPOSAL
|
|
27
|
+
|
|
28
|
+
### Step 1: Load project context
|
|
29
|
+
|
|
30
|
+
Read these files to understand the project before writing anything:
|
|
31
|
+
- `.morph/context/README.md` — project overview, tech stack, architecture
|
|
32
|
+
- `.morph/config/config.json` — project configuration (language, workflow, architecture style)
|
|
33
|
+
|
|
34
|
+
### Step 2: Detect agents
|
|
35
|
+
|
|
36
|
+
Read `framework/agents.json` (or `.morph/framework/agents.json` in client projects). For each agent:
|
|
37
|
+
1. Check if `always_active: true` — include automatically
|
|
38
|
+
2. Compare agent `keywords[]` and `domains[]` against the feature description — include on match
|
|
39
|
+
3. **Document false-positive exclusions**: for agents that match on keywords but are irrelevant to this feature, note why they were excluded (this helps audit agent selection later)
|
|
40
|
+
|
|
41
|
+
Register each selected agent:
|
|
42
|
+
```bash
|
|
43
|
+
morph-spec state add-agent {feature-name} {agent-id}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Step 3: Determine if UI/UX phase is needed
|
|
47
|
+
|
|
48
|
+
If `ui-designer` is among the selected agents, the feature will trigger the UI/UX phase later. Note this decision — it affects the pipeline path.
|
|
49
|
+
|
|
50
|
+
### Step 4: Create proposal
|
|
51
|
+
|
|
52
|
+
Read the proposal template at `framework/templates/docs/proposal.md` first, then create:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
.morph/features/{feature-name}/
|
|
56
|
+
0-proposal/proposal.md
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Fill every section of the template. In particular:
|
|
60
|
+
- **Metadata table**: date, author, status, priority, stack
|
|
61
|
+
- **Problem Statement**: use the What/Who/Impact structure from the template
|
|
62
|
+
- **Proposed Solution**: technical approach, key features, user journey
|
|
63
|
+
- **Success Metrics**: quantified current vs target values
|
|
64
|
+
- **Scope**: explicit In Scope, Out of Scope, and Future Considerations
|
|
65
|
+
- **Risks**: table with likelihood, impact, mitigation
|
|
66
|
+
- **Dependencies**: checklist of prerequisites
|
|
67
|
+
- **Estimated Effort**: broken down by phase (in hours)
|
|
68
|
+
- **Questions & Open Points**: seed 3-6 questions to be resolved during the design phase
|
|
69
|
+
|
|
70
|
+
### Step 5: Register state
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
morph-spec state init {feature-name}
|
|
74
|
+
morph-spec state set {feature-name} status draft
|
|
75
|
+
morph-spec state mark-output {feature-name} proposal
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Step 6: Create pipeline master tasks
|
|
79
|
+
|
|
80
|
+
> **MANDATORY** — Create one native task per pipeline phase for progress visibility.
|
|
81
|
+
> These are high-level tasks — one per phase, not per workflow step.
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
TaskCreate: "Proposal" → description: "Define feature scope and approach"
|
|
85
|
+
TaskCreate: "Design" → description: "Schema analysis, spec, contracts, decisions"
|
|
86
|
+
TaskCreate: "Plan" → description: "Implementation plan with TDD and file paths"
|
|
87
|
+
TaskCreate: "Tasks" → description: "Break spec into T001-T00N with dependencies"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
If `ui-designer` is among the activated agents, also create:
|
|
91
|
+
```
|
|
92
|
+
TaskCreate: "UI/UX" → description: "Design system, mockups, components, flows"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Wire dependencies matching the phase sequence:
|
|
96
|
+
- UI/UX (if created) ← Proposal
|
|
97
|
+
- Design ← UI/UX (or Proposal if no UI/UX)
|
|
98
|
+
- Plan ← Design
|
|
99
|
+
- Tasks ← Plan
|
|
100
|
+
|
|
101
|
+
Mark "Proposal" as `in_progress` immediately.
|
|
102
|
+
|
|
103
|
+
### MANDATORY PAUSE
|
|
104
|
+
|
|
105
|
+
Use `AskUserQuestion` to present the approval gate with these elements:
|
|
106
|
+
|
|
107
|
+
1. **Proposal summary** — 3-4 sentence overview of what was proposed
|
|
108
|
+
2. **Agents activated** — table showing agent ID, tier, role, and why selected
|
|
109
|
+
3. **Effort estimate** — total hours from the proposal
|
|
110
|
+
4. **Key decisions pending** — 2-3 design decisions that will be resolved in the design phase
|
|
111
|
+
|
|
112
|
+
Options: Approve proposal / Request changes / Reject
|
|
113
|
+
|
|
114
|
+
After approval:
|
|
115
|
+
```bash
|
|
116
|
+
morph-spec approve {feature-name} proposal
|
|
117
|
+
morph-spec phase advance {feature-name}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 3. PHASE 1: UI/UX (conditional)
|
|
123
|
+
|
|
124
|
+
Check if `ui-designer` is in `activeAgents`:
|
|
125
|
+
- **Yes:** Invoke the `morph-phase-uiux` skill. **MANDATORY PAUSE** after generating UI deliverables.
|
|
126
|
+
- **No:** Skip to PHASE 2.
|
|
127
|
+
|
|
128
|
+
> **Task lifecycle:** `TaskUpdate` the "Proposal" task → `completed`. `TaskUpdate` the "UI/UX" task → `in_progress` (if UI/UX), or the "Design" task → `in_progress` (if skipping UI/UX).
|
|
129
|
+
|
|
130
|
+
After approval:
|
|
131
|
+
```bash
|
|
132
|
+
morph-spec approve {feature-name} uiux
|
|
133
|
+
morph-spec phase advance {feature-name}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## 4. PHASE 2: DESIGN
|
|
139
|
+
|
|
140
|
+
> **Task lifecycle:** `TaskUpdate` the completing phase task (UI/UX or Proposal) → `completed`. `TaskUpdate` the "Design" task → `in_progress`.
|
|
141
|
+
|
|
142
|
+
Invoke the `morph-phase-design` skill.
|
|
143
|
+
|
|
144
|
+
Summary: generate spec.md, contracts.cs (or contracts-vsa.cs for VSA), decisions.md with ADRs.
|
|
145
|
+
|
|
146
|
+
### MANDATORY PAUSE
|
|
147
|
+
|
|
148
|
+
Present: spec, contracts, decisions, effort estimate. Use `AskUserQuestion` with options: Approve design / Adjust scope / Modify contracts.
|
|
149
|
+
|
|
150
|
+
After approval:
|
|
151
|
+
```bash
|
|
152
|
+
morph-spec approve {feature-name} design
|
|
153
|
+
morph-spec phase advance {feature-name}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## 5. PHASE 3: PLAN
|
|
159
|
+
|
|
160
|
+
> **Task lifecycle:** `TaskUpdate` the "Design" task → `completed`. `TaskUpdate` the "Plan" task → `in_progress`.
|
|
161
|
+
|
|
162
|
+
Invoke the `morph-phase-plan` skill.
|
|
163
|
+
|
|
164
|
+
Summary: generate a detailed implementation plan with exact file paths, TDD structure, and context-aware execution strategy.
|
|
165
|
+
|
|
166
|
+
### MANDATORY PAUSE
|
|
167
|
+
|
|
168
|
+
Present: implementation plan with recommended strategy. Use `AskUserQuestion` with options: Approve plan / Adjust strategy / Modify plan.
|
|
169
|
+
|
|
170
|
+
After approval:
|
|
171
|
+
```bash
|
|
172
|
+
morph-spec approve {feature-name} plan
|
|
173
|
+
morph-spec phase advance {feature-name}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 6. PHASE 4: TASKS
|
|
179
|
+
|
|
180
|
+
> **Task lifecycle:** `TaskUpdate` the "Plan" task → `completed`. `TaskUpdate` the "Tasks" task → `in_progress`.
|
|
181
|
+
|
|
182
|
+
Invoke the `morph-phase-tasks` skill.
|
|
183
|
+
|
|
184
|
+
Summary: break spec into tasks T001-TXXX with dependencies, checkpoints, estimates.
|
|
185
|
+
|
|
186
|
+
### MANDATORY PAUSE
|
|
187
|
+
|
|
188
|
+
Present: task breakdown, execution order, total estimate. Use `AskUserQuestion` with options: Approve tasks / Reprioritize / Add or remove tasks.
|
|
189
|
+
|
|
190
|
+
After approval:
|
|
191
|
+
```bash
|
|
192
|
+
morph-spec approve {feature-name} tasks
|
|
193
|
+
morph-spec phase advance {feature-name}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 7. Planning Complete
|
|
199
|
+
|
|
200
|
+
> **Task lifecycle:** `TaskUpdate` the "Tasks" task → `completed`.
|
|
201
|
+
|
|
202
|
+
After task approval:
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
Planning complete! Run /morph-apply {feature-name} to start implementation.
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
**Feature requested:** $ARGUMENTS
|
|
@@ -1,92 +1,72 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Show current MORPH project status and all features in development with their phases and approvals
|
|
3
|
-
argument-hint: [feature-name]
|
|
4
|
-
allowed-tools: Read, Bash
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# MORPH Project Status
|
|
8
|
-
|
|
9
|
-
Show the current MORPH project status and features in development.
|
|
10
|
-
|
|
11
|
-
## Usage
|
|
12
|
-
|
|
13
|
-
**ALWAYS** use the state-manager CLI to get status:
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
morph-spec state list
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
This command automatically shows:
|
|
20
|
-
- All active features
|
|
21
|
-
- Current phase of each feature
|
|
22
|
-
- Task progress (X/Y)
|
|
23
|
-
- Active agents
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
- [ ] `.morph/
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
║
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
║ SUMMARY ║
|
|
74
|
-
╠════════════════════════════════════════════════════════════════╣
|
|
75
|
-
║ Total Features: 2 ║
|
|
76
|
-
║ Completed: 0 ║
|
|
77
|
-
║ Estimated Cost: $5.50/month ║
|
|
78
|
-
╚════════════════════════════════════════════════════════════════╝
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**Simply run the command and show the result to the user.**
|
|
82
|
-
|
|
83
|
-
## Available Actions
|
|
84
|
-
|
|
85
|
-
Suggest next actions:
|
|
86
|
-
- `/morph-proposal {feature}` - Create a new feature
|
|
87
|
-
- `/morph-apply {feature}` - Implement a feature
|
|
88
|
-
- `/morph-archive {feature}` - Archive a completed feature
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
$ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: Show current MORPH project status and all features in development with their phases and approvals
|
|
3
|
+
argument-hint: [feature-name]
|
|
4
|
+
allowed-tools: Read, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# MORPH Project Status
|
|
8
|
+
|
|
9
|
+
Show the current MORPH project status and features in development.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
**ALWAYS** use the state-manager CLI to get status:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
morph-spec state list
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
This command automatically shows:
|
|
20
|
+
- All active features
|
|
21
|
+
- Current phase of each feature
|
|
22
|
+
- Task progress (X/Y)
|
|
23
|
+
- Active agents
|
|
24
|
+
|
|
25
|
+
## Additional Checks
|
|
26
|
+
|
|
27
|
+
### 1. MORPH Configuration
|
|
28
|
+
- [ ] `.morph/config/config.json` configured
|
|
29
|
+
- [ ] `.morph/framework/standards/` present
|
|
30
|
+
|
|
31
|
+
### 2. Specific Feature Details
|
|
32
|
+
|
|
33
|
+
To get detailed JSON for a feature:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
morph-spec state get {feature-name}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Output
|
|
40
|
+
|
|
41
|
+
The `morph-spec state list` command automatically generates a formatted dashboard:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
╔════════════════════════════════════════════════════════════════╗
|
|
45
|
+
║ MORPH-SPEC PROJECT STATUS ║
|
|
46
|
+
╠════════════════════════════════════════════════════════════════╣
|
|
47
|
+
║ Project: {PROJECT_NAME} ║
|
|
48
|
+
║ Type: dotnet-nextjs ║
|
|
49
|
+
╠════════════════════════════════════════════════════════════════╣
|
|
50
|
+
║ FEATURES ║
|
|
51
|
+
╠════════════════════════════════════════════════════════════════╣
|
|
52
|
+
║ {feature-1} ║
|
|
53
|
+
║ Phase: implement | Tasks: 5/12 ║
|
|
54
|
+
║ Agents: ef-modeler hangfire-orchestrator ║
|
|
55
|
+
╠════════════════════════════════════════════════════════════════╣
|
|
56
|
+
║ {feature-2} ║
|
|
57
|
+
║ Phase: design | Tasks: 0/0 ║
|
|
58
|
+
║ Agents: None ║
|
|
59
|
+
╚════════════════════════════════════════════════════════════════╝
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Simply run the command and show the result to the user.**
|
|
63
|
+
|
|
64
|
+
## Available Actions
|
|
65
|
+
|
|
66
|
+
Suggest next actions:
|
|
67
|
+
- `/morph-proposal {feature}` - Create a new feature
|
|
68
|
+
- `/morph-apply {feature}` - Implement a feature
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
$ARGUMENTS
|