event-taxonomylisted
Install: claude install-skill alexpate/devtool-skills
# Event Taxonomy
Every developer tool ends up with two event streams, analytics events and outbound webhooks, and most teams let them drift into separate dialects until no query and no invoice can be trusted. The bar is Segment's tracking-plan discipline applied with Stripe's event-type rigor: one registry, one naming grammar, schemas reviewed like code. Renaming events after a year of data exists is a migration; naming them right costs an afternoon.
## Before you start
Check for `.agents/devtool-context.md` and read it if present (the metered unit and the API surface determine which events matter most). If absent, ask:
1. What are the 5 to 10 actions that matter: signups, API calls, the billable unit?
2. Where do events land today (PostHog, Amplitude, Segment, a warehouse), and how many sources emit them (backend, web SDK, mobile, CLI)?
3. Do outbound webhooks exist or are they planned? (If yes, the webhook `type` field and this taxonomy must be the same list.)
## The rules, in order of consequence
Positions below are defaults; deviate only with a reason.
### 1. One grammar: `object.verb`, one registry
Event names are `object.verb`: `invoice.paid`, `user.signed_up`, `image.resized`. Lowercase, dot-separated, snake_case within segments. Verbs are past tense because events are facts about things that happened: `image.resized`, never `image.resize` (that's a command) or `resizing_image` (that's a state).
- One canonical registry, zero team-local dialects. The moment gr