Analytics
Nexus-JPF/note-companion
When the user wants to set up, improve, or audit analytics tracking and measurement.
Guides agents through experiment creation: reading the project's setup with experiment-setup-context, defining the hypothesis, configuring rollout and bucketing, setting up analytics and running…
$ npx skills add PostHog/posthog-foss --skill creating-experiments -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install PostHog/posthog-foss creating-experiments --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/PostHog/posthog-foss.git skills-src && mkdir -p .claude/skills && cp -r skills-src/products/experiments/skills/creating-experiments .claude/skills/creating-experiments && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "creating-experiments" agent skill from https://github.com/PostHog/posthog-foss/tree/master/products/experiments/skills/creating-experiments into .claude/skills/creating-experiments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-experiments", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/PostHog/posthog-foss/tree/master/products/experiments/skills/creating-experimentsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add PostHog/posthog-foss --skill creating-experiments -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install PostHog/posthog-foss creating-experiments --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PostHog/posthog-foss.git skills-src && mkdir -p .agents/skills && cp -r skills-src/products/experiments/skills/creating-experiments .agents/skills/creating-experiments && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "creating-experiments" agent skill from https://github.com/PostHog/posthog-foss/tree/master/products/experiments/skills/creating-experiments into .agents/skills/creating-experiments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-experiments", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add PostHog/posthog-foss --skill creating-experiments -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install PostHog/posthog-foss creating-experiments --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PostHog/posthog-foss.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/products/experiments/skills/creating-experiments .cursor/skills/creating-experiments && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "creating-experiments" agent skill from https://github.com/PostHog/posthog-foss/tree/master/products/experiments/skills/creating-experiments into .cursor/skills/creating-experiments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-experiments", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/PostHog/posthog-foss.git --path products/experiments/skills/creating-experiments--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add PostHog/posthog-foss --skill creating-experiments -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install PostHog/posthog-foss creating-experiments --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PostHog/posthog-foss.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/products/experiments/skills/creating-experiments .gemini/skills/creating-experiments && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "creating-experiments" agent skill from https://github.com/PostHog/posthog-foss/tree/master/products/experiments/skills/creating-experiments into .gemini/skills/creating-experiments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-experiments", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install PostHog/posthog-foss creating-experimentsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add PostHog/posthog-foss --skill creating-experiments -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/PostHog/posthog-foss.git skills-src && mkdir -p .github/skills && cp -r skills-src/products/experiments/skills/creating-experiments .github/skills/creating-experiments && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "creating-experiments" agent skill from https://github.com/PostHog/posthog-foss/tree/master/products/experiments/skills/creating-experiments into .github/skills/creating-experiments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-experiments", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add PostHog/posthog-foss --skill creating-experiments -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install PostHog/posthog-foss creating-experiments --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/PostHog/posthog-foss.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/products/experiments/skills/creating-experiments .opencode/skills/creating-experiments && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "creating-experiments" agent skill from https://github.com/PostHog/posthog-foss/tree/master/products/experiments/skills/creating-experiments into .opencode/skills/creating-experiments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-experiments", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
creating-experimentsGuides agents through experiment creation: reading the project's setup with experiment-setup-context, defining the hypothesis, configuring rollout and bucketing, setting up analytics and running…
Creating Experiments is an agent skill from PostHog/posthog-foss, published by the product's own GitHub organization. Guides agents through experiment creation: reading the project's setup with experiment-setup-context, defining the hypothesis, configuring rollout and bucketing, setting up analytics and running time, and reporting which choices are guesses. Delegates rollout decisions to configuring-experiment-rollout and metric setup to configuring-experiment-analytics. TRIGGER when: user asks to create a new experiment or A/B test, OR when you are about to call experiment-create. DO NOT TRIGGER when: user is updating an…
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/setup-decisions.md`).
It sits in Marketing & SEO, covering A/B testing. The repository describes itself as: PostHog FOSS is a read-only mirror of PostHog, with all proprietary code removed. NOTE: This repo is synced automatically from the main PostHog repo. Please raise any issues and… The licence is MIT.
Read from SKILL.md and the folder at commit 2c48221. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Creating Experiments loads about 2.7k tokens when it runs, and up to ~7.6k if it reads all its reference files. Until then it costs about 151 tokens; SKILL.md has 1,347 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from PostHog/posthog-foss at commit 2c48221, republished under its MIT licence (© PostHog). 1,347 words, ~2,660 tokens.
.claude/skills/creating-experiments/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.This skill walks through creating a new A/B test experiment: read the project, then the 3-step flow, then report the draft.
Create the experiment as a draft quickly, then iterate on metrics and configuration. The user gets a tangible draft immediately and can refine it. Choose settings from the project's facts rather than asking, and say which choices are guesses. Bucketing is the exception: the facts cannot decide it, so ask before you create the experiment.
The right bucketing, metric and running time depend on the project: who sees the page, which SDKs evaluate the flag, how often the metric event happens. Read that before configuring anything.
From the request, infer the target (the event that marks someone reaching the change, usually $pageview for a page) and a candidate metric event.
Confirm both exist with read-data-schema. Don't ask the user for event names you can find.
For a page, read event_property_values for $host and $pathname on the target event as well.
The response samples the values rather than listing them all, so read it for the shape the project records (a trailing slash, a www. prefix, the casing) rather than as proof that a value is absent.
An exact filter has to carry that shape: /pricing matches nothing where every pageview says /pricing/, and example.com matches nothing where the host is www.example.com.
If the experiment-setup-context tool is available, call it once with target_event and metric_event.
For a web surface, add target_properties with an exact $host.
Add an exact $pathname as well when the surface is one page.
target_url_contains is a substring match on $current_url.
A bare domain matches any host that contains it, notexample.com included, and a homepage path matches every page under it.
Both overstate the traffic and the exposure rate.
For a surface that spans several pages, keep the exact $host and put only the path fragment in target_url_contains.
Add metric_properties in the same call when the candidate metric counts only some occurrences of its event.
Pass previous_experiments_limit: 5. Five experiments are enough to read a precedent, and the default of 10 roughly doubles the response for no more signal.
If the tool is not available, continue without it and treat every choice below as a best guess. Never call a tool you can't see.
Each filter needs a type of event or person, a key, an operator and a value.
The call rejects the flag_evaluates_to operator with a 400 that names it.
For the homepage of one domain:
{
"target_event": "$pageview",
"target_properties": [
{ "key": "$host", "type": "event", "operator": "exact", "value": ["www.example.com"] },
{ "key": "$pathname", "type": "event", "operator": "exact", "value": ["/"] }
],
"metric_event": "your_conversion_event",
"previous_experiments_limit": 5
}Apply references/setup-decisions.md to the result. It maps each fact to a choice (bucketing, where the flag is evaluated, exposure, primary metric, running time, precedent) and to a tier for the summary.
Carry those choices into steps 1 to 3.
Ask the user only when a choice is "not decided" and the user is in the conversation. If the user said they are away, or asked for a draft without questions, decide with the defaults and list the open points in the report.
Gather these before calling experiment-create:
description)experiment-create cannot set (see the recipe in configuring-experiment-rollout)."product". The "web" value is reserved for no-code experiments configured visually with the PostHog
toolbar in a browser; it cannot be meaningfully driven via MCP. If a user asks for a
no-code/toolbar experiment, point them to the PostHog UI instead of creating one here.)If the user gives enough context to infer these, don't ask — just proceed.
This is about rollout configuration.
Before asking any rollout question, load configuring-experiment-rollout. The disambiguation wording, recommendations, and post-answer branches live there — do not formulate rollout questions yourself, and do not assume an example you remember covers the user's path.
Key decision points (covered in detail by configuring-experiment-rollout):
If the user doesn't mention rollout specifics, use defaults: 50/50 control/test, 100% rollout.
This is about analytics and metrics. Load the configuring-experiment-analytics skill for guidance.
That skill's first step checks for an existing shared metric to reuse before building a new one —
don't duplicate a metric the project already has set up.
Do NOT configure metrics on creation. Metrics are not passed to experiment-create — they are added
afterwards via experiment-update. This keeps the creation call lightweight.
When the user specifies metrics upfront, acknowledge them and add them immediately after creation. When they don't, infer the primary metric from the hypothesis (step 0) and add it after creation; say it was inferred.
If step 0 produced a running-time estimate, pass it to experiment-create as running_time_calculation so the plan is stored on the experiment.
Call experiment-create with:
{
"name": "Descriptive experiment name",
"feature_flag_key": "kebab-case-key",
"description": "Hypothesis: [what you expect to happen]",
"feature_flag": {
"filters": {
"multivariate": {
"variants": [
{ "key": "control", "name": "Control", "rollout_percentage": 50 },
{ "key": "test", "name": "Test", "rollout_percentage": 50 }
]
},
"groups": [{ "properties": [], "rollout_percentage": 100 }]
}
}
}Flag config goes in the feature_flag object, in the flag's own filters shape (not the deprecated parameters keys).
Two different percentages live in there, do NOT mix them up:
filters.multivariate.variants[].rollout_percentage is how users inside the experiment are split across variants (must sum to 100, recommended to have an even split).filters.groups[0].rollout_percentage is the overall gate: what fraction of all users enter the experiment at all (0-100, defaults to 100).Key details:
"control" when present, else the first variant (override with stats_config.baseline_variant_key). Convention: key the baseline "control" unless the user asks for specific keys.filters.groups[0].rollout_percentage defaults to 100 if omitted.ensure_experience_continuity: default to user-id bucketing and leave ensure_experience_continuity out, so the team's persistence default applies. Report the surface's identity mix from step 0 and what device-id bucketing or persistence would each need, then let the user choose before this call. Device-id bucketing needs the flag created first, so the choice cannot wait until the draft exists. The identity mix does not decide it: see "Bucketing and persistence across login" in configuring-experiment-rollout.stats_config if the user asks for a different method.Report the draft in three groups, so the user can review it quickly:
Also say what you could not read: a missing tool, or a section whose status was not ok.
Always show the experiment URL. The experiment-create response includes _posthogUrl — always display this link so the user can view and configure the experiment in the UI.
Remind the user to implement the feature flag in code. Link to the experiment page and say "implement the flag as shown here" — the experiment detail page shows implementation snippets for the user's SDK.
Guide through metrics if not yet configured — load the configuring-experiment-analytics skill.
Launch only when the user asks for it — creation ends at a draft. A launch turns the feature flag on for real users, so never call experiment-launch unprompted.
configuring-experiment-rollout — variant splits, rollout percentage, and who sees the testconfiguring-experiment-analytics — exposure criteria and primary/secondary metricsmanaging-experiment-lifecycle — launch, pause, ship, and end once the experiment exists© PostHog, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in products/experiments/skills/creating-experiments of PostHog/posthog-foss.
Open the folder on GitHubat commit 2c48221
Creating Experiments next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Creating Experiments this skillPostHog/posthog-foss | 721 | — | ~2.7k | Automated safety check: Pass | MIT | |
| AnalyticsNexus-JPF/note-companion | 869 | 6 repos | ~2.2k | Automated safety check: Pass | MIT | |
| Ab Test Setupfreekmurze/dotfiles | 1k | 15 repos | ~1.8k | Automated safety check: Pass | None | |
| Ad Test Designeraaron-he-zhu/aaron-marketing-skills | 2.9k | 2 repos | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Ab TestingCesarjoquin/Marketing-Skills | 199 | 2 repos | ~2.8k | Automated safety check: Pass | MIT | |
| Meta Tags Optimizernowork-studio/notfair-plugin | 3.9k | 1 repos | ~2.7k | Automated safety check: Pass | MIT |
Nexus-JPF/note-companion
When the user wants to set up, improve, or audit analytics tracking and measurement.
freekmurze/dotfiles
When the user wants to plan, design, or implement an A/B test or experiment.
aaron-he-zhu/aaron-marketing-skills
A skill your agent uses when the user asks to "design an A/B test", "set up a creative/landing test", "run an incrementality test", or "is this result statistically and practically material?"…
Cesarjoquin/Marketing-Skills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program.
nowork-studio/notfair-plugin
Writes and improves title tags, meta descriptions, Open Graph and Twitter card tags for click-through, with character counts and A/B test variants.
irinabuht12-oss/marketing-skills
Statistical significance calculator for A/B test results with sample size requirements, segment breakdowns, and hypothesis generation.
PostHog/posthog-foss
Author useful, low-noise log alerts on services in a PostHog project.
PostHog/posthog-foss
Operating procedure for the conflict-autoresolver agent: sweep open PostHog/posthog PRs that conflict with master, resolve the trivial conflicts (generated artifacts deterministically, source…
PostHog/posthog-foss
Help users debug PostHog Error Tracking stack-trace symbolication for any supported platform — JavaScript/TypeScript web, React Native (Hermes), Android (Proguard / R8), or iOS / macOS (dSYM).
PostHog/posthog-foss
Investigates distributed application performance using PostHog APM (OpenTelemetry span) data via MCP.
PostHog/posthog-foss
Debug and inspect LLM/AI agent traces using PostHog's MCP tools.
PostHog/posthog-foss
Diagnose why a product metric changed (dropped, spiked, or plateaued) by orchestrating breakdowns, actors, paths, lifecycle, retention, and annotations queries.
Categories
Guides agents through experiment creation: reading the project's setup with experiment-setup-context, defining the hypothesis, configuring rollout and bucketing, setting up analytics and running…. Creating Experiments is an agent skill from PostHog/posthog-foss, published by the product's own GitHub organization. Guides agents through experiment creation: reading the project's setup with experiment-setup-context, defining the hypothesis, configuring rollout and bucketing, setting up analytics and running time, and reporting which choices are guesses.
Creating Experiments fits situations like: : user asks to create a new experiment; when you are about to call experiment-create; : user is updating an existing experiment; managing lifecycle.
Run `npx skills add PostHog/posthog-foss --skill creating-experiments -a claude-code`. Or copy the skill folder (products/experiments/skills/creating-experiments in PostHog/posthog-foss) into .claude/skills/creating-experiments in your project. Claude Code loads it when a task matches its description.
Run `npx skills add PostHog/posthog-foss --skill creating-experiments -a codex`. Or copy the skill folder (products/experiments/skills/creating-experiments in PostHog/posthog-foss) into .agents/skills/creating-experiments in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add PostHog/posthog-foss --skill creating-experiments -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/creating-experiments, .gemini/skills/creating-experiments, .github/skills/creating-experiments and .opencode/skills/creating-experiments in your project.
SKILL.md names no scripts, command-line tools or credentials: Creating Experiments is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Creating Experiments is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Creating Experiments: Analytics (Nexus-JPF/note-companion, 869 stars), Ab Test Setup (freekmurze/dotfiles, 1k stars), Ad Test Designer (aaron-he-zhu/aaron-marketing-skills, 2.9k stars) and Ab Testing (Cesarjoquin/Marketing-Skills, 199 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
PostHog (a GitHub organization, an official publisher) maintains it in PostHog/posthog-foss, which has 721 GitHub stars. The repository holds 213 skills in this directory. The repository was last updated on October 7, 2026.
Source: PostHog/posthog-foss on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.