@polymorphism-tech/morph-spec 4.9.0 → 4.10.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.
Files changed (124) hide show
  1. package/README.md +2 -2
  2. package/bin/morph-spec.js +30 -0
  3. package/bin/task-manager.js +34 -22
  4. package/claude-plugin.json +1 -1
  5. package/docs/CHEATSHEET.md +1 -1
  6. package/docs/QUICKSTART.md +1 -1
  7. package/framework/CLAUDE.md +99 -98
  8. package/framework/agents.json +37 -7
  9. package/framework/commands/commit.md +166 -0
  10. package/framework/commands/morph-apply.md +13 -2
  11. package/framework/commands/morph-archive.md +8 -2
  12. package/framework/commands/morph-infra.md +6 -0
  13. package/framework/commands/morph-preflight.md +6 -0
  14. package/framework/commands/morph-proposal.md +56 -7
  15. package/framework/commands/morph-status.md +6 -0
  16. package/framework/commands/morph-troubleshoot.md +6 -0
  17. package/framework/hooks/claude-code/notification/approval-reminder.js +3 -2
  18. package/framework/hooks/claude-code/post-tool-use/dispatch.js +154 -31
  19. package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +7 -84
  20. package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +8 -17
  21. package/framework/hooks/claude-code/pre-compact/save-morph-context.js +16 -3
  22. package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +4 -3
  23. package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +3 -2
  24. package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +60 -0
  25. package/framework/hooks/claude-code/session-start/inject-morph-context.js +55 -2
  26. package/framework/hooks/claude-code/session-start/post-compact-restore.js +41 -0
  27. package/framework/hooks/claude-code/stop/validate-completion.js +2 -15
  28. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +23 -5
  29. package/framework/hooks/shared/compact-restore.js +100 -0
  30. package/framework/hooks/shared/dispatch-helpers.js +116 -0
  31. package/framework/hooks/shared/phase-utils.js +9 -5
  32. package/framework/hooks/shared/state-reader.js +27 -3
  33. package/framework/phases.json +30 -7
  34. package/framework/rules/morph-workflow.md +88 -86
  35. package/framework/skills/level-0-meta/mcp-registry.json +86 -51
  36. package/framework/skills/level-0-meta/{brainstorming → morph-brainstorming}/SKILL.md +13 -16
  37. package/framework/skills/level-0-meta/{code-review → morph-code-review}/SKILL.md +1 -1
  38. package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/SKILL.md +2 -2
  39. package/framework/skills/level-0-meta/{frontend-review → morph-frontend-review}/SKILL.md +5 -5
  40. package/framework/skills/level-0-meta/morph-init/SKILL.md +72 -7
  41. package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/SKILL.md +9 -9
  42. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +1 -1
  43. package/framework/skills/level-0-meta/{terminal-title → morph-terminal-title}/SKILL.md +1 -1
  44. package/framework/skills/level-0-meta/{tool-usage-guide → morph-tool-usage-guide}/SKILL.md +2 -3
  45. package/framework/skills/level-0-meta/{tool-usage-guide → morph-tool-usage-guide}/references/tools-per-phase.md +1 -2
  46. package/framework/skills/level-0-meta/{verification-before-completion → morph-verification-before-completion}/SKILL.md +1 -1
  47. package/framework/skills/level-0-meta/{verification-before-completion → morph-verification-before-completion}/scripts/check-phase-outputs.mjs +2 -2
  48. package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +238 -0
  49. package/framework/skills/level-1-workflows/{phase-codebase-analysis → morph-phase-codebase-analysis}/SKILL.md +251 -251
  50. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +507 -0
  51. package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/SKILL.md +590 -491
  52. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +50 -0
  53. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +45 -0
  54. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +47 -0
  55. package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +254 -0
  56. package/framework/skills/level-1-workflows/{phase-setup → morph-phase-setup}/SKILL.md +237 -194
  57. package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/SKILL.md +307 -270
  58. package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/scripts/validate-tasks.mjs +3 -3
  59. package/framework/skills/level-1-workflows/{phase-uiux → morph-phase-uiux}/SKILL.md +320 -285
  60. package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +97 -0
  61. package/framework/standards/integration/mcp/mcp-tools.md +25 -7
  62. package/framework/templates/docs/onboarding.md +2 -2
  63. package/package.json +1 -2
  64. package/src/commands/agents/dispatch-agents.js +50 -3
  65. package/src/commands/mcp/mcp-setup.js +39 -2
  66. package/src/commands/phase/phase-reset.js +74 -0
  67. package/src/commands/project/doctor.js +19 -5
  68. package/src/commands/scope/escalate.js +215 -0
  69. package/src/commands/state/advance-phase.js +27 -53
  70. package/src/commands/state/state.js +1 -1
  71. package/src/commands/task/expand.js +100 -0
  72. package/src/core/paths/output-schema.js +4 -3
  73. package/src/core/state/phase-state-machine.js +7 -4
  74. package/src/core/state/state-manager.js +4 -3
  75. package/src/lib/detectors/claude-config-detector.js +93 -347
  76. package/src/lib/detectors/design-system-detector.js +189 -189
  77. package/src/lib/detectors/index.js +155 -57
  78. package/src/lib/generators/context-generator.js +2 -2
  79. package/src/lib/installers/mcp-installer.js +37 -5
  80. package/src/lib/phase-chain/phase-validator.js +22 -16
  81. package/src/lib/scope/impact-analyzer.js +106 -0
  82. package/src/lib/tasks/task-parser.js +1 -1
  83. package/src/lib/validators/shared/emit-validator-dispatch.js +64 -0
  84. package/src/scripts/setup-infra.js +15 -0
  85. package/src/utils/agents-installer.js +32 -12
  86. package/src/utils/file-copier.js +0 -1
  87. package/src/utils/hooks-installer.js +15 -1
  88. package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +0 -216
  89. package/framework/skills/level-1-workflows/phase-design/SKILL.md +0 -383
  90. package/src/commands/project/index.js +0 -8
  91. package/src/core/index.js +0 -10
  92. package/src/core/state/index.js +0 -8
  93. package/src/core/templates/index.js +0 -9
  94. package/src/core/templates/template-data-sources.js +0 -325
  95. package/src/core/workflows/index.js +0 -7
  96. package/src/lib/detectors/config-detector.js +0 -223
  97. package/src/lib/detectors/standards-generator.js +0 -335
  98. package/src/lib/detectors/structure-detector.js +0 -275
  99. package/src/lib/monitor/agent-resolver.js +0 -144
  100. package/src/lib/monitor/renderer.js +0 -230
  101. package/src/lib/orchestration/index.js +0 -7
  102. package/src/lib/orchestration/team-orchestrator.js +0 -404
  103. package/src/sanitizer/context-sanitizer.js +0 -221
  104. package/src/sanitizer/patterns.js +0 -163
  105. package/src/writer/file-writer.js +0 -86
  106. /package/framework/skills/level-0-meta/{brainstorming → morph-brainstorming}/references/proposal-example.md +0 -0
  107. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/references/review-example.md +0 -0
  108. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/references/review-guidelines.md +0 -0
  109. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/scripts/scan-csharp.mjs +0 -0
  110. /package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/references/review-example-nextjs.md +0 -0
  111. /package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/scripts/scan-nextjs.mjs +0 -0
  112. /package/framework/skills/level-0-meta/{frontend-review → morph-frontend-review}/scripts/scan-accessibility.mjs +0 -0
  113. /package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/scripts/detect-dev-server.mjs +0 -0
  114. /package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/scripts/detect-stack.mjs +0 -0
  115. /package/framework/skills/level-0-meta/{simulation-checklist → morph-simulation-checklist}/SKILL.md +0 -0
  116. /package/framework/skills/level-0-meta/{terminal-title → morph-terminal-title}/scripts/set_title.sh +0 -0
  117. /package/framework/skills/level-1-workflows/{phase-clarify → morph-phase-clarify}/references/clarifications-example.md +0 -0
  118. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/architecture-analysis-guide.md +0 -0
  119. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/spec-authoring-guide.md +0 -0
  120. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/spec-example.md +0 -0
  121. /package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/references/recap-example.md +0 -0
  122. /package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/references/vsa-implementation-guide.md +0 -0
  123. /package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/references/task-planning-patterns.md +0 -0
  124. /package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/references/tasks-example.md +0 -0
@@ -0,0 +1,238 @@
1
+ ---
2
+ name: morph:phase-clarify
3
+ description: MORPH-SPEC Phase 3 (Clarify). Iterative clarification loop driven by a satisfaction score (0-100). Generates targeted questions per round, always presents "Encerrar Clarify" as exit option, and stops when score ≥ 85 or user exits. Use after design approval to eliminate spec ambiguities before task breakdown begins.
4
+ argument-hint: "[feature-name]"
5
+ user-invocable: false
6
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
7
+ cliVersion: "4.10.0"
8
+ ---
9
+
10
+ # MORPH Clarify - FASE 3
11
+
12
+ > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
13
+
14
+ Elimine ambiguidades da especificação através de um loop iterativo de perguntas até que o spec tenha qualidade suficiente para gerar tasks.
15
+
16
+ ## Pré-requisitos
17
+
18
+ - [ ] FASE 2 (Design) concluída
19
+ - [ ] `spec.md` aprovado pelo usuário
20
+ - [ ] `contracts.cs` definidos
21
+
22
+ ## Ferramentas Recomendadas
23
+
24
+ > **Ref:** `framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md` para guia completo.
25
+ > **Example:** `references/clarifications-example.md` — filled-in clarifications.md showing expected Q&A format.
26
+
27
+ | Ação | Ferramenta |
28
+ |------|------------|
29
+ | Ler spec.md + contracts.cs | **Read** |
30
+ | Verificar viabilidade técnica | **Context7 MCP** `query_docs()` |
31
+ | Verificar issues/limitações externas | **GitHub MCP** `search_issues()` |
32
+ | Atualizar spec com clarificações | **Edit** spec.md |
33
+ | Criar clarifications.md | **Write** |
34
+ | Atualizar state | **Bash** `npx morph-spec state mark-output $ARGUMENTS clarifications` |
35
+
36
+ ---
37
+
38
+ ## Sistema de Pontuação de Satisfação
39
+
40
+ Antes de cada round, calcule o **Satisfaction Score (0–100)** avaliando o spec atual:
41
+
42
+ | Dimensão | Pts | Critério de máxima pontuação |
43
+ |----------|-----|------------------------------|
44
+ | **Completude funcional** | 25 | Todos os requisitos têm critérios de aceitação mensuráveis (sem "deve", "pode", "em geral") |
45
+ | **Cobertura de falhas** | 20 | Todos os caminhos de erro têm comportamento definido (invalid input, not found, timeout, unauthorized) |
46
+ | **Edge cases** | 20 | Limites, estados concorrentes, inputs vazios/extremos documentados |
47
+ | **Clareza definitória** | 20 | Nenhum termo crítico sem definição, nenhum "TBD", nenhum "a definir" |
48
+ | **Contratos de integração** | 15 | Dependências externas têm formato de payload, erros e retry policy definidos |
49
+
50
+ **Thresholds:**
51
+
52
+ | Score | Ação |
53
+ |-------|------|
54
+ | ≥ 85 | Claude está satisfeito. Apresentar resultado e oferecer "Encerrar" como opção principal |
55
+ | 70–84 | Continuar. Focar perguntas nas dimensões com menor pontuação |
56
+ | < 70 | Continuar. Perguntas amplas cobrindo as maiores lacunas |
57
+
58
+ > O score sobe conforme as respostas são incorporadas. Não há número máximo fixo de rounds — o loop para quando o score ≥ 85 **ou** quando o usuário escolhe encerrar.
59
+
60
+ ---
61
+
62
+ ## Workflow
63
+
64
+ ### Inicialização
65
+
66
+ **PASSO 0 (ANTES de qualquer escrita) — Garantir fase clarify:**
67
+
68
+ ```bash
69
+ npx morph-spec state get $ARGUMENTS
70
+ ```
71
+
72
+ Verifique o campo `"phase"` no output:
73
+
74
+ **Se `"phase": "clarify"`** → ✅ fase correta, prossiga.
75
+
76
+ **Se `"phase": "design"`** → execute em sequência:
77
+ 1. `npx morph-spec approve $ARGUMENTS design`
78
+ 2. `npx morph-spec phase advance $ARGUMENTS` (→ clarify)
79
+
80
+ **Qualquer outro valor** → ⛔ não prossiga — estado inconsistente, reporte ao usuário.
81
+
82
+ > **Regra:** Nunca escreva `clarifications.md` ou atualize `spec.md` enquanto a fase não for `clarify`.
83
+
84
+ ---
85
+
86
+ Leia os arquivos base:
87
+ - `.morph/features/$ARGUMENTS/1-design/spec.md`
88
+ - `.morph/features/$ARGUMENTS/1-design/contracts.cs`
89
+ - `.morph/features/$ARGUMENTS/1-design/schema-analysis.md` (se existir)
90
+
91
+ Calcule o score inicial. Registre mentalmente as respostas acumuladas de rounds anteriores para não repetir perguntas já respondidas.
92
+
93
+ ---
94
+
95
+ ### Loop Principal
96
+
97
+ **Repita até: score ≥ 85 OU usuário escolhe encerrar.**
98
+
99
+ #### A. Calcular Score do Round Atual
100
+
101
+ Pontue cada dimensão com base no spec + respostas acumuladas. Anote quais dimensões estão mais fracas — elas guiam as perguntas deste round.
102
+
103
+ #### B. Identificar Questões Novas
104
+
105
+ Analise apenas o que **ainda não foi respondido**. Categorize por dimensão:
106
+
107
+ | Categoria | Exemplos de questões |
108
+ |-----------|----------------------|
109
+ | **Validação** | Limites de campo, formatos aceitos, regras de negócio |
110
+ | **Comportamento** | O que acontece quando X falha? Estado vazio? Loading? |
111
+ | **Prioridade** | Must-have vs nice-to-have? MVP vs v2? |
112
+ | **Integração** | Webhook vs polling? Retry policy? Timeout? |
113
+ | **Performance** | Volume esperado? SLA de resposta? |
114
+ | **UX** | Mensagem de erro exibida ao usuário? Feedback visual? |
115
+
116
+ #### C. Apresentar Perguntas via `AskUserQuestion`
117
+
118
+ **Regras obrigatórias:**
119
+
120
+ 1. Use `AskUserQuestion` — **NUNCA liste perguntas como texto simples**
121
+ 2. Máximo **4 perguntas por chamada** (incluindo a opção de encerrar)
122
+ 3. Se houver mais de 3 questões novas, faça chamadas sequenciais — mas a **opção de encerrar aparece SEMPRE na última chamada de cada round**
123
+ 4. **SEMPRE inclua a seguinte pergunta como última do último batch de cada round:**
124
+
125
+ ```json
126
+ {
127
+ "header": "Encerrar?",
128
+ "question": "Deseja encerrar a fase Clarify agora ou continuar refinando o spec?",
129
+ "multiSelect": false,
130
+ "options": [
131
+ {
132
+ "label": "Continuar refinando",
133
+ "description": "Claude identificou mais questões abertas neste round"
134
+ },
135
+ {
136
+ "label": "Encerrar Clarify",
137
+ "description": "Prosseguir para fase Tasks com o spec no estado atual"
138
+ }
139
+ ]
140
+ }
141
+ ```
142
+
143
+ > Se score ≥ 85, ajuste o label da primeira opção para: `"Continuar (opcional)"` com description: `"Score ${score}/100 — spec está satisfatório, mas você pode refinar mais"`
144
+
145
+ #### D. Aguardar e Incorporar Respostas
146
+
147
+ **Não avance antes de receber todas as respostas.**
148
+
149
+ Após receber:
150
+ 1. Verifique se a resposta é consistente com `contracts.cs` e `schema-analysis.md`
151
+ 2. Se alguma resposta for ambígua ou contraditória → peça esclarecimento antes de atualizar
152
+ 3. Atualize `spec.md` com:
153
+ - Seção `## Clarifications (FASE 3)` com Q&A estruturado
154
+ - Atualização das seções funcionais afetadas
155
+ - Novos edge cases em `## Edge Cases`
156
+
157
+ #### E. Verificar Condição de Saída
158
+
159
+ - Usuário escolheu **"Encerrar Clarify"** → sair do loop
160
+ - Score ≥ 85 E nenhuma questão nova identificada → sair do loop
161
+ - Caso contrário → voltar para A
162
+
163
+ ---
164
+
165
+ ### Pós-Loop: Gerar Outputs
166
+
167
+ **Passo 1: Criar `clarifications.md`**
168
+
169
+ Escreva em `.morph/features/$ARGUMENTS/1-design/clarifications.md`:
170
+
171
+ ```markdown
172
+ # Clarifications — {Feature Name}
173
+
174
+ **Fase:** CLARIFY (Fase 3)
175
+ **Rounds realizados:** {N}
176
+ **Score final:** {score}/100
177
+ **Status:** Resolvido — incorporado em spec.md
178
+
179
+ ---
180
+
181
+ ## Questions & Answers
182
+
183
+ ### Q{N}: {Título}
184
+ **Question:** {pergunta}
185
+ **Answer:** {resposta do usuário}
186
+ **Spec Updates:** {quais seções foram atualizadas}
187
+ **Priority:** High/Medium/Low
188
+ **Resolved:** ✅ Yes
189
+
190
+ ---
191
+
192
+ ## Edge Cases
193
+
194
+ ### EC{N}: {Nome}
195
+ **Scenario:** {quando acontece}
196
+ **Expected Behavior:** {como o sistema reage}
197
+ **Implementation Notes:** {dicas}
198
+
199
+ ---
200
+
201
+ ## Summary
202
+
203
+ | | Count |
204
+ |---|---|
205
+ | Questions Answered | {N} |
206
+ | Edge Cases Documented | {N} |
207
+ | Spec Sections Updated | {N} |
208
+ | Score Final | {score}/100 |
209
+ ```
210
+
211
+ **Passo 2: Atualizar State**
212
+
213
+ ```bash
214
+ npx morph-spec state mark-output $ARGUMENTS clarifications
215
+ ```
216
+
217
+ ---
218
+
219
+ ## Outputs Gerados/Atualizados
220
+
221
+ - `.morph/features/$ARGUMENTS/1-design/spec.md` — Seção "Clarifications", edge cases, requisitos refinados
222
+ - `.morph/features/$ARGUMENTS/1-design/clarifications.md` — Q&A estruturado com score final
223
+
224
+ ## Critérios de Avanço
225
+
226
+ - [x] Score de satisfação ≥ 85 OU usuário optou por encerrar
227
+ - [x] Todas as respostas são consistentes com `contracts.cs`
228
+ - [x] `spec.md` atualizado com clarificações e edge cases
229
+ - [x] `clarifications.md` criado com Q&A e score final
230
+ - [x] State atualizado (`mark-output clarifications`)
231
+
232
+ ---
233
+
234
+ ```bash
235
+ npx morph-spec phase advance $ARGUMENTS
236
+ ```
237
+
238
+ Continuar automaticamente para FASE 4 (Plan) após clarifications.md gerado.