Data And Funnel Analytics
manojbajaj95/claude-gtm-plugin
Analytics tracking, interpretation, funnel analysis, product metrics, and ROI measurement.
Plans which analytics events and properties a new feature needs, checks them against the existing event registry, and verifies them per environment.
$ npx skills add mistralai/mistral-vibe --skill instrument-feature-analytics -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mistralai/mistral-vibe instrument-feature-analytics --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/mistralai/mistral-vibe.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.vibe/skills/instrument-feature-analytics .claude/skills/instrument-feature-analytics && 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 "instrument-feature-analytics" agent skill from https://github.com/mistralai/mistral-vibe/tree/main/.vibe/skills/instrument-feature-analytics into .claude/skills/instrument-feature-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "instrument-feature-analytics", 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/mistralai/mistral-vibe/tree/main/.vibe/skills/instrument-feature-analyticsType 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 mistralai/mistral-vibe --skill instrument-feature-analytics -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mistralai/mistral-vibe instrument-feature-analytics --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mistralai/mistral-vibe.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.vibe/skills/instrument-feature-analytics .agents/skills/instrument-feature-analytics && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "instrument-feature-analytics" agent skill from https://github.com/mistralai/mistral-vibe/tree/main/.vibe/skills/instrument-feature-analytics into .agents/skills/instrument-feature-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "instrument-feature-analytics", 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 mistralai/mistral-vibe --skill instrument-feature-analytics -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mistralai/mistral-vibe instrument-feature-analytics --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mistralai/mistral-vibe.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.vibe/skills/instrument-feature-analytics .cursor/skills/instrument-feature-analytics && 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 "instrument-feature-analytics" agent skill from https://github.com/mistralai/mistral-vibe/tree/main/.vibe/skills/instrument-feature-analytics into .cursor/skills/instrument-feature-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "instrument-feature-analytics", 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/mistralai/mistral-vibe.git --path .vibe/skills/instrument-feature-analytics--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 mistralai/mistral-vibe --skill instrument-feature-analytics -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mistralai/mistral-vibe instrument-feature-analytics --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mistralai/mistral-vibe.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.vibe/skills/instrument-feature-analytics .gemini/skills/instrument-feature-analytics && 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 "instrument-feature-analytics" agent skill from https://github.com/mistralai/mistral-vibe/tree/main/.vibe/skills/instrument-feature-analytics into .gemini/skills/instrument-feature-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "instrument-feature-analytics", 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 mistralai/mistral-vibe instrument-feature-analyticsInstalls 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 mistralai/mistral-vibe --skill instrument-feature-analytics -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mistralai/mistral-vibe.git skills-src && mkdir -p .github/skills && cp -r skills-src/.vibe/skills/instrument-feature-analytics .github/skills/instrument-feature-analytics && 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 "instrument-feature-analytics" agent skill from https://github.com/mistralai/mistral-vibe/tree/main/.vibe/skills/instrument-feature-analytics into .github/skills/instrument-feature-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "instrument-feature-analytics", 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 mistralai/mistral-vibe --skill instrument-feature-analytics -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mistralai/mistral-vibe instrument-feature-analytics --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mistralai/mistral-vibe.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.vibe/skills/instrument-feature-analytics .opencode/skills/instrument-feature-analytics && 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 "instrument-feature-analytics" agent skill from https://github.com/mistralai/mistral-vibe/tree/main/.vibe/skills/instrument-feature-analytics into .opencode/skills/instrument-feature-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "instrument-feature-analytics", 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.
instrument-feature-analyticsPlans which analytics events and properties a new feature needs, checks them against the existing event registry, and verifies them per environment.
This skill stands in for the data engineer a software engineer would normally have to go find before shipping telemetry for a new feature. It starts by asking what the feature is and what product and data people will want to measure about it - adoption, a funnel with drop-off points, how often a status changes, or whether a surface gets noticed - then maps those questions onto event patterns such as one event per funnel step with a shared id, paired impression and interaction events for discoverability, or one event per status transition carrying the old and new value.
Before anything is named or created, it checks what already exists in the event registry and the data lake so related features reuse existing events and properties rather than duplicating them. It can be entered either with a specific tracking question or with a new feature to instrument from scratch, walking the full set of steps in order for the latter.
It assumes events ultimately land in one shared logs table, and is meant to run through the full set of steps for a software engineer rather than being a loose checklist to skim once.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7cb9189. 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.
Shell commands in SKILL.md call:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
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.
Feature Analytics Instrumentation Planner loads about 2.2k tokens when it runs. Until then it costs about 92 tokens; SKILL.md has 988 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 mistralai/mistral-vibe at commit 7cb9189, republished under its Apache-2.0 licence (© mistralai). 988 words, ~2,220 tokens.
.claude/skills/instrument-feature-analytics/SKILL.md (or your agent's skills folder).Answer the tracking questions a software engineer would normally take to a data scientist or data engineer. When they bring one here, answer it the way a data person would, and proactively cover what they didn't think to ask.
The software engineer already knows how to emit an event technically. The hard part — and the reason they'd normally ask a data person — is deciding which events and properties matter for the metrics, and making sure they fit what already exists so the data is actually usable. Events land in mistral-data.lake_eu.logs_events.
Use the steps below as the full picture to reason from, not a rigid script: if the software engineer arrives with a specific question, answer that first, then pull in whatever other steps are relevant. If they arrive with "I'm adding feature X, help me track it", walk it in order.
Ask the software engineer a few questions before anything else:
Then translate those questions into the events and properties that would answer them. Common patterns:
started, step_completed, completed), with a property identifying the step and its order, plus a shared id to stitch the steps of one user together.from_status and to_status (and what triggered it), so changes can be reconstructed over time.The goal of this step is coverage: make sure every question the software engineer named maps to at least one event + the properties needed to slice it. Naming comes after.
Before defining any new event, search for existing events that already capture the same (or similar) user action. A new event that duplicates an existing one fragments the data and makes downstream queries harder.
Check datalake-dbt on the software engineer's behalf (they never have to open that repo):
datalake-dbt/event_registry/<service>.yml) for the software engineer's service and for neighboring services that touch the same domain. Grep broadly — the event you need may already exist under a slightly different name or in a different service's namespace.Flag anything that would force an awkward downstream change or that won't age well, and propose the compatible shape instead.
Names are a data-consistency concern, so keep them conventional: <prefix>.<noun>.<verb>, snake_case, dot-namespaced, at least two segments — the prefix maps to the service (e.g. vibe.session_initialized, harmattan.completion.done). Reuse the wording of existing similar events rather than inventing a parallel vocabulary.
Every event must populate the standardized metadata block (properties.metadata): call_source, call_type, session_id... Look at existing events in the registry to see which metadata fields are used for the service and carry them over.
The same user action on web, cli, mobile, and api must emit the same event with the same properties. List the surfaces in step 1 and confirm each one emits.
If any property carries personally identifiable data (raw user content, email, file path, names), flag it explicitly to the data team before shipping — it changes how the field must be stored and queried. Prefer sending an ID over the raw value.
Run the app with DEBUG_LEVEL=1 uv run vibe — every telemetry event is logged right before the API call. If the log line appears, the event will reach the pipeline. Use this to confirm the event fires with the expected properties before deploying.
After deploying to the staging environment, trigger the action a few times per surface, then run the verification queries below against mistral-data.lake_eu.logs_events_staging. Confirm events fire with the right properties and values before promoting to production.
After shipping to production, repeat the same manual tests and run the queries against mistral-data.lake_eu.logs_events.
Run these in Metabase or via the BigQuery connector. Use logs_events_staging when verifying in staging, logs_events in production.
Volumetry + completeness of every property — fill in your event name(s):
WITH events AS (
SELECT event, properties
FROM `mistral-data.lake_eu.logs_events`
WHERE timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR)
AND event IN UNNEST(['vibe.session_initialized']) -- <- your event name(s)
),
totals AS (
SELECT event, COUNT(*) AS total_events
FROM events
GROUP BY event
),
property_presence AS (
SELECT event, key AS property, COUNT(*) AS present
FROM events, UNNEST(JSON_KEYS(properties, 2)) AS key -- depth 2 = includes metadata.*
GROUP BY event, key
)
SELECT
t.event,
t.total_events,
p.property,
p.present,
ROUND(p.present / t.total_events, 3) AS completeness -- 1.0 = present on every event
FROM totals t
LEFT JOIN property_presence p USING (event)
ORDER BY t.event, completeness DESC;Read it as: total_events non-zero and roughly matching your manual test count means the event reaches the lake. Every property you meant to always send should read 1.0; below that, some code path or surface isn't sending it. A property you expected but don't see at all never fired.
Distinct values of each property — this catches what completeness misses (a field always present but always the same wrong constant, an enum sending an unexpected value, an ID coming through empty). List the properties worth inspecting (categorical / enum-like ones; skip high-cardinality IDs):
WITH events AS (
SELECT properties
FROM `mistral-data.lake_eu.logs_events`
WHERE timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR)
AND event IN UNNEST(['vibe.session_initialized']) -- <- your event name(s)
)
-- one block per property you want to inspect; add/remove blocks as needed:
SELECT 'surface' AS property, JSON_VALUE(properties, '$.surface') AS value, COUNT(*) AS n FROM events GROUP BY value
UNION ALL
SELECT 'warm_claimed' AS property, JSON_VALUE(properties, '$.warm_claimed') AS value, COUNT(*) AS n FROM events GROUP BY value
ORDER BY property, n DESC;Each row is a value and how often it appeared. Check the set of values is what you expect (e.g. surface shows web and cli and nothing weird) and that nothing is unexpectedly NULL or empty.
To confirm per-surface coverage from step 5, break volumetry down by surface:
SELECT event, JSON_VALUE(properties, '$.surface') AS surface, COUNT(*) AS n
FROM `mistral-data.lake_eu.logs_events`
WHERE timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR)
AND event IN UNNEST(['vibe.session_initialized'])
GROUP BY event, surface
ORDER BY n DESC;Every surface you expected should appear with a non-zero count.
© mistralai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .vibe/skills/instrument-feature-analytics of mistralai/mistral-vibe.
Open the folder on GitHubat commit 7cb9189
Feature Analytics Instrumentation Planner 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 |
|---|---|---|---|---|---|---|
| Feature Analytics Instrumentation Planner this skillmistralai/mistral-vibe | 5.1k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Data And Funnel Analyticsmanojbajaj95/claude-gtm-plugin | 105 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Analytics Interpretationgustavscirulis/snapgrid | 117 | 1 repos | ~4.1k | Automated safety check: Pass | Custom licence | |
| Product Metrics Dashboard Designphuryn/pm-skills | 27k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Pm Metricsserejaris/personal-corp-os | 229 | — | ~3k | Automated safety check: Pass | MIT | |
| Product Analyticsmajiayu000/spellbook | 287 | — | ~2.7k | Automated safety check: Pass | MIT |
manojbajaj95/claude-gtm-plugin
Analytics tracking, interpretation, funnel analysis, product metrics, and ROI measurement.
gustavscirulis/snapgrid
Interpret app metrics and make data-driven decisions. An agent skill from gustavscirulis/snapgrid.
phuryn/pm-skills
Designs a product metrics dashboard: a North Star and input metrics, a definition table with data sources, chart types and alert thresholds, and a screen layout.
serejaris/personal-corp-os
Делает ревью продуктовых метрик — тренды, аномалии, root causes и рекомендации к действиям.
majiayu000/spellbook
Product analytics and growth expert. An agent skill from majiayu000/spellbook.
mohitagw15856/pm-claude-skills
Structure a product data analysis, metric deep-dive, funnel analysis, or cohort study.
mistralai/mistral-vibe
Shows how to build a Vibe plugin package in the Agent Plugins 1.0 format, with a plugin.json manifest and optional skills, MCP servers, hooks and other components.
mistralai/mistral-vibe
Guides feature work in the Mistral Vibe Python CLI so each change lands in the right module and matches the project's architecture decision records.
mistralai/mistral-vibe
Creates, reuses and cleans up git worktrees under a shared vibe home directory, with per-repo buckets, claim records and dirty-state checks before removal.
mistralai/mistral-vibe
Creates or updates concise Architecture Decision Records for the Mistral Vibe CLI and registers each one in the AGENTS.md decisions table.
mistralai/mistral-vibe
Guides writing or refactoring tests for the Mistral Vibe CLI agent so they check behavior through stable boundaries, like tool invocation or saved session shape, instead of internal calls.
mistralai/mistral-vibe
Reference for Mistral Vibe, the CLI agent it runs inside: config files, env vars, agents, skills, tools, hooks and MCP servers, so the agent can explain and troubleshoot its own setup.
Plans which analytics events and properties a new feature needs, checks them against the existing event registry, and verifies them per environment. This skill stands in for the data engineer a software engineer would normally have to go find before shipping telemetry for a new feature. It starts by asking what the feature is and what product and data people will want to measure about it - adoption, a funnel with drop-off points, how often a status changes, or whether a surface gets noticed - then maps those questions onto event patterns such as one event per funnel step with a shared id, paired impression and interaction events for discoverability, or one event per status transition carrying the old and new value.
Feature Analytics Instrumentation Planner fits situations like: deciding what to log before shipping a new feature; checking whether an existing analytics event already covers a feature; designing a funnel or lifecycle event schema for a new flow.
Run `npx skills add mistralai/mistral-vibe --skill instrument-feature-analytics -a claude-code`. Or copy the skill folder (.vibe/skills/instrument-feature-analytics in mistralai/mistral-vibe) into .claude/skills/instrument-feature-analytics in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mistralai/mistral-vibe --skill instrument-feature-analytics -a codex`. Or copy the skill folder (.vibe/skills/instrument-feature-analytics in mistralai/mistral-vibe) into .agents/skills/instrument-feature-analytics 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 mistralai/mistral-vibe --skill instrument-feature-analytics -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/instrument-feature-analytics, .gemini/skills/instrument-feature-analytics, .github/skills/instrument-feature-analytics and .opencode/skills/instrument-feature-analytics in your project.
Going by SKILL.md and its folder, Feature Analytics Instrumentation Planner needs the command-line tools its instructions call (uv).
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. 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.
Feature Analytics Instrumentation Planner is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Feature Analytics Instrumentation Planner: Data And Funnel Analytics (manojbajaj95/claude-gtm-plugin, 105 stars), Analytics Interpretation (gustavscirulis/snapgrid, 117 stars), Product Metrics Dashboard Design (phuryn/pm-skills, 27k stars) and Pm Metrics (serejaris/personal-corp-os, 229 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mistralai (a GitHub organization, an official publisher) maintains it in mistralai/mistral-vibe, which has 5,085 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.
Source: mistralai/mistral-vibe on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.