@polymorphism-tech/morph-spec 7.9.4 → 8.1.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 +2 -2
- package/README.md +31 -2
- package/bin/morph-spec.js +50 -2
- package/bin/validate.js +379 -379
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +38 -1
- package/docs/QUICKSTART.md +60 -1
- package/framework/CLAUDE.md +14 -3
- package/framework/MORPH.md +41 -5
- package/framework/agents.json +22 -3
- package/framework/commands/commit.md +166 -166
- package/framework/commands/morph-hotfix.md +39 -0
- package/framework/commands/morph-infra.md +215 -215
- package/framework/commands/morph-preflight.md +205 -205
- package/framework/commands/morph-troubleshoot.md +124 -124
- package/framework/hooks/README.md +25 -11
- package/framework/hooks/claude-code/core/gate-guard.js +4 -2
- package/framework/hooks/claude-code/core/loop-detect.js +2 -1
- package/framework/hooks/claude-code/core/post-edit-typecheck.js +14 -5
- package/framework/hooks/claude-code/core/tasks-json-guard.js +4 -2
- package/framework/hooks/claude-code/core/validate-completion.js +1 -1
- package/framework/hooks/claude-code/core/worktree-context.js +160 -0
- package/framework/hooks/claude-code/statusline.py +679 -679
- package/framework/hooks/claude-code/statusline.sh +11 -11
- package/framework/hooks/git/commit-msg/conventional-commits.sh +33 -33
- package/framework/hooks/git/pre-commit/agents.sh +25 -25
- package/framework/hooks/git/pre-commit/orchestrator.sh +64 -64
- package/framework/hooks/git/pre-commit/specs.sh +50 -50
- package/framework/hooks/git/pre-push/run-tests.sh +44 -44
- package/framework/hooks/shared/activity-logger.js +160 -160
- package/framework/hooks/shared/build-check.js +2 -2
- package/framework/hooks/shared/hook-response.js +17 -5
- package/framework/hooks/shared/payload-utils.js +42 -0
- package/framework/hooks/shared/state-reader.js +22 -2
- package/framework/hooks/shared/stdin-reader.js +26 -26
- package/framework/rubrics/backend.json +41 -41
- package/framework/rules/ai-agents-standards.md +45 -45
- package/framework/rules/dotnet-templates.md +86 -86
- package/framework/rules/frontend-standards.md +13 -13
- package/framework/rules/infrastructure-standards.md +27 -27
- package/framework/rules/neon-standards.md +25 -25
- package/framework/rules/nextjs-standards.md +20 -20
- package/framework/rules/nextjs-templates.md +40 -40
- package/framework/schemas/feature.schema.json +95 -1
- package/framework/skills/core/create-umbraco-lp/SKILL.md +1 -1
- package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +1 -1
- package/framework/skills/core/morph-apply/SKILL.md +49 -27
- package/framework/skills/core/morph-brainstorming/SKILL.md +9 -1
- package/framework/skills/core/morph-eval/SKILL.md +6 -1
- package/framework/skills/core/morph-hotfix/SKILL.md +134 -0
- package/framework/skills/core/morph-implement/SKILL.md +17 -22
- package/framework/skills/core/morph-plan/SKILL.md +5 -1
- package/framework/skills/core/morph-proposal/SKILL.md +24 -1
- package/framework/skills/core/morph-review/SKILL.md +13 -16
- package/framework/skills/core/morph-stack-scan/SKILL.md +1 -1
- package/framework/skills/core/morph-standards/SKILL.md +1 -1
- package/framework/standards/ai-agents/agent-session.md +160 -160
- package/framework/standards/ai-agents/batching.md +193 -193
- package/framework/standards/ai-agents/context-providers.md +188 -188
- package/framework/standards/ai-agents/mcp-server.md +250 -250
- package/framework/standards/ai-agents/mcp-tools.md +197 -197
- package/framework/standards/ai-agents/middleware-patterns.md +207 -207
- package/framework/standards/ai-agents/modalities-image-gen.md +173 -173
- package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -171
- package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -181
- package/framework/standards/ai-agents/modalities-vision.md +201 -201
- package/framework/standards/ai-agents/multi-agent-patterns.md +155 -155
- package/framework/standards/ai-agents/production.md +275 -275
- package/framework/standards/ai-agents/prompts-in-db.md +214 -214
- package/framework/standards/ai-agents/providers/model-registry.md +158 -158
- package/framework/standards/ai-agents/service-tier-flex.md +135 -135
- package/framework/standards/ai-agents/structured-output.md +249 -249
- package/framework/standards/ai-agents/sweet-spot.md +109 -109
- package/framework/templates/.idea/morph-templates.xml +92 -0
- package/framework/templates/.vscode/morph-templates.code-snippets +186 -0
- package/framework/templates/IDE-SNIPPETS.md +262 -262
- package/framework/templates/REGISTRY.json +0 -62
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -7
- package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -39
- package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -68
- package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -117
- package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -95
- package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -61
- package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -107
- package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -58
- package/framework/templates/code/dotnet/contracts/contracts-vsa.cs +281 -281
- package/framework/templates/code/dotnet/database/migration.cs +83 -83
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +21 -21
- package/framework/templates/code/dotnet/feature/request.cs.hbs +4 -4
- package/framework/templates/code/dotnet/feature/response.cs.hbs +4 -4
- package/framework/templates/code/dotnet/feature/validator.cs.hbs +15 -15
- package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -58
- package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -91
- package/framework/templates/code/typescript/contracts.ts +167 -167
- package/framework/templates/docs/clarifications.md +253 -253
- package/framework/templates/docs/schema-analysis.md +119 -119
- package/framework/templates/docs/ui-components.md +52 -52
- package/framework/templates/docs/ui-design-system.md +76 -76
- package/framework/templates/docs/ui-flows.md +167 -167
- package/framework/templates/docs/ui-mockups.md +98 -98
- package/framework/templates/feature/decisions.md +122 -122
- package/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs +43 -43
- package/framework/templates/frontend/nextjs/client-component.tsx.hbs +26 -26
- package/framework/templates/frontend/nextjs/env.mjs.hbs +32 -32
- package/framework/templates/frontend/nextjs/feature-form.tsx.hbs +56 -56
- package/framework/templates/frontend/nextjs/page.tsx.hbs +22 -22
- package/framework/templates/frontend/nextjs/tsconfig.json.hbs +26 -26
- package/framework/templates/frontend/nextjs/use-feature.ts.hbs +54 -54
- package/framework/templates/infrastructure/docker/Dockerfile.template +58 -58
- package/framework/templates/infrastructure/docker/docker-compose.template.yml +50 -50
- package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
- package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
- package/framework/templates/infrastructure/github/README.md +56 -56
- package/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -45
- package/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -27
- package/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -59
- package/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -39
- package/framework/templates/integrations/asaas-client.cs +387 -387
- package/framework/templates/integrations/asaas-webhook.cs +351 -351
- package/framework/templates/meta-prompts/fusion/fusion-agent.md +76 -76
- package/framework/templates/meta-prompts/fusion/fusion-aggregator.md +100 -100
- package/framework/templates/meta-prompts/validators/pre-commit-validator.md +95 -95
- package/framework/templates/project/validate.js +120 -120
- package/framework/templates/state.template.json +17 -17
- package/framework/templates/ui/design-system.css +226 -226
- package/package.json +1 -1
- package/src/commands/dashboard/dashboard.js +53 -53
- package/src/commands/index.js +13 -13
- package/src/commands/mcp/mcp-setup.js +519 -519
- package/src/commands/project/checkpoint.js +209 -209
- package/src/commands/project/doctor.js +4 -2
- package/src/commands/project/init.js +46 -2
- package/src/commands/project/update.js +5 -3
- package/src/commands/project/worktree.js +1005 -46
- package/src/commands/state/advance.js +17 -2
- package/src/commands/state/approve.js +18 -1
- package/src/commands/state/create.js +158 -14
- package/src/commands/state/retype.js +126 -0
- package/src/commands/state/score.js +4 -0
- package/src/commands/tasks/dag.js +32 -0
- package/src/commands/validation/index.js +1 -0
- package/src/commands/validation/validate-feature.js +33 -5
- package/src/commands/validation/verify.js +190 -0
- package/src/core/state/phase-state-machine.js +197 -197
- package/src/core/state/state-manager.js +35 -10
- package/src/core/templates/template-renderer.js +477 -477
- package/src/core/work-types.js +79 -0
- package/src/dashboard/app/components/DetailPanel.jsx +11 -11
- package/src/dashboard/app/components/FlowGraph.jsx +17 -17
- package/src/dashboard/app/components/SearchFilter.jsx +22 -22
- package/src/dashboard/app/hooks/useDetailPanel.js +15 -15
- package/src/dashboard/app/main.jsx +13 -13
- package/src/dashboard/app/pages/AgentMap.jsx +370 -370
- package/src/dashboard/app/pages/HookInspector.jsx +418 -418
- package/src/dashboard/app/pages/LiveState.jsx +11 -1
- package/src/dashboard/app/pages/PhasePipeline.jsx +408 -408
- package/src/dashboard/app/pages/RulesMap.jsx +273 -273
- package/src/dashboard/app/pages/SkillsLibrary.jsx +366 -366
- package/src/dashboard/app/pages/Standards.jsx +332 -332
- package/src/dashboard/app/styles/index.css +47 -47
- package/src/dashboard/index.html +12 -12
- package/src/dashboard/package.json +24 -24
- package/src/dashboard/scanner/hooks-scanner.js +41 -41
- package/src/dashboard/scanner/phases-scanner.js +15 -15
- package/src/dashboard/scanner/rubrics-scanner.js +12 -12
- package/src/dashboard/scanner/rules-scanner.js +37 -37
- package/src/dashboard/scanner/skills-scanner.js +43 -43
- package/src/dashboard/scanner/squads-scanner.js +13 -13
- package/src/dashboard/scanner/standards-scanner.js +26 -26
- package/src/dashboard/scanner/state-scanner.js +42 -0
- package/src/dashboard/vite-plugin-morph-data.js +17 -17
- package/src/dashboard/vite.config.js +24 -24
- package/src/lib/agents/metrics-aggregator.js +56 -56
- package/src/lib/agents/metrics-calculator.js +125 -125
- package/src/lib/agents/output-collector.js +73 -73
- package/src/lib/detectors/claude-config-detector.js +152 -152
- package/src/lib/detectors/design-system-detector.js +231 -231
- package/src/lib/detectors/index.js +217 -217
- package/src/lib/generators/architecture-scanner.js +639 -639
- package/src/lib/generators/design-system-generator.js +508 -508
- package/src/lib/generators/index.js +13 -13
- package/src/lib/generators/settings-generator.js +209 -209
- package/src/lib/hooks/hook-executor.js +167 -167
- package/src/lib/installers/mcp-installer.js +719 -719
- package/src/lib/installers/memory-installer.js +1 -1
- package/src/lib/risk-detector.js +16 -0
- package/src/lib/tasks/dispatch-planner.js +122 -4
- package/src/lib/tasks/mermaid-renderer.js +132 -0
- package/src/lib/tasks/task-classifier.js +30 -30
- package/src/lib/tasks/task-parser.js +209 -209
- package/src/lib/tasks/test-runner.js +27 -6
- package/src/lib/validators/architecture/architecture-validator.js +259 -259
- package/src/lib/validators/checkpoint-persistence.js +39 -39
- package/src/lib/validators/contracts/contract-compliance-validator.js +274 -274
- package/src/lib/validators/css/css-validator.js +340 -340
- package/src/lib/validators/packages/package-validator.js +347 -347
- package/src/lib/validators/shared/emit-validator-dispatch.js +14 -14
- package/src/lib/validators/shared/issue-counter.js +14 -14
- package/src/lib/validators/validation-runner.js +349 -349
- package/src/lib/validators/verify-runner.js +322 -0
- package/src/lib/work-type-detector.js +143 -0
- package/src/scripts/setup-infra.js +32 -5
- package/src/utils/agent-id-mapper.js +11 -11
- package/src/utils/agents-installer.js +10 -6
- package/src/utils/claude-settings-manager.js +300 -300
- package/src/utils/file-copier.js +43 -0
- package/src/utils/hooks-installer.js +43 -34
- package/src/utils/skills-installer.js +174 -174
- package/framework/hooks/claude-code/core/subagent-report-guard.js +0 -95
- package/framework/templates/meta-prompts/parallel-workers/parallel-coordinator.md +0 -113
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +0 -80
- package/src/lib/tasks/wave-resolver.js +0 -353
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/Agents/**"
|
|
4
|
-
- "**/agents/**"
|
|
5
|
-
- "**/*Agent*.cs"
|
|
6
|
-
stacks:
|
|
7
|
-
- dotnet
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Microsoft Agent Framework Standards
|
|
11
|
-
|
|
12
|
-
> **Layer 0/1 — auto-carregados.** São os standards core: aplicam-se a praticamente todo
|
|
13
|
-
> agente MAF. Carregue-os sempre que tocar código de agentes.
|
|
14
|
-
|
|
15
|
-
@.morph/framework/standards/ai-agents/setup.md
|
|
16
|
-
@.morph/framework/standards/ai-agents/sweet-spot.md
|
|
17
|
-
@.morph/framework/standards/ai-agents/providers/model-registry.md
|
|
18
|
-
@.morph/framework/standards/ai-agents/structured-output.md
|
|
19
|
-
@.morph/framework/standards/ai-agents/multi-agent-patterns.md
|
|
20
|
-
@.morph/framework/standards/ai-agents/prompts-in-db.md
|
|
21
|
-
@.morph/framework/standards/ai-agents/rag-custom-pgvector.md
|
|
22
|
-
@.morph/framework/standards/ai-agents/middleware-patterns.md
|
|
23
|
-
@.morph/framework/standards/ai-agents/workflows.md
|
|
24
|
-
@.morph/framework/standards/ai-agents/production.md
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
> **Layer 2 — sob demanda (NÃO auto-carregados).** São standards de modalidade, otimização e
|
|
29
|
-
> MCP: relevantes apenas quando a feature usa especificamente esse recurso. Carregue via
|
|
30
|
-
> `morph-standards` quando uma keyword corresponder — manter fora do auto-load preserva o
|
|
31
|
-
> context window para o trabalho que importa.
|
|
32
|
-
|
|
33
|
-
| Standard | Carregue quando a feature envolve |
|
|
34
|
-
|----------|-----------------------------------|
|
|
35
|
-
| `ai-agents/modalities-vision.md` | imagem → texto (OCR, análise de documento, visão) |
|
|
36
|
-
| `ai-agents/modalities-image-gen.md` | texto → imagem (geração de mockups, posts, assets) |
|
|
37
|
-
| `ai-agents/modalities-speech-to-text.md` | áudio → texto (transcrição, legendagem) |
|
|
38
|
-
| `ai-agents/modalities-text-to-speech.md` | texto → áudio (síntese de voz) |
|
|
39
|
-
| `ai-agents/batching.md` | processar N prompts independentes em lote (Batch API) |
|
|
40
|
-
| `ai-agents/service-tier-flex.md` | otimização de custo em jobs assíncronos (tier flex) |
|
|
41
|
-
| `ai-agents/agent-session.md` | agentes conversacionais com histórico/reducers |
|
|
42
|
-
| `ai-agents/context-providers.md` | injeção dinâmica de contexto (`AIContextProvider`) |
|
|
43
|
-
| `ai-agents/mcp-tools.md` | agente MAF consome um MCP server externo |
|
|
44
|
-
| `ai-agents/mcp-server.md` | projeto expõe capacidades como MCP server |
|
|
45
|
-
| `integration/mcp/mcp-tools.md` | integração MCP cross-domain (fora do escopo MAF) |
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/Agents/**"
|
|
4
|
+
- "**/agents/**"
|
|
5
|
+
- "**/*Agent*.cs"
|
|
6
|
+
stacks:
|
|
7
|
+
- dotnet
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Microsoft Agent Framework Standards
|
|
11
|
+
|
|
12
|
+
> **Layer 0/1 — auto-carregados.** São os standards core: aplicam-se a praticamente todo
|
|
13
|
+
> agente MAF. Carregue-os sempre que tocar código de agentes.
|
|
14
|
+
|
|
15
|
+
@.morph/framework/standards/ai-agents/setup.md
|
|
16
|
+
@.morph/framework/standards/ai-agents/sweet-spot.md
|
|
17
|
+
@.morph/framework/standards/ai-agents/providers/model-registry.md
|
|
18
|
+
@.morph/framework/standards/ai-agents/structured-output.md
|
|
19
|
+
@.morph/framework/standards/ai-agents/multi-agent-patterns.md
|
|
20
|
+
@.morph/framework/standards/ai-agents/prompts-in-db.md
|
|
21
|
+
@.morph/framework/standards/ai-agents/rag-custom-pgvector.md
|
|
22
|
+
@.morph/framework/standards/ai-agents/middleware-patterns.md
|
|
23
|
+
@.morph/framework/standards/ai-agents/workflows.md
|
|
24
|
+
@.morph/framework/standards/ai-agents/production.md
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
> **Layer 2 — sob demanda (NÃO auto-carregados).** São standards de modalidade, otimização e
|
|
29
|
+
> MCP: relevantes apenas quando a feature usa especificamente esse recurso. Carregue via
|
|
30
|
+
> `morph-standards` quando uma keyword corresponder — manter fora do auto-load preserva o
|
|
31
|
+
> context window para o trabalho que importa.
|
|
32
|
+
|
|
33
|
+
| Standard | Carregue quando a feature envolve |
|
|
34
|
+
|----------|-----------------------------------|
|
|
35
|
+
| `ai-agents/modalities-vision.md` | imagem → texto (OCR, análise de documento, visão) |
|
|
36
|
+
| `ai-agents/modalities-image-gen.md` | texto → imagem (geração de mockups, posts, assets) |
|
|
37
|
+
| `ai-agents/modalities-speech-to-text.md` | áudio → texto (transcrição, legendagem) |
|
|
38
|
+
| `ai-agents/modalities-text-to-speech.md` | texto → áudio (síntese de voz) |
|
|
39
|
+
| `ai-agents/batching.md` | processar N prompts independentes em lote (Batch API) |
|
|
40
|
+
| `ai-agents/service-tier-flex.md` | otimização de custo em jobs assíncronos (tier flex) |
|
|
41
|
+
| `ai-agents/agent-session.md` | agentes conversacionais com histórico/reducers |
|
|
42
|
+
| `ai-agents/context-providers.md` | injeção dinâmica de contexto (`AIContextProvider`) |
|
|
43
|
+
| `ai-agents/mcp-tools.md` | agente MAF consome um MCP server externo |
|
|
44
|
+
| `ai-agents/mcp-server.md` | projeto expõe capacidades como MCP server |
|
|
45
|
+
| `integration/mcp/mcp-tools.md` | integração MCP cross-domain (fora do escopo MAF) |
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.cs"
|
|
4
|
-
- "**/*.csproj"
|
|
5
|
-
stacks:
|
|
6
|
-
- dotnet
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# .NET Code Templates
|
|
10
|
-
|
|
11
|
-
When implementing .NET features, use these templates as reference patterns.
|
|
12
|
-
Read the template file to see the exact pattern, then generate code following it.
|
|
13
|
-
|
|
14
|
-
## Scaffold (preferred for new slices)
|
|
15
|
-
|
|
16
|
-
**Always use scaffold for new VSA slices — never create feature files manually.**
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
morph-spec scaffold dotnet <feature> <slice-name> [--namespace <ns>] [--dry-run]
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Examples:
|
|
23
|
-
```bash
|
|
24
|
-
morph-spec scaffold dotnet book create-book
|
|
25
|
-
morph-spec scaffold dotnet book get-book-by-id
|
|
26
|
-
morph-spec scaffold dotnet book update-book
|
|
27
|
-
morph-spec scaffold dotnet book delete-book
|
|
28
|
-
morph-spec scaffold dotnet book get-all-books
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Generates 7 files: endpoint, handler, request, response, validator + entity, errors (shared at feature level). Entity/errors auto-skipped if they already exist.
|
|
32
|
-
|
|
33
|
-
**Only use `template render` for individual files when adding to an existing slice.**
|
|
34
|
-
|
|
35
|
-
## VSA Feature Templates (Vertical Slice Architecture)
|
|
36
|
-
|
|
37
|
-
For each new feature slice, follow the patterns in these templates:
|
|
38
|
-
|
|
39
|
-
| Template | Path | Purpose |
|
|
40
|
-
|----------|------|---------|
|
|
41
|
-
| Endpoint | `.morph/framework/templates/code/dotnet/feature/endpoint.cs.hbs` | IApiEndpoint with MapEndpoint() |
|
|
42
|
-
| Handler | `.morph/framework/templates/code/dotnet/feature/handler.cs.hbs` | IHandler<TRequest, TResponse> |
|
|
43
|
-
| Request | `.morph/framework/templates/code/dotnet/feature/request.cs.hbs` | Sealed record DTO |
|
|
44
|
-
| Response | `.morph/framework/templates/code/dotnet/feature/response.cs.hbs` | Sealed record DTO |
|
|
45
|
-
| Validator | `.morph/framework/templates/code/dotnet/feature/validator.cs.hbs` | FluentValidation AbstractValidator |
|
|
46
|
-
| Entity | `.morph/framework/templates/code/dotnet/feature/entity.cs.hbs` | Domain entity |
|
|
47
|
-
| Errors | `.morph/framework/templates/code/dotnet/feature/errors.cs.hbs` | Error factory |
|
|
48
|
-
|
|
49
|
-
## Base Abstractions (read once per project setup)
|
|
50
|
-
|
|
51
|
-
| Template | Path | Purpose |
|
|
52
|
-
|----------|------|---------|
|
|
53
|
-
| IHandler | `.morph/framework/templates/code/dotnet/abstractions/handler.cs` | Handler interface |
|
|
54
|
-
| Result<T> | `.morph/framework/templates/code/dotnet/abstractions/result.cs` | Railway-oriented result |
|
|
55
|
-
| Error | `.morph/framework/templates/code/dotnet/abstractions/error.cs` | Error types |
|
|
56
|
-
| IApiEndpoint | `.morph/framework/templates/code/dotnet/abstractions/api-endpoint.cs` | Endpoint interface |
|
|
57
|
-
|
|
58
|
-
## Extensions & Pipeline (read once per project setup)
|
|
59
|
-
|
|
60
|
-
| Template | Path | Purpose |
|
|
61
|
-
|----------|------|---------|
|
|
62
|
-
| Handler Registration | `.morph/framework/templates/code/dotnet/extensions/handler-registration.cs` | Scrutor auto-discovery |
|
|
63
|
-
| Map Endpoints | `.morph/framework/templates/code/dotnet/extensions/map-endpoints.cs` | IApiEndpoint discovery |
|
|
64
|
-
| Result Extensions | `.morph/framework/templates/code/dotnet/extensions/result-extensions.cs` | Match() pattern |
|
|
65
|
-
| Database Config | `.morph/framework/templates/code/dotnet/extensions/database-extensions.cs` | EF Core + Npgsql |
|
|
66
|
-
| Health Checks | `.morph/framework/templates/code/dotnet/extensions/health-checks.cs` | Health endpoints |
|
|
67
|
-
| Validation Decorator | `.morph/framework/templates/code/dotnet/pipelines/validation-decorator.cs` | FluentValidation pipeline |
|
|
68
|
-
| Logging Decorator | `.morph/framework/templates/code/dotnet/pipelines/logging-decorator.cs` | Duration tracking |
|
|
69
|
-
| Exception Handler | `.morph/framework/templates/code/dotnet/exceptions/exception-handler.cs` | ProblemDetails |
|
|
70
|
-
| API Tags | `.morph/framework/templates/code/dotnet/constants/api-tags.cs` | Scalar/Swagger groups |
|
|
71
|
-
|
|
72
|
-
## Specialized Templates
|
|
73
|
-
|
|
74
|
-
| Template | Path | Purpose |
|
|
75
|
-
|----------|------|---------|
|
|
76
|
-
| Migration | `.morph/framework/templates/code/dotnet/database/migration.cs` | EF Core migration |
|
|
77
|
-
| Hangfire Job | `.morph/framework/templates/code/dotnet/jobs/job.cs` | Background job |
|
|
78
|
-
| MAF Agent | `.morph/framework/templates/code/dotnet/jobs/agent.cs` | MS Agent Framework |
|
|
79
|
-
| Unit Test | `.morph/framework/templates/code/dotnet/test.cs` | xUnit AAA test |
|
|
80
|
-
| Contracts VSA | `.morph/framework/templates/code/dotnet/contracts/contracts-vsa.cs` | Full slice contracts |
|
|
81
|
-
|
|
82
|
-
## Usage
|
|
83
|
-
|
|
84
|
-
1. **Read the template** to see the exact pattern
|
|
85
|
-
2. **Generate code following the same structure** (naming, namespaces, imports)
|
|
86
|
-
3. Or render via CLI: `morph-spec template render <id> <output> '<variables>'`
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.cs"
|
|
4
|
+
- "**/*.csproj"
|
|
5
|
+
stacks:
|
|
6
|
+
- dotnet
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# .NET Code Templates
|
|
10
|
+
|
|
11
|
+
When implementing .NET features, use these templates as reference patterns.
|
|
12
|
+
Read the template file to see the exact pattern, then generate code following it.
|
|
13
|
+
|
|
14
|
+
## Scaffold (preferred for new slices)
|
|
15
|
+
|
|
16
|
+
**Always use scaffold for new VSA slices — never create feature files manually.**
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
morph-spec scaffold dotnet <feature> <slice-name> [--namespace <ns>] [--dry-run]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Examples:
|
|
23
|
+
```bash
|
|
24
|
+
morph-spec scaffold dotnet book create-book
|
|
25
|
+
morph-spec scaffold dotnet book get-book-by-id
|
|
26
|
+
morph-spec scaffold dotnet book update-book
|
|
27
|
+
morph-spec scaffold dotnet book delete-book
|
|
28
|
+
morph-spec scaffold dotnet book get-all-books
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Generates 7 files: endpoint, handler, request, response, validator + entity, errors (shared at feature level). Entity/errors auto-skipped if they already exist.
|
|
32
|
+
|
|
33
|
+
**Only use `template render` for individual files when adding to an existing slice.**
|
|
34
|
+
|
|
35
|
+
## VSA Feature Templates (Vertical Slice Architecture)
|
|
36
|
+
|
|
37
|
+
For each new feature slice, follow the patterns in these templates:
|
|
38
|
+
|
|
39
|
+
| Template | Path | Purpose |
|
|
40
|
+
|----------|------|---------|
|
|
41
|
+
| Endpoint | `.morph/framework/templates/code/dotnet/feature/endpoint.cs.hbs` | IApiEndpoint with MapEndpoint() |
|
|
42
|
+
| Handler | `.morph/framework/templates/code/dotnet/feature/handler.cs.hbs` | IHandler<TRequest, TResponse> |
|
|
43
|
+
| Request | `.morph/framework/templates/code/dotnet/feature/request.cs.hbs` | Sealed record DTO |
|
|
44
|
+
| Response | `.morph/framework/templates/code/dotnet/feature/response.cs.hbs` | Sealed record DTO |
|
|
45
|
+
| Validator | `.morph/framework/templates/code/dotnet/feature/validator.cs.hbs` | FluentValidation AbstractValidator |
|
|
46
|
+
| Entity | `.morph/framework/templates/code/dotnet/feature/entity.cs.hbs` | Domain entity |
|
|
47
|
+
| Errors | `.morph/framework/templates/code/dotnet/feature/errors.cs.hbs` | Error factory |
|
|
48
|
+
|
|
49
|
+
## Base Abstractions (read once per project setup)
|
|
50
|
+
|
|
51
|
+
| Template | Path | Purpose |
|
|
52
|
+
|----------|------|---------|
|
|
53
|
+
| IHandler | `.morph/framework/templates/code/dotnet/abstractions/handler.cs` | Handler interface |
|
|
54
|
+
| Result<T> | `.morph/framework/templates/code/dotnet/abstractions/result.cs` | Railway-oriented result |
|
|
55
|
+
| Error | `.morph/framework/templates/code/dotnet/abstractions/error.cs` | Error types |
|
|
56
|
+
| IApiEndpoint | `.morph/framework/templates/code/dotnet/abstractions/api-endpoint.cs` | Endpoint interface |
|
|
57
|
+
|
|
58
|
+
## Extensions & Pipeline (read once per project setup)
|
|
59
|
+
|
|
60
|
+
| Template | Path | Purpose |
|
|
61
|
+
|----------|------|---------|
|
|
62
|
+
| Handler Registration | `.morph/framework/templates/code/dotnet/extensions/handler-registration.cs` | Scrutor auto-discovery |
|
|
63
|
+
| Map Endpoints | `.morph/framework/templates/code/dotnet/extensions/map-endpoints.cs` | IApiEndpoint discovery |
|
|
64
|
+
| Result Extensions | `.morph/framework/templates/code/dotnet/extensions/result-extensions.cs` | Match() pattern |
|
|
65
|
+
| Database Config | `.morph/framework/templates/code/dotnet/extensions/database-extensions.cs` | EF Core + Npgsql |
|
|
66
|
+
| Health Checks | `.morph/framework/templates/code/dotnet/extensions/health-checks.cs` | Health endpoints |
|
|
67
|
+
| Validation Decorator | `.morph/framework/templates/code/dotnet/pipelines/validation-decorator.cs` | FluentValidation pipeline |
|
|
68
|
+
| Logging Decorator | `.morph/framework/templates/code/dotnet/pipelines/logging-decorator.cs` | Duration tracking |
|
|
69
|
+
| Exception Handler | `.morph/framework/templates/code/dotnet/exceptions/exception-handler.cs` | ProblemDetails |
|
|
70
|
+
| API Tags | `.morph/framework/templates/code/dotnet/constants/api-tags.cs` | Scalar/Swagger groups |
|
|
71
|
+
|
|
72
|
+
## Specialized Templates
|
|
73
|
+
|
|
74
|
+
| Template | Path | Purpose |
|
|
75
|
+
|----------|------|---------|
|
|
76
|
+
| Migration | `.morph/framework/templates/code/dotnet/database/migration.cs` | EF Core migration |
|
|
77
|
+
| Hangfire Job | `.morph/framework/templates/code/dotnet/jobs/job.cs` | Background job |
|
|
78
|
+
| MAF Agent | `.morph/framework/templates/code/dotnet/jobs/agent.cs` | MS Agent Framework |
|
|
79
|
+
| Unit Test | `.morph/framework/templates/code/dotnet/test.cs` | xUnit AAA test |
|
|
80
|
+
| Contracts VSA | `.morph/framework/templates/code/dotnet/contracts/contracts-vsa.cs` | Full slice contracts |
|
|
81
|
+
|
|
82
|
+
## Usage
|
|
83
|
+
|
|
84
|
+
1. **Read the template** to see the exact pattern
|
|
85
|
+
2. **Generate code following the same structure** (naming, namespaces, imports)
|
|
86
|
+
3. Or render via CLI: `morph-spec template render <id> <output> '<variables>'`
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.tsx"
|
|
4
|
-
- "**/*.css"
|
|
5
|
-
- "**/*.scss"
|
|
6
|
-
stacks:
|
|
7
|
-
- nextjs
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Frontend Standards
|
|
11
|
-
|
|
12
|
-
@.morph/framework/standards/frontend/design-system/naming.md
|
|
13
|
-
@.morph/framework/standards/frontend/design-system/animations.md
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.tsx"
|
|
4
|
+
- "**/*.css"
|
|
5
|
+
- "**/*.scss"
|
|
6
|
+
stacks:
|
|
7
|
+
- nextjs
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Frontend Standards
|
|
11
|
+
|
|
12
|
+
@.morph/framework/standards/frontend/design-system/naming.md
|
|
13
|
+
@.morph/framework/standards/frontend/design-system/animations.md
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/Dockerfile*"
|
|
4
|
-
- "**/docker-compose*"
|
|
5
|
-
- "**/.github/**"
|
|
6
|
-
- "**/coolify*"
|
|
7
|
-
stacks:
|
|
8
|
-
- docker
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Infrastructure Standards
|
|
12
|
-
|
|
13
|
-
@.morph/framework/standards/infrastructure/docker/coolify-deploy.md
|
|
14
|
-
|
|
15
|
-
## Infrastructure Templates
|
|
16
|
-
|
|
17
|
-
| Template | Path | Purpose |
|
|
18
|
-
|----------|------|---------|
|
|
19
|
-
| .NET API Dockerfile | `.morph/framework/templates/infrastructure/docker/dockerfile-api.dockerfile` | Multi-stage .NET |
|
|
20
|
-
| Next.js Dockerfile | `.morph/framework/templates/infrastructure/docker/dockerfile-web.dockerfile` | Multi-stage Next.js |
|
|
21
|
-
| Docker Compose | `.morph/framework/templates/infrastructure/docker/docker-compose.template.yml` | Local dev env |
|
|
22
|
-
| Coolify Config | `.morph/framework/templates/infrastructure/docker/coolify.template.json` | Deployment config |
|
|
23
|
-
| .NET Build CI | `.morph/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs` | CI workflow |
|
|
24
|
-
| Docker Push CI | `.morph/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs` | Build & push |
|
|
25
|
-
| Deploy Coolify | `.morph/framework/templates/infrastructure/github/workflows/deploy-coolify.yml.hbs` | CD via SSH |
|
|
26
|
-
|
|
27
|
-
Read the template and adapt to your project structure.
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/Dockerfile*"
|
|
4
|
+
- "**/docker-compose*"
|
|
5
|
+
- "**/.github/**"
|
|
6
|
+
- "**/coolify*"
|
|
7
|
+
stacks:
|
|
8
|
+
- docker
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Infrastructure Standards
|
|
12
|
+
|
|
13
|
+
@.morph/framework/standards/infrastructure/docker/coolify-deploy.md
|
|
14
|
+
|
|
15
|
+
## Infrastructure Templates
|
|
16
|
+
|
|
17
|
+
| Template | Path | Purpose |
|
|
18
|
+
|----------|------|---------|
|
|
19
|
+
| .NET API Dockerfile | `.morph/framework/templates/infrastructure/docker/dockerfile-api.dockerfile` | Multi-stage .NET |
|
|
20
|
+
| Next.js Dockerfile | `.morph/framework/templates/infrastructure/docker/dockerfile-web.dockerfile` | Multi-stage Next.js |
|
|
21
|
+
| Docker Compose | `.morph/framework/templates/infrastructure/docker/docker-compose.template.yml` | Local dev env |
|
|
22
|
+
| Coolify Config | `.morph/framework/templates/infrastructure/docker/coolify.template.json` | Deployment config |
|
|
23
|
+
| .NET Build CI | `.morph/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs` | CI workflow |
|
|
24
|
+
| Docker Push CI | `.morph/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs` | Build & push |
|
|
25
|
+
| Deploy Coolify | `.morph/framework/templates/infrastructure/github/workflows/deploy-coolify.yml.hbs` | CD via SSH |
|
|
26
|
+
|
|
27
|
+
Read the template and adapt to your project structure.
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/neon/**"
|
|
4
|
-
- "**/database/**"
|
|
5
|
-
- "**/*Migration*.sql"
|
|
6
|
-
- "**/*migration*.sql"
|
|
7
|
-
stacks:
|
|
8
|
-
- neon
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Neon PostgreSQL Standards
|
|
12
|
-
|
|
13
|
-
@.morph/framework/standards/infrastructure/neon/neon-setup.md
|
|
14
|
-
@.morph/framework/standards/infrastructure/neon/neon-pgvector.md
|
|
15
|
-
@.morph/framework/standards/infrastructure/neon/neon-pgrag.md
|
|
16
|
-
@.morph/framework/standards/backend/integrations/neon-auth/neon-auth.md
|
|
17
|
-
|
|
18
|
-
## SQL Templates
|
|
19
|
-
|
|
20
|
-
| Template | Path | Purpose |
|
|
21
|
-
|----------|------|---------|
|
|
22
|
-
| PostgreSQL Migration | `.morph/framework/templates/code/sql/postgresql-migration.sql` | Database migration |
|
|
23
|
-
| PostgreSQL RLS Policy | `.morph/framework/templates/code/sql/postgresql-rls-policy.sql` | Row-level security |
|
|
24
|
-
|
|
25
|
-
Read the template and adapt to your project structure.
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/neon/**"
|
|
4
|
+
- "**/database/**"
|
|
5
|
+
- "**/*Migration*.sql"
|
|
6
|
+
- "**/*migration*.sql"
|
|
7
|
+
stacks:
|
|
8
|
+
- neon
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Neon PostgreSQL Standards
|
|
12
|
+
|
|
13
|
+
@.morph/framework/standards/infrastructure/neon/neon-setup.md
|
|
14
|
+
@.morph/framework/standards/infrastructure/neon/neon-pgvector.md
|
|
15
|
+
@.morph/framework/standards/infrastructure/neon/neon-pgrag.md
|
|
16
|
+
@.morph/framework/standards/backend/integrations/neon-auth/neon-auth.md
|
|
17
|
+
|
|
18
|
+
## SQL Templates
|
|
19
|
+
|
|
20
|
+
| Template | Path | Purpose |
|
|
21
|
+
|----------|------|---------|
|
|
22
|
+
| PostgreSQL Migration | `.morph/framework/templates/code/sql/postgresql-migration.sql` | Database migration |
|
|
23
|
+
| PostgreSQL RLS Policy | `.morph/framework/templates/code/sql/postgresql-rls-policy.sql` | Row-level security |
|
|
24
|
+
|
|
25
|
+
Read the template and adapt to your project structure.
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.tsx"
|
|
4
|
-
- "**/*.ts"
|
|
5
|
-
stacks:
|
|
6
|
-
- nextjs
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Next.js Standards
|
|
10
|
-
|
|
11
|
-
@.morph/framework/standards/frontend/nextjs/naming-conventions.md
|
|
12
|
-
@.morph/framework/standards/frontend/nextjs/project-structure.md
|
|
13
|
-
@.morph/framework/standards/frontend/nextjs/app-router.md
|
|
14
|
-
@.morph/framework/standards/frontend/nextjs/components.md
|
|
15
|
-
@.morph/framework/standards/frontend/nextjs/data-fetching.md
|
|
16
|
-
@.morph/framework/standards/frontend/nextjs/forms.md
|
|
17
|
-
@.morph/framework/standards/frontend/nextjs/state-management.md
|
|
18
|
-
@.morph/framework/standards/frontend/nextjs/testing.md
|
|
19
|
-
@.morph/framework/standards/frontend/nextjs/nextjs-patterns.md
|
|
20
|
-
@.morph/framework/standards/frontend/nextjs/motion-patterns.md
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.tsx"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
stacks:
|
|
6
|
+
- nextjs
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Next.js Standards
|
|
10
|
+
|
|
11
|
+
@.morph/framework/standards/frontend/nextjs/naming-conventions.md
|
|
12
|
+
@.morph/framework/standards/frontend/nextjs/project-structure.md
|
|
13
|
+
@.morph/framework/standards/frontend/nextjs/app-router.md
|
|
14
|
+
@.morph/framework/standards/frontend/nextjs/components.md
|
|
15
|
+
@.morph/framework/standards/frontend/nextjs/data-fetching.md
|
|
16
|
+
@.morph/framework/standards/frontend/nextjs/forms.md
|
|
17
|
+
@.morph/framework/standards/frontend/nextjs/state-management.md
|
|
18
|
+
@.morph/framework/standards/frontend/nextjs/testing.md
|
|
19
|
+
@.morph/framework/standards/frontend/nextjs/nextjs-patterns.md
|
|
20
|
+
@.morph/framework/standards/frontend/nextjs/motion-patterns.md
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
---
|
|
2
|
-
paths:
|
|
3
|
-
- "**/*.tsx"
|
|
4
|
-
- "**/*.ts"
|
|
5
|
-
stacks:
|
|
6
|
-
- nextjs
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Next.js Code Templates
|
|
10
|
-
|
|
11
|
-
When implementing Next.js features, use these templates as reference patterns.
|
|
12
|
-
Read the template file to see the exact pattern, then generate code following it.
|
|
13
|
-
|
|
14
|
-
## Scaffold (preferred for new features)
|
|
15
|
-
|
|
16
|
-
**Always use scaffold for new feature pages — never create feature files manually.**
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
morph-spec scaffold nextjs <feature> [--dry-run]
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Examples:
|
|
23
|
-
```bash
|
|
24
|
-
morph-spec scaffold nextjs book
|
|
25
|
-
morph-spec scaffold nextjs user-profile
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Generates 4 files: page (Server Component), list component, form component, TanStack Query hook.
|
|
29
|
-
|
|
30
|
-
**Only use `template render` for individual files when modifying an existing feature.**
|
|
31
|
-
|
|
32
|
-
| Template | Path | Purpose |
|
|
33
|
-
|----------|------|---------|
|
|
34
|
-
| Server Page | `.morph/framework/templates/frontend/nextjs/page.tsx.hbs` | App Router server component |
|
|
35
|
-
| Client Component | `.morph/framework/templates/frontend/nextjs/client-component.tsx.hbs` | `'use client'` component |
|
|
36
|
-
| Feature Form | `.morph/framework/templates/frontend/nextjs/feature-form.tsx.hbs` | react-hook-form + Zod + shadcn |
|
|
37
|
-
| Custom Hook | `.morph/framework/templates/frontend/nextjs/use-feature.ts.hbs` | TanStack Query hook |
|
|
38
|
-
| Env Config | `.morph/framework/templates/frontend/nextjs/env.mjs.hbs` | T3 Env validation |
|
|
39
|
-
| TypeScript Config | `.morph/framework/templates/frontend/nextjs/tsconfig.json.hbs` | Path aliases |
|
|
40
|
-
| Dockerfile | `.morph/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs` | Multi-stage build |
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "**/*.tsx"
|
|
4
|
+
- "**/*.ts"
|
|
5
|
+
stacks:
|
|
6
|
+
- nextjs
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Next.js Code Templates
|
|
10
|
+
|
|
11
|
+
When implementing Next.js features, use these templates as reference patterns.
|
|
12
|
+
Read the template file to see the exact pattern, then generate code following it.
|
|
13
|
+
|
|
14
|
+
## Scaffold (preferred for new features)
|
|
15
|
+
|
|
16
|
+
**Always use scaffold for new feature pages — never create feature files manually.**
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
morph-spec scaffold nextjs <feature> [--dry-run]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Examples:
|
|
23
|
+
```bash
|
|
24
|
+
morph-spec scaffold nextjs book
|
|
25
|
+
morph-spec scaffold nextjs user-profile
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Generates 4 files: page (Server Component), list component, form component, TanStack Query hook.
|
|
29
|
+
|
|
30
|
+
**Only use `template render` for individual files when modifying an existing feature.**
|
|
31
|
+
|
|
32
|
+
| Template | Path | Purpose |
|
|
33
|
+
|----------|------|---------|
|
|
34
|
+
| Server Page | `.morph/framework/templates/frontend/nextjs/page.tsx.hbs` | App Router server component |
|
|
35
|
+
| Client Component | `.morph/framework/templates/frontend/nextjs/client-component.tsx.hbs` | `'use client'` component |
|
|
36
|
+
| Feature Form | `.morph/framework/templates/frontend/nextjs/feature-form.tsx.hbs` | react-hook-form + Zod + shadcn |
|
|
37
|
+
| Custom Hook | `.morph/framework/templates/frontend/nextjs/use-feature.ts.hbs` | TanStack Query hook |
|
|
38
|
+
| Env Config | `.morph/framework/templates/frontend/nextjs/env.mjs.hbs` | T3 Env validation |
|
|
39
|
+
| TypeScript Config | `.morph/framework/templates/frontend/nextjs/tsconfig.json.hbs` | Path aliases |
|
|
40
|
+
| Dockerfile | `.morph/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs` | Multi-stage build |
|
|
@@ -78,6 +78,60 @@
|
|
|
78
78
|
"additionalProperties": false
|
|
79
79
|
}
|
|
80
80
|
},
|
|
81
|
+
"taskVerifications": {
|
|
82
|
+
"type": "object",
|
|
83
|
+
"description": "Deterministic verify results per task, written ONLY by `morph-spec verify` (task scope). updatedAt is server-side; attempts auto-increment. Persisted only from the primary root or the feature's own registered worktree — see verify.js decidePersistence().",
|
|
84
|
+
"propertyNames": { "pattern": "^T\\d+$" },
|
|
85
|
+
"additionalProperties": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"required": ["status", "nodes", "attempts", "updatedAt"],
|
|
88
|
+
"properties": {
|
|
89
|
+
"status": { "type": "string", "enum": ["pass", "fail"] },
|
|
90
|
+
"nodes": {
|
|
91
|
+
"type": "object",
|
|
92
|
+
"required": ["build", "tests", "validators"],
|
|
93
|
+
"properties": {
|
|
94
|
+
"build": { "type": "string", "enum": ["pass", "fail", "skip"] },
|
|
95
|
+
"tests": { "type": "string", "enum": ["pass", "fail", "skip"] },
|
|
96
|
+
"validators": { "type": "string", "enum": ["pass", "fail", "skip"] }
|
|
97
|
+
},
|
|
98
|
+
"additionalProperties": false
|
|
99
|
+
},
|
|
100
|
+
"score": { "type": ["number", "null"], "minimum": 0, "maximum": 10 },
|
|
101
|
+
"attempts": { "type": "integer", "minimum": 1 },
|
|
102
|
+
"updatedAt": { "type": "string", "format": "date-time" }
|
|
103
|
+
},
|
|
104
|
+
"additionalProperties": false
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"verifications": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"description": "Deterministic verify results at feature scope, written ONLY by `morph-spec verify` (feature scope, no task id).",
|
|
110
|
+
"properties": {
|
|
111
|
+
"feature": {
|
|
112
|
+
"type": "object",
|
|
113
|
+
"required": ["status", "nodes", "attempts", "updatedAt"],
|
|
114
|
+
"properties": {
|
|
115
|
+
"status": { "type": "string", "enum": ["pass", "fail"] },
|
|
116
|
+
"nodes": {
|
|
117
|
+
"type": "object",
|
|
118
|
+
"required": ["build", "tests", "validators"],
|
|
119
|
+
"properties": {
|
|
120
|
+
"build": { "type": "string", "enum": ["pass", "fail", "skip"] },
|
|
121
|
+
"tests": { "type": "string", "enum": ["pass", "fail", "skip"] },
|
|
122
|
+
"validators": { "type": "string", "enum": ["pass", "fail", "skip"] }
|
|
123
|
+
},
|
|
124
|
+
"additionalProperties": false
|
|
125
|
+
},
|
|
126
|
+
"score": { "type": ["number", "null"], "minimum": 0, "maximum": 10 },
|
|
127
|
+
"attempts": { "type": "integer", "minimum": 1 },
|
|
128
|
+
"updatedAt": { "type": "string", "format": "date-time" }
|
|
129
|
+
},
|
|
130
|
+
"additionalProperties": false
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"additionalProperties": false
|
|
134
|
+
},
|
|
81
135
|
"tasks": {
|
|
82
136
|
"type": "object",
|
|
83
137
|
"description": "Aggregate task counters (informational — the source of truth is 2-plan/tasks.json).",
|
|
@@ -101,6 +155,46 @@
|
|
|
101
155
|
"additionalProperties": true
|
|
102
156
|
}
|
|
103
157
|
},
|
|
158
|
+
"workType": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"enum": ["feature", "bug", "chore", "hotfix"],
|
|
161
|
+
"description": "Roteamento por tipo (v8). Ausente = 'feature'. Escrito só por `morph-spec create --type`/`retype` (shape em src/core/work-types.js)."
|
|
162
|
+
},
|
|
163
|
+
"workTypeDetection": {
|
|
164
|
+
"type": "object",
|
|
165
|
+
"description": "Auditoria de como workType foi resolvido, escrita só por `morph-spec create`. Todos os campos são opcionais.",
|
|
166
|
+
"properties": {
|
|
167
|
+
"source": { "type": "string", "enum": ["deterministic", "llm", "user"] },
|
|
168
|
+
"confidence": { "type": "string", "enum": ["high", "tie", "none"] },
|
|
169
|
+
"matched": { "type": "object", "description": "Keywords casados por tipo candidato (src/lib/work-type-detector.js)." },
|
|
170
|
+
"decidedAt": { "type": "string", "format": "date-time" }
|
|
171
|
+
},
|
|
172
|
+
"additionalProperties": true
|
|
173
|
+
},
|
|
174
|
+
"workTypeHistory": {
|
|
175
|
+
"type": "array",
|
|
176
|
+
"description": "Histórico de reclassificações, escrito por `morph-spec retype` (task futura).",
|
|
177
|
+
"items": {
|
|
178
|
+
"type": "object",
|
|
179
|
+
"properties": {
|
|
180
|
+
"from": { "type": "string" },
|
|
181
|
+
"to": { "type": "string" },
|
|
182
|
+
"reason": { "type": "string" },
|
|
183
|
+
"at": { "type": "string", "format": "date-time" }
|
|
184
|
+
},
|
|
185
|
+
"additionalProperties": true
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
"worktree": {
|
|
189
|
+
"type": "object",
|
|
190
|
+
"description": "Bookkeeping do worktree ativo desta feature no ROOT feature.json, gravado por `morph-spec worktree setup` (via `create --worktree` ou standalone). Removido por `worktree finish`.",
|
|
191
|
+
"properties": {
|
|
192
|
+
"path": { "type": "string" },
|
|
193
|
+
"branch": { "type": "string" },
|
|
194
|
+
"createdAt": { "type": "string", "format": "date-time" }
|
|
195
|
+
},
|
|
196
|
+
"additionalProperties": true
|
|
197
|
+
},
|
|
104
198
|
"activeAgents": { "type": "array", "items": { "type": "string" } },
|
|
105
199
|
"checkpoints": { "type": "array" },
|
|
106
200
|
"dispatchLog": {
|
|
@@ -120,7 +214,7 @@
|
|
|
120
214
|
"properties": {
|
|
121
215
|
"approved": { "type": "boolean" },
|
|
122
216
|
"timestamp": { "type": ["string", "null"], "description": "ISO timestamp of the approval/revocation, null while never evaluated." },
|
|
123
|
-
"approvedBy": { "type": ["string", "null"], "description": "\"auto\" (
|
|
217
|
+
"approvedBy": { "type": ["string", "null"], "description": "\"auto\" (approve/advance --mode auto), \"manual\" (human in the loop), \"policy:{workType}\" (gate stamped at birth by `morph-spec create` per the work type's skippedGates — see src/core/work-types.js; the gate-guard hook only special-cases \"auto\", so policy-stamped gates stay silent to it), a --approver name, or null while never evaluated." }
|
|
124
218
|
},
|
|
125
219
|
"additionalProperties": true
|
|
126
220
|
}
|