Flow descreve as jornadas do usuário — como ele entra no sistema, navega entre páginas, encontra decisões, desvios e estados excepcionais, e conclui (ou não) a ação que pretendia.
Fase: 3 — Design de Produto
Pré-requisito: Docs/pages.md aprovado
Template: Templates/Full/flow.md ou Templates/Quick/flow.md
Artefato oficial: Docs/flow.md
Próximos artefatos: Prototype/ · Docs/design-system.md · Docs/contract.yaml
Quando criar ou revisar
- Após aprovação de
Docs/pages.md - Nova jornada identificada que não está coberta
- Mudança de navegação que afeta sequência ou condicionais
- Discovery que revelou desvio crítico não mapeado
Full vs Quick
| Situação | Template |
|---|---|
| Produto com múltiplas jornadas, perfis e condicionais | Templates/Full/flow.md |
| Feature com 1-2 fluxos em contexto já definido | Templates/Quick/flow.md |
| Ambiguidade surgiu ou desvios são complexos | Migrar para Full na mesma task |
Tipos de fluxo reconhecidos
fluxo principal — caminho feliz esperado do início ao fim
fluxo alternativo — caminho válido mas não padrão
fluxo de erro — o que acontece quando algo falha
fluxo administrativo — jornada de perfil com privilégio elevado
fluxo de autenticação — login, logout, expiração de sessão
fluxo de recuperação — redefinição de senha, revalidação
fluxo de confirmação — ação destrutiva ou irreversível
fluxo de saída — como o usuário encerra uma sessão ou ação
fluxo restrito por permissão — rota protegida por papel ou nível de acessoEstrutura — Flow Full
O template Full tem 12 seções.
1. Identificação
Nome do projeto:
Versão do documento:
Status: [rascunho | revisando | aprovado]
Documento base: Docs/pages.md e Docs/user-stories.md
Data de criação:
Última atualização:2. Objetivo do Documento
Cobre: jornadas por perfil, pontos de entrada, transições, decisões, desvios, estados de bloqueio e exceção.
Não cobre: layout visual, implementação técnica de navegação, arquitetura interna, contrato de API, componentes visuais.
3. Regras Gerais dos Fluxos
Todo fluxo documentado deve conter: nome, tipo, perfil principal, objetivo, ponto de entrada, pré-condições, sequência principal, decisões e condicionais, desvios, estados excepcionais, saídas e resultado esperado.
4. Visão Geral das Jornadas
Jornada é o objetivo macro do usuário, composta por um ou mais fluxos:
### Jornada JN-001 — [nome]
Perfil principal: [perfil]
Objetivo: [o que o usuário quer alcançar]
Histórias: US-001, US-002
Páginas: PG-001, PG-002, PG-003
Ponto de entrada: [onde o fluxo começa]
Resultado esperado: [o que deve existir ao fim]
Observações: [preencher]5. Fluxos Detalhados
Estrutura completa de cada fluxo (FL-001, FL-002, ...):
### FL-001 — [nome do fluxo]
Tipo: [principal | alternativo | erro | autenticação | administrativo | confirmação]
Perfil principal: [perfil]
Objetivo do fluxo: [descreva]
Histórias relacionadas: US-001
Páginas envolvidas: PG-001, PG-002, PG-003
Pré-condições:
- [pré-condição 1]
- [pré-condição 2]
Ponto de entrada:
[onde o usuário entra nesse fluxo]
Sequência principal:
1. Usuário acessa [PG-001].
2. Sistema exibe [estado inicial esperado].
3. Usuário executa [ação].
4. Sistema valida [condição].
5. Usuário é direcionado para [PG-002].
6. Sistema processa [evento].
7. Usuário conclui [ação final] em [PG-003].
Decisões e condicionais:
- Se [condição A], seguir para [página / estado].
- Se [condição B], bloquear e exibir [mensagem / estado].
- Se [condição C], redirecionar para [página].
Desvios possíveis:
- [desvio 1]
- [desvio 2]
Estados excepcionais:
- erro de validação
- indisponibilidade externa
- sessão expirada
- sem permissão
- dados inexistentes
Saídas possíveis:
- [saída de sucesso]
- [saída de cancelamento]
- [saída de erro persistente]
Resultado esperado:
[descrição do fim ideal do fluxo]
Observações: [preencher]6. Fluxos por Perfil
Mapeamento de quais fluxos cada perfil pode percorrer:
### Perfil: [nome]
Fluxos principais: FL-001, FL-002
Fluxos alternativos: FL-003
Restrições relevantes:
- [restrição de permissão ou contexto]7. Pontos de Decisão e Condições Críticas
Decisões críticas do sistema:
- [decisão 1: condição → resultado]
- [decisão 2: condição → resultado]
Condições de bloqueio:
- [usuário sem permissão → exibir tela de acesso negado]
- [sessão expirada → redirecionar para login]
Condições de redirecionamento:
- [preencher]
Condições de fallback:
- [preencher]8. Estados Transversais de Navegação
Estados que podem aparecer em múltiplos fluxos — devem ser documentados aqui com a diretriz de tratamento global:
- loading — feedback visual durante operação assíncrona
- erro — falha de operação com mensagem e ação recomendada
- sucesso — confirmação de operação bem-sucedida
- vazio — sem dados para exibir com orientação
- sem permissão — acesso negado com contexto e alternativa
- sessão expirada — redirecionamento para login com preservação de contexto
- indisponibilidade — serviço externo indisponível com retry ou fallback
- timeout — operação excedeu tempo esperado
- falha de autenticação— credencial inválida com orientação específica
Diretriz geral: [como esses estados devem se comportar consistentemente]9. Dependências e Restrições Funcionais
Dependências entre fluxos:
- FL-002 depende de FL-001 concluído
- FL-004 exige autenticação prévia (FL-AUTH)
Restrições por perfil:
- [restrição 1]
Fluxos críticos para MVP: [FL-001, FL-002]
Fluxos opcionais ou futuros: [FL-005, FL-006]10. Diretrizes para os Próximos Documentos
Prototype/ — quais fluxos e telas precisam ser prototipados primeiro
Docs/design-system.md — padrões de interação e feedback recorrentes entre fluxos
Docs/tokens.json — semânticas visuais de estado que precisam de suporte por tokens
Docs/contract.yaml — fluxos que indicam endpoints, operações ou respostas específicas
Docs/entities.md — conceitos de domínio que aparecem nos fluxos
Docs/plan.md — fluxos prioritários, bloqueantes ou fundacionais11. Síntese Operacional para Dev e AI
Jornadas principais: JN-001, JN-002
Fluxos mais críticos: FL-001, FL-002, FL-003
Decisões que não podem ser esquecidas: [preencher]
Estados críticos que devem existir: [preencher]
O que ainda está indefinido: [ponto 1]12. Aprovação
Status: [pendente | aprovado | revisando]
Aprovado por:
Data de aprovação:
Observações finais:Exemplo preenchido — fluxo completo
### FL-007 — Registro e encerramento de atendimento
Tipo: fluxo principal
Perfil principal: Técnico de campo
Objetivo: registrar execução do atendimento com foto e assinatura e encerrar o chamado
Histórias: US-007, US-008
Páginas: PG-008 (detalhe do chamado), PG-012 (registro de atendimento), PG-009 (lista)
Pré-condições:
- Técnico autenticado
- Chamado no status "em andamento"
- Câmera com permissão concedida
Ponto de entrada:
PG-008 → botão "Registrar encerramento"
Sequência principal:
1. Técnico acessa PG-008 com chamado em andamento.
2. Toca em "Registrar encerramento".
3. Sistema abre PG-012.
4. Técnico captura foto pela câmera do app.
5. Técnico coleta assinatura via canvas touch.
6. Técnico toca em "Finalizar atendimento".
7. Sistema envia foto e assinatura à API (POST /atendimentos/{id}/encerramento).
8. Sistema move chamado para "aguardando confirmação".
9. Sistema redireciona para PG-009 com toast de sucesso.
Decisões e condicionais:
- Se câmera sem permissão → exibir instrução de ativação nas configurações
- Se cliente recusar assinar → campo opcional com justificativa obrigatória
- Se upload falhar → manter dados localmente, exibir botão de reenvio
- Se sem conectividade → salvar localmente, sincronizar ao reconectar
Desvios possíveis:
- Técnico cancela na metade → chamado permanece "em andamento"
- Técnico tenta encerrar sem foto → sistema bloqueia e exibe mensagem
Estados excepcionais:
- Câmera sem permissão (orienta ativação nas configurações do dispositivo)
- Falha de upload (opção de reenvio com dados preservados)
- Sem conectividade (dados salvos offline, sincronização automática)
Saídas possíveis:
- Sucesso → PG-009 com toast de confirmação
- Cancelamento → retorno a PG-008
- Erro persistente → permanece em PG-012 com opção de reenvio
Resultado esperado:
Chamado encerrado com foto e assinatura vinculadas. Registro rastreável para auditoria.Estrutura — Flow Quick
Para features com 1-2 fluxos e contexto já definido:
## Jornadas principais
### JN-001 — [nome]
Perfil: [perfil]
Objetivo: [o que quer alcançar]
Ponto de entrada: [onde começa]
Páginas: PG-001, PG-002
Resultado esperado: [preencher]
---
## Fluxos principais
### FL-001 — [nome]
Tipo: [principal | alternativo | erro | autenticação]
Perfil: [perfil]
Páginas: PG-001, PG-002, PG-003
Sequência principal:
1. [passo 1]
2. [passo 2]
3. [passo 3]
Condições importantes:
- [condição 1]
- [condição 2]
Estados excepcionais:
- erro
- sem permissão
- sessão expirada
Resultado esperado: [preencher]
---
## Decisões críticas
- [decisão com condição e resultado]
## Estados transversais
- loading
- erro
- vazio
- sucesso
- sem permissão
- sessão expirada
## Direção para os próximos documentos
Prototype/: [orientação]
Docs/design-system.md:[orientação]
Docs/contract.yaml: [orientação]
## Síntese para Dev e AI
Fluxos prioritários: FL-001, FL-002
Condições a respeitar: [condição]
Estados obrigatórios: [estado]
O que está indefinido: [ponto]Prompt para gerar com agente
Atue como ProductAgent.
Objetivo: criar Docs/flow.md com base em Docs/pages.md e Docs/user-stories.md
Carregue contexto base:
- GUIDE.md
- Skills/flow.md
- Templates/Full/flow.md
- Docs/pages.md
- Docs/user-stories.md
Preencha as 12 seções do template Full.
Seção 4: mapeie uma jornada por perfil principal do projeto.
Seção 5: crie fluxos detalhados incluindo sequência passo a passo, condicionais e estados excepcionais.
Seção 7: liste decisões críticas com condição → resultado.
Seção 8: defina estados transversais com diretriz de tratamento global.
Seção 10: preencha orientação por artefato seguinte.
Marque [indefinido] onde houver lacuna de clareza.Definição de pronto
O flow está pronto quando:
- Todas as jornadas críticas têm pelo menos um fluxo documentado
- Cada fluxo tem sequência numerada passo a passo — não apenas descrição genérica
- Decisões e condicionais explicitados — incluindo o que acontece quando a condição falha
- Estados excepcionais mapeados em cada fluxo (sessão expirada, sem permissão, erro de rede)
- Seção 8 define estados transversais com diretriz de consistência global
- Seção 10 tem orientação por artefato seguinte
- Aprovação registrada na seção 12
Documentar apenas o caminho feliz é a falha mais frequente em flow.md. Fluxo sem desvio, sem condicional e sem estado excepcionall não serve como referência de implementação — quem implementa precisa inventar os casos faltantes e eles raramente ficam consistentes.
Erros comuns
| Erro | Correção |
|---|---|
| Documentar só o caminho feliz | Todo fluxo precisa de desvios, condicionais e estados excepcionais |
| Misturar fluxo com layout | Flow não descreve visual — descreve navegação, decisões e estados |
| Sequência genérica ("usuário usa a tela") | Cada passo deve ser uma ação concreta referenciando a página |
| Condicionais ausentes | Toda decisão ("se X → Y, se não → Z") deve estar explícita |
| Seção 8 em branco | Sem diretriz global, cada tela trata estados excepcionais de forma diferente |
Documentos que nascem do Flow
Docs/flow.md (aprovado)
↓
Prototype/ — protótipos HTML das jornadas principais
Docs/design-system.md — padrões visuais de feedback, bloqueio e transição
Docs/contract.yaml — endpoints inferidos pelas sequências e condicionais
Docs/plan.md — fluxos críticos viram tasks prioritárias das primeiras fases