Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add build-with-dhiraj/ai-workflow-framework-portability-kit --skill mixpanel-masterygit clone --depth 1 https://github.com/build-with-dhiraj/ai-workflow-framework-portability-kitWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/build-with-dhiraj/ai-workflow-framework-portability-kit/mixpanel-mastery)<a href="https://agentmods.dev/skills/build-with-dhiraj/ai-workflow-framework-portability-kit/mixpanel-mastery"><img src="https://agentmods.dev/badge/skills/build-with-dhiraj/ai-workflow-framework-portability-kit/mixpanel-mastery/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/build-with-dhiraj/ai-workflow-framework-portability-kit/mixpanel-mastery"><img src="https://agentmods.dev/badge/skills/build-with-dhiraj/ai-workflow-framework-portability-kit/mixpanel-mastery.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00191 | $0.02852 |
| Opus 5.5 | $0.00076 | $0.01141 |
| Sonnet 5.5 | $0.00038 | $0.00570 |
| Haiku 4.5 | $0.00019 | $0.00285 |
Grade A, and why
mixpanel-mastery scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 88 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Project root: every relative path in this skill (
knowledge/...,tools/...,.claude/skills/...) resolves against~/dev/jove-hq, never the current working directory. This skill is invocable from any cwd, so prefix accordingly:~/dev/jove-hq/knowledge/jove-labs/STATUS.md.
Mixpanel mastery
Full evidence trail: knowledge/jove-labs/mixpanel-mastery.md in jove-hq (1,481 lines; schema claims re-verified live 7 Sep 2026). This skill is the operational distillation of that document. When the two disagree, the mastery doc is the source of truth, update this skill from it, not the other way round.
Before any tool call
- Call
Get-Business-Contextfirst, every session, before any other Mixpanel tool. It resolves project nicknames and org vocabulary you can't infer from tool names. - Know which project you're in. Production is
2857603("www.jove.com - LIVE"). The dev/preview project, where PREVIEW-LYHRM and any pre-launch testing lands, is2875597("New Website - Dev team (new)"). Stage and QA have their own separate projects. A wrong project pick returns confidently empty results, it doesn't error. - The one construct everything else hangs on: counting something across two different people (a lab touched by a trainer, then by a trainee) is
inside an Insights{"type": "aggregate-property", "math": "unique_values", "propertyName": "lab_id"}Run-Query. The UI calls this "Distinct Count of lab_id". It is not a funnel, not Hold Property Constant, and not a saved Metric:Create-Metric'smathenum isunique | total | session | dau | wau | mauand has noaggregate-propertyoption at all (re-verified live 7 Sep 2026), so this measurement can never be centralized, it must be repeated in every report that needs it.
The eleven traps, read every one before building or reviewing a tile
Ordered by how likely each is to ship unnoticed. Full detail and live evidence for each is in references/traps-detail.md.
- Building a cross-user tile as a funnel. Two different actors in one funnel returns a near-zero number, and it doesn't error. Check: read the two events, name who fires each. Different people means no funnel, use Distinct Count instead.
- Reaching for Hold Property Constant to "fix" trap 1. It requires one user to carry the value through every step, it narrows the funnel, it doesn't re-key it across users. Legitimate only when every step really is the same person in one session.
- Summing distinct counts. Not additive across breakdown segments (live proof: 4,552 unbroken vs 4,556 broken-down, a lab in two buckets counts in both) and not additive across time on line charts either. Headline totals come from their own unbroken
metric/bartile, never from summing a column or a line. - Right-censoring a rolling-window denominator. A relative "last 30 days" window on a "did X happen within 7 days" tile counts things too young to possibly qualify, understating the rate worst exactly when growth is fastest. The window must end at least N days in the past, and say why on the board.
- Shipping a formula tile with no denominator. A formula call in
Run-Querysuppresses its input metrics entirely, verified live, so a 98.9% over n=4,552 and a 98.9% over n=3 render identically. Every formula tile needs a companion tile showing its denominator. - Sending a number as a string. A numeric-filter-driving property (
days_since_lab_createdetc.) arriving as"3"instead of3is silently excluded from numeric filters, no error anywhere, and Mixpanel infers type with no schema declaration and no documented retroactive fix. Assert the JSON type at the source. - Trusting an institution/property breakdown at face value. Missing values arrive in at least 3-5 disguises simultaneously (
"","undefined","-", absent, null, all rendering(not set)), and values are case-sensitive with zero folding ("jove"and"JoVE"are different buckets). One canonical missing representation, one canonical casing, both enforced server-side, plus a coverage companion tile. - Assuming super properties reach server-emitted events. Super properties are a client-SDK-only concept with no server-side equivalent, documented explicitly. A server event not stamped with the property by hand is simply undefined for it, which looks like an adoption problem rather than a tracking bug.
- Reading today's number. Late-arriving data means today's figure for today's date range is always provisional and always low; caching adds up to an hour of staleness on top. Every tile's window ends yesterday.
- Omitting or reusing
$insert_idon server events. Without it, ingestion succeeds but dedup never applies, so every retry double-counts permanently. Reusing a business key (e.g.lab_id) as the insert id silently deletes legitimate repeat events instead. - Assuming a never-fired event renders as a zero. It does not render at all. A
Run-Querynaming only never-fired events returns an empty result, and in a mixed tile the missing metric is dropped in silence: a three-metric tile whose middle event has never fired comes back with A and C, no row and no gap where B belongs. A table captioned "AC7 usage events" then reads as a short list and nobody can tell a missing row from an unbuilt tile. The only honest way to state that an event never fired is a text card. Verified live 7 Sep 2026 on project 2875597.
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 88 lines · 191 tokens per session scan A 59bf1df4e18c
mixpanel-mastery is a skill published in the GitHub repository build-with-dhiraj/ai-workflow-framework-portability-kit (5 stars, last pushed 21d ago), licensed MIT. It adds 191 tokens to every session and 2,852 once invoked, about $0.0008 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-21.
Other skills, from other repositories
codeql
Run CodeQL database creation and security queries, add data-extension models, or process CodeQL SARIF. Use when CodeQL is explicitly requested; use security-review for a broader manual security review.
sharp-edges
Identify error-prone APIs, dangerous configuration, and footgun designs that enable security mistakes. Use for API ergonomics, misuse resistance, secure defaults, or pit-of-success reviews; use code-review for general defects.
huggingface-vision-trainer
Train object-detection, image-classification, or SAM segmentation models on Hugging Face Jobs. Use for vision fine-tuning and evaluation; use huggingface-llm-trainer for language models.
code-quality
Agents should invoke this skill for code reviews, linting/formatting setup, maintainability checks, complexity concerns, warning cleanup, coding standards, or quality gates in Rust, TypeScript, Python, shell, and mixed repos.
code-reviewer
Review code for bugs, logic errors, security vulnerabilities, code quality issues, and adherence to project conventions, using confidence-based filtering to report only high-priority issues that truly matter. Use this skill when reviewing a small set of changes locally (such as unstaged diff), when dispatched as a…
differential-review
Performs security-focused differential review of code changes (PRs, commits, diffs). Adapts analysis depth to codebase size, uses git history for context, calculates blast radius, checks test coverage, and generates comprehensive markdown reports. Automatically detects and prevents security regressions.