К основному содержанию
скилл CX Codex

analyzing-experiment-session-replays — скилл для Claude Code

Скилл помогает агенту сравнивать записи пользовательских сессий между вариантами A/B-теста в PostHog, находить проблемы в интерфейсе и дополнять цифры качественной аналитикой.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add PostHog/skills --skill analyzing-experiment-session-replays -a claude-code
Открыть на GitHub

Что делает analyzing-experiment-session-replays

Скилл по шагам инструктирует агента, как анализировать поведение пользователей в запущенных экспериментах PostHog. Сначала агент запрашивает метаданные эксперимента и актуальные варианты из таблицы system.feature_flags через HogQL или инструмент experiment-get. Параметры берутся напрямую из настроек флага, так как данные внутри объекта эксперимента могут рассинхронизироваться.

Далее формируются выборки записей через инструмент query-session-recordings-list. Для надёжной фильтрации агент использует свойство событий $feature/<feature_flag_key>, поскольку штатный фильтр type: "flag" движок записей просто игнорирует. Полученные сессии контрольной и тестовой групп сравниваются по кликам, продолжительности и ошибкам в консоли браузера.

Для работы требуется запущенный эксперимент с установленной датой старта и включённая запись сессий в проекте. Если собранных данных недостаточно для выводов, скилл предлагает запустить короткий опрос на выходе из экспериментального сценария.

Какие задачи решает

  • сравнить поведение пользователей контрольной и тестовой групп в A/B-тесте
  • найти ошибки консоли и фрикции интерфейса в конкретной ветке эксперимента
  • составить корректные фильтры записей PostHog через свойства фиче-флага
  • дополнить количественные метрики эксперимента качественным анализом сессий

Примеры запросов агенту

  • Сравни записи сессий для контрольной и тестовой групп эксперимента checkout-redesign
  • Покажи записи сессий пользователей из варианта b в эксперименте с онбордингом
  • Проанализируй ошибки в консоли у пользователей нового интерфейса корзины

Как установить analyzing-experiment-session-replays

1Через Skills CLI (Vercel)

npx skills add PostHog/skills --skill analyzing-experiment-session-replays -a claude-code

2Вручную: положить файлы

~/.claude/skills/analyzing-experiment-session-replays/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/analyzing-experiment-session-replays/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о analyzing-experiment-session-replays

Как установить analyzing-experiment-session-replays в Claude Code?

Выполните в терминале команду npx skills add PostHog/skills --skill analyzing-experiment-session-replays -a claude-code.

Что делает analyzing-experiment-session-replays?

Он задаёт сценарий, по которому агент находит варианты фиче-флага в PostHog, выгружает сессии каждой когорты и сопоставляет поведенческие различия между группами.

Почему скилл фильтрует записи через события, а не через свойство флага?

Фильтр type: "flag" принимается API записей PostHog, но молча игнорируется. Скилл заставляет агента фильтровать записи по значению события $feature/<feature_flag_key>, чтобы получить точную выборку.

Исходный текст

SKILL.md · MIT
---
name: analyzing-experiment-session-replays
description: 'Analyze session replay patterns across experiment variants to understand user behavior differences. Use when the user wants to see how users interact with different experiment variants, identify usability issues, compare behavior patterns between control and test groups, or get qualitative insights to complement quantitative experiment results. Also covers pairing the observed behavior with a linked survey when the user wants qualitative feedback beyond what recordings show.'
---

# Analyzing experiment session replays

This skill guides you through analyzing session recordings for experiment variants to understand behavioral differences between control and test groups.

## When to use this skill

Use this skill when:

- The user asks to analyze session replays for an experiment
- The user wants to understand how users behave differently across experiment variants
- The user asks to compare user behavior between control and test variants
- The user wants qualitative insights to complement experiment metrics
- The user asks questions like "How are users behaving in my experiment?" or "Show me session replays for variant X"

## Prerequisites

Before analyzing session replays:

1. The experiment must be **launched** (not in draft state)
2. Session replay must be enabled for the project
3. Users must have been exposed to the experiment variants
4. The experiment must have a start date

## Workflow

### 1. Get experiment details and feature flag variants

First, retrieve the experiment information and the feature flag variants (source of truth).

**Step 1a: Get experiment metadata**

You can either:

- **Option A**: Use the `experiment-get` tool if you already have the experiment ID from context
- **Option B**: Query the experiments table via HogQL:

```sql
SELECT
    e.id,
    e.name,
    f.key AS feature_flag_key,
    e.start_date,
    e.end_date
FROM system.experiments e
JOIN system.feature_flags f ON f.id = e.feature_flag_id
WHERE e.id = <experiment_id>
```

From the experiment data, extract:

- `feature_flag_key`: The feature flag controlling the experiment
- `start_date` and `end_date`: The experiment's time range

**Step 1b: Get variants from the feature flag**

**IMPORTANT**: Always get variants from the feature flag, NOT from `experiment.parameters.feature_flag_variants`.
The parameters can be out of sync or deprecated. The feature flag is the source of truth.

Query the feature flag to get the current variants:

```sql
SELECT filters.multivariate.variants AS variants
FROM system.feature_flags
WHERE key = '<feature_flag_key>'
```

Select the variants path directly — selecting the whole `filters` object gets truncated in results for flags with large targeting configs.
Example structure: `[{"key": "control", "name": "Control", "rollout_percentage": 50}, {"key": "test", ...}]`

The variant `key` values (e.g., "control", "test", "variant_a") are what you'll use to filter session recordings.

### 2. Build session recording filters for each variant

For each variant in the experiment, construct recording filters that match users exposed to that variant.

**Filter structure for a variant** (input to `query-session-recordings-list`):

```json
{
  "date_from": "<experiment.start_date>",
  "date_to": "<experiment.end_date or current time>",
  "filter_test_accounts": true,
  "properties": [
    {
      "type": "event",
      "key": "$feature/<feature_flag_key>",
      "operator": "exact",
      "value": ["<variant_key>"]
    }
  ]
}
```

**Key points:**

- The `$feature/<flag_key>` event property records the flag's value on each event — filtering on it matches recordings where the flag was active with that variant. This is an approximation of exposure, broader than the experiment's exposure event (`$feature_flag_called`, or `$experiment_exposure` on the new rollout — both deduped per identity): right for browsing behavior across variants, but not an exact mirror of the analysis population — the `scanning-experiments-with-replay-vision` skill derives that exact filter when you need it
- `value` is an array of variant key strings (e.g. `["control"]`); for boolean flags use `["true"]` or `["false"]`
- Avoid the `type: "flag"` / `flag_evaluates_to` property filter for variant scoping — the recordings query accepts it but silently ignores it, returning unfiltered results (last verified 2026-06-10). If you want to try it anyway, verify it actually filters first: a query with a nonexistent flag key should return zero recordings
- Set the date range to the experiment's start and end dates
- Enable `filter_test_accounts: true` to exclude test users

### 3. Retrieve recordings for each variant

Use the `query-session-recordings-list` tool with the filters constructed in step 2.

Call the tool once per variant to get recordings for each group:

- Variant "control" → recordings for control group
- Variant "test" → recordings for test variant
- Additional variants if the experiment has more than 2

The tool returns a list of recordings with metadata including:

- `distinct_id` — the person's distinct ID
- `recording_duration`, `active_seconds`, `inactive_seconds`
- `click_count`, `keypress_count`, `mouse_activity_count`
- `console_log_count`, `console_warn_count`, `console_error_count`
- `start_url` — first page URL visited
- `start_time` / `end_time`, `activity_score`

### 4. Compare and analyze

Compare the recordings between variants by looking for:

**Quantitative patterns:**

- Session duration differences
- Activity levels (clicks, keypresses)
- Console error rates
- Bounce rates

**Qualitative insights:**

- User confusion or frustration indicators
- Different navigation paths
- Feature discovery patterns
- Error recovery behavior

### 5. Present findings

Summarize the behavioral differences between variants, highlighting:

- Total recordings per variant
- Notable behavior patterns unique to each variant
- Usability issues or friction points observed
- Recommendations based on the qualitative data

### 6. Observing shows behavior; asking adds what users think of it

Watching sessions and asking users are different instruments, not substitutes. Recordings show what people
did with the change; a short survey, shown when they finish the experimented flow, captures what they
thought of it — a rating and an optional comment, readable per variant. For a user-facing change of real size, the two
together make a fuller qualitative read than either alone, so mention the option when the behavioral
comparison in step 4 leaves opinion unaccounted for, or when a pattern in the recordings is a hypothesis
worth checking with the people who produced it. Once per conversation at most; drop it if declined.

Default to asking every exposed user rather than one variant: a popover shown to only one arm is itself a
difference between the arms, and the response event carries the variant anyway, so the split survives.

→ See [`references/qualitative-feedback.md`](../diagnosing-experiment-health/references/qualitative-feedback.md) in [[diagnosing-experiment-health]]

## Example interaction

```text
User: "How are users behaving in my checkout experiment?"
Agent steps:
1. Query experiment details (ID: 123, feature_flag_key: "checkout-flow-test", date range: 2025-01-01 to 2025-01-31)
2. Query feature flag "checkout-flow-test" to get variants from filters.multivariate.variants
3. Extract variant keys: "control" and "new-checkout"
4. Build filters for control variant:
   - Property filter: { type: "event", key: "$feature/checkout-flow-test", operator: "exact", value: ["control"] }
   - Date range: 2025-01-01 to 2025-01-31
5. Call query-session-recordings-list with control filters → 147 recordings found
6. Build filters for new-checkout variant and call query-session-recordings-list → 152 recordings found
7. Compare patterns:
   - Control: Average 3m 45s session duration, 12% console errors
   - New-checkout: Average 2m 30s session duration, 5% console errors
8. Present findings:
   "I analyzed session replays for your checkout experiment. The new checkout flow shows:
   - 33% faster completion (2m 30s vs 3m 45s)
   - 58% fewer console errors (5% vs 12%)
   - Users in the new variant navigate directly to payment, while control users often backtrack to review cart
   - Recommendation: The new checkout flow reduces friction and errors"
```

## Important notes

**Do not make assumptions:**

- Always verify the experiment has recordings before analyzing
- Check that the experiment is launched (has a start_date)
- If no recordings are found, inform the user clearly

**Filter construction:**

- The `$feature/<flag_key>` event property is how you scope recordings to a variant
- One filter per variant — call the tool once per variant with its own filter
- For boolean flags, use `["true"]`/`["false"]` as the value instead of a variant key

**Error handling:**

- If the experiment is in draft state, tell the user it hasn't started yet
- If no recordings exist, suggest enabling session replay or waiting for user traffic
- If the variant count is unexpected, double-check the experiment configuration

## Related tools

- `query-session-recordings-list`: Core tool for retrieving session recordings with filters
- `experiment-get`: Get experiment metadata; `experiment-results-get` for statistical results
- `execute-sql`: Query experiments table for details via HogQL

## Related skills

- **`diagnosing-experiment-health`** — the quantitative side: bias checks and significance on the same experiment
- **`investigating-replay`** — deep-dive a single session from either variant
- **`finding-sessions-to-watch`** — general session shortlisting outside the experiment context

© PostHog · MIT · PostHog/skills

Похожие скиллы

Все скиллы по теме «Тесты и QA» →
posthog официальный PostHog Inc. Подключает агента к продуктовой аналитике, флагам фич, отслеживанию ошибок и логам PostHog прямо из чата. Пригодится для проверки метрик, запуска экспериментов и поиска по документации. CX Codex GP ChatGPT ★ 7 604звёзд репо measure-experiment-results product-on-purpose Оформляет результаты завершённого эксперимента или A/B-теста: статистика, выводы по сегментам и рекомендация ship, iterate или kill. CX Codex +1 742установок PostHog MCP Server PostHog Подключает PostHog к ИИ-клиентам для аналитики событий и управления флагами функциональности. CX Codex +1 ★ 40 459звёзд репо analytics-skills clamp-sh Набор скиллов, который учит агента разбирать веб-аналитику: диагностировать скачки трафика, читать воронки и A/B-тесты без типичных ошибок новичка. ★ 9звёзд репо experiment-designer Alireza Rezvani Помогает спланировать A/B-тест, задать гипотезу и оценить результаты. Нужен перед запуском эксперимента или разбором статистики. 608установок launchdarkly-experiment-setup launchdarkly Проводит агента по всему циклу эксперимента в LaunchDarkly: метрики, варианты, запуск сбора данных и остановка с победителем. CX Codex +1 2 700установок

Из того же набора48

instrument-logs Настраивает экспорт структурированных логов в PostHog через OpenTelemetry или нативные SDK после написания фичи или ревью пуллреквеста. CX Codex +1 454установок exploring-autocapture-events Помогает анализировать события $autocapture из библиотеки posthog-js. Скилл подбирает надёжные CSS-селекторы кликов, проверяет их уникальность и строит фильтры для воронок. CX Codex +1 435установок cleaning-up-stale-feature-flags Находит устаревшие фича-флаги в проекте PostHog и убирает код, который их проверяет. Пригодится, когда флагов накопилось много и непонятно, какие уже можно удалить. CX Codex +1 434установок auditing-experiments-flags Проверяет эксперименты и фича-флаги PostHog на ошибки конфигурации, устаревание и нарушения практик. Пригодится перед тем, как доверять результатам A/B-теста. CX Codex +1 432установок diagnosing-sdk-health Скилл находит устаревшие PostHog SDK в проекте и подсказывает, как их обновить. Полезен, когда события или фичи ведут себя странно. CX Codex +1 428установок skills-store Позволяет находить, загружать и редактировать общие командные скиллы в PostHog. Пригодится, когда нужно делиться инструкциями и скриптами между агентами. CX Codex +1 417установок exploring-llm-evaluations Скилл для работы с оценками AI-наблюдаемости в PostHog: находит конфиги, запускает их на конкретных генерациях и настраивает отчёты. CX Codex +1 411установок investigate-metric Находит причины падения или всплеска продуктовых метрик в PostHog через срез когорт, флаги и воронки. CX Codex +1 409установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой