Nébula
GitHub

Produto

User Stories

Mostra como documentar comportamentos esperados do sistema pela ótica do usuário e dos critérios de aceite.

user-stories.mdMARKDOWNLeitura: 4 minSeções: 35

User Stories definem o comportamento esperado do sistema na perspectiva de quem o usa. São a fonte que alimenta telas, fluxos, entidades e contratos — se a história está vaga, tudo que vem depois nasce vago.

Fase: 2 — Requisitos
Pré-requisito: Docs/project.md aprovado
Template: Templates/Full/user-stories.md ou Templates/Quick/user-stories.md
Artefato oficial: Docs/user-stories.md
Próximos artefatos: Docs/pages.md · Docs/flow.md · Docs/entities.md


Quando criar ou revisar

  • Após aprovação de Docs/project.md
  • Novo módulo ou jornada identificada
  • Mudança de escopo que afeta comportamento do usuário
  • Discovery que revelou necessidade não mapeada

Full vs Quick

SituaçãoTemplate
Produto com múltiplos perfis, jornadas e edge casesTemplates/Full/user-stories.md
Feature pontual com contexto já compartilhadoTemplates/Quick/user-stories.md
Ambiguidade surgiu durante o QuickMigrar para Full na mesma task

Regra de escrita de toda história

Como   [perfil]
quero  [ação / capacidade]
para   [benefício / valor gerado]

Cada história deve conter além da frase:

  • Contexto — quando essa necessidade aparece
  • Valor gerado — o que o usuário ou o negócio ganha
  • Pré-condições — o que precisa ser verdade antes
  • Pós-condições — o que se espera após a ação
  • Critérios de aceite — verificáveis, não subjetivos
  • Edge cases — o que acontece nos casos limítrofes
  • Dependências — histórias que precisam existir antes

Estrutura — User Stories 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/project.md
Data de criação:
Última atualização:

2. Objetivo do Documento

Define o que Docs/user-stories.md cobre e o que não cobre:

Cobre: perfis, histórias, objetivos funcionais, critérios de aceite, dependências, prioridades.
Não cobre: layout, arquitetura técnica, modelagem de entidades, contrato de API, tasks de implementação.

3. Perfis de Usuário

Para cada perfil relevante do projeto:

### Perfil N — [nome do perfil]
Descrição:       [quem é esse usuário]
Objetivo principal: [o que ele quer alcançar]
Contexto de uso:    [quando, como e em qual situação usa o sistema]
Principais dores:
  - [dor 1]
  - [dor 2]
Dica

Defina no mínimo os perfis listados em Docs/project.md seção 5. Se um perfil não tiver objetivo claro, não crie histórias para ele — volte ao Project e esclareça antes.

4. Regras de Escrita das Histórias

Regras que toda história do projeto deve seguir (definidas na seção 4 do template):

  1. Estrutura "Como / quero / para" obrigatória
  2. Critério de aceite sempre verificável
  3. Contexto explicitado
  4. Edge cases mapeados quando relevantes
  5. Dependências funcionais declaradas

5. Histórias de Usuário

Estrutura completa de cada história (US-001, US-002, ...):

### US-001 — [título da história]
 
Perfil: [perfil principal]
 
História:
Como [perfil], quero [ação], para [benefício].
 
Objetivo funcional:
[o que essa história precisa entregar na prática]
 
Valor gerado:
[qual valor real isso entrega ao usuário ou ao negócio]
 
Contexto:
[quando essa necessidade aparece]
 
Pré-condições:
- [pré-condição 1]
 
Pós-condições esperadas:
- [resultado 1]
 
Critérios de aceite:
- [critério verificável 1]
- [critério verificável 2]
 
Exceções / edge cases:
- [edge case 1]
 
Dependências:
- [US-XXX ou artefato]
 
Prioridade: [alta | média | baixa]
 
Observações: [preencher]

6. Agrupamento por Jornada / Módulo

Após escrever as histórias individuais, agrupá-las em jornadas ou módulos:

### Jornada / Módulo: [nome]
Objetivo da jornada: [descreva]
Histórias relacionadas:
- US-001
- US-002

7. Priorização Inicial

Alta prioridade:
  - US-001 — [título]
  - US-002 — [título]
 
Média prioridade:
  - US-003 — [título]
 
Baixa prioridade:
  - US-004 — [título]
 
Justificativa da priorização:
[explique o critério — valor, risco, dependência estrutural ou desbloqueio]

8. Dependências Funcionais Entre Histórias

Dependências conhecidas:
  - US-002 depende de US-001
  - US-004 depende de US-003
 
Bloqueios potenciais:
  - [bloqueio 1]

9. Regras Funcionais Transversais

Regras que afetam múltiplas histórias e não pertencem a uma única:

Regras transversais:
  - [regra 1]
  - [regra 2]
 
Permissões / restrições por perfil:
  - [regra de acesso]
 
Estados comuns esperados no sistema:
  - loading
  - vazio
  - erro
  - sucesso
  - sem permissão
  - indisponibilidade externa

10. Diretrizes para os Próximos Documentos

Docs/pages.md       — quais telas precisam nascer dessas histórias
Docs/flow.md        — quais jornadas e transições precisam ser modeladas
Docs/design-system.md — quais componentes ou padrões parecem necessários
Docs/tokens.json    — necessidades de temas, escala ou semântica visual
Docs/entities.md    — quais conceitos de domínio surgem dessas histórias
Docs/contract.yaml  — quais capacidades de API ou integração são sugeridas
Docs/plan.md        — histórias fundacionais, críticas ou com dependências

11. Síntese Operacional para Dev e AI

Perfis principais:
  - [perfil 1]
  - [perfil 2]
 
Jornadas principais:
  - [jornada 1]
  - [jornada 2]
 
Histórias de maior prioridade:
  - US-001
  - US-002
 
O que precisa ser garantido na implementação:
  - [garantia 1]
  - [garantia 2]
 
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 — US completa

### US-007 — Registrar atendimento com foto e assinatura
 
Perfil: Técnico de campo
 
História:
Como técnico de campo, quero registrar o atendimento com foto do local
e assinatura do cliente, para ter comprovação da visita vinculada ao chamado.
 
Objetivo funcional:
Permitir que o técnico capture foto e colete assinatura digital no app mobile,
vinculando ambos ao chamado em andamento.
 
Valor gerado:
Comprova execução do serviço sem papel. Elimina contestações de atendimento.
 
Contexto:
Ao finalizar o trabalho no local — antes de marcar o chamado como concluído.
 
Pré-condições:
- Técnico autenticado no app
- Chamado no status "em andamento"
- Câmera e touch disponíveis no dispositivo
 
Pós-condições esperadas:
- Foto e assinatura vinculadas ao chamado no backend
- Chamado movido para status "aguardando confirmação"
 
Critérios de aceite:
- Foto deve ser tirada pela câmera do app (não galeria)
- Assinatura deve ser coletada via canvas touch
- Ambos devem ser enviados ao backend antes de avançar o status
- Timeout de upload exibe mensagem de erro com opção de reenvio
 
Edge cases:
- Câmera sem permissão → exibir instrução de ativação nas configurações
- Falha no upload → manter dados localmente e exibir opção de reenvio
- Cliente recusa assinar → campo opcional com justificativa obrigatória
 
Dependências:
- US-003 (autenticação do técnico)
- US-005 (abertura e consulta de chamado)
 
Prioridade: alta

Estrutura — User Stories Quick

Para features pontuais com contexto já compartilhado:

## Perfis principais
- [perfil 1]
- [perfil 2]
 
## Histórias principais
 
### US-001 — [título]
Como [perfil]
quero [ação]
para [benefício]
 
Critérios de aceite:
- [critério verificável 1]
- [critério verificável 2]
 
Prioridade: [alta | média | baixa]
 
---
 
## Agrupamento por jornada
### [nome da jornada]
- US-001
- US-002
 
## Regras funcionais transversais
- [regra 1]
 
## Dependências entre histórias
- [dependência]
 
## Direção para os próximos documentos
Docs/pages.md:      [orientação]
Docs/flow.md:       [orientação]
Docs/entities.md:   [orientação]
Docs/contract.yaml: [orientação]
 
## Síntese para Dev e AI
Perfis mais importantes: [perfil]
Histórias prioritárias: US-001, US-002
O que precisa funcionar bem: [item]
O que está indefinido: [ponto]

Prompt para gerar com agente

Atue como ProductAgent.
Objetivo: criar Docs/user-stories.md com base em Docs/project.md
 
Carregue contexto base:
- GUIDE.md
- Skills/user-stories.md
- Templates/Full/user-stories.md
- Docs/project.md
 
Preencha as 12 seções do template Full.
Seção 3: defina todos os perfis do Docs/project.md seção 5.
Seção 5: crie as histórias com estrutura completa incluindo edge cases.
Seção 9: mapeie estados comuns (loading, vazio, erro, sucesso, sem permissão).
Seção 10: preencha orientação por artefato para os próximos documentos.
Critérios de aceite devem ser verificáveis — sem adjetivos subjetivos.
Marque [indefinido] onde houver lacuna.

Definição de pronto

O user-stories está pronto quando:

  1. Todos os perfis de Docs/project.md têm objetivo e contexto de uso documentados
  2. Cada história tem estrutura "Como / quero / para" + critérios de aceite verificáveis
  3. Edge cases e pré-condições mapeados nas histórias de alta prioridade
  4. Seção 6 agrupa histórias em jornadas ou módulos
  5. Seção 9 lista estados comuns do sistema
  6. Seção 10 tem orientação objetiva por artefato seguinte
  7. Aprovação registrada na seção 12
Atenção

Critério de aceite como "funcionar bem" ou "carregar rápido" não é critério — é desejo. Substitua por: "carregar em menos de 1 segundo com 4G" ou "exibir spinner por até 3 segundos antes de mostrar mensagem de timeout".


Erros comuns

ErroCorreção
História grande demais ("como usuário quero usar o sistema")Quebrar em histórias menores por capacidade específica
Critério de aceite subjetivoUsar verbo verificável: listar, exibir, redirecionar, salvar, validar
Descrever implementação em vez de necessidadeO "quero" deve ser comportamento do usuário, não decisão técnica
Edge cases ausentesMapear pelo menos: erro de rede, dado inválido, sem permissão
Perfil genérico ("usuário")Nomear o perfil com contexto real: "técnico de campo", "gestor", "admin"
Seção 10 em brancoCada artefato seguinte perde a orientação funcional do produto

Documentos que nascem das User Stories

Docs/user-stories.md (aprovado)

Docs/pages.md        — telas derivadas das jornadas e histórias
Docs/flow.md         — navegação e transições entre estados
Docs/entities.md     — domínio e dados mapeados pelas histórias
Docs/contract.yaml   — capacidades de API inferidas pelos critérios de aceite