O painel do projeto
Erros
Erros junta, num lugar só, o que quebrou. Ele tem duas fontes:
- Os comandos do agente: build, checagem de tipos, testes, lint e scripts que ele roda enquanto trabalha. Não precisa instalar nada.
- O app publicado: o que quebra com quem usa o seu app no ar. Precisa ligar uma vez, com
/faundr:errors-setup.
Cada erro vira um E-n. Os erros dos comandos ficam ligados à conversa e ao pedido em que nasceram, para você saber o que causou cada um.
Erros dos comandos do agente
Depois de cada comando de checagem, o Faundr lê a saída no seu computador:
- se falhou, separa cada erro (só a mensagem e um trecho curto, com chaves mascaradas) e o envia ao painel;
- quando o mesmo comando volta a passar, o erro fecha sozinho;
- se ele aparecer de novo depois de fechado, ganha a etiqueta Voltou.
Comandos como git, grep e o servidor de desenvolvimento ficam de fora. No começo de cada sessão, o agente fica sabendo dos erros em aberto.
Funciona em todas as linguagens que o Faundr cobre, menos HTML puro, que não tem comando para rodar: o Faundr entende a saída do tsc, do ESLint, do Vitest e dos outros comandos de JavaScript, e também de mypy, ruff e pytest (Python), go build, go vet e golangci-lint (Go), cargo build e cargo clippy (Rust), flutter analyze e flutter test, Maven e Gradle, dotnet build, phpstan e phpunit (PHP), gcc, clang, make e ctest (C/C++) e docker build. Essas ferramentas só aparecem aqui se o projeto já as usa: o Faundr não instala nenhuma. A tabela completa está em Linguagens suportadas.
Erros do app publicado
Com /faundr:errors-setup, o agente instala no seu app o SDK gratuito do Sentry, apontando para o Faundr:
- não precisa de conta no Sentry;
- envia só os erros, só em produção e sem dados pessoais;
- cada versão publicada fica marcada com o commit, para saber em qual versão o erro apareceu.
Funciona com JavaScript e TypeScript (React, Next.js, Vue, Nuxt, Svelte, Angular, React Native, Node, Cloudflare Workers e site em HTML puro), Python, Flutter e Dart, PHP e Laravel, Go, Java e Kotlin (Spring Boot e Android), C#, Rust, C e C++.
No fim, o agente confere com um erro de teste.
Num erro do app publicado, o detalhe mostra quantas pessoas foram afetadas, em que página, em que versão, onde quebrou no código e o que a pessoa fez antes do erro. Em JavaScript, o código original é recuperado pelos *source maps* do seu computador, sem enviar nada a ninguém.
Abas
Erros
O card de estado mostra quantos erros estão abertos, quantos voltaram e quantos estão aumentando, e o botão Corrigir com a IA. Filtre por tipo (App publicado, Build, Tipos, Testes, Lint, Scripts) e por situação (Abertos, Resolvidos, Arquivados).
As etiquetas:
- Voltou: foi corrigido e apareceu de novo;
- Aumentando: o erro do app publicado está acontecendo muito mais que o normal nesta hora;
- Aguardando deploy: corrigido, esperando a nova versão ir ao ar.
O detalhe de um erro tem:
- Em português simples: o que é, por que costuma acontecer e o que fazer;
- Copiar pedido para o agente: um pedido pronto para qualquer agente de programação com IA;
- onde quebrou, quantas vezes, onde nasceu (conversa e pedido) e o trecho da saída.
E os botões:
- Corrigir com a IA (
/faundr:error-fix E-n): o agente corrige a causa, sem silenciar o erro, e só dá como resolvido quando o mesmo comando volta a passar; - Arquivar 7 dias ou Arquivar até voltar;
- só no app publicado: Resolvido no próximo deploy (a versão antiga pode continuar mandando o erro sem reabri-lo; ele só volta se aparecer numa versão nova) e Até mais 100 vezes (arquiva até o erro acontecer mais 100 vezes).
Por sessão
Os erros agrupados pela conversa em que nasceram: quantos nasceram ali, quantos seguem abertos e quantos foram resolvidos na mesma conversa. Ajuda a ver se uma sessão deixou estrago.
App publicado
Tudo o que liga o app no ar ao Faundr:
- Card de estado: se os erros estão chegando e quando chegou o último, com o botão Ligar o app (
/faundr:errors-setup). - Endereço de envio (DSN): o endereço que o app usa para mandar os erros, com os limites (acima de 300 eventos por hora, o Faundr guarda uma amostra).
- Site no ar: o Faundr confere o seu site a cada 5 minutos. Se ele cair (2 falhas seguidas), vira um erro "Site fora do ar" e você recebe um aviso. Quando o site volta, o erro fecha sozinho. Só aceita endereços
https. - Avisos no Slack ou no Discord: cole o endereço (webhook) de um canal e escolha os avisos: Erro novo, Erro voltou, Erro aumentando e Site fora do ar e de volta. No máximo um aviso por erro por hora. Os mesmos endereços servem para o resumo semanal da Atividade.
- Relatórios de CSP (opcional): o trecho para o cabeçalho de segurança mandar violações ao Faundr.
- Já usa o Sentry?: o comando para trazer os erros abertos de lá.
Achados de outras skills
Se você já usa uma skill de investigar bugs, falhas ou logs que não é do Faundr, dá para conectá-la ao painel com /faundr:skills. Toda vez que ela roda, no fim da resposta o agente registra o que ela achou:
- cada erro vira um E-n aqui, com a etiqueta via /nome, e conta no Lançamento e no Impacto como os outros;
- quando ela roda de novo e o erro sumiu, ele fecha sozinho;
- cada skill só fecha os próprios achados, e só nos arquivos que olhou.
Veja como conectar em Workflows.
Comandos
Erros mostra o que quebrou nos comandos que a IA roda enquanto trabalha (build, checagem de tipos, testes, lint e scripts) e, depois de ligar o app, o que quebra com quem usa o app publicado. Cada erro vira um E-n; os dos comandos ficam ligados à conversa e ao pedido em que nasceram. Use estes comandos no seu agente de IA, na pasta ligada ao projeto.
Não precisa fazer nada: o Faundr lê a saída dos comandos no seu computador (só a mensagem e um trecho curto, com chaves mascaradas). O erro fecha sozinho quando o mesmo comando volta a passar e, se aparecer de novo depois, é marcado como "voltou". No começo de cada conversa, a IA fica sabendo dos erros em aberto.
/faundr:error-fix [E-<n> | --all]A IA corrige o erro (sem argumento: os abertos, começando pelos que voltaram; com --all, todos sem parar) e roda o mesmo comando para confirmar. Não silencia o erro com atalhos.
ex.: /faundr:error-fix E-3
/faundr:errors-setupLiga o app publicado ao Faundr: a IA instala o SDK gratuito do Sentry apontando para o Faundr (sem conta no Sentry, só erros, sem dados pessoais) e confere com um erro de teste.
!faundr errors-uptime https://<seu site> | --offConfere o site a cada 5 minutos. Se ele cair (2 falhas seguidas), vira um erro "Site fora do ar" e avisa; quando volta, o erro fecha sozinho. Também dá para ligar na aba App publicado.
ex.: !faundr errors-uptime https://minhaloja.com
!faundr errors-import-sentry --org <org> --project <projeto>Para quem já usa o Sentry: traz os erros abertos de lá, com contagens. O token (SENTRY_AUTH_TOKEN) fica só no seu computador.
ex.: !faundr errors-import-sentry --org minha-empresa --project loja
!faundr errors-dsnMostra o endereço (DSN) que o app usa para mandar erros ao Faundr e quando chegou o último.
!faundr errors [--all]Lista os erros em aberto (ou todos) no terminal.
!faundr error-show E-<n>Mostra um erro: onde quebrou, quantas vezes, em que conversa e pedido nasceu, e o trecho da saída.
ex.: !faundr error-show E-3
!faundr error-archive E-<n> [--days N | --count N | --users N]Arquiva um erro que não é para corrigir agora: por N dias, até acontecer mais N vezes ou até afetar mais N pessoas (sem opção: até voltar depois de corrigido). Também dá para arquivar aqui no painel.
ex.: !faundr error-archive E-3 --count 100
!faundr error-resolve E-<n> --next-deploy --verified "<como conferiu>"Erro do app publicado corrigido: a versão antiga ainda pode mandá-lo sem reabrir; ele só volta se aparecer numa versão nova. O /faundr:error-fix já faz isso sozinho.
ex.: !faundr error-resolve E-3 --next-deploy --verified "checagem de itens vazios; build ok"
!faundr error-recipe E-<n> --cause "<por que quebrou>" --fix "<o que consertou>"Guarda a receita do erro. Ela aparece no error-show quando o erro volta ou quando o mesmo erro surge em outro arquivo.
ex.: !faundr error-recipe E-3 --cause "carrinho vazio chegava no total" --fix "conferir itens vazios antes"
!faundr error-reopen E-<n>Reabre um erro.
ex.: !faundr error-reopen E-3