rudder-ai-events-instr…
Adds RudderStack AI events code from an approved ai-events.md plan: installs @rudderstack/ai, rudderstack-ai or ai-sdk-go, wraps…
Creates and manages events, properties, categories, and custom types for instrumentation schemas. Use when creating or managing events, properties, categories, or custom types for RudderStack instrumentation
Claude Code
$ npx -y skills add rudderlabs/rudder-agent-skills --skill rudder-data-catalog --agent claude-code
Codex
$ npx skills add rudderlabs/rudder-agent-skills --skill rudder-data-catalog -a codex -y
Cursor
$ npx skills add rudderlabs/rudder-agent-skills --skill rudder-data-catalog -a cursor -y
Gemini CLI
$ npx skills add rudderlabs/rudder-agent-skills --skill rudder-data-catalog -a gemini-cli -y
GitHub Copilot
$ npx skills add rudderlabs/rudder-agent-skills --skill rudder-data-catalog -a github-copilot -y
OpenCode
$ npx skills add rudderlabs/rudder-agent-skills --skill rudder-data-catalog -a opencode -y
Windsurf
$ npx skills add rudderlabs/rudder-agent-skills --skill rudder-data-catalog -a windsurf -y
name: rudder-data-catalog description: Creates and manages events, properties, categories, and custom types for instrumentation schemas. Use when creating or managing events, properties, categories, or custom types for RudderStack instrumentation allowed-tools: "Bash(rudder-cli *), Read, Write, Edit"
This skill teaches how to create and manage the building blocks of instrumentation: **events**, **properties**, **categories**, and **custom types**.
When adding or editing catalog resources, author bottom-up (dependencies first) then validate and apply. The referencing order is strict — an event can't reference a property URN until that property exists.
digraph data_catalog_workflow {
rankdir=TB;
"1. Custom types (reusable shapes)" [shape=box];
"2. Properties (vocabulary)" [shape=box];
"3. Categories (grouping)" [shape=box];
"4. Events (reference all of the above)" [shape=box];
"rudder-cli validate -l ./" [shape=box];
"Errors?" [shape=diamond];
"Fix references / URNs / type config" [shape=box];
"rudder-cli apply --dry-run -l ./" [shape=box];
"Diff matches intent?" [shape=diamond];
"rudder-cli apply -l ./" [shape=box];
"Done" [shape=doublecircle];
"1. Custom types (reusable shapes)" -> "2. Properties (vocabulary)";
"2. Properties (vocabulary)" -> "3. Categories (grouping)";
"3. Categories (grouping)" -> "4. Events (reference all of the above)";
"4. Events (reference all of the above)" -> "rudder-cli validate -l ./";
"rudder-cli validate -l ./" -> "Errors?";
"Errors?" -> "Fix references / URNs / type config" [label="yes"];
"Fix references / URNs / type config" -> "rudder-cli validate -l ./";
"Errors?" -> "rudder-cli apply --dry-run -l ./" [label="no"];
"rudder-cli apply --dry-run -l ./" -> "Diff matches intent?";
"Diff matches intent?" -> "Fix references / URNs / type config" [label="no"];
"Diff matches intent?" -> "rudder-cli apply -l ./" [label="yes"];
"rudder-cli apply -l ./" -> "Done";
}**Why bottom-up:** properties reference custom types; events reference properties, categories, and custom types. Creating in the reverse order means every intermediate `validate` fails on missing references. For the validate → dry-run → apply details (error formats, diff reading, auth prereqs), see the `rudder-cli-workflow` skill.
| Concept | Purpose | Example | |---------|---------|---------| | **Events** | What happened | "Product Viewed", "Order Completed" | | **Properties** | Attributes of events | product_id, price, quantity | | **Categories** | Organize events | "Ecommerce", "User Lifecycle" | | **Custom Types** | Reusable validation patterns | ProductType, AddressType, Currency |
Before creating new events or properties, check what already exists to prevent duplicates and ensure consistency.
**Using Rudder CLI:**
# List existing events rudder-cli get events # List existing properties rudder-cli get properties # List custom types rudder-cli get custom-types
**Using MCP:**
Tool: list_data_catalog_events Search for events matching your proposed name Tool: list_data_catalog_properties Check if property already exists
Before proposing new resources, verify they follow conventions:
| Resource | Convention | Example | Anti-Example | |----------|------------|---------|--------------| | Events | Title Case with spaces | `Product Viewed` | `productViewed`, `product_viewed` | | Properties | snake_case | `product_id` | `productId`, `ProductId` | | Categories | kebab-case | `user-lifecycle` | `userLifecycle`, `user_lifecycle` | | Custom Types | PascalCase | `ProductType` | `product_type`, `productType` |
If proposing "Transformation Created", search for:
rudder-cli get events | grep -i transform
data-catalog/
├── events/
│ ├── ecommerce.yaml # Product Viewed, Order Completed, etc.
│ └── user-lifecycle.yaml # Signed Up, Logged In, etc.
├── properties/
│ ├── product-properties.yaml
│ ├── customer-properties.yaml
│ └── address-properties.yaml
├── categories/
│ └── categories.yaml
└── custom-types/
├── product-type.yaml
└── address-type.yamlversion: "rudder/v1"
kind: "event"
metadata:
name: "events"
spec:
name: "Product Viewed"
description: "User viewed a product detail page"
category: "urn:rudder:category/ecommerce"
rules:
- property: "urn:rudder:property/product_id"
required: true
- property: "urn:rudder:property/product_name"
required: true
- property: "urn:rudder:property/product_price"
required: true
- property: "urn:rudder:property/product_category"
- property: "urn:rudder:property/page_url"version: "rudder/v1"
kind: "property"
metadata:
name: "properties"
spec:
name: "product_id"
type: "string"
description: "Unique product identifier"
config:
minLength: 3
maxLength: 50version: "rudder/v1" kind: "category" metadata: name: "categories" spec: name: "ecommerce" description: "Events related to product discovery, cart, and purchase"
version: "rudder/v1" kind: "custom-type" metadata: name: "custom-types" spec: name: "
A Claude Code plugin marketplace and Agent Skills collection that teaches your AI coding agent how to drive every programmatic RudderStack surface — CLI, MCP server, Terraform, Profiles, and AI events — with the right preflight checks, commands, and recovery
Adds RudderStack AI events code from an approved ai-events.md plan: installs @rudderstack/ai, rudderstack-ai or ai-sdk-go, wraps…
Onboards an app to RudderStack AI events, including moving existing RudderStack LLM, chat or agent events to them: discovers…
Verifies RudderStack AI events locally and checks a move from existing RudderStack events: validates captures against the v0.4…
Installs and authenticates rudder-cli. Use when installing rudder-cli, setting up rudder cli, rudder-cli command not found, or…
Validates, previews, and applies RudderStack resource changes via YAML specs. Use when iterating on RudderStack resources with…
Imports existing RudderStack workspace resources into YAML files for git-based management. Use when importing existing…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.