About installing-posthog-in-a-codebase
A skill for installing PostHog in a codebase the agent can inspect and edit. It uses framework-specific PostHog documentation to guide SDK selection, configuration, initialization, user identification, and verification.
Key features
- 01Detect the app framework from project files
- 02Consult framework-specific SDK documentation
- 03Configure tokens and hosts through environment variables
- 04Initialize SDKs and identify users
- 05Verify changes with project checks and event data
Use cases
- 01Add PostHog to a web application
- 02Set up client and server SDKs
- 03Check event delivery after installation
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ posthog/ ai-plugin --skill installing-posthog-in-a-codebaseAfter installing, type/installing-posthog-in-a-codebasein Claude Code to confirm it loaded.
Details
From the project READMEInstalling PostHog in a codebase
Use this skill when you can read and edit the user's code.
If you can't access their code, as is common in ChatGPT on the web or Claude on the web, use installing-posthog-from-chat.
PostHog's docs are the source of truth for each SDK's setup. Init options, file locations and recommended settings change between SDK releases, so read the docs page for the framework before you write code, and follow it rather than what you remember.
1. Find the framework and read its docs
Detect the framework from the manifest files (package.json, pyproject.toml, requirements.txt, Gemfile, composer.json, go.mod, and so on) and the app's entry points.
A web app with its own backend usually needs a client SDK and a server SDK, so read both pages.
For a framework that isn't listed, call docs-search with the framework name.
2. Install the latest SDK
Add each package with the project's own package manager and no version, for example npm install posthog-js, pnpm add posthog-node, uv add posthog or bundle add posthog-ruby.
That resolves the newest release.
Don't type a version into the manifest from memory, because that pins an old release.
In a monorepo, install into the package that runs the app, not the workspace root.
3. Get the token and host
Call project-get without an ID.
Use api_token as the project token and api_host as the SDK's host option.
- Read both from environment variables in code, using the names the docs page uses (for example
NEXT_PUBLIC_POSTHOG_PROJECT_TOKENandNEXT_PUBLIC_POSTHOG_HOST). - Write the real values to the env file the framework loads, such as
.env.localor.env. If the project has an example env file, add the variable names there with empty values. - Never hard-code the token or the host in source files, and never use them as fallback defaults in code.
4. Initialize as the docs show
- Initialize the SDK once, in the place the docs page names. Don't add a second initialization elsewhere.
- For
posthog-js, setdefaultsto the date the docs page shows. It selects the newest set of recommended settings, so don't take a date from memory. - For a backend SDK in a long-running server, create one client for the process, reuse it, and shut it down when the process exits. Don't create a client per request.
- In serverless or edge handlers (for example Next.js route handlers on Vercel, or AWS Lambda), the runtime can freeze as soon as the response is sent, so queued events are lost. Flush before the handler returns: await
flush()on a reused client, or use the platform'swaitUntil, as the docs page describes. - For a server-rendered app (Django, Rails, Laravel and similar), add the server SDK as well as the browser snippet.
5. Identify users
If the app has login, call identify after login with a stable user ID from the auth system, such as the database ID, not an email address or display name.
Call reset() on logout.
Send server-side events with the same distinct ID, so client and server events land on the same person.
6. Verify
Run the project's build, type check or tests, and fix anything your change broke.
If you can run the app, load a page and check that events arrive with read-data-schema or execute-sql.
Tell the user which environment variables to add in their hosting provider before they deploy.