@polymorphism-tech/morph-spec 4.8.18 → 4.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +98 -0
- package/README.md +2 -2
- package/bin/morph-spec.js +15 -56
- package/bin/task-manager.js +115 -14
- package/bin/validate.js +67 -33
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +201 -203
- package/docs/QUICKSTART.md +2 -2
- package/framework/CLAUDE.md +21 -0
- package/framework/agents.json +758 -164
- package/framework/hooks/claude-code/post-tool-use/context-refresh.js +1 -1
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +2 -2
- package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +155 -0
- package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +1 -1
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +71 -2
- package/framework/hooks/claude-code/statusline.py +76 -30
- package/framework/hooks/claude-code/user-prompt/set-terminal-title.js +14 -6
- package/framework/hooks/shared/activity-logger.js +0 -24
- package/framework/hooks/shared/phase-utils.js +3 -0
- package/framework/hooks/shared/skill-reminder-helpers.js +79 -0
- package/framework/hooks/shared/stale-task-reset.js +57 -0
- package/framework/hooks/shared/state-reader.js +2 -2
- package/framework/hooks/shared/worktree-helpers.js +53 -0
- package/framework/phases.json +40 -8
- package/framework/skills/level-0-meta/brainstorming/SKILL.md +1 -1
- package/framework/skills/level-0-meta/code-review/SKILL.md +1 -1
- package/framework/skills/level-0-meta/code-review-nextjs/SKILL.md +163 -163
- package/framework/skills/level-0-meta/frontend-review/SKILL.md +5 -5
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
- package/framework/skills/level-0-meta/morph-init/SKILL.md +5 -5
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +4 -4
- package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +1 -1
- package/framework/skills/level-0-meta/post-implementation/SKILL.md +59 -12
- package/framework/skills/level-0-meta/simulation-checklist/SKILL.md +1 -1
- package/framework/skills/level-0-meta/terminal-title/SKILL.md +1 -1
- package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +1 -1
- package/framework/skills/level-0-meta/tool-usage-guide/references/tools-per-phase.md +6 -5
- package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +215 -189
- package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +251 -251
- package/framework/skills/level-1-workflows/phase-design/SKILL.md +382 -365
- package/framework/skills/level-1-workflows/phase-implement/SKILL.md +492 -450
- package/framework/skills/level-1-workflows/phase-setup/SKILL.md +194 -190
- package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +270 -270
- package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +285 -285
- package/framework/standards/STANDARDS.json +640 -88
- package/framework/standards/infrastructure/vercel/vercel-database.md +106 -0
- package/framework/templates/REGISTRY.json +1825 -1909
- package/framework/templates/context/CONTEXT-FEATURE.md +276 -276
- package/framework/templates/docs/onboarding.md +1 -5
- package/framework/workflows/configs/nodejs-cli.json +40 -0
- package/package.json +2 -6
- package/src/commands/agents/dispatch-agents.js +55 -4
- package/src/commands/project/doctor.js +16 -47
- package/src/commands/project/init.js +1 -1
- package/src/commands/project/status.js +2 -2
- package/src/commands/project/update.js +381 -365
- package/src/commands/project/worktree.js +154 -0
- package/src/commands/state/advance-phase.js +120 -30
- package/src/commands/state/approve.js +2 -2
- package/src/commands/state/index.js +7 -8
- package/src/commands/state/phase-runner.js +1 -1
- package/src/commands/state/state.js +61 -6
- package/src/commands/tasks/task.js +78 -99
- package/src/commands/templates/template-render.js +93 -173
- package/src/commands/trust/trust.js +26 -21
- package/src/core/paths/output-schema.js +15 -0
- package/src/core/state/state-manager.js +28 -54
- package/src/core/workflows/workflow-detector.js +9 -87
- package/src/lib/phase-chain/phase-validator.js +330 -0
- package/src/lib/stack/stack-profile.js +88 -0
- package/src/lib/tasks/task-classifier.js +16 -0
- package/src/lib/tasks/test-runner.js +77 -0
- package/src/lib/trust/trust-manager.js +32 -144
- package/src/lib/validators/spec-validator.js +58 -4
- package/src/lib/validators/validation-runner.js +23 -11
- package/src/scripts/setup-infra.js +240 -224
- package/src/utils/agents-installer.js +2 -2
- package/src/utils/banner.js +1 -1
- package/src/utils/claude-settings-manager.js +1 -1
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +258 -8
- package/framework/hooks/dev/check-sync-health.js +0 -117
- package/framework/hooks/dev/guard-version-numbers.js +0 -57
- package/framework/hooks/dev/sync-standards-registry.js +0 -60
- package/framework/hooks/dev/sync-template-registry.js +0 -60
- package/framework/hooks/dev/validate-skill-format.js +0 -70
- package/framework/hooks/dev/validate-standard-format.js +0 -73
- package/framework/templates/meta-prompts/hops/hop-retry.md +0 -78
- package/framework/templates/meta-prompts/hops/hop-validation.md +0 -97
- package/framework/templates/meta-prompts/hops/hop-wrapper.md +0 -36
- package/framework/workflows/configs/design-impl.json +0 -49
- package/framework/workflows/configs/express.json +0 -45
- package/framework/workflows/configs/fast-track.json +0 -42
- package/framework/workflows/configs/full-morph.json +0 -79
- package/framework/workflows/configs/fusion.json +0 -39
- package/framework/workflows/configs/long-running.json +0 -33
- package/framework/workflows/configs/spec-only.json +0 -43
- package/framework/workflows/configs/ui-refresh.json +0 -49
- package/framework/workflows/configs/zero-touch.json +0 -82
- package/src/commands/project/monitor.js +0 -295
- package/src/commands/project/tutorial.js +0 -115
- package/src/commands/state/validate-phase.js +0 -238
- package/src/commands/templates/generate-contracts.js +0 -445
- package/src/core/orchestrator.js +0 -171
- package/src/core/registry/command-registry.js +0 -28
- package/src/core/registry/index.js +0 -8
- package/src/core/registry/validator-registry.js +0 -204
- package/src/core/templates/template-validator.js +0 -296
- package/src/generator/config-generator.js +0 -206
- package/src/generator/templates/config.json.template +0 -40
- package/src/generator/templates/project.md.template +0 -67
- package/src/lib/agents/micro-agent-factory.js +0 -161
- package/src/lib/analysis/complexity-analyzer.js +0 -441
- package/src/lib/analysis/index.js +0 -7
- package/src/lib/analytics/analytics-engine.js +0 -345
- package/src/lib/checkpoints/checkpoint-hooks.js +0 -298
- package/src/lib/checkpoints/index.js +0 -7
- package/src/lib/context/context-bundler.js +0 -241
- package/src/lib/context/context-optimizer.js +0 -212
- package/src/lib/context/context-tracker.js +0 -273
- package/src/lib/context/core-four-tracker.js +0 -201
- package/src/lib/context/mcp-optimizer.js +0 -200
- package/src/lib/execution/fusion-executor.js +0 -304
- package/src/lib/execution/parallel-executor.js +0 -270
- package/src/lib/hooks/stop-hook-executor.js +0 -286
- package/src/lib/hops/hop-composer.js +0 -221
- package/src/lib/phase-chain/eligibility-checker.js +0 -243
- package/src/lib/threads/thread-coordinator.js +0 -238
- package/src/lib/threads/thread-manager.js +0 -317
- package/src/lib/tracking/artifact-trail.js +0 -202
- package/src/scanner/project-scanner.js +0 -242
- package/src/ui/diff-display.js +0 -91
- package/src/ui/interactive-wizard.js +0 -96
- package/src/ui/user-review.js +0 -211
- package/src/ui/wizard-questions.js +0 -188
- package/src/utils/color-utils.js +0 -70
- package/src/utils/process-handler.js +0 -97
|
@@ -1,286 +1,286 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: 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.
|
|
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 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
|
+
|
|
286
286
|
Continuar automaticamente para FASE 2 (Design) após aprovação.
|