@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
@@ -1,286 +1,321 @@
1
- ---
2
- name: morph:phase-uiux
3
- description: MORPH-SPEC Phase 1.5 (UI/UX). Creates design-system.md, mockups.md, components.md, and flows.md using Figma/Playwright/Context7 MCPs. Use after setup for features with frontend UI components, pages, dashboards, forms, wizards, or visual interactions requiring design documentation.
4
- argument-hint: "[feature-name]"
5
- user-invocable: false
6
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
7
- cliVersion: "4.9.0"
8
- ---
9
-
10
- # MORPH UI/UX Design - FASE 1.5
11
-
12
- > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
13
-
14
- Fase condicional para features com front-end. Coleta requisitos de UI/UX, gera wireframes, specs de componentes e fluxos de usuário.
15
-
16
- ## Pré-requisitos
17
-
18
- - [ ] FASE 1 (Setup) concluída
19
- - [ ] Feature tem keywords de UI detectadas (blazor, ui, component, page, dashboard, wizard, form, chart)
20
- - [ ] `uiux-designer` agent ativado
21
-
22
- ## Ferramentas Recomendadas
23
-
24
- > **Ref:** `framework/skills/level-0-meta/tool-usage-guide/SKILL.md` para guia completo.
25
- > **Ref:** `framework/standards/integration/mcp/mcp-tools.md` para referência MCP.
26
-
27
- | Ação | Ferramenta | Alternativa |
28
- |------|------------|-------------|
29
- | Verificar design system existente | **Read** `.morph/context/design-system.md` | — |
30
- | Ler screenshots do usuário | **Read** (arquivo de imagem) | — |
31
- | Buscar variáveis CSS existentes | **Grep** `--root:` em `*.css,*.scss` | — |
32
- | Encontrar componentes existentes | **Glob** `**/Components/**/*.razor` ou `**/components/**/*.tsx` | — |
33
- | Extrair design tokens do Figma | **Figma MCP** `get_file({ fileKey })` | Read CSS/SCSS variables |
34
- | Documentação de componentes UI | **Context7 MCP** `query_docs({ libraryId, query })` | **WebSearch** + **WebFetch** |
35
- | Preview de página existente | **Playwright MCP** `browser_navigate()` + `browser_take_screenshot()` | **WebFetch** URL |
36
- | Inspecionar estrutura da página | **Playwright MCP** `browser_snapshot()` | **WebFetch** + parse manual |
37
- | Testar layout responsivo | **Playwright MCP** `browser_resize()` + `browser_take_screenshot()` | Manual testing |
38
- | Referências de design externas | **WebSearch** + **WebFetch** | — |
39
- | Renderizar templates UI | **Bash** `npx morph-spec template render docs/ui-mockups ...` | — |
40
- | Gerar design system de CSS existente | **Bash** `npx morph-spec generate design-system --scan` | — |
41
- | Atualizar state | **Bash** `npx morph-spec state mark-output ...` | — |
42
-
43
- **MCPs desta fase:** Figma (design tokens), Playwright (preview, inspeção, responsividade), Context7 (docs de componentes).
44
-
45
- **Anti-padrões:**
46
- - ❌ WebSearch para docs MudBlazor (use Context7 MCP mais preciso)
47
- - ❌ Task agent para ler um screenshot (use Read direto na imagem)
48
- - ❌ Adivinhar props de componentes (use Context7 para API real)
49
-
50
- ---
51
-
52
- ## Workflow
53
-
54
- ### Passo 0: Verificar Design System Existe
55
-
56
- **CRITICAL:** Antes de iniciar a FASE UI/UX, verifique se um design system existe:
57
-
58
- ```
59
- Read: .morph/context/design-system.md
60
- ```
61
-
62
- Se o arquivo não existir (design system não encontrado):
63
-
64
- 1. **Opção A - Scaffold automático:**
65
- - O sistema criará automaticamente um design system ao avançar para implementação
66
- - Você pode gerar manualmente agora: `npx morph-spec generate design-system`
67
-
68
- 2. **Opção B - Criar manualmente:**
69
- - Crie `.morph/context/design-system.md` (project-level, compartilhado)
70
- - Ou `.morph/features/$ARGUMENTS/2-ui/design-system.md` (feature-specific)
71
-
72
- 3. **Opção C - Scan existing CSS:**
73
- - Se o projeto já tem CSS com variáveis: `npx morph-spec generate design-system --scan`
74
-
75
- **⚠️ IMPORTANTE:**
76
- - Design system é **obrigatório** para features UI
77
- - Gate automático bloqueará implementação (FASE 5) se design system não existir
78
- - Melhor criar agora para garantir consistência visual
79
-
80
- ### Passo 1: Detectar Se Fase É Necessária
81
-
82
- Verifique se agentes ativos incluem `uiux-designer`:
83
-
84
- ```bash
85
- npx morph-spec state get $ARGUMENTS
86
- ```
87
-
88
- Se `uiux-designer` NÃO estiver nos `activeAgents`, pule esta fase e continue para FASE 2 (Design).
89
-
90
- ### Passo 1.5: Design Thinking Direção Estética
91
-
92
- > **Ref:** `framework/standards/frontend/design-system/aesthetic-direction.md`
93
-
94
- **ANTES de coletar requisitos técnicos**, definir a direção visual com 4 perguntas:
95
-
96
- 1. **Purpose**: Que problema resolve? Quem usa? Qual o contexto profissional?
97
- 2. **Tone**: Qual direção? (Minimal Refined / Editorial / Soft Professional / Industrial / Modern Luxury)
98
- 3. **Differentiation**: Qual o 1 elemento memorável desta interface?
99
- 4. **Constraints**: Framework, performance budget, brand guidelines existentes
100
-
101
- **CRITICAL:** Commitar à direção ANTES das specs técnicas. Documentar em `ui-design-system.md`
102
- na seção `## Aesthetic Direction` (template disponível no standard acima).
103
-
104
- **Anti-padrões a evitar:**
105
- - ❌ Gradiente roxo em fundo branco (AI cliché)
106
- - Inter/Roboto como fonte de display
107
- - ❌ Grid 3-colunas de cards sem diferencial visual
108
- - Paleta de 5 cores de peso igual (sem dominant + accent)
109
-
110
- ### Passo 2: Coletar Input do Usuário
111
-
112
- **SEMPRE perguntar ao usuário PRIMEIRO:**
113
-
114
- 1. **Layout e estilo**:
115
- - Você tem alguma ideia de layout em mente?
116
- - Tem alguma referência visual? (sites, apps, screenshots)
117
- - Como imagina o fluxo do usuário?
118
-
119
- 2. **Componentes e interações**:
120
- - Quais os principais componentes desta tela/página?
121
- - Quais estados precisam ser considerados? (loading, error, empty, success)
122
-
123
- 3. **Imagens de referência**:
124
- - Tem imagens de exemplo que eu possa analisar?
125
- - Se SIM: use Read tool para ler screenshots e extrair padrões
126
-
127
- ### Passo 3: Decidir Biblioteca UI
128
-
129
- Escolha entre **Fluent UI Blazor** (recomendado para AI-first) ou **MudBlazor** (componentes complexos):
130
-
131
- **Critérios:**
132
- - Fluent UI: Para dashboards, forms simples, AI components, Microsoft design language
133
- - MudBlazor: Para data grids avançadas, charts complexos, material design
134
-
135
- **Documente a decisão em `decisions.md`.**
136
-
137
- ### Passo 4: Gerar Deliverables
138
-
139
- Crie os seguintes arquivos em `.morph/features/$ARGUMENTS/`:
140
-
141
- > **Use templates:** Utilize `npx morph-spec template render` para gerar os arquivos a partir dos templates em `.morph/framework/templates/docs/`. Templates disponíveis: `ui-design-system`, `ui-mockups`, `ui-components`, `ui-flows`.
142
-
143
- #### 4.1. `ui-design-system.md`
144
-
145
- **Se design system project-level existe (`.morph/context/design-system.md`):**
146
- - Referencie-o nos specs: "Uses project design system at .morph/context/design-system.md"
147
- - Crie `ui-design-system.md` apenas se houver cores/componentes **específicos** da feature
148
-
149
- **Se não existe:**
150
- - Crie design system feature-level completo com:
151
- - **Seção `## Aesthetic Direction`** (usar template de `aesthetic-direction.md`):
152
- direção, font pair, color philosophy, motion intent, composition approach
153
- - Paleta de cores (primary, secondary, accent, semantic)
154
- - Tipografia (heading scales, body text, code)
155
- - Spacing e layout (grid, margins, paddings)
156
- - Componentes base (buttons, inputs, cards)
157
-
158
- #### 4.2. `ui-mockups.md`
159
-
160
- Wireframes ASCII + descrições:
161
- - Layout geral de cada tela/página
162
- - Posicionamento de componentes
163
- - Responsividade (desktop, tablet, mobile)
164
- - Estados (loading, error, empty, success)
165
-
166
- #### 4.3. `ui-components.md`
167
-
168
- Specs técnicas de componentes Fluent UI/MudBlazor:
169
- - Componente a usar (FluentButton, MudDataGrid, etc.)
170
- - Props e configurações
171
- - Eventos e bindings
172
- - Validações e estados
173
-
174
- #### 4.4. `ui-flows.md`
175
-
176
- Fluxos de usuário completos:
177
- - User stories
178
- - Diagramas de fluxo (texto/ASCII)
179
- - Edge cases (o que acontece se...?)
180
- - Validações e feedback
181
-
182
- ### CHECKPOINT: Validar Deliverables UI
183
-
184
- **⏸️ PAUSE - Antes de prosseguir para acessibilidade:**
185
-
186
- - [ ] Direção estética definida e documentada em `ui-design-system.md`?
187
- - [ ] Font pair especificado (não apenas Inter/Roboto para display)?
188
- - [ ] Color philosophy: dominant + accent + rationale documentados?
189
- - [ ] Design system definido (project-level ou feature-level)?
190
- - [ ] Wireframes cobrem todos os estados (loading, error, empty, success)?
191
- - [ ] Componentes especificados com props reais da biblioteca UI escolhida?
192
- - [ ] Fluxos de usuário completos com edge cases?
193
- - [ ] Biblioteca UI escolhida documentada como ADR em `decisions.md`?
194
-
195
- **❌ Se alguma checkbox NÃO estiver marcada:**
196
- Voltar e completar o deliverable faltante
197
-
198
- **✅ Se TODAS as checkboxes estiverem marcadas:**
199
- → Prosseguir para validação de acessibilidade
200
-
201
- ---
202
-
203
- ### Passo 5: Validar Acessibilidade e Responsividade
204
-
205
- Documente nos arquivos UI:
206
- - **WCAG 2.1 Level AA** compliance
207
- - Contraste de cores adequado
208
- - Labels acessíveis para screen readers
209
- - Navegação por teclado
210
- - **Responsive breakpoints**
211
- - Desktop (>1200px)
212
- - Tablet (768px - 1199px)
213
- - Mobile (<768px)
214
-
215
- ### Passo 6: Atualizar State
216
-
217
- ```bash
218
- npx morph-spec state mark-output $ARGUMENTS ui-design-system
219
- npx morph-spec state mark-output $ARGUMENTS ui-mockups
220
- npx morph-spec state mark-output $ARGUMENTS ui-components
221
- npx morph-spec state mark-output $ARGUMENTS ui-flows
222
- ```
223
-
224
- > **Nota sobre formatos:** Os comandos `mark-output` aceitam TANTO kebab-case (`ui-design-system`)
225
- > QUANTO camelCase (`uiDesignSystem`). Ambos os formatos funcionam igualmente! Use o que for mais
226
- > confortável para você. Exemplos:
227
- > - `npx morph-spec state mark-output my-feature uiDesignSystem` ✅
228
- > - `npx morph-spec state mark-output my-feature ui-design-system` ✅
229
-
230
- ## Outputs Gerados
231
-
232
- - `.morph/features/$ARGUMENTS/2-ui/design-system.md`
233
- - `.morph/features/$ARGUMENTS/2-ui/mockups.md`
234
- - `.morph/features/$ARGUMENTS/2-ui/components.md`
235
- - `.morph/features/$ARGUMENTS/2-ui/flows.md`
236
- - `.morph/features/$ARGUMENTS/1-design/decisions.md` (atualizado com ADR UI library)
237
-
238
- ### Passo 7: Validar Design com Frontend Review
239
-
240
- Após gerar todos os 4 outputs de UI e atualizar o state (Passo 6):
241
-
242
- ```bash
243
- /frontend-review $ARGUMENTS
244
- ```
245
-
246
- O skill valida: contraste WCAG dos tokens, existência de todos os outputs, acessibilidade
247
- estática no design, e gera screenshots dos mockups se dev server disponível.
248
-
249
- **🚫 Se o frontend-review bloquear**, corrija os issues antes de apresentar ao usuário.
250
-
251
- ---
252
-
253
- ## PAUSA OBRIGATÓRIA
254
-
255
- Apresente ao usuário 3 ações sugeridas:
256
-
257
- 1. **Aprovar UI/UX e prosseguir para design técnico**
258
- 2. **Ajustar wireframes/componentes de telas específicas**
259
- 3. **Revisar biblioteca UI escolhida (Fluent UI / MudBlazor)**
260
-
261
- ## Critérios de Avanço
262
-
263
- - [x] Input do usuário coletado (layout, referências)
264
- - [x] Biblioteca UI escolhida e justificada (ADR)
265
- - [x] 4 deliverables criados (design-system, mockups, components, flows)
266
- - [x] Acessibilidade WCAG 2.1 documentada
267
- - [x] Responsividade especificada
268
- - [x] State atualizado
269
- - [x] Usuário aprovou UI/UX
270
-
271
- ---
272
-
273
- ## Outputs desta Fase
274
-
275
- <!-- morph:outputs:uiux -->
276
- | Output | Caminho |
277
- |--------|---------|
278
- | `uiDesignSystem` | `.morph/features/{feature}/2-ui/design-system.md` |
279
- | `uiMockups` | `.morph/features/{feature}/2-ui/mockups.md` |
280
- | `uiComponents` | `.morph/features/{feature}/2-ui/components.md` |
281
- | `uiFlows` | `.morph/features/{feature}/2-ui/flows.md` |
282
- <!-- /morph:outputs -->
283
-
284
- ---
285
-
1
+ ---
2
+ name: morph:phase-uiux
3
+ description: MORPH-SPEC Phase 1.5 (UI/UX). Creates design-system.md, mockups.md, components.md, and flows.md using Playwright/Context7 MCPs. Use after setup for features with frontend UI components, pages, dashboards, forms, wizards, or visual interactions requiring design documentation.
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 UI/UX Design - FASE 1.5
11
+
12
+ > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
13
+
14
+ Fase condicional para features com front-end. Coleta requisitos de UI/UX, gera wireframes, specs de componentes e fluxos de usuário.
15
+
16
+ ## Pré-requisitos
17
+
18
+ - [ ] FASE 1 (Setup) concluída
19
+ - [ ] Feature tem keywords de UI detectadas (blazor, ui, component, page, dashboard, wizard, form, chart)
20
+ - [ ] `uiux-designer` agent ativado
21
+
22
+ ## Ferramentas Recomendadas
23
+
24
+ > **Ref:** `framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md` para guia completo.
25
+ > **Ref:** `framework/standards/integration/mcp/mcp-tools.md` para referência MCP.
26
+
27
+ | Ação | Ferramenta | Alternativa |
28
+ |------|------------|-------------|
29
+ | Verificar design system existente | **Read** `.morph/context/design-system.md` | — |
30
+ | Ler screenshots do usuário | **Read** (arquivo de imagem) | — |
31
+ | Buscar variáveis CSS existentes | **Grep** `--root:` em `*.css,*.scss` | — |
32
+ | Encontrar componentes existentes | **Glob** `**/Components/**/*.razor` ou `**/components/**/*.tsx` | — |
33
+ | Documentação de componentes UI | **Context7 MCP** `query_docs({ libraryId, query })` | **WebSearch** + **WebFetch** |
34
+ | Preview de página existente | **Playwright MCP** `browser_navigate()` + `browser_take_screenshot()` | **WebFetch** URL |
35
+ | Inspecionar estrutura da página | **Playwright MCP** `browser_snapshot()` | **WebFetch** + parse manual |
36
+ | Testar layout responsivo | **Playwright MCP** `browser_resize()` + `browser_take_screenshot()` | Manual testing |
37
+ | Referências de design externas | **WebSearch** + **WebFetch** | |
38
+ | Renderizar templates UI | **Bash** `npx morph-spec template render docs/ui-mockups ...` | — |
39
+ | Gerar design system de CSS existente | **Bash** `npx morph-spec generate design-system --scan` | — |
40
+ | Atualizar state | **Bash** `npx morph-spec state mark-output ...` | — |
41
+
42
+ **MCPs desta fase:** Playwright (preview, inspeção, responsividade), Context7 (docs de componentes).
43
+
44
+ **Anti-padrões:**
45
+ - ❌ WebSearch para docs MudBlazor (use Context7 MCP — mais preciso)
46
+ - ❌ Task agent para ler um screenshot (use Read direto na imagem)
47
+ - ❌ Adivinhar props de componentes (use Context7 para API real)
48
+
49
+ ---
50
+
51
+ ## Workflow
52
+
53
+ ### Passo 0: Garantir fase uiux
54
+
55
+ ```bash
56
+ npx morph-spec state get $ARGUMENTS
57
+ ```
58
+
59
+ Verifique o campo `"phase"` no output:
60
+
61
+ **Se `"phase": "uiux"`** → ✅ fase correta, prossiga.
62
+
63
+ **Se `"phase": "setup"`** → execute:
64
+ 1. `npx morph-spec phase advance $ARGUMENTS` (→ uiux)
65
+
66
+ **Qualquer outro valor** não prossiga estado inconsistente, reporte ao usuário.
67
+
68
+ > **Regra:** Nunca escreva em `2-ui/` enquanto a fase não for `uiux`. O hook bloqueará a escrita.
69
+
70
+ ---
71
+
72
+ ### Passo 0.5: Verificar Design System Existe
73
+
74
+ **CRITICAL:** Antes de iniciar a FASE UI/UX, verifique se um design system existe:
75
+
76
+ ```
77
+ Read: .morph/context/design-system.md
78
+ ```
79
+
80
+ Se o arquivo não existir (design system não encontrado):
81
+
82
+ 1. **Opção A - Scaffold automático:**
83
+ - O sistema criará automaticamente um design system ao avançar para implementação
84
+ - Você pode gerar manualmente agora: `npx morph-spec generate design-system`
85
+
86
+ 2. **Opção B - Criar manualmente:**
87
+ - Crie `.morph/context/design-system.md` (project-level, compartilhado)
88
+ - Ou `.morph/features/$ARGUMENTS/2-ui/design-system.md` (feature-specific)
89
+
90
+ 3. **Opção C - Scan existing CSS:**
91
+ - Se o projeto já tem CSS com variáveis: `npx morph-spec generate design-system --scan`
92
+
93
+ **⚠️ IMPORTANTE:**
94
+ - Design system é **obrigatório** para features UI
95
+ - Gate automático bloqueará implementação (FASE 5) se design system não existir
96
+ - Melhor criar agora para garantir consistência visual
97
+
98
+ ### Passo 1: Detectar Se Fase É Necessária
99
+
100
+ Verifique se agentes ativos incluem `uiux-designer`:
101
+
102
+ ```bash
103
+ npx morph-spec state get $ARGUMENTS
104
+ ```
105
+
106
+ Se `uiux-designer` NÃO estiver nos `activeAgents`, pule esta fase e continue para FASE 2 (Design).
107
+
108
+ ### Passo 1.5: Design Thinking Direção Estética
109
+
110
+ > **Ref:** `framework/standards/frontend/design-system/aesthetic-direction.md`
111
+
112
+ **ANTES de coletar requisitos técnicos**, definir a direção visual com 4 perguntas:
113
+
114
+ 1. **Purpose**: Que problema resolve? Quem usa? Qual o contexto profissional?
115
+ 2. **Tone**: Qual direção? (Minimal Refined / Editorial / Soft Professional / Industrial / Modern Luxury)
116
+ 3. **Differentiation**: Qual o 1 elemento memorável desta interface?
117
+ 4. **Constraints**: Framework, performance budget, brand guidelines existentes
118
+
119
+ **CRITICAL:** Commitar à direção ANTES das specs técnicas. Documentar em `ui-design-system.md`
120
+ na seção `## Aesthetic Direction` (template disponível no standard acima).
121
+
122
+ **Anti-padrões a evitar:**
123
+ - Gradiente roxo em fundo branco (AI cliché)
124
+ - Inter/Roboto como fonte de display
125
+ - Grid 3-colunas de cards sem diferencial visual
126
+ - ❌ Paleta de 5 cores de peso igual (sem dominant + accent)
127
+
128
+ ### Passo 2: Coletar Input do Usuário
129
+
130
+ **SEMPRE perguntar ao usuário PRIMEIRO:**
131
+
132
+ 1. **Layout e estilo**:
133
+ - Você tem alguma ideia de layout em mente?
134
+ - Tem alguma referência visual? (sites, apps, screenshots)
135
+ - Como imagina o fluxo do usuário?
136
+
137
+ 2. **Componentes e interações**:
138
+ - Quais os principais componentes desta tela/página?
139
+ - Quais estados precisam ser considerados? (loading, error, empty, success)
140
+
141
+ 3. **Imagens de referência**:
142
+ - Tem imagens de exemplo que eu possa analisar?
143
+ - Se SIM: use Read tool para ler screenshots e extrair padrões
144
+
145
+ ### Passo 3: Decidir Biblioteca UI
146
+
147
+ Escolha entre **Fluent UI Blazor** (recomendado para AI-first) ou **MudBlazor** (componentes complexos):
148
+
149
+ **Critérios:**
150
+ - Fluent UI: Para dashboards, forms simples, AI components, Microsoft design language
151
+ - MudBlazor: Para data grids avançadas, charts complexos, material design
152
+
153
+ **Documente a decisão em `decisions.md`.**
154
+
155
+ ### Passo 4: Gerar Deliverables
156
+
157
+ Crie os seguintes arquivos em `.morph/features/$ARGUMENTS/`:
158
+
159
+ > **Use templates:** Utilize `npx morph-spec template render` para gerar os arquivos a partir dos templates em `.morph/framework/templates/docs/`. Templates disponíveis: `ui-design-system`, `ui-mockups`, `ui-components`, `ui-flows`.
160
+
161
+ #### 4.1. `ui-design-system.md`
162
+
163
+ **Se design system project-level existe (`.morph/context/design-system.md`):**
164
+ - Referencie-o nos specs: "Uses project design system at .morph/context/design-system.md"
165
+ - Crie `ui-design-system.md` apenas se houver cores/componentes **específicos** da feature
166
+
167
+ **Se não existe:**
168
+ - Crie design system feature-level completo com:
169
+ - **Seção `## Aesthetic Direction`** (usar template de `aesthetic-direction.md`):
170
+ direção, font pair, color philosophy, motion intent, composition approach
171
+ - Paleta de cores (primary, secondary, accent, semantic)
172
+ - Tipografia (heading scales, body text, code)
173
+ - Spacing e layout (grid, margins, paddings)
174
+ - Componentes base (buttons, inputs, cards)
175
+
176
+ #### 4.2. `ui-mockups.md`
177
+
178
+ Wireframes ASCII + descrições:
179
+ - Layout geral de cada tela/página
180
+ - Posicionamento de componentes
181
+ - Responsividade (desktop, tablet, mobile)
182
+ - Estados (loading, error, empty, success)
183
+
184
+ #### 4.3. `ui-components.md`
185
+
186
+ Specs técnicas de componentes Fluent UI/MudBlazor:
187
+ - Componente a usar (FluentButton, MudDataGrid, etc.)
188
+ - Props e configurações
189
+ - Eventos e bindings
190
+ - Validações e estados
191
+
192
+ #### 4.4. `ui-flows.md`
193
+
194
+ Fluxos de usuário completos:
195
+ - User stories
196
+ - Diagramas de fluxo (texto/ASCII)
197
+ - Edge cases (o que acontece se...?)
198
+ - Validações e feedback
199
+
200
+ ### CHECKPOINT: Validar Deliverables UI
201
+
202
+ **⏸️ PAUSE - Antes de prosseguir para acessibilidade:**
203
+
204
+ - [ ] Direção estética definida e documentada em `ui-design-system.md`?
205
+ - [ ] Font pair especificado (não apenas Inter/Roboto para display)?
206
+ - [ ] Color philosophy: dominant + accent + rationale documentados?
207
+ - [ ] Design system definido (project-level ou feature-level)?
208
+ - [ ] Wireframes cobrem todos os estados (loading, error, empty, success)?
209
+ - [ ] Componentes especificados com props reais da biblioteca UI escolhida?
210
+ - [ ] Fluxos de usuário completos com edge cases?
211
+ - [ ] Biblioteca UI escolhida documentada como ADR em `decisions.md`?
212
+
213
+ **❌ Se alguma checkbox NÃO estiver marcada:**
214
+ → Voltar e completar o deliverable faltante
215
+
216
+ **✅ Se TODAS as checkboxes estiverem marcadas:**
217
+ → Prosseguir para validação de acessibilidade
218
+
219
+ ---
220
+
221
+ ### Passo 5: Validar Acessibilidade e Responsividade
222
+
223
+ Documente nos arquivos UI:
224
+ - **WCAG 2.1 Level AA** compliance
225
+ - Contraste de cores adequado
226
+ - Labels acessíveis para screen readers
227
+ - Navegação por teclado
228
+ - **Responsive breakpoints**
229
+ - Desktop (>1200px)
230
+ - Tablet (768px - 1199px)
231
+ - Mobile (<768px)
232
+
233
+ ### Passo 6: Atualizar State
234
+
235
+ ```bash
236
+ npx morph-spec state mark-output $ARGUMENTS ui-design-system
237
+ npx morph-spec state mark-output $ARGUMENTS ui-mockups
238
+ npx morph-spec state mark-output $ARGUMENTS ui-components
239
+ npx morph-spec state mark-output $ARGUMENTS ui-flows
240
+ ```
241
+
242
+ > **Nota sobre formatos:** Os comandos `mark-output` aceitam TANTO kebab-case (`ui-design-system`)
243
+ > QUANTO camelCase (`uiDesignSystem`). Ambos os formatos funcionam igualmente! Use o que for mais
244
+ > confortável para você. Exemplos:
245
+ > - `npx morph-spec state mark-output my-feature uiDesignSystem` ✅
246
+ > - `npx morph-spec state mark-output my-feature ui-design-system`
247
+
248
+ ## Outputs Gerados
249
+
250
+ - `.morph/features/$ARGUMENTS/2-ui/design-system.md`
251
+ - `.morph/features/$ARGUMENTS/2-ui/mockups.md`
252
+ - `.morph/features/$ARGUMENTS/2-ui/components.md`
253
+ - `.morph/features/$ARGUMENTS/2-ui/flows.md`
254
+ - `.morph/features/$ARGUMENTS/1-design/decisions.md` (atualizado com ADR UI library)
255
+
256
+ ### Passo 7: Validar Design com Frontend Review
257
+
258
+ Após gerar todos os 4 outputs de UI e atualizar o state (Passo 6):
259
+
260
+ ```bash
261
+ /frontend-review $ARGUMENTS
262
+ ```
263
+
264
+ O skill valida: contraste WCAG dos tokens, existência de todos os outputs, acessibilidade
265
+ estática no design, e gera screenshots dos mockups se dev server disponível.
266
+
267
+ **🚫 Se o frontend-review bloquear**, corrija os issues antes de apresentar ao usuário.
268
+
269
+ ---
270
+
271
+ ## PAUSA OBRIGATÓRIA
272
+
273
+ Use `AskUserQuestion` para capturar aprovação explícita antes de avançar:
274
+
275
+ ```json
276
+ {
277
+ "questions": [{
278
+ "header": "Aprovação",
279
+ "question": "UI/UX gerado. Aprovar para avançar para design técnico?",
280
+ "multiSelect": false,
281
+ "options": [
282
+ { "label": "Aprovar UI/UX", "description": "Avançar para fase de design técnico" },
283
+ { "label": "Tenho feedback", "description": "Digite o que deseja ajustar no campo abaixo (Other)" }
284
+ ]
285
+ }]
286
+ }
287
+ ```
288
+
289
+ - **"Aprovar UI/UX"** →
290
+ ```bash
291
+ npx morph-spec approve $ARGUMENTS uiux
292
+ npx morph-spec phase advance $ARGUMENTS
293
+ ```
294
+ - **"Tenho feedback" ou "Other"** → aplique o feedback recebido e repita esta PAUSA
295
+
296
+ ## Critérios de Avanço
297
+
298
+ - [x] Input do usuário coletado (layout, referências)
299
+ - [x] Biblioteca UI escolhida e justificada (ADR)
300
+ - [x] 4 deliverables criados (design-system, mockups, components, flows)
301
+ - [x] Acessibilidade WCAG 2.1 documentada
302
+ - [x] Responsividade especificada
303
+ - [x] State atualizado
304
+ - [x] Usuário aprovou UI/UX
305
+
306
+ ---
307
+
308
+ ## Outputs desta Fase
309
+
310
+ <!-- morph:outputs:uiux -->
311
+ | Output | Caminho |
312
+ |--------|---------|
313
+ | `uiDesignSystem` | `.morph/features/{feature}/2-ui/design-system.md` |
314
+ | `uiMockups` | `.morph/features/{feature}/2-ui/mockups.md` |
315
+ | `uiComponents` | `.morph/features/{feature}/2-ui/components.md` |
316
+ | `uiFlows` | `.morph/features/{feature}/2-ui/flows.md` |
317
+ <!-- /morph:outputs -->
318
+
319
+ ---
320
+
286
321
  Continuar automaticamente para FASE 2 (Design) após aprovação.