Ajouter l'intégration du SDK PostHog
Utilisez cette skill pour ajouter le SDK PostHog à une application. Utilisez-la lors de la configuration de PostHog pour la première fois ou lors de l'examen de PRs nécessitant l'initialisation de PostHog. Couvre l'installation du SDK, la configuration du provider et la configuration de base. Supporte n'importe quel framework ou langage.
Frameworks supportés : Next.js, React, React Router, Vue, Nuxt, TanStack Start, SvelteKit, Astro, Angular, Django, Flask, FastAPI, Laravel, Ruby on Rails, Android, Swift, React Native, Expo, Node.js, et vanilla JavaScript.
Instructions
Suivez ces étapes DANS L'ORDRE :
ÉTAPE 1 : Analysez la base de code et détectez la plateforme.
- Recherchez les fichiers de dépendances (package.json, requirements.txt, Gemfile, composer.json, go.mod, etc.) pour déterminer le framework et le langage.
- Recherchez les lockfiles (pnpm-lock.yaml, package-lock.json, yarn.lock, bun.lockb) pour déterminer le gestionnaire de paquets.
- Vérifiez s'il existe une configuration PostHog existante. Si PostHog est déjà installé et initialisé, ne modifiez pas son code. Informez l'utilisateur et passez à la vérification.
ÉTAPE 2 : Recherchez l'intégration. 2.1. Trouvez le fichier de référence ci-dessous qui correspond au framework détecté — c'est la source de vérité pour l'initialisation du SDK, la configuration du provider et les patterns de configuration. Lisez-le maintenant. 2.2. Si aucune référence ne correspond, revenez à vos connaissances générales et effectuez une recherche sur le web. Utilisez posthog.com/docs comme source de recherche principale.
ÉTAPE 3 : Installez le SDK PostHog.
- Ajoutez le package du SDK PostHog pour la plateforme détectée. N'éditez pas manuellement package.json — utilisez la commande d'installation du gestionnaire de paquets.
- Installez toujours les paquets en tant que tâche de fond. Ne attendez pas la fin ; poursuivez immédiatement avec les autres travaux après le démarrage de l'installation.
ÉTAPE 4 : Initialisez PostHog.
- Suivez la référence du framework pour déterminer où et comment initialiser. Cela varie considérablement selon le framework (par ex. instrumentation-client.ts pour Next.js 15.3+, AppConfig.ready() pour Django, create_app() pour Flask).
- Configurez le composant wrapper/provider PostHog si le framework l'exige.
ÉTAPE 5 : Identifiez les utilisateurs.
- Ajoutez les appels PostHog
identify()côté client lors des événements de connexion et d'inscription. - Si le frontend et le backend existent tous deux, transmettez la session côté client et l'ID distinct en utilisant les headers
X-POSTHOG-DISTINCT-IDetX-POSTHOG-SESSION-IDau code côté serveur.
ÉTAPE 6 : Configurez les variables d'environnement.
- Vérifiez si le projet a déjà des variables d'environnement PostHog configurées (par ex. dans
.env,.env.localou des fichiers env spécifiques au framework). Si des valeurs valides existent déjà, ignorez cette étape. - Si la clé API PostHog est manquante, utilisez le tool
projects-getdu serveur MCP PostHog pour récupérer l'api_tokendu projet. Si plusieurs projets sont retournés, demandez à l'utilisateur quel projet utiliser. Si le serveur MCP n'est pas connecté ou non authentifié, demandez à l'utilisateur sa clé API PostHog à la place. - Pour l'URL de l'hôte PostHog, utilisez
https://us.i.posthog.compour US Cloud ouhttps://eu.i.posthog.compour EU Cloud. - Écrivez ces valeurs dans le fichier env approprié (par ex.
.env.localpour Next.js,.envpour les autres) en utilisant la convention de nommage du framework. - Référencez ces variables d'environnement dans le code au lieu de les coder en dur.
ÉTAPE 7 : Vérifiez et nettoyez.
- Vérifiez le projet pour les erreurs. Recherchez les scripts de vérification de type ou de construction dans package.json.
- Assurez-vous que tous les composants créés sont réellement utilisés.
- Exécutez tout script linter ou prettier trouvé dans le package.json.
Fichiers de référence
references/EXAMPLE-next-app-router.md- code du projet exemple next-app-routerreferences/EXAMPLE-next-pages-router.md- code du projet exemple next-pages-routerreferences/EXAMPLE-react-react-router-6.md- code du projet exemple react-react-router-6references/EXAMPLE-react-react-router-7-framework.md- code du projet exemple react-react-router-7-frameworkreferences/EXAMPLE-react-react-router-7-data.md- code du projet exemple react-react-router-7-datareferences/EXAMPLE-react-react-router-7-declarative.md- code du projet exemple react-react-router-7-declarativereferences/EXAMPLE-react-vite.md- code du projet exemple react-vitereferences/EXAMPLE-nuxt-3-6.md- code du projet exemple nuxt-3-6references/EXAMPLE-nuxt-4.md- code du projet exemple nuxt-4references/EXAMPLE-vue-3.md- code du projet exemple vue-3references/EXAMPLE-react-tanstack-router-file-based.md- code du projet exemple react-tanstack-router-file-basedreferences/EXAMPLE-react-tanstack-router-code-based.md- code du projet exemple react-tanstack-router-code-basedreferences/EXAMPLE-tanstack-start.md- code du projet exemple tanstack-startreferences/EXAMPLE-sveltekit.md- code du projet exemple sveltekitreferences/EXAMPLE-astro-static.md- code du projet exemple astro-staticreferences/EXAMPLE-astro-view-transitions.md- code du projet exemple astro-view-transitionsreferences/EXAMPLE-astro-ssr.md- code du projet exemple astro-ssrreferences/EXAMPLE-astro-hybrid.md- code du projet exemple astro-hybridreferences/EXAMPLE-angular.md- code du projet exemple angularreferences/EXAMPLE-javascript-node.md- code du projet exemple javascript-nodereferences/EXAMPLE-javascript-web.md- code du projet exemple javascript-webreferences/EXAMPLE-django.md- code du projet exemple djangoreferences/EXAMPLE-flask.md- code du projet exemple flaskreferences/EXAMPLE-fastapi.md- code du projet exemple fastapireferences/EXAMPLE-python.md- code du projet exemple pythonreferences/EXAMPLE-laravel.md- code du projet exemple laravelreferences/EXAMPLE-ruby-on-rails.md- code du projet exemple ruby-on-railsreferences/EXAMPLE-ruby.md- code du projet exemple rubyreferences/EXAMPLE-android.md- code du projet exemple androidreferences/EXAMPLE-swift.md- code du projet exemple swiftreferences/EXAMPLE-react-native.md- code du projet exemple react-nativereferences/EXAMPLE-expo.md- code du projet exemple exporeferences/next-js.md- Next.js - docsreferences/react.md- React - docsreferences/react-router-v6.md- React router v6 - docsreferences/react-router-v7-framework-mode.md- React router v7 framework mode (remix v3) - docsreferences/react-router-v7-data-mode.md- React router v7 data mode - docsreferences/react-router-v7-declarative-mode.md- React router v7 declarative mode - docsreferences/nuxt-js-3-6.md- Nuxt.js (v3.0 to v3.6) - docsreferences/nuxt-js.md- Nuxt.js - docsreferences/vue-js.md- Vue.js - docsreferences/tanstack-start.md- Tanstack start - docsreferences/svelte.md- Svelte - docsreferences/astro.md- Astro - docsreferences/angular.md- Angular - docsreferences/js.md- JavaScript web - docsreferences/posthog-js.md- PostHog JavaScript web SDKreferences/node.md- Node.js - docsreferences/posthog-node.md- PostHog Node.js SDKreferences/django.md- Django - docsreferences/flask.md- Flask - docsreferences/python.md- Python - docsreferences/posthog-python.md- PostHog python SDKreferences/laravel.md- Laravel - docsreferences/ruby-on-rails.md- Ruby on rails - docsreferences/ruby.md- Ruby - docsreferences/android.md- Android - docsreferences/ios.md- Ios - docsreferences/react-native.md- React native - docsreferences/identify-users.md- Identify users - docs
Chaque référence de framework contient les patterns d'installation, d'initialisation et d'utilisation spécifiques au SDK. Trouvez celle qui correspond à la stack de l'utilisateur.
Principes clés
- Variables d'environnement : Utilisez toujours les variables d'environnement pour les clés PostHog. Ne les codez jamais en dur.
- Changements minimaux : Ajoutez le code PostHog à côté des intégrations existantes. Ne remplacez ou ne restructurez pas le code existant.
- Correspondance avec l'exemple : Votre implémentation doit suivre les patterns du projet exemple aussi fidèlement que possible.
- Contrat analytics : Traitez les noms d'événements, les noms de propriétés et les clés de feature flags comme faisant partie d'un contrat analytics. Réutilisez les noms et patterns existants trouvés dans le projet. Lorsque vous en introduisez de nouveaux, rendez-les clairs, descriptifs et cohérents avec les conventions existantes.