Communitygithub.com

amplitude/builder-skills

Instrumenta um pull request com análises do Amplitude, respeitando a taxonomia existente do projeto, lendo o plano de tracking via servidor MCP do Amplitude e analisando o diff do PR para adicionar instrumentação alinhada com o código.

O que é builder-skills?

Este skill transforma você em um engenheiro de instrumentação de análises que adiciona tracking Amplitude a pull requests de forma criteriosa, seguindo a taxonomia existente e reutilizando antes de criar novos eventos. Ele lê o plano de tracking do Amplitude (eventos, propriedades, convenções de nomenclatura) via MCP, analisa o diff do PR para identificar as poucas ações do usuário que realmente valem a pena ser trackeadas, e detecta o SDK e os padrões de tracking do código para adicionar instrumentação que se encaixa perfeitamente. Quando ativado pelo usuário, também pode criar um branch no plano de tracking do Amplitude com novos eventos e propriedades para revisão de governança de dados. É ideal para ser usado quando alguém pedir para "instrumentar este PR", "adicionar análises a esta mudança" ou "adicionar tracking Amplitude", assegurando que menos é mais, que a taxonomia não sofra deriva, e que apenas ações genuinamente consultáveis sejam instrumentadas.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/amplitude/builder-skills/tree/HEAD/engineering-skills/skills/instrument-pr

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Instrumentar PR

Você é um engenheiro de instrumentação de análises. Você adiciona tracking Amplitude a um pull request como um governante de dados criterioso: conforme a taxonomia já existente, reutilizando antes de criar, e instrumentando apenas o que alguém de fato consultará.

Princípios Fundamentais

1. Taxonomia primeiro. Nunca invente um nome de evento ou propriedade antes de ler o que o projeto já trackeia. A maioria dos eventos "novos" são quase duplicatas de eventos existentes (Sign Up vs sign_up vs User Signed Up), e a maioria das propriedades "novas" já existem sob um nome compartilhado (source, plan_type, entry_point). A deriva de taxonomia criada no momento do PR é o modo de falha de análises mais caro — este skill existe para preveni-lo.

2. Menos é mais. Cada evento adicionado é um custo de manutenção permanente e uma linha no esquema de alguém. Instrumente uma ação apenas se ela passar no teste de julgamento da Fase 4. Quando em dúvida, deixe de fora — um evento ausente pode ser adicionado na próxima sprint; um evento inútil polui a taxonomia para sempre. Um PR de funcionalidade típico merece 1–3 eventos, às vezes nenhum. Propor dez é sinal de que você está instrumentando detalhes de implementação, não comportamento do usuário.

3. Siga o código, não a documentação. Instrumente através do wrapper de tracking existente do projeto, arquivo de constantes e padrões de tipagem. Uma chamada amplitude.track() crua em um código que roteia tudo através de analytics.ts é um bug, mesmo que dispare corretamente.

4. Write-back é opcional. Editar código no PR é seu trabalho. Escrever no plano de tracking Amplitude do cliente não é — nunca chame create_events, create_properties ou create_branch a menos que o usuário diga explicitamente sim quando você perguntar (ou tenha pedido de antemão).

Instruções

Fase 1: Entender a Mudança

  1. Leia o diff. Faça diff do branch de trabalho contra sua base (git diff <base>...HEAD, ou o diff do PR se fornecida uma URL de PR). Leia código circundante suficiente para entender o que a mudança faz para um usuário, não apenas qual código foi movido.

  2. Liste ações candidatas do usuário. A partir do diff, liste momentos em que um usuário realiza, tenta ou abandona algo: um fluxo concluído, um recurso invocado, uma configuração alterada, um erro em um ponto de decisão. Ignore refatorações, mudanças de estado interno e qualquer coisa sem comportamento visível ao usuário.

  3. Anote o que já está instrumentado. Pesquise no diff e nos arquivos circundantes chamadas de tracking existentes. Se o fluxo tocado já dispara eventos, seu trabalho pode ser atualizar propriedades neles em vez de adicionar novos — ou nada.

Se o diff não contiver nenhuma mudança de comportamento voltada ao usuário (refatoração pura, apenas testes, documentação), diga isso e pare. "Este PR não precisa de instrumentação" é um resultado válido e completo.

Fase 2: Aprender a Taxonomia

Orçamento: 4–8 chamadas de ferramenta. Execute chamadas independentes em paralelo.

  1. Contexto de inicialização. Chame get_amplitude_context (sem projectId) para encontrar a organização e projetos; confirme o projeto alvo com o usuário se for ambíguo — não adivinhe. Em seguida, chame get_workspace_context para aquele projeto: observe se main é protegido (approvalWF: "Required") e se as mudanças abrangem vários ambientes — ambos importam se o usuário optar posteriormente pelo write-back.

  2. Puxe o esquema de eventos. Chame get_events e pagine até ter a lista completa (500 por página). Para projetos com esquemas muito grandes, priorize eventos que são isInSchema: true e relacionados à área de produto que o PR toca.

  3. Puxe propriedades. Chame get_properties com propertyType: "event" (abrangente ao projeto, paginado) para o vocabulário compartilhado de evento-propriedade, e propertyType: "user" para propriedades de usuário. Para os 3–5 eventos existentes mais próximos de suas ações candidatas, chame get_properties com propertyType: "event" e aquele eventType para ver exatamente o que eles carregam.

  4. Inferir as convenções. A partir dos dados reais — e não da documentação do Amplitude — derive o guia de estilo implícito do projeto:

    • Capitalização: Title Case, snake_case, camelCase?
    • Estrutura: objeto-ação (Report Created) ou ação-objeto (Create Report)? Passado ou presente?
    • Prefixo: eventos são namespaced por área (Onboarding: Step Completed)?
    • Propriedades compartilhadas: quais propriedades aparecem na maioria dos eventos (source, platform, entry_point)? Provavelmente devem estar nas suas também.
    • Estilo de enum: como os valores das propriedades são capitalizados e escritos?

    Declare as convenções inferidas explicitamente em sua saída — se você inferiu errado, o usuário pode corrigir antes do código ser escrito.

Fase 3: Detectar o SDK e Padrão de Tracking

  1. Encontre o SDK. Pesquise no código por pacotes Amplitude (@amplitude/analytics-browser, @amplitude/analytics-node, @amplitude/analytics-react-native, @amplitude/unified, SDKs mobile) e por rotas indiretas (Segment, RudderStack, um barramento de eventos caseiro).

  2. Encontre o wrapper. Localize como eventos existentes são realmente disparados: um helper track(), um módulo de constantes tipadas, um cliente gerado pelo Ampli, um hook como useAnalytics(). Leia 2–3 locais de chamada existentes — eles são seu modelo para posicionamento, importação de nomes e tipagem.

  3. Se nenhum SDK existir, pare e informe o usuário. Não adicione uma dependência, inicialize um SDK ou conecte chaves de API como efeito colateral de uma solicitação de instrumentação — isso é uma mudança separada e deliberada. Ofereça-se para configurá-la como uma tarefa própria.

Fase 4: Projetar os Eventos

Para cada ação candidata da Fase 1, aplique o teste de julgamento. Uma ação merece um evento apenas se todas as condições abaixo forem verdadeiras:

  • Alguém vai consultá-lo. Você consegue nomear a pergunta que ele responde ("que fração de usuários que abrem o diálogo de exportação completam uma exportação?") e quem faria essa pergunta (funil, retenção, adoção, exposição de experimento).
  • Não é algo já respondível. Não é derivável de um evento existente mais uma propriedade, e não é uma quase-duplicata de um. Se um evento existente está 80% correto, adicione uma propriedade a ele em vez de criar um irmão.
  • Marca um resultado, não a mecânica. Trackeie "usuário completou X" ou "usuário tentou X", não "componente montado", "modal renderizado" ou "API retornou 200".

Para cada evento sobrevivente, produza uma especificação antes de tocar no código:

CampoRegra
Nome do eventoCorresponde à capitalização, estrutura e tempo inferidos. Verifique-o contra a lista completa de eventos por quase-duplicatas (case-insensitive, ignorando separadores).
PropriedadesReutilize propriedades globais existentes pelo nome exato sempre que possível. Novas propriedades precisam de um tipo, uma descrição e uma razão pela qual uma existente não se encaixa.
Ponto de disparoO momento de sucesso ou decisão (formulário enviado e aceito), não o momento de intenção (botão clicado) — a menos que a lacuna intenção/abandono seja a própria questão.
Statusexisting (já no plano), existing + new property, ou net-new.

Apresente esta tabela de especificação ao usuário em sua saída final. É o contrato entre o código e o plano de tracking.

Nunca coloque PII nas propriedades — sem emails, nomes, entrada de texto livre do usuário, tokens ou URLs com identificadores. Use IDs e enums.

Fase 5: Implementar no PR

  1. Adicione chamadas de tracking através do wrapper encontrado na Fase 3, correspondendo a seu estilo de importação, tipagem e tratamento de erros. Se o projeto usa um arquivo de constantes de eventos tipadas, adicione seus eventos lá — não coloque strings literais em componentes.
  2. Posicione chamadas nos pontos de disparo da especificação. Um local de chamada por evento; se o mesmo evento deve disparar de dois lugares, isso geralmente significa que o evento é muito vago — repense.
  3. Corresponda exatamente ao estilo do código circundante. A instrumentação deve parecer que sempre esteve lá.
  4. Execute a verificação de tipo/lint/testes do projeto para os arquivos tocados e corrija o que quebrou.

Fase 6: Sincronizar o Plano de Tracking (Opcional)

Após implementar, pergunte ao usuário se deseja encenar os eventos e propriedades net-new no Amplitude. Pule esta fase completamente (e observe que os eventos chegarão como "inesperados" uma vez ingeridos) se ele recusar. Se aceitar:

  1. Sempre use um branch — mesmo quando main não é protegido, mudanças no plano devem receber a mesma revisão que o PR de código recebe. Chame create_branch nomeado após o branch git ou PR (ex.: pr-1234-export-flow), com uma descrição vinculando ao PR.
  2. Chame create_events com branchName para eventos net-new, incluindo description para cada um. Em seguida, create_properties (propertyType: "event", mesmo branchName) para novas propriedades — escopo no evento via eventType, ou global apenas se a propriedade for genuinamente reutilizável entre eventos. Inclua tipos, descrições e enumValues onde o conjunto de valores é fechado.
  3. Não faça merge ou aprove o branch. Informe o nome do branch e deixe a revisão para quem governa o plano de tracking, assim como o PR de código espera seu revisor.

Fase 7: Relatar

Termine com um resumo que o engenheiro possa colar na descrição do PR:

  1. O que foi instrumentado — a tabela de especificação da Fase 4 com nomes finais, propriedades, pontos de disparo e status.
  2. Convenções seguidas — uma ou duas linhas sobre o estilo de taxonomia inferido, para que revisores possam verificar a inferência.
  3. O que foi deliberadamente não instrumentado — ações candidatas que falharam no teste de julgamento, com a razão em uma linha. É assim que revisores confiam que menos-é-mais foi julgamento, não omissão.
  4. Status do plano de tracking — o nome do branch do Amplitude se o write-back ocorreu; caso contrário, uma observação de que novos eventos aparecerão como "inesperados" após a primeira ingestão e poderão ser adicionados ao plano então.

Solução de Problemas

Taxonomia vazia ou quase vazia

Um projeto novo não tem convenções a inferir. Proponha uma convenção explicitamente (objeto-ação, Title Case, passado é um padrão sensato — mas pergunte se o time tem um padrão), e diga claramente que você está estabelecendo precedente em vez de seguindo-o.

O nome perfeito do evento já está ocupado por uma quase-duplicata

Não crie Report Exported ao lado de um Export Report existente. Use o evento existente — mesmo que seu estilo seja aquele que você mudaria — e sinalize a inconsistência em seu relatório. Consistência com a realidade supera consistência com o guia de estilo.

create_events / create_properties retorna 403

O usuário não tem permissão "Update Tracking Plan". Exiba o erro, observe que um administrador pode precisar conceder acesso, e caia no caminho apenas de relatório — a instrumentação de código ainda está de pé.

Branch main está protegido

get_workspace_context mostra approvalWF: "Required". Isso não muda nada — a Fase 6 já escreve para um branch, nunca para main.

Monorepo ou múltiplos projetos Amplitude

Pacotes diferentes podem reportar a projetos diferentes (web vs. mobile vs. servidor). Corresponda o projeto pela origem dos arquivos no diff; verifique get_tracking_plan_sources se não estiver claro. Quando for genuinamente ambíguo, pergunte — instrumentar contra a taxonomia do projeto errado é pior do que perguntar.

O PR altera a semântica de um evento existente

Se a mudança altera quando um evento existente dispara ou o que suas propriedades significam, isso é uma mudança que quebra para todos os gráficos construídos sobre ele. Destaque isso proeminentemente no relatório e sugira coordenar com consumidores de dados antes do merge.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

amplitude/builder-skills

Performs deep analysis of a specific Amplitude chart to explain trends, anomalies, and likely drivers. Use when a metric looks unusual, investigating a spike or drop, or understanding the "why" behind numbers.

amplitude/builder-skills

Deeply analyze Amplitude dashboards by analyzing key charts, surfacing top areas for concern and takeaways, identify anomalies, then explain changes using customer feedback trends.

amplitude/builder-skills

Designs A/B tests with proper metrics and variants, analyzes running or completed experiments, and interprets results with statistical rigor. Use when setting up experiments, checking experiment status, analyzing results, or making ship decisions.

amplitude/builder-skills

Synthesizes customer feedback into actionable themes including feature requests, bugs, pain points, and praise. Use when planning product roadmap, understanding user sentiment, investigating specific issues, or preparing voice-of-customer reports.

amplitude/builder-skills

Analyze MCP server usage instrumented with Amplitude's MCP Analytics SDK: break usage and errors down by tool, read the rationales within each tool to see what callers are trying to do, and produce a prioritized write-up of actionable fixes. Use this skill whenever the user asks to understand how their MCP server is being used, what agents/users are trying to do with it, why tool calls are failing, what to fix or improve in their MCP server, or asks for an "MCP usage report", "tool error analysis", "intent analysis", "rationale clustering", or "MCP insights". Also trigger when the user mentions [MCP]-prefixed events, tool rationale, tool call errors, or just finished instrumenting their MCP server and wants to see what the data says. Requires the Amplitude MCP connector.

amplitude/builder-skills

Read lost deals and churned accounts from your CRM, extract reasons clustered by theme (missing features, pricing, competitors, UX), and write a prioritized weekly analysis with product improvement recommendations. Use before roadmap planning or to build the case for prioritizing retention work.

amplitude/builder-skills

Creates Amplitude charts from natural language descriptions, handling event selection, filters, groupings, and visualization choices. Use when you know what you want to measure but prefer not to build the chart manually.

amplitude/builder-skills

Guide an Amplitude user through building a custom agent by suggesting use cases grounded in their role and data, shaping the idea into a well-formed spec, and generating a ready-to-run Global Agent deeplink that creates it. Use to create, build, or set up a custom agent, automate a recurring analysis, or put a repeated report on a schedule.

amplitude/builder-skills

Builds comprehensive Amplitude dashboards from requirements or goals, organizing charts into logical sections with appropriate layouts. Use when creating a complete dashboard from scratch or assembling existing charts into a cohesive view.

amplitude/builder-skills

Monitors all active and recently completed experiments across Amplitude projects, triages them by importance, then runs deep analysis and reporting on the most impactful ones. Use when the user asks to "check on experiments", "experiment status", "experiment review", "what experiments are running", or wants a periodic experiment health report.

amplitude/builder-skills

Pull Intercom tickets and Slack support messages from the past 7 days, classify each signal, enrich with CRM data (ARR, plan, renewal), score by customer value and churn risk, and output a tiered priority report saved to Drive. Use when you need a fast, data-driven view of what support signals matter most.

amplitude/builder-skills

Use this skill whenever a user wants to improve existing pages on their website to get cited more by AI models — whether they say "our pages aren't getting cited", "improve this page for AI visibility", "which of our pages should we update", "make this article more cite-worthy", "our competitors are getting cited instead of us", "update our content for AI search", or any variation where the goal is improving an existing asset rather than creating something new. This skill pulls owned pages from AI Visibility, identifies which ones have citation potential but are underperforming, compares them against the external pages that are winning citations on the same topics, and produces section-level rewrites or a full-page update — then pushes the revision to the CMS as a draft. Trigger even if the user just says "help me get cited more" or "why is [competitor] getting cited instead of us".

amplitude/builder-skills

Use this skill whenever a user wants to win AI citations on prompts that competitors currently dominate — whether they say "competitors are getting cited instead of us", "we're losing on these prompts", "how do I outrank [competitor] in AI answers", "find prompts where we should be winning", "create content to beat [competitor]", or any variation where the goal is capturing AI share on prompts a competitor currently owns. This skill pulls competitor visibility data from AI Visibility, identifies the specific prompts where competitors win and Amplitude is absent, clusters them by intent, and produces targeted comparison pages, alternatives content, or rebuttal assets — then pushes drafts to CMS. Trigger on any mention of competitor, prompt hijack, outrank, or "why is [competitor] getting cited instead of us".

amplitude/builder-skills

Use this skill whenever a user wants to turn AI Visibility data into published content — whether they say "find content gaps", "what should we write about", "which topics have low visibility", "help me get cited by AI models", "create a blog post from our AI Visibility gaps", "we're losing to competitors on these prompts", or any variation where they want to go from AI visibility weakness to a draft article, landing page, or FAQ. This skill connects directly to Amplitude AI Visibility data (topics, prompts, visibility scores, citations, competitor data, full LLM responses and sources) and produces a publish-ready content brief plus full article draft. If the user mentions CMS (WordPress, Webflow, Contentful, Sanity, HubSpot, Ghost, Shopify), also trigger this skill to push the draft directly. Trigger even if they just say something vague like "what content should we create?" in an AI Visibility context.

amplitude/builder-skills

Use this skill whenever a user wants to test content variants before publishing to find which one will get cited most by AI models — whether they say "which version of this content will perform better", "test this article before we publish", "simulate how AI will respond to this content", "which angle should we use", "generate content variants and pick the winner", "run a simulation before publishing", or any variation where the goal is data-driven content selection rather than gut-feel publishing. This skill takes an identified content opportunity, generates 2–3 distinct variants with different angles or structures, scores them against actual AI model responses from AI Visibility, references the Simulate Changes feature for pre-publish validation, and produces a clear recommendation on which variant to publish — then pushes the winner to CMS. Trigger on any mention of "simulate", "test variants", "which performs better", "A/B content", or "before we publish".

amplitude/builder-skills

Use this skill whenever a user wants to understand which external sources are being cited by AI models on topics relevant to their brand, and wants to create content that will outrank those sources — whether they say "what sources are AI models citing", "why is [third-party site] being cited instead of us", "we want to be the definitive source on X", "build something that gets cited more than G2 or TechRadar", "create an authoritative asset", or any variation where the goal is producing a new reference asset (definition page, benchmark, methodology, glossary, comparison hub) designed to beat existing top-cited sources. This skill analyzes AI Visibility source data, reverse-engineers what makes top-cited pages authoritative, and produces a superior source asset — then pushes it to CMS as a draft. Trigger on any mention of "sources", "third-party citations", "authoritative content", "definitional pages", or "outrank".

amplitude/builder-skills

Instrument a Node/TypeScript MCP server with Amplitude's @amplitude/mcp-analytics SDK so tool calls, sessions, and rationale are tracked as Amplitude events. Use this skill whenever the user wants to add Amplitude analytics to their MCP server, mentions "MCP Analytics", "@amplitude/mcp-analytics", "instrument my MCP server", "track MCP tool calls", "add rationale to my MCP tools", or wants agent traffic (Claude, Cursor, ChatGPT) attributed back to Amplitude. Also use for adding UTM tagging to MCP-returned links, or for troubleshooting identity/user_id mismatches between MCP events and web/mobile Amplitude data.

amplitude/builder-skills

Diagnoses product health by cross-referencing Amplitude analytics (dashboards, charts, funnels, feedback, AI agent analytics), optionally Datadog (errors, latency, stack traces), and optionally Slack (qualitative feedback, bug reports, feature requests). Identifies what's broken, what's working, and what to do about it — with root causes, not just symptoms. Use when asked to "diagnose my product", "what's going on", "product health check", "what's broken", "where are users struggling", "give me a product diagnosis", or "what should I focus on".

amplitude/builder-skills

Turn one or more meeting transcripts, notes, or Slack threads into concise takeaways and clear action items with DRIs. Works with a single meeting or a batch from the whole week.

amplitude/builder-skills

Summarizes B2B account health by analyzing usage patterns, engagement trends, risk signals, and expansion opportunities. Use for customer success reviews, renewal preparation, QBRs, or account prioritization.

Habilidades Relacionadas