

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
12345# Studio Telemetry Review Rules67All comments are **advisory** — suggest, do not request changes.89## When to Flag Missing Telemetry1011Use judgment — not every PR needs telemetry. But **always flag** when:12131. **Changes to `packages/common/telemetry-constants.ts`** — validate event naming, property conventions, and JSDoc accuracy.142. **PostHog feature flags without measurement.** If a PR uses `usePHFlag` or PostHog-backed hooks like `useDataApiRevokeOnCreateDefaultEnabled` to gate behavior, the flag state should be captured in a telemetry event so the rollout can be measured. Flag if the flag value isn't included in a relevant `track()` call. (Note: `useFlag` from `common` reads ConfigCat flags, not PostHog — different system, different guidance.)153. **Feature-flagged rollouts without outcome tracking.** If a flag gates new behavior, there should be telemetry on both the flag state _and_ how users respond to the new behavior (e.g., toggle clicks, opt-in actions).164. **Growth-oriented components adding user interactions without tracking** — onboarding flows, setup wizards, upgrade CTAs, A/B experiment variants.1718When tracking is missing, comment: _"This adds a user interaction (or feature flag) that may benefit from tracking."_ Then propose an event name and `useTrack()` call.1920## Feature Flag Telemetry Pattern2122When capturing a PostHog flag value for telemetry, read the raw flag via `usePHFlag('flagName')` — **not** through wrapper hooks that coerce `undefined` to `false`. Use conditional spread so the property is omitted (not false) when the flag store hasn't loaded:2324```typescript25const flagValue = usePHFlag<boolean>('myBooleanFlag') // for boolean flags26track('event_name', {27 ...(flagValue !== undefined && { myFlagEnabled: flagValue }),28})29```3031For string-valued flags (e.g., experiment variants), use `usePHFlag<string>('flagName')` instead.3233## Event Naming3435Format: `[object]_[verb]` in snake_case.3637Prefer verbs already in use in `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`.3839Flag: unapproved verbs (`saved`, `viewed`, `pressed`), wrong order (`click_product_card`), wrong casing (`productCardClicked`), passive view tracking on page load (exception: `_exposed` events for A/B experiments).4041## Event Properties4243- **camelCase** for new events; match existing convention when extending44- Self-explanatory names — flag generic (`label`, `value`, `name`, `data`)45- Check `telemetry-constants.ts` for consistency with similar events46- Never track PII4748## Event Implementation4950- Use `useTrack` from `lib/telemetry/track` — avoid introducing new `useSendEventMutation` usage51- New events need a TypeScript interface in `telemetry-constants.ts` with `@group Events` and `@source` JSDoc tags (add `@page` when applicable for page-specific events), added to the `TelemetryEvent` union5253```typescript54import { useTrack } from 'lib/telemetry/track'5556const track = useTrack()57track('product_card_clicked', { productType: 'database', planTier: 'pro' })58```5960Canonical standards: `.claude/skills/telemetry-standards/SKILL.md`61
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| supabase/supabase.github/instructions/studio-error-handling.instructions.md · 108k | Copilot instructions | gitdo-not | 57/100 | 14 days ago | |
| supabase/supabaseapps/studio/CLAUDE.md · 108k | CLAUDE.md | testlint-formatstyletesting-strategy+1 | 81/100 | 14 days ago | |
| supabase/supabase.github/instructions/studio-composition-patterns.instructions.md · 108k | Copilot instructions | stylegitapiui+1 | 61/100 | 14 days ago | |
| supabase/supabase.github/instructions/studio-copy.instructions.md · 108k | Copilot instructions | uiagent-behaviourdocs | 25/100 | 14 days ago | |
| supabase/supabase.github/instructions/studio-shadcn-components.instructions.md · 108k | Copilot instructions | gituido-not | 55/100 | 14 days ago | |
| supabase/supabase.github/instructions/studio-shortcuts.instructions.md · 108k | Copilot instructions | stylegitdo-not | 61/100 | 14 days ago | |
| supabase/supabase.github/instructions/studio-testing.instructions.md · 108k | Copilot instructions | testtypestesting-strategygit+1 | 55/100 | 14 days ago | |
| supabase/supabase.claude/CLAUDE.md · 108k | CLAUDE.md | testlint-formatstylearch+1 | 97/100 | 14 days ago | |
| supabase/supabase.github/instructions/studio-e2e-tests.instructions.md · 108k | Copilot instructions | teststyletesting-strategygit+2 | 60/100 | 14 days ago | |
| supabase/supabase.claude/skills/vercel-composition-patterns/AGENTS.md · 108k | AGENTS.md | styleapiuido-not | 45/100 | 14 days ago | |
| supabase/supabase.github/copilot-instructions.md · 108k | Copilot instructions | lint-formatstylegitagent-behaviour | 56/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| chihebnabil/lovable-boilerplate.github/instructions/global.instructions.md · 65 | Copilot instructions | buildlint-formatstylearch+4 | 100/100 | 14 days ago | |
| louislam/uptime-kuma.github/copilot-instructions.md · 90k | Copilot instructions | setupbuildtestlint-format+9 | 100/100 | 14 days ago | |
| HerringtonDarkholme/megarepo.github/copilot-instructions.md · 17 | Copilot instructions | setupbuildtestlint-format+7 | 100/100 | 14 days ago | |
| bagisto/bagisto.github/copilot-instructions.md · 28k | Copilot instructions | setupbuildteststyle+5 | 97/100 | 14 days ago | |
| JCodesMore/ai-website-cloner-template.github/copilot-instructions.md · 32k | Copilot instructions | buildlint-formatstylearch+3 | 97/100 | 7 days ago | |
| nerolis-lab/nerolis-lab.github/copilot-instructions.md · 32 | Copilot instructions | setupbuildtestlint-format+11 | 96/100 | 14 days ago | |
| darkmatter/nixmac.github/copilot-instructions.md · 25 | Copilot instructions | setupbuildtestlint-format+8 | 96/100 | 14 days ago | |
| thangaram611/second-brain.github/copilot-instructions.md · 0 | Copilot instructions | setupteststylearch+4 | 96/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/supabase-supabase-github-instructions-studio-telemetry-instructions)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.