关于 instrument-integration
instrument-integration 是用于在应用中安装并初始化 PostHog SDK 的开发技能,适用于首次接入或审查集成代码。它根据项目框架选择参考实现,并覆盖用户识别、环境配置与集成验证。
主要功能
- 01识别项目框架和包管理器
- 02按框架选择 SDK 安装与初始化方案
- 03配置 Provider 并识别用户
- 04通过环境变量管理项目令牌
- 05检查构建、类型和格式问题
适用场景
- 01在应用中首次接入 PostHog
- 02审查 PostHog SDK 初始化实现
- 03为前后端应用配置用户识别信息传递
MCP 相关
连接 PostHog MCP 服务时,技能可调用 `projects-get` 获取项目令牌及区域信息;未连接或未认证时,会要求提供令牌。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ posthog/ skills --skill instrument-integration安装后在 Claude Code 中输入/instrument-integration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/android.mdangular.mdastro.mdCOMMANDMENTS.mdconfiguration.mddjango.mddotnet.mdelixir.mdEXAMPLE-android.mdEXAMPLE-angular.mdEXAMPLE-astro-hybrid.mdEXAMPLE-astro-ssr.mdEXAMPLE-astro-static.mdEXAMPLE-astro-view-transitions.mdEXAMPLE-django.mdEXAMPLE-expo.mdEXAMPLE-fastapi.mdEXAMPLE-flask.mdEXAMPLE-javascript-node.mdEXAMPLE-javascript-web.mdEXAMPLE-laravel.mdEXAMPLE-next-app-router.mdEXAMPLE-next-pages-router.mdEXAMPLE-nuxt-3-6.mdEXAMPLE-nuxt-4.mdEXAMPLE-php.mdEXAMPLE-python.mdEXAMPLE-react-native.mdEXAMPLE-react-react-router-6.mdEXAMPLE-react-react-router-7-data.md详细介绍
添加 PostHog SDK 集成
使用此技能为应用添加 PostHog SDK。在首次设置 PostHog 时,或审核需要初始化 PostHog 的 PR 时使用。涵盖 SDK 安装、Provider 设置和基本配置。支持任何框架或语言。
支持的框架和语言:Next.js、React、React Router、Vue、Nuxt、TanStack Start、SvelteKit、Astro、Angular、Django、Flask、FastAPI、Laravel、PHP、Ruby on Rails、Go、Elixir、Android、iOS、Swift、Flutter、React Native、Expo、Node.js 和 vanilla JavaScript。
说明
按顺序执行以下步骤:
步骤 1:分析代码库并检测平台。
查找依赖文件(package.json、pubspec.yaml、Podfile、Package.swift、requirements.txt、Gemfile、composer.json、go.mod、mix.exs 等),以确定框架和语言。
查找锁定文件(pnpm-lock.yaml、package-lock.json、yarn.lock、bun.lockb、go.sum、pubspec.lock、Podfile.lock、Package.resolved、mix.lock),以确定包管理器。
- 检查是否已有 PostHog 设置。如果已安装并初始化 PostHog,请勿修改其代码。告知用户并跳转至验证步骤。
步骤 2:研究集成方式。 2.1. 在下方找到与检测到的框架匹配的参考文件——它是 SDK 初始化、Provider 设置和配置模式的权威依据。现在阅读该文件。 2.2. 如果没有匹配的参考文件,请使用通用知识并进行网络搜索。优先搜索 posthog.com/docs。
步骤 3:安装 PostHog SDK。
- 为检测到的平台添加 PostHog SDK 包。请勿手动编辑 package.json——使用包管理器的安装命令。
步骤 4:初始化 PostHog。
- 按照框架参考,确定初始化的位置和方式。不同框架之间差异很大(例如,Next.js 15.3+ 使用 instrumentation-client.ts,Django 使用 AppConfig.ready(),Flask 使用 create_app())。
- 如果框架需要,请设置 PostHog Provider/包装组件。
步骤 5:识别用户。
- 在登录和注册事件期间,在客户端添加 PostHog
identify()调用。 - 如果同时存在前端和后端,请使用
X-POSTHOG-DISTINCT-ID和X-POSTHOG-SESSION-ID请求头,将客户端会话和 distinct ID 传递给服务端代码。
步骤 6:设置环境变量。
- 检查项目是否已配置 PostHog 环境变量(例如,在
.env、.env.local或框架特定的环境文件中)。如果已有有效值,请跳过此步骤。 - 如果缺少 PostHog 项目令牌,请使用 PostHog MCP 服务的
projects-get工具获取项目的api_token。如果返回了多个项目,请询问用户要使用哪个项目。如果 MCP 服务未连接或未通过身份验证,请改为向用户索取 PostHog 项目令牌。 - 对于 PostHog 主机 URL:检查
projects-getMCP 响应中的region字段——US对应https://us.i.posthog.com,EU对应https://eu.i.posthog.com。如果 MCP 响应或现有项目配置中没有区域信息,请询问用户:“您使用的是 PostHog US Cloud 还是 EU Cloud?”不要假定使用 US Cloud。 - 按照框架的命名约定,将这些值写入适当的环境文件(例如,Next.js 使用
.env.local,其他框架使用.env)。 - 在代码中引用这些环境变量,不要将其硬编码。
步骤 7:验证并清理。
- 检查项目是否存在错误。查找 package.json 中的类型检查或构建脚本。
- 确保创建的组件确实已被使用。
- 运行 package.json 中找到的任何 linter 或类似 prettier 的脚本,但仅限于本次会话中编辑或创建的文件。绝不要对整个项目代码库运行格式化或 lint。
参考文件
references/EXAMPLE-next-app-router.md- next-app-router 示例项目代码references/EXAMPLE-next-pages-router.md- next-pages-router 示例项目代码references/EXAMPLE-react-react-router-6.md- react-react-router-6 示例项目代码references/EXAMPLE-react-react-router-7-framework.md- react-react-router-7-framework 示例项目代码references/EXAMPLE-react-react-router-7-data.md- react-react-router-7-data 示例项目代码references/EXAMPLE-react-react-router-7-declarative.md- react-react-router-7-declarative 示例项目代码references/EXAMPLE-react-vite.md- react-vite 示例项目代码references/EXAMPLE-nuxt-3-6.md- nuxt-3-6 示例项目代码references/EXAMPLE-nuxt-4.md- nuxt-4 示例项目代码references/EXAMPLE-vue-3.md- vue-3 示例项目代码references/EXAMPLE-react-tanstack-router-file-based.md- react-tanstack-router-file-based 示例项目代码references/EXAMPLE-react-tanstack-router-code-based.md- react-tanstack-router-code-based 示例项目代码references/EXAMPLE-tanstack-start.md- tanstack-start 示例项目代码references/EXAMPLE-sveltekit.md- sveltekit 示例项目代码references/EXAMPLE-astro-static.md- astro-static 示例项目代码references/EXAMPLE-astro-view-transitions.md- astro-view-transitions 示例项目代码references/EXAMPLE-astro-ssr.md- astro-ssr 示例项目代码references/EXAMPLE-astro-hybrid.md- astro-hybrid 示例项目代码references/EXAMPLE-angular.md- angular 示例项目代码references/EXAMPLE-javascript-node.md- javascript-node 示例项目代码references/EXAMPLE-javascript-web.md- javascript-web 示例项目代码references/EXAMPLE-django.md- django 示例项目代码references/EXAMPLE-flask.md- flask 示例项目代码references/EXAMPLE-fastapi.md- fastapi 示例项目代码references/EXAMPLE-python.md- python 示例项目代码references/EXAMPLE-laravel.md- laravel 示例项目代码references/EXAMPLE-php.md- php 示例项目代码references/EXAMPLE-ruby-on-rails.md- ruby-on-rails 示例项目代码references/EXAMPLE-ruby.md- ruby 示例项目代码references/EXAMPLE-android.md- android 示例项目代码references/EXAMPLE-swift.md- swift 示例项目代码references/EXAMPLE-react-native.md- react-native 示例项目代码references/EXAMPLE-expo.md- expo 示例项目代码references/next-js.md- Next.jsreferences/react.md- Reactreferences/react-router-v6.md- React router v6references/react-router-v7-framework-mode.md- React router v7 框架模式(remix v3)references/react-router-v7-data-mode.md- React router v7 数据模式references/react-router-v7-declarative-mode.md- React router v7 声明式模式references/nuxt-js-3-6.md- Nuxt.js(v3.0 到 v3.6)references/nuxt-js.md- Nuxt.jsreferences/vue-js.md- Vue.jsreferences/tanstack-start.md- Tanstack startreferences/svelte.md- Sveltereferences/astro.md- Astroreferences/angular.md- Angularreferences/js.md- JavaScript 网页references/posthog-js.md- PostHog JavaScript 网页 SDKreferences/node.md- Node.jsreferences/posthog-node.md- PostHog Node.js SDKreferences/django.md- Djangoreferences/flask.md- Flaskreferences/python.md- Pythonreferences/posthog-python.md- PostHog Python SDKreferences/dotnet.md- .netreferences/elixir.md- Elixirreferences/go.md- Goreferences/laravel.md- Laravelreferences/php.md- Phpreferences/ruby-on-rails.md- Ruby on railsreferences/ruby.md- Rubyreferences/android.md- Androidreferences/ios.md- Iosreferences/usage.md- Ios SDK 用法references/configuration.md- Ios SDK 配置references/flutter.md- Flutterreferences/react-native.md- React nativereferences/identify-users.md- 识别用户references/COMMANDMENTS.md- 集成必须遵循的框架特定规则 每个框架参考都包含特定于 SDK 的安装、初始化和使用模式。请找到与用户技术栈匹配的参考。
核心原则
- 环境变量:始终使用环境变量存储 PostHog 密钥。切勿将其硬编码。
- 最小改动:在现有集成旁添加 PostHog 代码。不要替换或重构现有代码。
- 遵循示例:实现应尽可能遵循示例项目的模式。
- 分析约定:将事件名称、属性名称和功能标志键视为分析约定的一部分。复用项目中已有的名称和模式。引入新名称时,应确保清晰、描述性强,并与现有约定保持一致。