Duas ferramentas, uma central. Escolha um serviço abaixo — cada uma explica como funciona antes de abrir.
Puxa os work items direto do GitLab e monta o relatório de status por etapa do projeto — pronto pra exportar em PDF pro cliente.
POB-879.1 vira filho de POB-879 automaticamente.due_date), usando o nome do milestone só quando não há data.não relatório e itens workflow::new sem milestone (ainda não triados).Transforma uma explicação solta — ou um print do cliente — num ticket formatado no padrão POB, pronto pra copiar pra ferramenta de tarefas do time.
POB-xxx) e link do Figma que você citar entram automaticamente no contexto.Os dados vêm da API do GitLab. O gerador busca issues abertas e fechadas (o status "Done" do fluxo interno nem sempre fecha a issue no GitLab), pagina os resultados de 100 em 100 e remove duplicadas por iid. Os tickets seguem a numeração POB, também referenciada no Jira para rastreamento complementar do projeto.
A hierarquia é montada por convenção de título, não pela API de relações do GitLab: um item POB-879.1 é considerado filho de POB-879 (o item raiz, só com o número, sem sufixo). Tarefas filhas aparecem indentadas, com "↳", logo abaixo do pai.
A etapa é definida principalmente pela due_date da issue, não pelo nome do milestone. O nome do milestone só entra como reserva quando não há data de entrega:
| Etapa | Critério (due_date) | Reserva (sem due_date) |
|---|---|---|
| 1ª Etapa | ≤ 29/05/2026 | milestone contém "etapa 1" ou "1" |
| 2ª Etapa (Go Live) | 30/05/2026 – 29/06/2026 | "etapa 2", "go live" ou "2" |
| 3ª Etapa (Pós-Lançamento) | > 29/06/2026 | "etapa 3", "pos", "lancamento" ou "3" |
| Manutenção / Ajustes | sem milestone atribuído | |
Princípio de manutenção: sempre que a data já está disponível na própria issue, o gerador usa comparação direta em vez de depender de chamadas extras à API — essa simplicidade foi uma escolha deliberada depois de testar uma versão anterior baseada em eventos de label, considerada complexa demais.
Uma tarefa entra como entrega da semana quando o due_date cai dentro do período informado no formulário — comparação simples de datas, sem consultar a API de eventos de label. Essas tarefas ganham destaque visual: faixa verde e selo "✦ Esta semana".
| Workflow interno | Status exibido |
|---|---|
client-info | Aguardando Informações |
client::Done | Concluído (override global) |
client::Testing | Teste cliente |
client::Ready to Test | Aguardando teste cliente |
workflow::Done / issue fechada | Concluído |
workflow::Testing / workflow::Ready to Test | Teste interno |
workflow::Reviewing / workflow::Ready to Review | Revisão interna |
workflow::In Progress | Em Desenvolvimento |
workflow::Ready to Dev / Blocked / novo | Pendente |
Conclusão é sempre definida por state === 'closed', workflow::Done ou client::Done — nunca pelo prazo vencido. Um due_date no passado não significa que a tarefa foi concluída.
Processos internos da Nyx não são expostos ao cliente — a tarefa é "Pendente" até que uma label client:: indique o contrário, ou até ser concluída.
| Workflow interno | Status exibido |
|---|---|
client-info | Informação Pendente |
client::Done | Concluído (override global) |
client::Testing | Teste cliente |
client::Ready to Test | Aguardando teste cliente |
workflow::Done / issue fechada | Concluído |
| (qualquer outro — incluindo Reviewing, Testing, In Progress) | Pendente |
não relatório.workflow::new sem milestone atribuído — tarefa ainda não triada/aprovada, não deve ser vista pelo cliente.A maioria das labels segue o padrão categoria::Valor. Exceção conhecida: a label de informação pendente do cliente usa dois pontos simples com espaço, client: Informations, em vez de client::Informations. A detecção é case-insensitive e aceita as duas variações. Regra prática: sempre validar a string exata de uma label nova contra um ticket real antes de codificar (ticket de teste usado historicamente: POB-929).
client::gerência → borda/fundo âmbar e selo "⭐ Gerência".type::Bug → selo vermelho "Bug".client: Informations → selo laranja "⚠ Aguardando informações do cliente".As tarefas são agrupadas por funcionalidade via label ft(...) (ex.: ft(associados)), numa ordem fixa — labels fora dessa lista vão pro final. Dentro de cada grupo, ordena por due_date e, em empate, pelo número do ticket POB. A numeração sequencial (#1, #2...) é recalculada por tabela no momento em que o relatório é gerado.
Cada tarefa usa o prefixo POB-xxx (numeração sequencial atribuída depois na ferramenta de gestão de tarefas) e é sempre escrita em português do Brasil. O título segue o formato [Área/Funcionalidade] — [Mudança específica], curto e descritivo, sem jargão técnico desnecessário — por exemplo, "Publicações — Exibição de múltiplos autores no card de listagem".
POB-xxx pra manter rastreabilidade.Contexto (cenário atual e por que a mudança é necessária) → Comportamento esperado (lista) → Critérios de aceite (checklist) → Pendências, se houver.
Contexto (onde ocorre, desde quando, impacto no cliente) → Comportamento atual (com defeito) → Comportamento esperado → Passos para reproduzir (numerados) → Ambiente/Evidências (navegador, perfil testado, print) → Critérios de aceite → Pendências, se houver.
| Aspecto | Tarefa normal | Bug |
|---|---|---|
| Seção principal | Comportamento esperado | Comportamento atual × esperado |
| Passos para reproduzir | Não se aplica | Obrigatório |
| Evidências/ambiente | Opcional | Recomendado |
| Critérios de aceite | Define a entrega da funcionalidade | Define que o defeito foi sanado, sem regressão |
Regra de ouro: nunca inventar informação que não foi fornecida. Se faltar um dado necessário — público-alvo de teste, comportamento visual não especificado, decisão de design — isso vira pendência registrada, citando quem precisa confirmar (design, cliente ou dev sênior) quando for possível inferir.
POB-xxx) pode ser adaptado por projeto; fala com o time se precisar de um prefixo diferente.