关于 instrument-product-analytics
该 skill 指导开发者为多种框架和语言的应用添加 PostHog 产品分析,涵盖 SDK 配置、事件规划、用户识别、服务端跟踪和验证。
主要功能
- 01识别框架与包管理器
- 02安装并初始化 PostHog SDK
- 03规划并添加行为事件
- 04识别用户并捕获异常
- 05配置环境变量并验证
适用场景
- 01在功能实现后为关键操作添加跟踪
- 02为尚未配置的项目接入 PostHog
- 03在 API 或支付边界跟踪服务端事件
- 04在 PR 审查中检查分析覆盖情况
MCP 相关
配置需要项目令牌时,skill 会使用 PostHog MCP 服务的 `projects-get` 工具获取令牌,并根据返回的区域确定主机 URL。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ posthog/ skills --skill instrument-product-analytics安装后在 Claude Code 中输入/instrument-product-analytics确认已加载。
包含的文件
除 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-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.mdEXAMPLE-react-react-router-7-declarative.mdEXAMPLE-react-react-router-7-framework.md详细介绍
添加 PostHog 产品分析事件
使用此技能添加产品分析事件(capture 调用),以追踪新代码或变更代码中的重要用户操作。可在实现功能或审查 PR 后使用,确保记录关键用户行为。如果尚未安装 PostHog,此技能还涵盖初始 SDK 设置。支持任何框架或语言。
支持的框架和语言:Next.js、React Router、Nuxt、Vue、TanStack Start、SvelteKit、Astro、Angular、Django、Flask、FastAPI、Laravel、PHP、Ruby on Rails、Go、Elixir、Android、iOS、Flutter、React Native、Expo 等。
说明
按以下步骤依次执行:
步骤 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,跳到步骤 5。
步骤 2:研究集成方式。(如果已配置 PostHog,则跳过。) 2.1. 找到下方与检测到的框架匹配的参考文件——它是 SDK 初始化、Provider 设置和事件捕获模式的权威依据。现在阅读该文件。 2.2. 如果没有匹配的参考文件,请使用通用知识并进行网络搜索。优先在 posthog.com/docs 中搜索。
步骤 3:安装 PostHog SDK。(如果已配置 PostHog,则跳过。)
- 为检测到的平台添加 PostHog SDK 包。不要手动编辑 package.json——请使用包管理器的安装命令。
步骤 4:初始化 PostHog。(如果已配置 PostHog,则跳过。)
- 按照框架参考文件中的说明,确定初始化位置和方式。不同框架之间差异很大(例如,Next.js 15.3+ 使用 instrumentation-client.ts,Django 使用 AppConfig.ready(),Flask 使用 create_app())。
步骤 5:规划事件追踪。
- 根据项目文件列表,选出 10 到 15 个可能具有业务价值、适合追踪事件的文件,尤其关注转化和流失事件。
- 同时查找与登录相关的文件,这些文件可用于识别用户,以及与错误处理相关的文件。
- 查找现有的
posthog.capture()代码,并记下事件名称的格式。不要重复添加已有事件;应在其基础上补充。 - 只追踪操作,不追踪页面浏览(页面浏览可自动捕获)。但在转化漏斗起点,可以添加“已查看”类型事件。
- 如果项目包含任何可插桩的服务端代码(API 路由、服务端操作、Webhook 处理程序、支付/结账完成流程、身份验证端点),则必须添加服务端事件。
步骤 6:实现事件捕获。
- 为每个计划添加的事件,调用
posthog.capture()并附上有用的属性。 - 如果文件中已有用于其他工具或服务的集成代码,不要覆盖或移除此代码。请在其下方添加 PostHog 代码。
- 不要改变现有文件的基本架构。添加内容应尽量精简且有针对性。
- 写入文件前,必须立即读取该文件。
步骤 7:识别用户。
- 在登录和注册事件期间,在客户端添加 PostHog
identify()调用。提交时使用登录和注册表单的内容来识别用户。 - 如果同时存在前端和后端,请使用
X-POSTHOG-DISTINCT-ID和X-POSTHOG-SESSION-ID标头,将客户端会话和 distinct ID 传递给服务端代码。在服务端确保事件使用匹配的 distinct ID。
步骤 8:添加错误追踪。
- 在相关文件中添加 PostHog 异常捕获错误追踪,尤其是在关键用户流程和 API 边界处。 步骤 9:设置环境变量。
- 检查项目是否已配置 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。 - 使用框架的命名约定,将这些值写入适当的环境变量文件。
- 在代码中引用这些环境变量,而不是将其硬编码。
步骤 10:验证并清理。
- 检查项目是否存在错误。查看
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-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-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-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/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 代码。不要替换或重构现有代码。
- 遵循文档:严格按照框架参考中的初始化和捕获模式操作。