Official agent skill

Telemetry Standards

by supabase in supabase/supabase

PostHog event tracking standards for Supabase Studio. An agent skill from supabase/supabase.

OfficialApache-2.0Auto-check passedData & Analytics

Install Telemetry Standards

skills CLI
$ npx skills add supabase/supabase --skill telemetry-standards -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install supabase/supabase telemetry-standards --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/supabase/supabase.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/telemetry-standards .claude/skills/telemetry-standards && rm -rf skills-src

Use ~/.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/

Facts

Skill name
telemetry-standards
GitHub stars
111k
Token cost
~2k tokens
SKILL.md length
734 words
Files
1
Skills in repo
22
Repo updated
First seen
Licence
Apache-2.0

At a glance

PostHog event tracking standards for Supabase Studio. An agent skill from supabase/supabase.

  • Works in 5 steps: Naming violations — event not following… → Property violations — not camelCase,… → Unnecessary view tracking — events that… → …
  • Adding useTrack() calls
  • SKILL.md covers Event Naming, Property Standards, What NOT to Track and Required Pattern, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Telemetry Standards is an agent skill from supabase/supabase, published by the product's own GitHub organization. PostHog event tracking standards for Supabase Studio. Use when adding useTrack() calls, defining events in packages/common/telemetry-constants.ts, implementing tracking for a new feature, or reviewing PRs for telemetry compliance. Covers event naming, property conventions, approved patterns, and implementation guide.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Data & Analytics, covering Product analytics. It works with Supabase and PostHog. The repository describes itself as: The Postgres development platform. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications. The licence is Apache-2.0.

When your agent uses it

  • Adding useTrack() calls
  • Defining events in packages/common/telemetry-constants.ts
  • Implementing tracking for a new feature
  • Reviewing PRs for telemetry compliance

Example prompts

  • “/telemetry-standards”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Naming violations — event not following [object]_[verb] snake_case, or using an unapproved verb
  2. Property violations — not camelCase, generic names, or inconsistent with similar events
  3. Unnecessary view tracking — events that fire on page load without user interaction
  4. Inaccurate docs — @source/@page descriptions that don't match the actual implementation
  5. Unmeasured feature flags — a PostHog flag gates new behavior but its value is not captured in any track() call, or there is no outcome…

What it can do on your machine

Read from SKILL.md and the folder at commit 26c838a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Telemetry Standards loads about 2k tokens when it runs. Until then it costs about 85 tokens; SKILL.md has 734 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~85
When it runs · the whole SKILL.md, loaded when a task matches
~2k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from supabase/supabase at commit 26c838a, republished under its Apache-2.0 licence (© supabase). 734 words, ~1,964 tokens.

Download SKILL.mdSave it as .claude/skills/telemetry-standards/SKILL.md (or your agent's skills folder).
name
telemetry-standards
description
PostHog event tracking standards for Supabase Studio. Use when adding useTrack() calls, defining events in packages/common/telemetry-constants.ts, implementing tracking for a new feature, or reviewing PRs for telemetry compliance. Covers event naming, property conventions, approved patterns, and implementation guide.

Telemetry Standards for Supabase Studio

Standards for PostHog event tracking in apps/studio/. Apply these when reviewing PRs that touch tracking or when implementing new tracking.

Event Naming

Format: [object]_[verb] in snake_case

Approved verbs only (canonical list — derived from packages/common/telemetry-constants.ts): opened, clicked, submitted, created, removed, updated, intended, evaluated, added, enabled, disabled, copied, exposed, failed, converted, closed, completed, applied, sent, moved

Flag these:

  • Unapproved verbs (saved, viewed, seen, pressed, etc.)
  • Wrong order: click_product_card → should be product_card_clicked
  • Wrong casing: productCardClicked → should be product_card_clicked

Good examples:

  • product_card_clicked
  • backup_button_clicked
  • sql_query_submitted

Common mistakes with corrections:

  • database_saved → save_button_clicked or database_updated (unapproved verb)
  • click_backup_button → backup_button_clicked (wrong order)
  • dashboardViewed → don't track passive views on page load
  • component_rendered → don't track — no user interaction

Property Standards

Casing: camelCase preferred for new events. The codebase has existing snake_case properties (e.g., schema_name, table_name) — when adding properties to an existing event, match its established convention.

Names must be self-explanatory:

  • { productType: 'database', planTier: 'pro' }
  • { assistantType: 'sql', suggestionType: 'optimization' }

Flag these:

  • Generic names: label, value, name, data
  • PascalCase properties
  • Inconsistent names across similar events (e.g., assistantType in one event, aiType in a related event)
  • Mixing camelCase and snake_case within the same event

What NOT to Track

  • Passive views/renders on page load (dashboard_viewed, sidebar_appeared, page_loaded)
  • Component appearances without user interaction
  • Generic "viewed" or "seen" events — already captured by pageview events

DO track: user clicks, form submissions, explicit opens/closes, user-initiated actions.

Exception: _exposed events for A/B experiment exposure tracking are valid even though they fire on render.

Never track PII (emails, names, IPs, etc.) in event properties.

Required Pattern

Import useTrack from @/lib/telemetry/track (within apps/studio/).

typescript
import { useTrack } from '@/lib/telemetry/track'

const MyComponent = () => {
  const track = useTrack()

  const handleClick = () => {
    track('product_card_clicked', {
      productType: 'database',
      planTier: 'pro',
      source: 'dashboard',
    })
  }

  return <button onClick={handleClick}>Click me</button>
}

Feature Flag Measurement

A feature flag that gates behavior needs telemetry on both the flag state and how users respond to the new behavior (toggle clicks, opt-in actions), so the rollout can be measured.

  • PostHog flags (usePHFlag, or PostHog-backed hooks such as useDataApiRevokeOnCreateDefaultEnabled): capture the flag value in a relevant track() call.
  • ConfigCat flags (useFlag from common) are a different system — this pattern does not apply to them.

usePHFlag returns undefined while the PostHog store is still loading. Read the raw flag via usePHFlag('flagName'), not through wrapper hooks that coerce undefined to false, and use a conditional spread so the property is omitted (not false) until the flag has resolved:

As always, track() runs inside the user-action handler — never in the component body or an effect:

typescript
const track = useTrack()
const flagValue = usePHFlag<boolean>('myBooleanFlag') // for boolean flags

const handleSubmit = () => {
  track('event_name', {
    ...(flagValue !== undefined && { myFlagEnabled: flagValue }),
  })
}

For string-valued flags (e.g. experiment variants), use usePHFlag<string>('flagName'); a flag that may be migrated from boolean to multivariate is typed usePHFlag<boolean | string>. ProjectCreationForm.tsx (dataApiRevokeOnCreateDefault) is the canonical example.

Event Definitions

All events must be defined as TypeScript interfaces in packages/common/telemetry-constants.ts:

typescript
/**
 * [Event description]
 *
 * @group Events
 * @source [what triggers this event]
 */
export interface MyFeatureClickedEvent {
  action: 'my_feature_clicked'
  properties: {
    /** Description of property */
    featureType: string
  }
  groups: TelemetryGroups
}

Add the new interface to the TelemetryEvent union type so useTrack picks it up. @group Events and @source are required on every event; add @page when the event fires from a specific page. All three must be accurate.

Show full SKILL.md (273 more words)Show less

Review Rules

When reviewing a PR, flag these as required changes:

  1. Naming violations — event not following [object]_[verb] snake_case, or using an unapproved verb
  2. Property violations — not camelCase, generic names, or inconsistent with similar events
  3. Unnecessary view tracking — events that fire on page load without user interaction
  4. Inaccurate docs — @source/@page descriptions that don't match the actual implementation
  5. Unmeasured feature flags — a PostHog flag gates new behavior but its value is not captured in any track() call, or there is no outcome tracking for the gated behavior

When a PR adds user-facing interactions (buttons, forms, toggles, modals) without tracking, suggest:

  • "This adds a user interaction that may benefit from tracking."
  • Propose the event name following [object]_[verb] convention
  • Propose the useTrack() call with suggested properties

When checking property consistency, search packages/common/telemetry-constants.ts for similar events and verify property names match.

Well-Formed Event Examples

From the actual codebase:

typescript
// User copies a connection string
track('connection_string_copied', {
  connectionType: 'psql',
  connectionMethod: 'transaction_pooler',
  connectionTab: 'Connection String',
})

// User enables a feature preview
track('feature_preview_enabled', {
  feature: 'realtime_inspector',
})

// User clicks a banner CTA
track('index_advisor_banner_dismiss_button_clicked')

// Experiment exposure (fires on render — valid exception)
track('home_new_experiment_exposed', {
  variant: 'treatment',
})

Implementing New Tracking

To add tracking for a user action:

  1. Name the event — [object]_[verb] using approved verbs only
  2. Choose properties — camelCase preferred for new events; check packages/common/telemetry-constants.ts for similar events and match their property names and casing
  3. Add interface to telemetry-constants.ts — with @group Events and @source JSDoc (plus @page when page-specific), add to the TelemetryEvent union type
  4. Add to component — import { useTrack } from '@/lib/telemetry/track', call track('event_name', { properties })
Verification checklist
  • Event name follows [object]_[verb] with approved verb
  • Event name is snake_case
  • Properties are camelCase and self-explanatory
  • Event defined in telemetry-constants.ts with accurate @group Events, @source, and (if page-specific) @page
  • Using the useTrack hook
  • Not tracking passive views/appearances
  • No PII in event properties (emails, names, IPs, etc.)
  • Property names consistent with similar events

© supabase, 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

Files

Just SKILL.md in .agents/skills/telemetry-standards of supabase/supabase.

Open the folder on GitHubat commit 26c838a

Compare with similar skills

Telemetry Standards 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.

Telemetry Standards compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Telemetry Standards this skillsupabase/supabase111k—~2kAutomated safety check: PassApache-2.0
Creating Box Plot InsightsPostHog/posthog40k—~1.1kAutomated safety check: PassCustom licence
Querying Posthog DataPostHog/posthog40k—~4.1kAutomated safety check: PassCustom licence
Prod TelemetryUsefulSoftwareCo/executor4.1k—~1.9kAutomated safety check: PassMIT
Posthog Product Health Auditboardsesh/boardsesh163—~2.1kAutomated safety check: PassApache-2.0
Posthog Instrumentationlangfuse/langfuse36k—~3.2kAutomated safety check: PassCustom licence

Similar skills

  • Official

    Creates product analytics or SQL-backed box plot insights in PostHog.

    40k GitHub stars~1.1k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Querying Posthog Data

    PostHog/posthog

    Official

    Explains how to query PostHog data, defaulting to typed runners for supported product analytics.

    40k GitHub stars~4.1k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Prod Telemetry

    UsefulSoftwareCo/executor

    Query Executor's production telemetry — Axiom traces (executor-cloud dataset), prod Postgres via PlanetScale, PostHog product analytics — through the Executor MCP.

    4.1k GitHub stars~1.9k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Posthog Product Health Audit

    boardsesh/boardsesh

    Mine Boardsesh's PostHog telemetry (error tracking, session recordings, product analytics) with a multi-agent workflow, then file verified, deduplicated, severity-labelled GitHub issues.

    163 GitHub stars~2.1k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Posthog Instrumentation

    langfuse/langfuse

    Product analytics with posthog. An agent skill from langfuse/langfuse.

    36k GitHub stars~3.2k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Posthog Analytics

    alinaqi/maggy

    PostHog analytics, event tracking, feature flags, dashboards

    707 GitHub starsUsed in 1 repo~5.2k tokens
    Data & AnalyticsAuto-check: notes

More from supabase/supabase

All 22 skills in this repo
  • Official

    React composition patterns that scale. An agent skill from supabase/supabase.

    111k GitHub starsUsed in 59 repos~726 tokens
    Auto-check passed
  • Clickhouse Logs Queries

    supabase/supabase

    Official

    Write, review, and migrate Supabase logs queries against the ClickHouse-backed logs table (the logs.all.otel analytics endpoint).

    111k GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Review The Docs

    supabase/supabase

    Official

    Review Supabase docs changes locally in your supabase/supabase checkout — either an open PR (triage, classify, verify) or your own branch before opening a PR (local self-review).

    111k GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Vitest

    supabase/supabase

    Official

    Vitest API and config reference (Jest-compatible) — mocking with vi., spies, fake timers, coverage configuration, fixtures, snapshots, and test filtering.

    111k GitHub starsUsed in 12 repos~1.1k tokens
    Auto-check passed
  • Safe SQL Execution

    supabase/supabase

    Official

    A skill your agent uses whenever code will build, return, fetch, or execute SQL that runs against a user's real Postgres database — even when the request reads like an ordinary feature or bug fix…

    111k GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Studio E2E Tests

    supabase/supabase

    Official

    Write and run Playwright E2E tests for Supabase Studio (e2e/studio).

    111k GitHub stars~2.8k tokensUpdated today
    Auto-check passed

Works with

Questions about Telemetry Standards

What does Telemetry Standards do?

PostHog event tracking standards for Supabase Studio. An agent skill from supabase/supabase. Telemetry Standards is an agent skill from supabase/supabase, published by the product's own GitHub organization. PostHog event tracking standards for Supabase Studio.

When should I use Telemetry Standards?

Telemetry Standards fits situations like: adding useTrack() calls; defining events in packages/common/telemetry-constants.ts; implementing tracking for a new feature; reviewing PRs for telemetry compliance.

How do I install Telemetry Standards in Claude Code?

Run `npx skills add supabase/supabase --skill telemetry-standards -a claude-code`. Or copy the skill folder (.agents/skills/telemetry-standards in supabase/supabase) into .claude/skills/telemetry-standards in your project. Claude Code loads it when a task matches its description.

How do I install Telemetry Standards in Codex?

Run `npx skills add supabase/supabase --skill telemetry-standards -a codex`. Or copy the skill folder (.agents/skills/telemetry-standards in supabase/supabase) into .agents/skills/telemetry-standards in your project. Codex loads it when a task matches its description.

Can I use Telemetry Standards in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add supabase/supabase --skill telemetry-standards -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/telemetry-standards, .gemini/skills/telemetry-standards, .github/skills/telemetry-standards and .opencode/skills/telemetry-standards in your project.

What does Telemetry Standards need to run?

SKILL.md names no scripts, command-line tools or credentials: Telemetry Standards is instructions for the agent only.

Does Telemetry Standards access the network?

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.

Is Telemetry Standards safe to install?

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.

What licence does Telemetry Standards use?

Telemetry Standards 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.

How many tokens does Telemetry Standards use?

About 2k tokens (SKILL.md is roughly 7.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Telemetry Standards?

Skills that share tags, products or a category with Telemetry Standards: Creating Box Plot Insights (PostHog/posthog, 40k stars), Querying Posthog Data (PostHog/posthog, 40k stars), Prod Telemetry (UsefulSoftwareCo/executor, 4.1k stars) and Posthog Product Health Audit (boardsesh/boardsesh, 163 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Telemetry Standards?

supabase (a GitHub organization, an official publisher) maintains it in supabase/supabase, which has 111,222 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 8, 2026.

Source: supabase/supabase on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.