.agents/skills/deep-review/references/dimensions/observability.md
Three questions, one dimension — all about what we can see after this ships:
The bar for 2 and 3 is deliberately narrow — most changes need neither. See the qualifying criteria in each section; a generic "should add tracking" suggestion is noise, not a finding.
catch blocks that swallow errors: no log, no rethrow, no user feedback — silent failure is the most expensive kinddebug package with a proper lobe-* namespace, not stray console.*The test is not "did we record that the user did something". It is: is there a decision waiting on this data? Instrument where the data closes a loop back into the product; skip where it would only produce a number nobody acts on.
Qualifying shapes — flag a missing analytics?.track() when the new capability is one of these:
Event quality, when one is added: a stable event name, and properties that make it sliceable (which surface, which variant, outcome). An event with no properties is a counter, and counters rarely answer the next question.
Qualifying shapes — new or changed code on one of these paths should ship with a way to see its cost:
performance's call, not yours)What "a way to see its cost" means concretely: latency at a percentile, not an average (averages hide the tail that users actually feel), an error/timeout rate, and for polling, request volume. Backend paths go through the OTEL instrumentation in packages/observability-otel; front-end page-level cost is covered by Vercel Speed Insights, so a bespoke timer for a page load is usually redundant — say so rather than proposing one.
.agents/skills/debug-package/SKILL.md — namespace conventions, format specifiersCLAUDE.md / AGENTS.md comment rules — mandatory comment scenarios (complex logic, trade-offs, reference links)src/components/Analytics/ — the analytics?.track() provider and existing event shapes; match the conventions already in use before inventing a new event namepackages/observability-otel/ — backend tracing/metrics instrumentationrg "catch" <changed files> — read every catch body added/modified by this diff; classify as logged / rethrown / surfaced / swallowed.rg 'analytics\?\.track' around the feature to see whether it was instrumented; when proposing an event, name the event and the properties, and state the decision the data would inform — if you cannot name that decision, do not report it.// ignore: <reason>).security finding, not this dimension.