From Snowplow
Design event tracking schemas, entities, and event specifications following Snowplow conventions. Use when the user wants to track new events, create schemas, or design their tracking plan. Use this skill whenever a user mentions schemas, event design, or instrumentation planning, even if they don't explicitly say "tracking plan." Triggers: schema design, tracking plan, event spec, Iglu, entities, data product.
How this skill is triggered — by the user, by Claude, or both
Slash command
/snowplow:tracking-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Tracking design defines what events to track, what data to include, and how to structure it using Snowplow's schema and event specification system. Help the user produce a well-designed, maintainable, and scalable tracking setup that follows Snowplow conventions.
Tracking design defines what events to track, what data to include, and how to structure it using Snowplow's schema and event specification system. Help the user produce a well-designed, maintainable, and scalable tracking setup that follows Snowplow conventions.
How tracking design is represented in the warehouse:
unstruct_event_.context_.context_com_snowplowanalytics_snowplow_event_specification column, which contains event specification and tracking plan metadata (id and name).It is important you never create schemas or event specifications without explicit user confirmation. Always present your design proposal first, then ask "Does this look correct? I'll create these schemas and event specification once you confirm." Only proceed with API calls after receiving confirmation.
/data-structures/<hash>), resolve it with get_data_structure_by_hash to identify which schema they mean.Ask clarifying questions to understand what the customer wants to track:
Apply Snowplow best practices:
add_to_cart, product)id not product_id inside a product entity)Present the complete design as a summary:
Wait for explicit user approval before making any API calls. Ask: "Does this look correct? I'll create these schemas and event specification once you confirm."
Never proceed with creation without confirmation.
Execute API calls in the correct order:
Note: Event specifications include both the event schema and all entity schemas (tracked and enriched) in a single API call. There is no separate "add entity" step.
A tracking plan can be linked to one or more source applications. Entities defined on a source application are automatically inherited by every event specification in that tracking plan — they do not need to be (and should not be) added to individual event specs. Users can exclude source applications from specific event specs if needed.
When designing event specs within a tracking plan that has source applications:
Example: If a source app defines iglu:com.snowplowanalytics.mobile/application/jsonschema/1-0-0 as an inherited entity, you do not need to add it to any event spec in the plan — it will always be present on every event.
When designing events, there are two valid approaches. Help the customer choose the right one:
Grouped Actions: A single schema captures multiple related action types via a discriminator property (e.g., a product_action schema with a type field for "view", "click", "add_to_cart"). Benefits: fewer schemas, simpler cross-action analysis. Requires strong governance to prevent the schema becoming a catch-all.
Atomic Schemas: A separate schema per distinct action (e.g., view_product, add_to_cart, remove_from_cart). Benefits: clarity, independent evolution, self-documenting. Trade-off: more schemas to manage.
Recommendation: If working within an existing tracking plan, follow the established pattern for consistency. Default to atomic schemas for clarity unless the customer has a clear family of closely related actions where grouped makes sense. Always ask the customer which approach they prefer when the choice is ambiguous.
When using the Grouped Actions pattern, property instructions are essential for governance. Each event spec sharing the same schema MUST use property instructions to restrict its discriminator field to specific values. This ensures each event spec clearly defines which subset of the schema it represents.
Example: A product_action schema with a type discriminator:
type allowed values [add_to_cart]type allowed values [remove_from_cart]type allowed values [view]Property instructions also apply to entity schemas. If a product entity has a category field, different event specs can restrict which categories are valid for their context.
When creating an event spec, check if the chosen event schema is already used by other event specs in the same tracking plan. If so:
Also proactively suggest property instructions when:
E-commerce events: Usually need product, user, and transaction entities. Snowplow's ecommerce schema in Iglu Central is a great reusable option. Media events: Often need media content, media player, and user entities. Check Iglu Central for media schemas. User events: Often need user, session, and page/screen entities. Content events: Typically need content item, user, and page entities Form events: Usually need form, user, and validation error entities. Snowplow's form schemas in Iglu Central can be reused.
If a user says "data product", interpret it as "tracking plan" — same concept, older name.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub snowplow/skills --plugin snowplow