observability-and-instrumentation
Adiciona ferramentas para monitorar o que o código faz em produção. Ajuda a entender se algo deu errado e por quê, facilitando a correção.
O que ela faz
Esta habilidade ajuda a entender o que seu código está fazendo quando está em uso. Ela adiciona 'sinais' (como registros e medições) ao código para que você possa ver e diagnosticar problemas.
Quando usar
- ✓Ao criar qualquer nova funcionalidade que será usada por pessoas.
- ✓Quando ocorrem problemas em produção e você não sabe o motivo.
- ✓Ao configurar alertas para saber quando algo está errado.
Exemplo do que pedir para a IA
“Como posso saber por que um pagamento falhou para um cliente específico?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você adiciona ao seu código instruções que geram informações (logs, métricas, rastros) sobre o que está acontecendo. Essas informações são como pistas que ajudam a entender o comportamento do sistema.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add addyosmani/agent-skills --skill observability-and-instrumentationOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/observability-and-instrumentation/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Observabilidade e Instrumentação
Visão Geral
Código que você não consegue observar é código que você não consegue operar. Observabilidade é a capacidade de responder "o que o sistema está fazendo e por quê?" de fora, usando a telemetria que o código emite. A instrumentação não é um complemento pós-lançamento — ela é escrita junto com o recurso, da mesma forma que os testes. Se um recurso é lançado sem telemetria, o primeiro bug reportado pelo usuário se torna arqueologia em vez de uma consulta.
Quando Usar
- Construindo qualquer recurso que será executado em produção
- Adicionando um novo serviço, endpoint, job em segundo plano ou integração externa
- Um incidente de produção demorou muito para ser diagnosticado ("não conseguimos dizer o que aconteceu")
- Configurando ou revisando regras de alerta
- Revisando um PR que adiciona I/O, retentativas, filas ou chamadas entre serviços
NÃO para:
- Diagnosticar uma falha que está acontecendo agora — use a habilidade
debugging-and-error-recovery(a observabilidade é o que torna essa habilidade rápida na próxima vez) - Profiling e otimização de lentidão medida — use a habilidade
performance-optimization - Listas de verificação de monitoramento no dia do lançamento e gatilhos de rollback — veja a habilidade
shipping-and-launch; esta habilidade cobre a instrumentação que as alimenta
Processo
1. Defina "funcionando" antes de instrumentar
Telemetria sem uma pergunta é ruído. Antes de adicionar qualquer instrumentação, escreva 2–4 perguntas que um engenheiro de plantão fará sobre este recurso:
FEATURE: checkout payment retry
QUESTIONS ON-CALL WILL ASK:
1. What fraction of payments succeed on first attempt vs after retry?
2. When a payment fails permanently, why? (provider error? timeout? validation?)
3. Is the payment provider slower than usual?
→ Every signal below must help answer one of these.
Se você não consegue nomear as perguntas, você não está pronto para instrumentar — você registrará tudo e não aprenderá nada.
2. Escolha o sinal certo para cada pergunta
| Sinal | Respostas | Perfil de Custo | Exemplo |
|---|---|---|---|
| Log Estruturado | "O que aconteceu neste caso específico?" | Por evento; cresce com o tráfego | payment_failed com código de erro do provedor |
| Métrica | "Com que frequência / quão rápido, em agregado?" | Fixo por série; barato para consultar | latência p99 das chamadas do provedor |
| Rastreamento (Trace) | "Onde o tempo foi gasto entre os serviços?" | Por requisição; geralmente amostrado | Um checkout lento, detalhado por salto |
Regra de ouro: métricas dizem que algo está errado, rastreamentos dizem onde, logs dizem por quê.
3. Logging Estruturado
Registre eventos, não prosa. Cada linha de log é um objeto JSON com um nome de evento estável e campos legíveis por máquina:
// BAD: string interpolation — unqueryable, inconsistent
logger.info(`Payment ${id} failed for user ${userId} after ${n} retries`);
// GOOD: stable event name + structured fields
logger.warn({
event: 'payment_failed',
paymentId: id,
provider: 'stripe',
errorCode: err.code,
attempt: n,
}, 'payment failed');
Níveis de log — use-os consistentemente:
| Nível | Significado | Ação do Plantão |
|---|---|---|
error |
Invariante quebrada; alguém pode precisar agir | Investigar |
warn |
Degradado, mas tratado (retentativa bem-sucedida, fallback usado) | Observar tendências |
info |
Evento de negócio significativo (pedido feito, job concluído) | Nenhum |
debug |
Detalhe de diagnóstico | Desativado em produção por padrão |
IDs de Correlação são obrigatórios. Gere (ou aceite) um ID de requisição na fronteira do sistema e anexe-o a cada linha de log, span e chamada de saída. Sem ele, você não consegue reconstruir uma única requisição a partir de logs intercalados:
// Express: child logger per request, ID propagated downstream
app.use((req, res, next) => {
req.id = req.headers['x-request-id'] ?? crypto.randomUUID();
req.log = logger.child({ requestId: req.id });
res.setHeader('x-request-id', req.id);
next();
});
Quando vários pontos de entrada escrevem em um único log, nomeie o ponto de entrada. Um ID de correlação identifica uma execução; ele não diz qual caminho de código a iniciou. O mesmo job alcançado por um agendador, por um endpoint de repetição e por uma execução manual de CLI produz linhas intercambiáveis em um único sink, então atribuir uma linha recai sobre eliminação — leitura cruzada do histórico do agendador, da tabela de processos, de um log de deploy — e esse argumento só se sustenta enquanto esses registros externos por acaso ainda existirem. Marque o ponto de entrada onde a execução começa, ao lado do ID de correlação, e propague ambos da mesma forma:
// Um helper para cada ponto de entrada: o logger da execução carrega ambos os campos.
…
Perguntas frequentes
O que são 'logs', 'métricas' e 'rastros'?
Logs são registros de eventos específicos. Métricas são resumos de dados ao longo do tempo (ex: quantos erros por hora). Rastros mostram o caminho de uma requisição através de vários serviços.
Por que não posso simplesmente adicionar isso depois que o código estiver pronto?
É muito mais fácil e eficaz adicionar essas informações enquanto você escreve o código. Adicionar depois pode ser como tentar entender um mistério sem pistas.
O que são 'IDs de correlação'?
São identificadores únicos que conectam todas as informações (logs, métricas, rastros) relacionadas a uma única operação ou requisição, mesmo que elas aconteçam em momentos diferentes ou em partes distintas do sistema.
Detalhes
Descrição original do autor
Instruments code so production behavior is visible and diagnosable. Use when adding logging, metrics, tracing, or alerting. Use when shipping any feature that runs in production and you need evidence it works. Use when production issues are reported but you can't tell what happened from the available data.
repo: addyosmani/agent-skills
Popularidade
- Estrelas no GitHub
- 107 mil
- Posição no ranking
- #356
- Licença
- MIT
- Atualizada em
- 13/10/2026
Comentários
- …
Mais skills deste repositório
api-and-interface-design
Ajuda a criar APIs e interfaces bem definidas. É útil ao projetar como diferentes partes de um software vão se comunicar.
addyosmani/agent-skills
browser-testing-with-devtools
Ajuda seu agente a testar código diretamente em navegadores reais. É útil para verificar como algo funciona no ambiente onde será usado, encontrando erros e problemas de performance.
addyosmani/agent-skills
ci-cd-and-automation
Ensina seu agente de IA a automatizar tarefas repetitivas e colocar projetos no ar e cuidar da infraestrutura.
addyosmani/agent-skills
code-review-and-quality
Realiza revisões de código detalhadas em várias frentes. É útil antes de juntar novas mudanças para garantir a qualidade e evitar problemas futuros.
addyosmani/agent-skills
Skills parecidas
bun-runtime
Faz seu agente usar o Bun para rodar, organizar e testar código. Ajuda a escolher o Bun em vez de outras ferramentas e a migrar projetos existentes.
affaan-m/ECC
database-migrations
Ajuda seu agente a fazer mudanças seguras em bancos de dados. Ele garante que as alterações possam ser desfeitas e minimiza o tempo de inatividade.
affaan-m/ECC
deployment-patterns
Configura fluxos de implantação e CI/CD, containerização e estratégias de rollback para garantir lançamentos seguros.
affaan-m/ECC