关于 omnibus-instrument-product-analytics
omnibus-instrument-product-analytics 是一项面向多种框架和语言的 PostHog 产品分析埋点技能。它指导 SDK 配置、事件采集、用户识别和异常追踪,并强调依照框架参考资料进行最小改动。
主要功能
- 01检测项目平台与框架
- 02按需安装并初始化 PostHog SDK
- 03规划并添加产品行为事件
- 04登录和注册时识别用户
- 05为关键流程添加异常捕获
- 06检查代码并运行项目检查
适用场景
- 01为新功能补充产品行为事件
- 02为已有项目安装并初始化 PostHog
- 03追踪登录用户与服务端事件
- 04在关键流程中添加异常捕获
MCP 相关
技能说明了如何使用 env-file-tools MCP 服务检查和设置环境变量;它也会将客户端会话与 distinct ID 传递到服务端代码。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ posthog/ skills --skill omnibus-instrument-product-analytics安装后在 Claude Code 中输入/omnibus-instrument-product-analytics确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/android.mdangular.mdastro.mddjango.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-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.mdEXAMPLE-react-tanstack-router-code-based.mdEXAMPLE-react-tanstack-router-file-based.mdEXAMPLE-ruby-on-rails.mdEXAMPLE-ruby.mdEXAMPLE-sveltekit.md详细介绍
添加 PostHog 产品分析事件
使用此技能添加产品分析事件(capture 调用),以追踪新代码或变更代码中的重要用户行为。在实现功能或审查 PR 后使用此技能,确保捕获关键用户行为。如果尚未安装 PostHog,此技能也涵盖 SDK 的初始设置。支持任何框架或语言。
支持的框架:Next.js、React Router、Nuxt、Vue、TanStack Start、SvelteKit、Astro、Angular、Django、Flask、FastAPI、Laravel、Ruby on Rails、Android、iOS、React Native、Expo 等。
说明
请按以下步骤顺序执行:
STEP 1:分析代码库并检测平台。
- 查找依赖文件(package.json、requirements.txt、Gemfile、composer.json、go.mod 等),以确定框架和语言。
- 查找锁文件(pnpm-lock.yaml、package-lock.json、yarn.lock、bun.lockb),以确定包管理器。
- 检查是否已配置 PostHog。如果 PostHog 已安装并初始化,请跳至 STEP 5。
STEP 2:研究集成方式。(如果已配置 PostHog,则跳过。) 2.1. 找到下方与检测到的框架匹配的参考文件——它是 SDK 初始化、Provider 设置和事件捕获模式的权威依据。现在就阅读该文件。 2.2. 如果没有匹配的参考文件,请参考你的通用知识并进行网络搜索。优先搜索 posthog.com/docs。
STEP 3:安装 PostHog SDK。(如果已配置 PostHog,则跳过。)
- 为检测到的平台添加 PostHog SDK 包。不要手动编辑 package.json——使用包管理器的安装命令。
- 始终将包安装作为后台任务运行。不要等待安装完成;启动安装后立即继续其他工作。
STEP 4:初始化 PostHog。(如果已配置 PostHog,则跳过。)
- 按照框架参考中说明的位置和方式进行初始化。不同框架的差异很大(例如,Next.js 15.3+ 使用 instrumentation-client.ts,Django 使用 AppConfig.ready(),Flask 使用 create_app())。
STEP 5:规划事件跟踪。
- 根据项目的文件列表,选出 10 到 15 个可能具有业务价值的文件来跟踪事件,尤其是转化和流失事件。
- 还要查找与登录相关的文件,以便识别用户,并查找错误处理相关文件。
- 查找现有的
posthog.capture()代码,并记下事件名称的格式。不要重复已有事件;应在其基础上补充。 - 仅跟踪操作,不跟踪页面浏览(页面浏览可自动捕获)。转化漏斗顶部的“已查看”类事件可作为例外。
- 如果项目包含任何可埋点的服务端代码(API 路由、服务端操作、Webhook 处理程序、支付/结账完成处理、身份验证端点),则必须跟踪服务端事件。
STEP 6:实现事件捕获。
- 为每个规划的事件添加
posthog.capture()调用,并附上有用的属性。 - 如果文件中已有其他工具或服务的集成代码,不要覆盖或删除这些代码。将 PostHog 代码添加在其后。
- 不要改变现有文件的基本架构。尽量只做必要且有针对性的改动。
- 尝试写入文件前,必须立即阅读该文件。
STEP 7:识别用户。
- 在登录和注册事件期间,在客户端添加 PostHog
identify()调用。提交时使用登录和注册表单的内容识别用户。 - 如果同时存在前端和后端,请使用
X-POSTHOG-DISTINCT-ID和X-POSTHOG-SESSION-ID请求头将客户端会话和 distinct ID 传递给服务端代码。在服务端确保事件具有匹配的 distinct ID。
STEP 8:添加错误跟踪。
- 在相关文件中添加 PostHog 异常捕获错误跟踪,尤其是在关键用户流程和 API 边界处。
STEP 9:设置环境变量。
- 如果已连接 env-file-tools MCP 服务,请使用 check_env_keys 检查已有的键,然后使用 set_env_values 创建或更新 PostHog API 密钥和主机。
- 在代码中引用这些环境变量,而不要硬编码。
STEP 10:验证并清理。
- 检查项目是否存在错误。查找 package.json 中的类型检查或构建脚本。
- 确保创建的组件确实已被使用。
- 运行 package.json 中找到的任何代码检查或 Prettier 类脚本。
参考文件
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-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.js - 文档references/react-router-v6.md- React router v6 - 文档references/react-router-v7-framework-mode.md- React router v7 framework mode (remix v3) - 文档references/react-router-v7-data-mode.md- React router v7 data mode - 文档references/react-router-v7-declarative-mode.md- React router v7 declarative mode - 文档references/nuxt-js-3-6.md- Nuxt.js (v3.0 to v3.6) - 文档references/nuxt-js.md- Nuxt.js - 文档references/vue-js.md- Vue.js - 文档references/tanstack-start.md- Tanstack start - 文档references/svelte.md- Svelte - 文档references/astro.md- Astro - 文档references/angular.md- Angular - 文档references/django.md- Django - 文档references/flask.md- Flask - 文档references/python.md- Python - 文档references/posthog-python.md- PostHog python SDKreferences/laravel.md- Laravel - 文档references/ruby-on-rails.md- Ruby on rails - 文档references/ruby.md- Ruby - 文档references/android.md- Android - 文档references/ios.md- Ios - 文档references/react-native.md- React native - 文档references/identify-users.md- 识别用户 - 文档
每个框架参考文件都包含特定于 SDK 的安装、初始化和使用模式。请查找与用户技术栈匹配的文件。
核心原则
- 环境变量:始终使用环境变量存储 PostHog 密钥。不要将密钥硬编码。
- 尽量少改动:在现有集成旁添加 PostHog 代码。不要替换或重构现有代码。
- 遵循文档:严格遵循框架参考文件中的初始化和采集模式。