mixpanel-headless-setup — Codex skill: what it does, how to install
Sets up the Python workspace for Mixpanel analysis, installs required data packages, and validates credentials. Useful when preparing new projects or configuring API access.
npx skills add openai/plugins --skill setup -a codexWhat mixpanel-headless-setup does
The skill executes setup.sh to confirm Python 3.10+ and install analytics dependencies. It loads mixpanel_headless, pandas, numpy, matplotlib, seaborn, scipy, networkx>=3.0, anytree>=2.8.0, plus pyarrow>=17.0 on Python 3.11+. The installer attempts to use uv first, falling back to pip, then verifies package imports.
It checks authentication status using auth_manager.py. The script inspects the session to report whether credentials are ready, missing an account, or missing an assigned project ID. Users can authenticate through mp login, manual CLI account registration, or direct environment variables such as MP_USERNAME, MP_SECRET, MP_PROJECT_ID, and MP_REGION. Headless agents can rely on MP_OAUTH_TOKEN.
Browser-based PKCE login fails inside remote sandboxes due to missing browser and terminal access. In that scenario, export credentials on the host machine using mp account export-bridge --to ~/.claude/mixpanel/auth.json before starting the agent session.
What it helps with
- set up the Python workspace for Mixpanel data analysis
- install analytical packages with uv or pip
- verify active Mixpanel accounts and pinned projects
- transfer credentials to sandboxed environments via a bridge file
Example prompts for the agent
- Set up the environment for Mixpanel analytics and install dependencies
- Check current Mixpanel credentials and project status
- Configure Mixpanel access using service account environment variables
How to install mixpanel-headless-setup
1Skills CLI (Vercel)
npx skills add openai/plugins --skill setup -a codex2Manually: put the files in place
.agents/skills/setup/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add openai/plugins --skill setup -a claude-code2Manually: put the files in place
~/.claude/skills/setup/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/setup/
Manually: put the files in place
.cursor/skills/setup/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install openai/plugins setup2Manually: put the files in place
.github/skills/setup/SKILL.mdPlatform CLI
gemini skills install https://github.com/openai/plugins --path plugins/mixpanel-headless/skills/setupManually: put the files in place
.devin/skills/setup/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: Codex skills: how to install, where they live, how to call them
Questions about mixpanel-headless-setup
How to install mixpanel-headless-setup in Codex?
Run npx skills add openai/plugins --skill setup -a codex. This registers the skill at .agents/skills/setup/SKILL.md.
What does mixpanel-headless-setup do?
It checks for Python 3.10+, installs mixpanel_headless alongside analytical libraries like pandas and scipy, and validates your Mixpanel session.
How do credentials work in remote sandboxed sessions?
Browser login is unavailable in remote agents. You must run mp account export-bridge --to ~/.claude/mixpanel/auth.json on your host machine or provide MP_OAUTH_TOKEN via environment variables.
Source text
SKILL.md · MIT
--- name: mixpanel-headless-setup description: This skill installs mixpanel_headless, pandas, numpy, matplotlib, seaborn, networkx, anytree, scipy (and pyarrow on Python 3.11+), then verifies Mixpanel credentials. It should be invoked when setting up a new environment for Mixpanel data analysis, when dependencies are missing, or when configuring service account or OAuth credentials for the first time. disable-model-invocation: false allowed-tools: Bash --- # mixpanel-headless — Setup Install dependencies and verify credentials for CodeMode analytics. ## Run Setup Before running bundled scripts, set `SKILL_DIR` to the absolute path of this `skills/setup` directory. ```bash bash $SKILL_DIR/scripts/setup.sh ``` This will: 1. Verify Python 3.10+ is available 2. Install `mixpanel_headless`, `pandas`, `numpy`, `matplotlib`, `seaborn`, `networkx>=3.0`, `anytree>=2.8.0`, `scipy`, and `pyarrow>=17.0` on Python 3.11+ (tries uv, pip in order) 3. Verify all packages import successfully (including pyarrow on 3.11+, networkx, anytree, and scipy) 4. Check for configured Mixpanel credentials (single schema — Account → Project → Workspace) ## Check Credentials After installation, check the active session: ```bash python3 $SKILL_DIR/../mixpanelyst/scripts/auth_manager.py session ``` Parse the JSON `state` field: - **`ok`** — credentials configured. Show `account.name` → project `project.id` and proceed to verification. - **`needs_account`** — no account configured. Read `next` for onboarding suggestions and follow "If Credentials Are Missing" below. - **`needs_project`** — account configured but no project pinned. Suggest `mp project list` then `mp project use <id>`. - **`error`** — show `error.message`. If `error.actionable` is true, the message names a concrete next command. ## If Credentials Are Missing If no credentials are configured, guide the user to one of these methods: ### Recommended: `mp login` The frictionless one-shot path. Tell the user to run: ```bash mp login ``` `mp login` runs the right auth flow for the environment, derives the account name from `/me`, and pins a default project. For laptops with a usable browser, this opens the PKCE flow; for environments with `MP_USERNAME` + `MP_SECRET` set, it skips the browser and uses the service-account path; for `MP_OAUTH_TOKEN` set, it uses the static bearer. Region behavior: - `service_account` and `oauth_token` paths probe `us → eu → in` when `--region` is omitted. - `oauth_browser` (the bare-`mp login` default) defaults to `us`. EU and India browser users must pass `--region eu` or `--region in`. Useful flags: `--name NAME`, `--region us|eu|in`, `--project ID`, `--service-account`, `--token-env VAR`, `--no-browser`, `--secret-stdin`. ### Alternative: Guided Setup (explicit account add) Use the `mixpanel-auth` skill's account-add workflow for a step-by-step walkthrough. The workflow never prompts for secrets in conversation — it instructs the user to run `mp account add ...` themselves so the secret is read with hidden input. Use this path when the user wants explicit control over the account name, region, and type at registration time. ### Alternative: Service-Account Environment Variables (temporary) For quick testing, set all four variables in the shell — the resolver picks them up directly without account registration: ```bash export MP_USERNAME="service-account-username" export MP_SECRET="service-account-secret" export MP_PROJECT_ID="12345" export MP_REGION="us" # or "eu", "in" ``` ### Alternative: Raw OAuth Bearer Token (best for agents / CI) If the user has an OAuth 2.0 access token from another source, they can use it directly without the PKCE browser flow: ```bash export MP_OAUTH_TOKEN="<bearer-token>" export MP_PROJECT_ID="12345" export MP_REGION="us" # or "eu", "in" ``` This is the recommended mode for non-interactive contexts. The full service-account env-var set (`MP_USERNAME` + `MP_SECRET` + `MP_PROJECT_ID` + `MP_REGION`) takes precedence when both sets are complete. ## Remote Environment If running inside a remote or sandboxed agent environment, credentials work differently: - **OAuth login and interactive account setup are NOT available** (no browser, no host terminal access) - Credentials must be configured on the **host machine** before starting the remote session ### If No Credentials Found in the Remote Session Tell the user: > No Mixpanel credentials found in this remote session. > > On your **host machine** (outside the remote session), run: > ``` > mp account export-bridge --to ~/.claude/mixpanel/auth.json > ``` > This writes a v2 bridge file embedding your account record (and any > oauth_browser tokens) so the remote session can read your credentials > at startup. > > Then **start a new remote session** — credentials will be available automatically. Do NOT suggest the account-login or account-add interactive workflows — these won't work inside remote sessions without browser or terminal access. ### If Bridge File Found But Token Expired The library will auto-refresh the OAuth token via the on-disk refresh token (no browser needed). If refresh fails: > Your OAuth session has expired and could not be refreshed. > On your host machine, run: > ``` > mp login --name personal # re-authenticate (or `mp account login personal`) > mp account export-bridge --to ~/.claude/mixpanel/auth.json > ``` > Then start a new remote session. ## Verify Everything Works ```bash python3 $SKILL_DIR/../mixpanelyst/scripts/auth_manager.py account test ``` The subcommand never raises — read `result.ok` to determine outcome. - `result.ok: true` → setup is complete; the user can ask analytics questions. - `result.ok: false` → suggest the `mixpanel-auth` account-test workflow for detailed diagnostics. ## Post-Setup: Explore Your Data Once authenticated, these slash commands help orient the user: - `mixpanel-auth` project-list workflow — discover all accessible projects via `/me` - `mixpanel-auth` session workflow — see active account / project / workspace - `mixpanel-auth` project-use workflow — switch to a different project - `mixpanel-auth` target-add workflow — save a named cursor position The user can also construct a Workspace targeting a specific account / project / workspace directly: ```python import mixpanel_headless as mp ws = mp.Workspace() # default session ws = mp.Workspace(account="team") # named account ws = mp.Workspace(project="67890") # explicit project (active account) ws = mp.Workspace(account="team", project="67890") # both axes ws.use(project="98765").events() # in-session switch (no re-auth) ``` _The mixpanelyst skill auto-triggers on analytics questions. For the analytical frameworks that guide investigations, see [analytical-frameworks.md](../mixpanelyst/references/analytical-frameworks.md). For the complete Python API, see [python-api.md](../mixpanelyst/references/python-api.md)._
© Mixpanel · MIT · openai/plugins