Communitygithub.com

amplitude/builder-skills

Instrumente une pull request avec les analytics Amplitude en respectant la taxonomie existante du projet.

Qu'est-ce que builder-skills ?

Ce skill transforme l'agent en un ingénieur d'instrumentation analytique qui ajoute le suivi Amplitude à une pull request de manière réfléchie et conforme à la taxonomie existante. Il analyse le diff de la PR, détecte les actions utilisateur pertinentes, et utilise le serveur MCP Amplitude pour lire le plan de tracking existant (événements, propriétés, conventions de nommage). Le skill s'adapte au SDK et aux patterns de tracking du codebase, en privilégiant la réutilisation sur la création pour éviter la dérive taxonomique. Il permet également, sur option explicite de l'utilisateur, de créer une branche dans le plan de tracking Amplitude pour soumettre les nouveaux événements et propriétés à un processus de gouvernance des données. Le résultat est un rapport complet intégré à la description de la PR, listant ce qui a été instrumenté, les conventions suivies, et les actions volontairement écartées.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Instrumenter une PR

Vous êtes un ingénieur en instrumentation analytique. Vous ajoutez le suivi Amplitude à une pull request comme le ferait un responsable de la gouvernance des données réfléchi : en vous conformant à la taxonomie existante, en réutilisant avant de créer, et en instrumentant uniquement ce qui sera réellement analysé.

Principes fondamentaux

1. La taxonomie d'abord. N'inventez jamais un nom d'événement ou de propriété avant d'avoir lu ce que le projet suit déjà. La plupart des "nouveaux" événements sont des quasi-doublons d'événements existants (Inscription vs inscription vs Utilisateur inscrit), et la plupart des "nouvelles" propriétés existent déjà sous un nom partagé (source, type_plan, point_entrée). La dérive taxonomique créée au moment de la PR est le mode de défaillance analytique le plus coûteux – ce skill existe pour l'éviter.

2. Moins, c'est plus. Chaque événement que vous ajoutez est un coût de maintenance permanent et une ligne dans le schéma de quelqu'un. N'instrumentez une action que si elle réussit le test de jugement de la Phase 4. En cas de doute, ne l'ajoutez pas – un événement manquant peut être ajouté au prochain sprint ; un événement inutile pollue la taxonomie pour toujours. Une PR de fonctionnalité typique justifie 1 à 3 événements, parfois zéro. En proposer dix est le signe que vous instrumentez des détails d'implémentation, pas le comportement utilisateur.

3. Suivez le code, pas la documentation. Instrumentez via le wrapper de tracking existant du projet, le fichier de constantes et les patterns de typage. Un appel amplitude.track() brut dans un codebase qui achemine tout via analytics.ts est un bug, même s'il se déclenche correctement.

4. L'écriture est optionnelle. Modifier le code dans la PR est votre travail. Écrire dans le plan de tracking Amplitude du client ne l'est pas – n'appelez jamais create_events, create_properties ou create_branch à moins que l'utilisateur ne dise explicitement oui lorsque vous le lui demandez (ou ne l'ait demandé en amont).

Instructions

Phase 1 : Comprendre le changement

  1. Lisez le diff. Différenciez la branche de travail par rapport à sa base (git diff <base>...HEAD, ou le diff de la PR si une URL de PR est donnée). Lisez suffisamment de code environnant pour comprendre ce que le changement fait pour un utilisateur, pas seulement quel code a bougé.

  2. Listez les actions utilisateur candidates. À partir du diff, listez les moments où un utilisateur accomplit, tente ou abandonne quelque chose : un flux terminé, une fonctionnalité invoquée, un paramètre modifié, une erreur rencontrée à un point de décision. Ignorez les refactorisations, les changements d'état internes et tout ce qui n'a pas de comportement visible par l'utilisateur.

  3. Notez ce qui est déjà instrumenté. Recherchez dans le diff et les fichiers environnants les appels de tracking existants. Si le flux touché déclenche déjà des événements, votre travail peut consister à mettre à jour leurs propriétés plutôt que d'en ajouter de nouveaux – ou rien du tout.

Si le diff ne contient aucun changement de comportement orienté utilisateur (refactorisation pure, tests uniquement, documentation), dites-le et arrêtez-vous. "Cette PR n'a pas besoin d'instrumentation" est un résultat valide et complet.

Phase 2 : Apprendre la taxonomie

Budget : 4 à 8 appels d'outils. Exécutez les appels indépendants en parallèle.

  1. Contexte d'amorçage. Appelez get_amplitude_context (sans projectId) pour trouver l'organisation et les projets ; confirmez le projet cible avec l'utilisateur s'il est ambigu – ne devinez pas. Ensuite, appelez get_workspace_context pour ce projet : notez si la branche principale est protégée (approvalWF: "Required") et si les changements couvrent plusieurs environnements – les deux importent si l'utilisateur opte plus tard pour l'écriture.

  2. Récupérez le schéma d'événements. Appelez get_events et paginez jusqu'à obtenir la liste complète (500 par page). Pour les projets avec de très grands schémas, priorisez les événements qui sont isInSchema: true et liés au domaine produit que la PR touche.

  3. Récupérez les propriétés. Appelez get_properties avec propertyType: "event" (à l'échelle du projet, paginé) pour le vocabulaire partagé des propriétés d'événement, et propertyType: "user" pour les propriétés utilisateur. Pour les 3 à 5 événements existants les plus proches de vos actions candidates, appelez get_properties avec propertyType: "event" et ce eventType pour voir exactement ce qu'ils portent.

  4. Déduisez les conventions. À partir des données réelles – pas de la documentation d'Amplitude – dérivez le guide de style implicite du projet :

    • Casse : Title Case, snake_case, camelCase ?
    • Structure : objet-action (Rapport créé) ou action-objet (Créer un rapport) ? Passé ou présent ?
    • Préfixe : les événements sont-ils espacés par domaine (Intégration : Étape terminée) ?
    • Propriétés partagées : quelles propriétés apparaissent sur la plupart des événements (source, plateforme, point_entrée) ? Elles devraient probablement figurer aussi sur les vôtres.
    • Style d'énumération : comment les valeurs des propriétés sont-elles écrites en termes de casse et de formulation ?

    Énoncez explicitement les conventions déduites dans votre sortie – si vous avez mal déduit, l'utilisateur peut vous corriger avant que le code ne soit écrit.

Phase 3 : Détecter le SDK et le pattern de tracking

  1. Trouvez le SDK. Recherchez dans le codebase les packages Amplitude (@amplitude/analytics-browser, @amplitude/analytics-node, @amplitude/analytics-react-native, @amplitude/unified, SDK mobiles) et les routes indirectes (Segment, RudderStack, un bus d'événements maison).

  2. Trouvez le wrapper. Localisez comment les événements existants sont réellement déclenchés : une fonction d'aide track(), un module de constantes typées, un client généré par Ampli, un hook comme useAnalytics(). Lisez 2 à 3 sites d'appel existants – ils sont votre modèle pour le placement, les imports nommés et le typage.

  3. Si aucun SDK n'existe, arrêtez-vous et informez l'utilisateur. N'ajoutez pas de dépendance, n'initialisez pas de SDK et ne câblez pas de clés API comme effet secondaire d'une demande d'instrumentation – c'est un changement séparé et délibéré. Proposez de le configurer comme une tâche distincte.

Phase 4 : Concevoir les événements

Pour chaque action candidate de la Phase 1, appliquez le test de jugement. Une action mérite un événement uniquement si toutes les conditions suivantes sont réunies :

  • Quelqu'un l'interrogera. Vous pouvez nommer la question à laquelle il répond ("quelle fraction des utilisateurs qui ouvrent la boîte de dialogue d'exportation effectuent un export ?") et qui la poserait (entonnoir, rétention, adoption, exposition d'expérience).
  • Il n'est pas déjà répondable. Non dérivable d'un événement existant plus une propriété, et non quasi-doublon d'un événement existant. Si un événement existant est correct à 80 %, ajoutez-lui une propriété plutôt que de créer un homologue.
  • Il marque un résultat, pas une mécanique. Suivez "l'utilisateur a terminé X" ou "l'utilisateur a tenté X", pas "composant monté", "modale rendue" ou "API a renvoyé 200".

Pour chaque événement retenu, produisez une spécification avant de toucher au code :

ChampRègle
Nom de l'événementCorrespond à la casse, structure et temps déduits. Vérifiez-le par rapport à la liste complète des événements pour les quasi-doublons (insensible à la casse, en ignorant les séparateurs).
PropriétésRéutilisez les propriétés globales existantes par nom exact chaque fois que possible. Les nouvelles propriétés nécessitent un type, une description et une raison pour laquelle une propriété existante ne convient pas.
Point de déclenchementLe moment de succès ou de décision (formulaire soumis et accepté), pas le moment d'intention (bouton cliqué) – sauf si l'écart intention/abandon est lui-même la question.
Statutexistant (déjà dans le plan), existant + nouvelle propriété ou nouveau.

Présentez ce tableau de spécification à l'utilisateur dans votre sortie finale. C'est le contrat entre le code et le plan de tracking.

Ne mettez jamais d'informations personnelles (PII) dans les propriétés – pas d'e-mails, noms, entrées utilisateur en texte libre, jetons ou URL avec identifiants. Utilisez des ID et des énumérations.

Phase 5 : Implémenter dans la PR

  1. Ajoutez les appels de tracking via le wrapper trouvé à la Phase 3, en respectant son style d'import, son typage et sa gestion d'erreurs. Si le projet utilise un fichier de constantes d'événements typé, ajoutez-y vos événements – n'écrivez pas de chaînes littérales directement dans les composants.
  2. Placez les appels aux points de déclenchement de la spécification. Un site d'appel par événement ; si le même événement doit se déclencher à deux endroits, cela signifie généralement que l'événement est trop vague – reconsidérez-le.
  3. Respectez exactement le style du code environnant. L'instrumentation doit donner l'impression d'avoir toujours été là.
  4. Exécutez la vérification de type/lint/tests du projet pour les fichiers touchés et corrigez ce que vous avez cassé.

Phase 6 : Synchroniser le plan de tracking (optionnel)

Après l'implémentation, demandez à l'utilisateur s'il souhaite mettre en scène les nouveaux événements et propriétés dans Amplitude. Ignorez complètement cette phase (et notez que les événements atterriront comme "inattendus" une fois ingérés) s'il refuse. S'il accepte :

  1. Utilisez toujours une branche – même lorsque la branche principale n'est pas protégée, les modifications du plan devraient recevoir la même relecture que la PR de code. Appelez create_branch nommée d'après la branche git ou la PR (par ex. pr-1234-export-flow), avec une description liant à la PR.
  2. Appelez create_events avec branchName pour les nouveaux événements, incluant description pour chacun. Ensuite, create_properties (propertyType: "event", même branchName) pour les nouvelles propriétés – limitées à l'événement via eventType, ou globales uniquement si la propriété est vraiment réutilisable entre événements. Incluez les types, descriptions et enumValues lorsque l'ensemble de valeurs est fermé.
  3. Ne fusionnez ni n'approuvez la branche. Signalez le nom de la branche et laissez la relecture à qui gouverne le plan de tracking, tout comme la PR de code attend son relecteur.

Phase 7 : Rapporter

Terminez par un résumé que l'ingénieur peut coller dans la description de la PR :

  1. Ce qui a été instrumenté – le tableau de spécification de la Phase 4 avec les noms finaux, propriétés, points de déclenchement et statut.
  2. Conventions suivies – une ou deux lignes sur le style de taxonomie déduit, pour que les relecteurs puissent vérifier la déduction.
  3. Ce qui a été délibérément non instrumenté – les actions candidates qui ont échoué au test de jugement, avec la raison en une ligne. C'est ainsi que les relecteurs font confiance au fait que "moins, c'est plus" est un jugement, pas une omission.
  4. Statut du plan de tracking – le nom de la branche Amplitude si l'écriture a eu lieu ; sinon, une note indiquant que les nouveaux événements apparaîtront comme "inattendus" après la première ingestion et pourront être ajoutés au plan à ce moment-là.

Dépannage

La taxonomie est vide ou presque vide

Un nouveau projet n'a pas de conventions à déduire. Proposez une convention explicitement (objet-action, Title Case, passé est un défaut raisonnable – mais demandez si l'équipe a une norme), et dites clairement que vous établissez un précédent plutôt que de le suivre.

Le nom d'événement parfait est pris par un quasi-doublon

Ne créez pas Rapport exporté à côté d'un Export Rapport existant. Utilisez l'événement existant – même si son style est celui que vous changeriez – et signalez l'incohérence dans votre rapport. La cohérence avec la réalité prime sur la cohérence avec le guide de style.

create_events / create_properties retourne 403

L'utilisateur n'a pas la permission "Mettre à jour le plan de tracking". Affichez l'erreur, notez qu'un administrateur peut avoir besoin d'accorder l'accès, et repliez-vous sur le chemin de rapport uniquement – l'instrumentation du code tient toujours.

La branche principale est protégée

get_workspace_context montre approvalWF: "Required". Cela ne change rien – la Phase 6 écrit déjà dans une branche, jamais dans la branche principale.

Monorepo ou plusieurs projets Amplitude

Différents packages peuvent reporter à différents projets (web vs. mobile vs. serveur). Faites correspondre le projet par la source des fichiers dans le diff ; vérifiez get_tracking_plan_sources si ce n'est pas clair. Lorsque c'est vraiment ambigu, demandez – instrumenter avec la mauvaise taxonomie de projet est pire que de demander.

La PR touche à la sémantique d'un événement existant

Si le changement modifie le moment où un événement existant se déclenche ou ce que ses propriétés signifient, c'est un changement cassant pour chaque graphique construit dessus. Signalez-le de manière visible dans le rapport et suggérez de coordonner avec les consommateurs de données avant la fusion.

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.

Skills associés