@polymorphism-tech/morph-spec 4.22.0 → 5.0.1
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 +57 -71
- package/README.md +2 -2
- package/bin/morph-spec.js +224 -491
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/CLAUDE.md +55 -38
- package/framework/MORPH.md +244 -0
- package/framework/agents.json +127 -1198
- package/framework/commands/morph-apply.md +56 -240
- package/framework/commands/morph-archive.md +48 -85
- package/framework/commands/morph-preflight.md +7 -7
- package/framework/commands/morph-proposal.md +35 -191
- package/framework/commands/morph-status.md +19 -50
- package/framework/commands/morph-troubleshoot.md +2 -2
- package/framework/evals/rubrics/README.md +44 -0
- package/framework/evals/rubrics/architecture.md +46 -0
- package/framework/evals/rubrics/code-quality.md +50 -0
- package/framework/evals/rubrics/contracts.md +47 -0
- package/framework/evals/rubrics/test-coverage.md +50 -0
- package/framework/evals/scenarios/dotnet-crud.yaml +42 -0
- package/framework/evals/scenarios/nextjs-auth.yaml +38 -0
- package/framework/evals/suites/standard.yaml +5 -0
- package/framework/evals/trace-schema.md +67 -0
- package/framework/hooks/claude-code/core/README.md +3 -0
- package/framework/hooks/claude-code/core/denylist.json +14 -0
- package/framework/hooks/claude-code/{pre-tool-use → core}/enforce-phase-writes.js +5 -5
- package/framework/hooks/claude-code/core/post-edit-typecheck.js +69 -0
- package/framework/hooks/claude-code/core/pre-bash-denylist.js +29 -0
- package/framework/hooks/claude-code/{pre-tool-use → core}/protect-spec-files.js +4 -6
- package/framework/hooks/claude-code/{stop → core}/validate-completion.js +13 -82
- package/framework/hooks/shared/phase-utils.js +20 -31
- package/framework/hooks/shared/state-reader.js +4 -5
- package/framework/{skills/level-0-meta/mcp-registry.json → mcp/registry.json} +254 -243
- package/framework/phases.json +41 -115
- package/framework/rubrics/eval-rubric.json +66 -0
- package/framework/skills/README.md +39 -64
- package/framework/skills/core/README.md +3 -0
- package/framework/skills/core/morph-brainstorming/SKILL.md +102 -0
- package/framework/skills/core/morph-eval/SKILL.md +57 -0
- package/framework/skills/core/morph-implement/SKILL.md +83 -0
- package/framework/skills/core/morph-plan/SKILL.md +64 -0
- package/framework/skills/core/morph-review/SKILL.md +62 -0
- package/framework/skills/core/morph-stack-scan/SKILL.md +109 -0
- package/framework/skills/core/morph-standards/SKILL.md +49 -0
- package/framework/templates/CLAUDE.md.core.guide.md +29 -0
- package/framework/templates/CLAUDE.md.core.template +22 -0
- package/framework/templates/REGISTRY.json +4 -4
- package/framework/workflows/configs/fast-track.json +5 -10
- package/framework/workflows/configs/full.json +4 -8
- package/framework/workflows/configs/quick.json +32 -0
- package/framework/workflows/configs/standard.json +57 -64
- package/package.json +7 -6
- package/src/commands/mcp/mcp-setup.js +58 -31
- package/src/commands/project/doctor.js +69 -70
- package/src/commands/project/init.js +26 -5
- package/src/commands/project/status.js +18 -19
- package/src/commands/state/approve.js +1 -1
- package/src/commands/validation/validate-feature.js +18 -112
- package/src/core/paths/output-schema.js +133 -152
- package/src/core/state/phase-state-machine.js +10 -24
- package/src/core/state/state-manager.js +17 -17
- package/src/core/workflows/workflow-detector.js +214 -31
- package/src/core/workflows/workflow-router.js +204 -0
- package/src/dashboard/app/pages/AgentMap.jsx +32 -33
- package/src/dashboard/app/pages/LiveState.jsx +1 -1
- package/src/dashboard/app/pages/PhasePipeline.jsx +2 -4
- package/src/dashboard/app/pages/SkillsLibrary.jsx +2 -3
- package/src/dashboard/app/pages/Workflows.jsx +2 -2
- package/src/dashboard/scanner/agents-scanner.js +30 -35
- package/src/lib/agents/metrics-aggregator.js +1 -1
- package/src/lib/agents/output-collector.js +7 -9
- package/src/lib/context/context-builder.js +289 -0
- package/src/lib/detectors/claude-config-detector.js +19 -3
- package/src/lib/generators/context-generator.js +20 -42
- package/src/lib/generators/index.js +1 -0
- package/src/lib/generators/mandate-generator.js +512 -0
- package/src/lib/generators/metadata-extractor.js +1 -1
- package/src/lib/generators/recap-generator.js +3 -4
- package/src/lib/installers/mcp-installer.js +300 -92
- package/src/lib/phase-chain/phase-validator.js +36 -40
- package/src/lib/stack/stack-profile.js +74 -91
- package/src/lib/tasks/task-parser.js +1 -1
- package/src/lib/tasks/wave-resolver.js +353 -0
- package/src/lib/validators/checkpoint-persistence.js +2 -2
- package/src/lib/validators/content/cross-phase-validator.js +281 -0
- package/src/lib/validators/content/index.js +1 -0
- package/src/lib/validators/shared/emit-validator-dispatch.js +6 -56
- package/src/scripts/global-install.js +2 -27
- package/src/utils/agents-installer.js +224 -447
- package/src/utils/claude-settings-manager.js +57 -15
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +15 -117
- package/src/utils/skills-installer.js +12 -18
- package/bin/detect-agents.js +0 -226
- package/bin/task-manager.js +0 -1036
- package/framework/agents/README.md +0 -13
- package/framework/agents/ai-agents/ai-system-architect.md +0 -194
- package/framework/agents/ai-agents/vector-search-expert.md +0 -247
- package/framework/agents/architecture/architecture-expert.md +0 -98
- package/framework/agents/architecture/morph-spec-architect.md +0 -66
- package/framework/agents/architecture/packages-validator.md +0 -89
- package/framework/agents/architecture/security-expert.md +0 -79
- package/framework/agents/architecture/seo-growth-hacker.md +0 -168
- package/framework/agents/architecture/standards-architect.md +0 -153
- package/framework/agents/backend/dotnet-senior.md +0 -163
- package/framework/agents/backend/ef-modeler.md +0 -119
- package/framework/agents/backend/hangfire-orchestrator.md +0 -133
- package/framework/agents/backend/ms-agent-expert.md +0 -55
- package/framework/agents/backend/neon-expert.md +0 -379
- package/framework/agents/frontend/css-specialist.md +0 -89
- package/framework/agents/frontend/design-system-validator.md +0 -100
- package/framework/agents/frontend/gsap-animator.md +0 -131
- package/framework/agents/frontend/nextjs-component-validator.md +0 -97
- package/framework/agents/frontend/nextjs-expert.md +0 -201
- package/framework/agents/frontend/ui-designer.md +0 -259
- package/framework/agents/infrastructure/infra-architect.md +0 -215
- package/framework/agents/integrations/asaas-financial.md +0 -138
- package/framework/agents/integrations/neon-auth.md +0 -151
- package/framework/agents/integrations/resend-email.md +0 -127
- package/framework/hooks/claude-code/post-tool-use/agent-complete.js +0 -122
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +0 -363
- package/framework/hooks/claude-code/post-tool-use/handle-tool-failure.js +0 -78
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +0 -194
- package/framework/hooks/claude-code/pre-compact/save-morph-context.js +0 -199
- package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +0 -55
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +0 -323
- package/framework/hooks/claude-code/session-start/post-compact-restore.js +0 -41
- package/framework/hooks/claude-code/session-start/resume-context.js +0 -77
- package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +0 -90
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +0 -114
- package/framework/hooks/shared/compact-restore.js +0 -123
- package/framework/hooks/shared/dispatch-helpers.js +0 -147
- package/framework/hooks/shared/skill-reminder-helpers.js +0 -79
- package/framework/hooks/shared/stale-task-reset.js +0 -57
- package/framework/hooks/shared/worktree-helpers.js +0 -75
- package/framework/skills/level-0-meta/README.md +0 -7
- package/framework/skills/level-0-meta/morph-agent-teams/SKILL.md +0 -472
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +0 -174
- package/framework/skills/level-0-meta/morph-brainstorming/references/proposal-example.md +0 -138
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +0 -145
- package/framework/skills/level-0-meta/morph-code-review/SKILL.md +0 -250
- package/framework/skills/level-0-meta/morph-code-review/references/review-example.md +0 -164
- package/framework/skills/level-0-meta/morph-code-review/references/review-guidelines.md +0 -100
- package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +0 -151
- package/framework/skills/level-0-meta/morph-code-review-nextjs/SKILL.md +0 -165
- package/framework/skills/level-0-meta/morph-code-review-nextjs/references/review-example-nextjs.md +0 -254
- package/framework/skills/level-0-meta/morph-code-review-nextjs/scripts/scan-nextjs.mjs +0 -189
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +0 -344
- package/framework/skills/level-0-meta/morph-frontend-review/scripts/scan-accessibility.mjs +0 -376
- package/framework/skills/level-0-meta/morph-gemini-image/SKILL.md +0 -290
- package/framework/skills/level-0-meta/morph-init/SKILL.md +0 -537
- package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +0 -225
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +0 -401
- package/framework/skills/level-0-meta/morph-post-implementation/scripts/detect-dev-server.mjs +0 -153
- package/framework/skills/level-0-meta/morph-post-implementation/scripts/detect-stack.mjs +0 -234
- package/framework/skills/level-0-meta/morph-simulation-checklist/SKILL.md +0 -106
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +0 -243
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +0 -169
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +0 -148
- package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +0 -110
- package/framework/skills/level-1-workflows/README.md +0 -7
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +0 -269
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +0 -453
- package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +0 -44
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-authoring-guide.md +0 -55
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +0 -253
- package/framework/skills/level-1-workflows/morph-phase-implement/.morph/logs/activity.json +0 -38
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +0 -634
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +0 -50
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +0 -54
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +0 -47
- package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +0 -132
- package/framework/skills/level-1-workflows/morph-phase-implement/references/vsa-implementation-guide.md +0 -92
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +0 -257
- package/framework/skills/level-1-workflows/morph-phase-tasks/.morph/logs/activity.json +0 -14
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +0 -291
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +0 -143
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +0 -404
- package/framework/skills/level-1-workflows/morph-phase-tasks/scripts/validate-tasks.mjs +0 -112
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +0 -995
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +0 -147
- package/framework/squad-templates/backend-only.json +0 -47
- package/framework/squad-templates/frontend-only.json +0 -56
- package/framework/squad-templates/full-stack.json +0 -74
- package/src/commands/agents/agent-metrics.js +0 -174
- package/src/commands/agents/audit-dispatch.js +0 -82
- package/src/commands/agents/detect-agents.js +0 -275
- package/src/commands/agents/dispatch-agents.js +0 -461
- package/src/commands/agents/index.js +0 -13
- package/src/commands/agents/manage-agents.js +0 -352
- package/src/commands/agents/project-metrics.js +0 -74
- package/src/commands/phase/phase-reset.js +0 -74
- package/src/commands/scope/escalate.js +0 -217
- package/src/commands/state/advance-phase.js +0 -600
- package/src/commands/state/phase-runner.js +0 -215
- package/src/commands/state/state.js +0 -444
- package/src/commands/task/expand.js +0 -100
- package/src/commands/tasks/index.js +0 -4
- package/src/commands/tasks/task.js +0 -105
- package/src/commands/templates/index.js +0 -5
- package/src/commands/templates/template-render.js +0 -93
- package/src/commands/trust/trust.js +0 -118
- package/src/lib/agents/agents-manager.js +0 -349
- package/src/lib/build/build-runner.js +0 -99
- package/src/lib/checkpoints/checkpoint-hooks.js +0 -111
- package/src/lib/contracts/sprint-contract-generator.js +0 -137
- package/src/lib/scope/impact-analyzer.js +0 -106
- package/src/lib/trust/trust-manager.js +0 -157
- package/src/utils/tier-helpers.js +0 -24
- /package/framework/hooks/claude-code/{post-tool-use → core}/loop-detect.js +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: morph-plan
|
|
3
|
+
description: Guia a produção dos três artefatos de planejamento de uma feature
|
|
4
|
+
version: core
|
|
5
|
+
when-to-invoke: ao iniciar a fase plan de uma feature, após o gate 1 (proposal aprovado)
|
|
6
|
+
user-invokable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# morph-plan
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Produzir spec.md, mandate.md e tasks.md com qualidade suficiente para abrir o Gate 2.
|
|
13
|
+
Os três artefatos juntos definem o quê, o como e o quanto da feature.
|
|
14
|
+
|
|
15
|
+
## Quando invocar
|
|
16
|
+
Ao iniciar a fase plan — após o proposal.md ser aprovado e antes de qualquer implementação.
|
|
17
|
+
|
|
18
|
+
## O que fazer
|
|
19
|
+
|
|
20
|
+
1. Leia o `proposal.md` em `.morph/features/{feature}/0-proposal/` para entender escopo e critérios de aceite.
|
|
21
|
+
2. Produza `spec.md` em `.morph/features/{feature}/2-plan/`:
|
|
22
|
+
- Arquitetura da solução: quais componentes, como se conectam, fluxos de dados principais.
|
|
23
|
+
- Edge cases identificados e como serão tratados.
|
|
24
|
+
- Integrações externas e contratos esperados.
|
|
25
|
+
3. Produza `mandate.md` em `.morph/features/{feature}/2-plan/`:
|
|
26
|
+
- Stack exata do projeto (leia do CLAUDE.md → campo Stack).
|
|
27
|
+
- Standards obrigatórios: liste os IDs relevantes de `framework/standards/STANDARDS.json`.
|
|
28
|
+
- Patterns proibidos — inclua sempre os defaults abaixo mais qualquer específico da feature:
|
|
29
|
+
- `Guid.NewGuid()` → usar `Guid.CreateVersion7()`
|
|
30
|
+
- Classes não-sealed sem justificativa documentada
|
|
31
|
+
- Exceptions como fluxo de controle → usar result pattern com `result.Match()`
|
|
32
|
+
- Repository pattern / `IRepository<T>` → handlers VSA acessam DbContext diretamente
|
|
33
|
+
- Checklist de done com critérios verificáveis por tarefa.
|
|
34
|
+
4. Produza `tasks.md` em `.morph/features/{feature}/2-plan/`:
|
|
35
|
+
- Liste cada tarefa com ID único (T1, T2...).
|
|
36
|
+
- Para cada tarefa: descrição, dependências, estimativa de esforço, critério de done.
|
|
37
|
+
- Ordene por dependências — tarefas sem dependências primeiro.
|
|
38
|
+
5. Apresente o Gate 2 ao usuário usando exatamente este formato:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
## Gate 2 — Plano pronto para revisão
|
|
42
|
+
|
|
43
|
+
**Spec:** {1 frase do problema} → {1 frase da solução técnica}
|
|
44
|
+
**Mandate:** Stack: {stack} | Standards: {N obrigatórios} | Proibido: {padrões proibidos listados}
|
|
45
|
+
**Tasks:** {N tarefas} | Estimativa: {X horas/dias} | Caminho crítico: {IDs das tarefas sem dependências paralelas}
|
|
46
|
+
|
|
47
|
+
Decisões de arquitetura:
|
|
48
|
+
- {decisão 1} — alternativa descartada: {alternativa}
|
|
49
|
+
{adicione apenas se houver decisões não triviais}
|
|
50
|
+
|
|
51
|
+
Aprovado? Responda "pode implementar" para avançar.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Aguarde resposta explícita. Se o usuário pedir ajustes, aplique e reapresente o gate completo antes de avançar.
|
|
55
|
+
|
|
56
|
+
## Output esperado
|
|
57
|
+
- `.morph/features/{feature}/2-plan/spec.md` — especificação técnica completa
|
|
58
|
+
- `.morph/features/{feature}/2-plan/mandate.md` — contrato de implementação
|
|
59
|
+
- `.morph/features/{feature}/2-plan/tasks.md` — lista de tarefas ordenada
|
|
60
|
+
|
|
61
|
+
## Referências
|
|
62
|
+
- `framework/MORPH.md` — seções 2 (Fases), 3 (Contratos de Output), 5 (Gates)
|
|
63
|
+
- `framework/standards/STANDARDS.json` — para identificar standards relevantes ao mandate
|
|
64
|
+
- `.morph/features/{feature}/0-proposal/proposal.md` — escopo da feature
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: morph-review
|
|
3
|
+
description: Conduz a fase de revisão e produz o review-report.md para o Gate 3
|
|
4
|
+
version: core
|
|
5
|
+
when-to-invoke: ao iniciar a fase review, após todas as tarefas de implementação serem concluídas
|
|
6
|
+
user-invokable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# morph-review
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Verificar se a implementação atende ao mandate.md e produzir um review-report.md
|
|
13
|
+
claro o suficiente para que o usuário tome a decisão de aprovação ou rejeição.
|
|
14
|
+
|
|
15
|
+
## Quando invocar
|
|
16
|
+
Ao iniciar a fase review — após todas as tarefas do tasks.md estarem com status Done
|
|
17
|
+
e o recap.md estar atualizado.
|
|
18
|
+
|
|
19
|
+
## O que fazer
|
|
20
|
+
|
|
21
|
+
1. Leia o mandate.md em `.morph/features/{feature}/2-plan/mandate.md`.
|
|
22
|
+
Liste os critérios de done, standards obrigatórios e patterns proibidos.
|
|
23
|
+
|
|
24
|
+
2. Leia o recap.md em `.morph/features/{feature}/3-implement/recap.md`.
|
|
25
|
+
Verifique se todas as tarefas têm entrada e se os problemas foram resolvidos.
|
|
26
|
+
|
|
27
|
+
3. Para cada critério do mandate.md, verifique se foi atendido:
|
|
28
|
+
- Se atendido: registre como "aprovado" com evidência (arquivo ou comportamento).
|
|
29
|
+
- Se não atendido: registre como "bloqueante" com descrição do gap.
|
|
30
|
+
- Se parcialmente atendido: registre como "pendência" com o que falta.
|
|
31
|
+
|
|
32
|
+
4. Execute morph-eval na implementação completa (fase, não tarefa) para obter scores por dimensão.
|
|
33
|
+
|
|
34
|
+
5. Produza `review-report.md` em `.morph/features/{feature}/4-review/` com:
|
|
35
|
+
- Scores por dimensão (arquitetura, contratos, qualidade, cobertura)
|
|
36
|
+
- Score composto final
|
|
37
|
+
- Lista de itens bloqueantes (se houver) — com descrição e critério de resolução
|
|
38
|
+
- Lista de melhorias recomendadas (não bloqueantes)
|
|
39
|
+
- Recomendação final: Aprovado / Rejeitar com condições / Reprovar
|
|
40
|
+
|
|
41
|
+
6. Se houver itens bloqueantes (score < 6 em qualquer dimensão bloqueante), corrija antes
|
|
42
|
+
de apresentar o review-report.md ao usuário. Não abra o Gate 3 com bloqueantes em aberto.
|
|
43
|
+
|
|
44
|
+
7. Finalize o trace de execução em `.morph/traces/YYYY-MM-DD-{feature}-implement.json`:
|
|
45
|
+
- Preencha `phase_summary.tasks_completed`, `tasks_failed`, `avg_eval_score`
|
|
46
|
+
- Calcule `standards_most_used` a partir das entradas em `tasks[].standards_consulted`
|
|
47
|
+
- Preencha `sub_agents_dispatched` com a contagem de tasks onde `sub_agent_dispatched: true`
|
|
48
|
+
- Preencha `completed_at` com o timestamp atual
|
|
49
|
+
|
|
50
|
+
8. Apresente o relatório ao usuário e aguarde o Gate 3.
|
|
51
|
+
|
|
52
|
+
## Output esperado
|
|
53
|
+
- `.morph/features/{feature}/4-review/review-report.md` com scores e recomendação
|
|
54
|
+
- Trace da fase com `phase_summary` preenchido
|
|
55
|
+
- Gate 3 apresentado ao usuário para aprovação
|
|
56
|
+
|
|
57
|
+
## Referências
|
|
58
|
+
- `framework/MORPH.md` — seção 5 (Gate 3) e seção 1 (papel Evaluator)
|
|
59
|
+
- `framework/skills/core/morph-eval/SKILL.md` — para calcular scores por dimensão
|
|
60
|
+
- `framework/evals/trace-schema.md` — formato canônico do trace
|
|
61
|
+
- `.morph/features/{feature}/2-plan/mandate.md` — critérios de done da feature
|
|
62
|
+
- `.morph/features/{feature}/3-implement/recap.md` — registro de execução
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: morph-stack-scan
|
|
3
|
+
description: Varre o codebase existente, detecta stack atual, compara com o stack padrão e gera migration-plan.md se houver desvios
|
|
4
|
+
version: core
|
|
5
|
+
when-to-invoke: ao iniciar uma feature em projeto brownfield (codebase já existente)
|
|
6
|
+
user-invokable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# morph-stack-scan
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Identificar o estado real do codebase antes de planejar qualquer feature — garantindo que a implementação não adicione inconsistência a um projeto já existente.
|
|
13
|
+
|
|
14
|
+
## Quando invocar
|
|
15
|
+
Quando o projeto já tem código existente e você precisa entender o estado atual antes de propor uma feature. Normalmente invocado pelo morph-brainstorming, mas pode ser invocado diretamente.
|
|
16
|
+
|
|
17
|
+
## Stack padrão de referência
|
|
18
|
+
|
|
19
|
+
| Camada | Esperado |
|
|
20
|
+
|--------|----------|
|
|
21
|
+
| Runtime | .NET 10 |
|
|
22
|
+
| Arquitetura | VSA — feature-folder: `{Feature}/` com Handler, Validator, Endpoint, Errors, Tests |
|
|
23
|
+
| ORM | EF Core + Neon (Postgres) |
|
|
24
|
+
| IDs | `Guid.CreateVersion7()` |
|
|
25
|
+
| Classes | `sealed` por padrão |
|
|
26
|
+
| Erros | Result pattern (`result.Match()`), não exceptions não tratadas |
|
|
27
|
+
| IA | Microsoft Agent Framework (MAF) |
|
|
28
|
+
| Frontend | Next.js App Router + Tailwind + Framer Motion + Shadcn |
|
|
29
|
+
| Jobs | Hangfire (apenas quando necessário) |
|
|
30
|
+
|
|
31
|
+
**Padrões proibidos:** `Guid.NewGuid()`, classes não-sealed sem justificativa, exceptions como fluxo de controle, Repository pattern, `IRepository<T>`.
|
|
32
|
+
|
|
33
|
+
## O que fazer
|
|
34
|
+
|
|
35
|
+
1. Despache um `Explore` subagent para varrer o codebase:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Varredura de stack compliance — morph-stack-scan.
|
|
39
|
+
|
|
40
|
+
Leia os seguintes arquivos/pastas e reporte o que encontrar:
|
|
41
|
+
|
|
42
|
+
BACKEND:
|
|
43
|
+
- Todos os .csproj: qual TargetFramework? Quais PackageReferences relevantes?
|
|
44
|
+
- Procure por: Guid.NewGuid() vs Guid.CreateVersion7(), sealed classes, result pattern vs exceptions
|
|
45
|
+
- Estrutura de src/: segue feature-folder (VSA)? Tem Controllers? Tem IRepository<T>?
|
|
46
|
+
- Migrations/: qual ORM? Neon/Postgres ou outro banco?
|
|
47
|
+
- Microsoft.Agents.* ou Microsoft.Extensions.AI nos PackageReferences?
|
|
48
|
+
|
|
49
|
+
FRONTEND:
|
|
50
|
+
- package.json: Next.js? Tailwind? Framer Motion? Shadcn/ui?
|
|
51
|
+
- Estrutura de app/ ou pages/: App Router ou Pages Router?
|
|
52
|
+
|
|
53
|
+
JOBS:
|
|
54
|
+
- Hangfire nos PackageReferences?
|
|
55
|
+
|
|
56
|
+
Para cada item acima, responda: presente/ausente, e se presente qual versão ou padrão.
|
|
57
|
+
Não faça sugestões — apenas reporte o que existe.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
2. Com os resultados da varredura, compare com o stack padrão item por item e classifique cada desvio:
|
|
61
|
+
|
|
62
|
+
| Severidade | Critério |
|
|
63
|
+
|------------|---------|
|
|
64
|
+
| **Bloqueante** | Runtime diferente (.NET 8 ou anterior), ORM diferente (Dapper puro sem EF Core), banco diferente (MySQL, SQL Server) |
|
|
65
|
+
| **Alto** | `Guid.NewGuid()` generalizado, Repository pattern em toda a codebase, exceptions como fluxo de controle |
|
|
66
|
+
| **Médio** | Classes não-sealed, Pages Router em vez de App Router, biblioteca de UI diferente |
|
|
67
|
+
| **Baixo** | Versões de pacotes desatualizadas mas compatíveis |
|
|
68
|
+
|
|
69
|
+
3. Produza `stack-scan.md` em `.morph/features/{feature}/0-proposal/`:
|
|
70
|
+
|
|
71
|
+
```markdown
|
|
72
|
+
# Stack Scan — {feature}
|
|
73
|
+
|
|
74
|
+
## Resultado
|
|
75
|
+
{Em compliance / Desvios detectados}
|
|
76
|
+
|
|
77
|
+
## Stack detectado
|
|
78
|
+
| Camada | Detectado | Esperado | Status |
|
|
79
|
+
|--------|-----------|----------|--------|
|
|
80
|
+
| Runtime | .NET X | .NET 10 | ✓ / ✗ |
|
|
81
|
+
...
|
|
82
|
+
|
|
83
|
+
## Desvios
|
|
84
|
+
### Bloqueantes
|
|
85
|
+
- {desvio}: {onde foi encontrado} — impacto: {o que quebra se não migrar}
|
|
86
|
+
|
|
87
|
+
### Não bloqueantes
|
|
88
|
+
- {desvio}: {onde foi encontrado} — migração: {como resolver}
|
|
89
|
+
|
|
90
|
+
## Recomendação
|
|
91
|
+
{Em compliance — prosseguir para morph-brainstorming}
|
|
92
|
+
{ou: Migração necessária antes de prosseguir — veja migration-plan.md}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
4. Se houver desvios bloqueantes ou altos, produza `migration-plan.md` em `.morph/features/{feature}/0-proposal/` com:
|
|
96
|
+
- Lista de desvios ordenados por severidade
|
|
97
|
+
- Para cada desvio: o que migrar, como migrar, estimativa de esforço, ordem sugerida
|
|
98
|
+
- Pergunta única via `AskUserQuestion`: "Esta migração deve ser incluída na feature atual ou tratada numa feature separada?"
|
|
99
|
+
|
|
100
|
+
5. Se não houver desvios (ou apenas baixos): informe "codebase em compliance com o stack padrão" e prossiga para morph-brainstorming ou morph-plan conforme o contexto.
|
|
101
|
+
|
|
102
|
+
## Output esperado
|
|
103
|
+
- `.morph/features/{feature}/0-proposal/stack-scan.md` — resultado da varredura
|
|
104
|
+
- `.morph/features/{feature}/0-proposal/migration-plan.md` — apenas se houver desvios altos/bloqueantes
|
|
105
|
+
- Decisão documentada: incluir migração nesta feature ou separar
|
|
106
|
+
|
|
107
|
+
## Referências
|
|
108
|
+
- `framework/MORPH.md` — seção 4 (Standards), seção 2 (Fases)
|
|
109
|
+
- `framework/skills/core/morph-brainstorming/SKILL.md` — fluxo greenfield/brownfield
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: morph-standards
|
|
3
|
+
description: Localiza e carrega um standard específico do STANDARDS.json sob demanda
|
|
4
|
+
version: core
|
|
5
|
+
when-to-invoke: quando precisar consultar um standard específico durante a implementação
|
|
6
|
+
user-invokable: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# morph-standards
|
|
10
|
+
|
|
11
|
+
## Objetivo
|
|
12
|
+
Encontrar o standard certo para a situação atual e carregar apenas esse arquivo no contexto.
|
|
13
|
+
Nunca carregue todos os standards — o custo de token não compensa.
|
|
14
|
+
|
|
15
|
+
## Quando invocar
|
|
16
|
+
Quando durante a implementação surgir uma dúvida de padrão arquitetural, de contrato, de qualidade
|
|
17
|
+
ou de teste — e o mandate.md não for suficiente para resolver.
|
|
18
|
+
|
|
19
|
+
## O que fazer
|
|
20
|
+
|
|
21
|
+
1. Abra `framework/standards/STANDARDS.json`.
|
|
22
|
+
|
|
23
|
+
2. Filtre por `category` primeiro (valores típicos: "architecture", "contracts", "testing", "frontend", "backend").
|
|
24
|
+
|
|
25
|
+
3. Dentro da categoria, filtre por `tags` que correspondam ao stack do projeto
|
|
26
|
+
(ex: "dotnet", "nextjs", "blazor", "typescript").
|
|
27
|
+
|
|
28
|
+
4. Se dois standards parecerem relevantes e houver conflito, adote o mais específico ao stack.
|
|
29
|
+
Registre o conflito no `decisions.md` da feature.
|
|
30
|
+
|
|
31
|
+
5. Leia o arquivo `.md` do standard selecionado — o path está no campo `path` do JSON.
|
|
32
|
+
|
|
33
|
+
6. Aplique o standard na tarefa atual.
|
|
34
|
+
|
|
35
|
+
7. Registre no `recap.md`: qual standard foi consultado e como foi aplicado.
|
|
36
|
+
|
|
37
|
+
## Quando não há standard adequado
|
|
38
|
+
Registre no `decisions.md` que nenhum standard cobre o caso.
|
|
39
|
+
Descreva o critério adotado e sinalize para revisão futura.
|
|
40
|
+
Não invente um standard — padrões não documentados são dívida técnica.
|
|
41
|
+
|
|
42
|
+
## Output esperado
|
|
43
|
+
- Standard identificado e lido no contexto
|
|
44
|
+
- Critério de implementação claro para a tarefa atual
|
|
45
|
+
- Entrada no recap.md registrando o standard consultado
|
|
46
|
+
|
|
47
|
+
## Referências
|
|
48
|
+
- `framework/standards/STANDARDS.json` — índice completo com id, name, path, category, tags
|
|
49
|
+
- `framework/MORPH.md` — seção 4 (Como consultar Standards)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Guia de uso — CLAUDE.md.core.template
|
|
2
|
+
|
|
3
|
+
Este template é o ponto de entrada do harness para um projeto morph-spec.
|
|
4
|
+
Preencha cada campo uma vez, no setup. Não modifique a estrutura.
|
|
5
|
+
|
|
6
|
+
## Campos
|
|
7
|
+
|
|
8
|
+
**Nome do Projeto** — nome curto e identificável do sistema.
|
|
9
|
+
|
|
10
|
+
**Domínio** — 1-2 frases. O que o sistema faz, para quem, e qual o principal constraint (ex: multi-tenant, LGPD, tempo real).
|
|
11
|
+
|
|
12
|
+
**Stack** — não alterar. O harness assume o stack padrão. Se o projeto desvia (ex: Blazor em vez de Next.js), edite e documente o desvio aqui.
|
|
13
|
+
|
|
14
|
+
**Harness** — não alterar. Esta seção instrui o modelo a:
|
|
15
|
+
1. Ler `MORPH.md` ao iniciar a sessão
|
|
16
|
+
2. Ler `state.json` para identificar feature ativa
|
|
17
|
+
3. Assumir o papel correspondente sem aguardar instrução
|
|
18
|
+
|
|
19
|
+
**Standards do projeto** — opcional. Apenas se algum standard específico do projeto desvia do default do stack. Default já injetado pelo morph-plan.
|
|
20
|
+
|
|
21
|
+
**Slash commands** — não alterar. Os dois entry points oficiais.
|
|
22
|
+
|
|
23
|
+
## Regras
|
|
24
|
+
|
|
25
|
+
- Mantenha < 60 linhas — conteúdo acima não cabe em contexto comprimido.
|
|
26
|
+
- Não adicione regras condicionais (sem "se dotnet, então...").
|
|
27
|
+
- Não inline conteúdo de standards — aponte por ID, nunca copie.
|
|
28
|
+
- Não adicione campo "Feature ativa" estático — Claude lê state.json.
|
|
29
|
+
- Este arquivo pertence ao projeto. Versione no git.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# [Nome do Projeto]
|
|
2
|
+
|
|
3
|
+
[1-2 frases sobre o domínio do sistema, quem usa, qual o principal constraint.]
|
|
4
|
+
|
|
5
|
+
## Stack
|
|
6
|
+
|
|
7
|
+
VSA + .NET 10 + EF Core + Neon (Postgres) + Microsoft Agent Framework + Next.js (App Router) + Tailwind + Framer Motion + Shadcn + Hangfire (quando necessário).
|
|
8
|
+
|
|
9
|
+
Padrões proibidos por padrão: `Guid.NewGuid()` (use `Guid.CreateVersion7()`), classes não-sealed sem justificativa, exceptions como fluxo de controle, Repository pattern.
|
|
10
|
+
|
|
11
|
+
## Harness
|
|
12
|
+
|
|
13
|
+
morph-spec NLH — leia `.morph/framework/MORPH.md` ao iniciar cada sessão. Em seguida, leia `.morph/state.json` para identificar a feature ativa e a fase atual; assuma o papel correspondente (Orchestrator/Specialist/Evaluator) e continue o trabalho.
|
|
14
|
+
|
|
15
|
+
## Standards do projeto
|
|
16
|
+
|
|
17
|
+
[Liste de 3 a 6 IDs de `.morph/framework/standards/STANDARDS.json` específicos deste projeto, se algum desviar do default. Caso contrário, deixe vazio — os defaults do stack já são aplicados pelo morph-plan.]
|
|
18
|
+
|
|
19
|
+
## Slash commands
|
|
20
|
+
|
|
21
|
+
- `/morph-proposal {feature}` — entendimento de negócio + spec/mandate/tasks (Gates 1 e 2)
|
|
22
|
+
- `/morph-apply {feature}` — execução autônoma das tarefas + review (Gate 3)
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"path": "docs/spec.md",
|
|
51
51
|
"location": "framework",
|
|
52
52
|
"category": "documentation",
|
|
53
|
-
"phase": "
|
|
53
|
+
"phase": "plan",
|
|
54
54
|
"required": true,
|
|
55
55
|
"description": "Detailed technical spec with architecture, data model, API contracts",
|
|
56
56
|
"outputName": "spec.md",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"path": "feature/tasks.md",
|
|
71
71
|
"location": "framework",
|
|
72
72
|
"category": "documentation",
|
|
73
|
-
"phase": "
|
|
73
|
+
"phase": "plan",
|
|
74
74
|
"required": true,
|
|
75
75
|
"description": "Task breakdown with IDs, dependencies, estimates, and checkpoints",
|
|
76
76
|
"outputName": "tasks.md",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"path": "feature/decisions.md",
|
|
90
90
|
"location": "framework",
|
|
91
91
|
"category": "documentation",
|
|
92
|
-
"phase": "
|
|
92
|
+
"phase": "plan",
|
|
93
93
|
"required": true,
|
|
94
94
|
"description": "ADR format for documenting architectural decisions with context, alternatives, consequences",
|
|
95
95
|
"outputName": "decisions.md",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"path": "feature/recap.md",
|
|
110
110
|
"location": "framework",
|
|
111
111
|
"category": "documentation",
|
|
112
|
-
"phase": "
|
|
112
|
+
"phase": "implement",
|
|
113
113
|
"required": true,
|
|
114
114
|
"description": "Post-implementation summary with deliverables, metrics, lessons learned",
|
|
115
115
|
"outputName": "recap.md",
|
|
@@ -31,21 +31,16 @@
|
|
|
31
31
|
"tooltip"
|
|
32
32
|
],
|
|
33
33
|
"phases": {
|
|
34
|
-
"run": ["proposal", "
|
|
35
|
-
"skip": ["uiux", "
|
|
34
|
+
"run": ["proposal", "implement"],
|
|
35
|
+
"skip": ["uiux", "plan", "review", "sync"],
|
|
36
36
|
"skipIfCondition": {},
|
|
37
37
|
"combined": {}
|
|
38
38
|
},
|
|
39
|
-
"pausePoints": [
|
|
40
|
-
{
|
|
41
|
-
"phase": "tasks",
|
|
42
|
-
"question": "Approve task breakdown?"
|
|
43
|
-
}
|
|
44
|
-
],
|
|
39
|
+
"pausePoints": [],
|
|
45
40
|
"outputs": {
|
|
46
|
-
"required": ["proposal.md"
|
|
41
|
+
"required": ["proposal.md"],
|
|
47
42
|
"optional": ["recap.md"],
|
|
48
|
-
"skip": ["spec.md", "contracts.cs", "contracts.ts", "plan.md", "design-system.md", "schema-analysis.md"]
|
|
43
|
+
"skip": ["spec.md", "contracts.cs", "contracts.ts", "plan.md", "tasks.md", "mandate.md", "design-system.md", "schema-analysis.md"]
|
|
49
44
|
},
|
|
50
45
|
"priority": 1
|
|
51
46
|
}
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"integração"
|
|
30
30
|
],
|
|
31
31
|
"phases": {
|
|
32
|
-
"run": ["proposal", "uiux", "
|
|
32
|
+
"run": ["proposal", "uiux", "plan", "implement", "review", "sync"],
|
|
33
33
|
"skip": [],
|
|
34
34
|
"skipIfCondition": {
|
|
35
35
|
"uiux": "!hasUIAgents"
|
|
@@ -46,17 +46,13 @@
|
|
|
46
46
|
"question": "Approve UI/UX designs?",
|
|
47
47
|
"condition": "hasUIAgents"
|
|
48
48
|
},
|
|
49
|
-
{
|
|
50
|
-
"phase": "design",
|
|
51
|
-
"question": "Approve technical specification?"
|
|
52
|
-
},
|
|
53
49
|
{
|
|
54
50
|
"phase": "plan",
|
|
55
|
-
"question": "Approve
|
|
51
|
+
"question": "Approve spec, plan, and task breakdown?"
|
|
56
52
|
},
|
|
57
53
|
{
|
|
58
|
-
"phase": "
|
|
59
|
-
"question": "Approve
|
|
54
|
+
"phase": "review",
|
|
55
|
+
"question": "Approve for merge/PR?"
|
|
60
56
|
}
|
|
61
57
|
],
|
|
62
58
|
"outputs": {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "quick",
|
|
3
|
+
"name": "Quick (Single-Shot)",
|
|
4
|
+
"description": "Single-shot for trivial changes — skips all ceremony. Typo fixes, config changes, small bug fixes.",
|
|
5
|
+
"priority": 0,
|
|
6
|
+
"criteria": {
|
|
7
|
+
"maxFiles": 2,
|
|
8
|
+
"maxLines": 20,
|
|
9
|
+
"maxComponents": 0,
|
|
10
|
+
"noInfrastructure": true
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"fix", "typo", "rename", "update", "change", "add", "remove",
|
|
14
|
+
"bump", "config", "label", "text", "string", "color", "css",
|
|
15
|
+
"toggle", "flag", "icon", "badge", "tooltip", "placeholder"
|
|
16
|
+
],
|
|
17
|
+
"phases": {
|
|
18
|
+
"run": ["proposal", "implement"],
|
|
19
|
+
"skip": ["uiux", "plan", "review", "sync"],
|
|
20
|
+
"skipIfCondition": {},
|
|
21
|
+
"combined": {}
|
|
22
|
+
},
|
|
23
|
+
"pausePoints": [],
|
|
24
|
+
"outputs": {
|
|
25
|
+
"required": ["proposal.md"],
|
|
26
|
+
"optional": [],
|
|
27
|
+
"skip": ["spec.md", "contracts.cs", "contracts.ts", "plan.md", "tasks.md", "mandate.md", "design-system.md", "schema-analysis.md", "review-report.md"]
|
|
28
|
+
},
|
|
29
|
+
"gates": {
|
|
30
|
+
"autoApproveAll": true
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -1,64 +1,57 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "standard",
|
|
3
|
-
"name": "Standard (Medium Complexity)",
|
|
4
|
-
"description": "Medium complexity features - 3-10 files, tactical decisions",
|
|
5
|
-
"criteria": {
|
|
6
|
-
"minFiles": 3,
|
|
7
|
-
"maxFiles": 10,
|
|
8
|
-
"minLines": 50,
|
|
9
|
-
"maxLines": 500,
|
|
10
|
-
"maxComponents": 2,
|
|
11
|
-
"noInfrastructure": true,
|
|
12
|
-
"tacticalDecisions": true
|
|
13
|
-
},
|
|
14
|
-
"keywords": [
|
|
15
|
-
"paginação",
|
|
16
|
-
"pagination",
|
|
17
|
-
"paginate",
|
|
18
|
-
"filtro",
|
|
19
|
-
"filter",
|
|
20
|
-
"filtering",
|
|
21
|
-
"refatorar",
|
|
22
|
-
"refactor",
|
|
23
|
-
"performance",
|
|
24
|
-
"exportar",
|
|
25
|
-
"export",
|
|
26
|
-
"optimize",
|
|
27
|
-
"sorting",
|
|
28
|
-
"search",
|
|
29
|
-
"busca"
|
|
30
|
-
],
|
|
31
|
-
"phases": {
|
|
32
|
-
"run": ["proposal", "
|
|
33
|
-
"skip": [],
|
|
34
|
-
"skipIfCondition": {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"outputs": {
|
|
59
|
-
"required": ["proposal.md", "spec.md", "plan.md", "recap.md"],
|
|
60
|
-
"optional": ["decisions.md"],
|
|
61
|
-
"skip": ["contracts.cs"]
|
|
62
|
-
},
|
|
63
|
-
"priority": 2
|
|
64
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"id": "standard",
|
|
3
|
+
"name": "Standard (Medium Complexity)",
|
|
4
|
+
"description": "Medium complexity features - 3-10 files, tactical decisions",
|
|
5
|
+
"criteria": {
|
|
6
|
+
"minFiles": 3,
|
|
7
|
+
"maxFiles": 10,
|
|
8
|
+
"minLines": 50,
|
|
9
|
+
"maxLines": 500,
|
|
10
|
+
"maxComponents": 2,
|
|
11
|
+
"noInfrastructure": true,
|
|
12
|
+
"tacticalDecisions": true
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"paginação",
|
|
16
|
+
"pagination",
|
|
17
|
+
"paginate",
|
|
18
|
+
"filtro",
|
|
19
|
+
"filter",
|
|
20
|
+
"filtering",
|
|
21
|
+
"refatorar",
|
|
22
|
+
"refactor",
|
|
23
|
+
"performance",
|
|
24
|
+
"exportar",
|
|
25
|
+
"export",
|
|
26
|
+
"optimize",
|
|
27
|
+
"sorting",
|
|
28
|
+
"search",
|
|
29
|
+
"busca"
|
|
30
|
+
],
|
|
31
|
+
"phases": {
|
|
32
|
+
"run": ["proposal", "plan", "implement", "review", "sync"],
|
|
33
|
+
"skip": ["uiux"],
|
|
34
|
+
"skipIfCondition": {},
|
|
35
|
+
"combined": {}
|
|
36
|
+
},
|
|
37
|
+
"pausePoints": [
|
|
38
|
+
{
|
|
39
|
+
"phase": "proposal",
|
|
40
|
+
"question": "Approve feature proposal?"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"phase": "plan",
|
|
44
|
+
"question": "Approve plan and task breakdown?"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"phase": "review",
|
|
48
|
+
"question": "Approve for merge/PR?"
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"outputs": {
|
|
52
|
+
"required": ["proposal.md", "spec.md", "plan.md", "recap.md"],
|
|
53
|
+
"optional": ["decisions.md"],
|
|
54
|
+
"skip": ["contracts.cs"]
|
|
55
|
+
},
|
|
56
|
+
"priority": 2
|
|
57
|
+
}
|
package/package.json
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polymorphism-tech/morph-spec",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "MORPH-SPEC:
|
|
3
|
+
"version": "5.0.1",
|
|
4
|
+
"description": "MORPH-SPEC: NLH (Natural Language Harness) for spec-driven development with Claude Code",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
|
7
7
|
"claude",
|
|
8
8
|
"ai-coding",
|
|
9
9
|
"ai-first",
|
|
10
10
|
"spec-driven",
|
|
11
|
+
"nlh",
|
|
12
|
+
"natural-language-harness",
|
|
13
|
+
"autonomy",
|
|
11
14
|
"dotnet",
|
|
12
15
|
"dotnet10",
|
|
13
16
|
"nextjs",
|
|
14
|
-
"agent-framework",
|
|
15
17
|
"vsa",
|
|
18
|
+
"vertical-slice",
|
|
16
19
|
"framework",
|
|
17
|
-
"developer-tools",
|
|
18
20
|
"morph",
|
|
19
|
-
"polymorphism"
|
|
20
|
-
"micro-saas"
|
|
21
|
+
"polymorphism"
|
|
21
22
|
],
|
|
22
23
|
"main": "src/index.js",
|
|
23
24
|
"bin": {
|