Skip to content
AI & Agents
Skill

/io-events-filtering

Use when the user wants to filter events, test event registrations with sample events, or manage subscriber defined filters — phrases like "add filter", "create filter", "subscriber filter", "filter events", "define filter", "filter registration", "validate filter", "update

From plugin
skills
322176 skills5 MCP

Claude Code

$ npx -y skills add adobe/skills --skill io-events-filtering --agent claude-code

SKILL.md

io-events-filtering.SKILL.md
name: io-events-filtering
description: Use when the user wants to filter events, test event registrations with sample events, or manage subscriber defined filters — phrases like "add filter", "create filter", "subscriber filter", "filter events", "define filter", "filter registration", "validate filter", "update filter", "edit filter", "delete filter", "remove filter", "show my filters", "list filters", "show sample event", "test my registration", "send test event", "what does the event look like", "sample payload", "send a test event", "view sample payload", "custom event payload", "send custom event".
license: Apache-2.0

I/O Events — Filtering & Sample Events

**Before starting:** invoke the `io-events-registration` skill. ---

Sample Events Flow

Trigger when the user asks about sample events, wants to test their registration, or says things like *"show me a sample event"*, *"test my registration"*, *"what does the event look like"*, *"send a test event"*.

Step 1 — Check availability

Call `check_sample_event` with `providerId` and `eventCode`.

  • If `{ available: false }` → tell the user: *"No sample event is available for this event type."* and stop.
  • If `{ available: true }` → proceed to Step 2.

Step 2 — Ask the user

*"A sample event is available. Would you like to:* *1. View the sample payload* *2. Send it to your registration as-is (for testing)* *3. Send a custom version of it (edit the payload before sending)* *4. All of the above"*

Step 3a — View sample payload

Call `get_sample_event` with `providerId` and `eventCode`. Display the result:

📦 Sample Event

Format:  cloud_events_v1
Payload:
{
  "specversion": "1.0",
  "type": "ai_cloud_docs_deleted",
  ...
}

Step 3b — Send to registration (as-is)

Call `get_registrations_for_workspace` to fetch existing registrations. Show as a numbered list and ask the user to pick one:

1. My Journal Reg     (journal)   ID: reg-abc123
2. My Webhook Reg     (webhook)   ID: reg-def456

Call `post_sample_event` with `providerId`, `eventCode`, `registrationId` and no custom payload.

  • If `{ posted: true }` → *"✓ Sample event sent to your registration successfully."*
  • If `{ posted: false }` → *"This event type does not support posting sample events."*

Step 3c — Send a custom event

Call `get_sample_event` to fetch the sample payload (if not already done in Step 3a).

To determine the format, use `event_delivery_format` from the provider returned by `list_event_providers` — not the `format` field on the sample payload.

**CloudEvents format** (`event_delivery_format === "cloud_events_v1"`):

Parse `sample_payload` as JSON and show the user every field — marking `type` and `source` as read-only (Adobe enforces these server-side):

📦 Sample Event — customise before sending:

Editable:
  specversion:      "1.0"
  id:               "abc-123"
  time:             "2026-06-30T10:00:00Z"
  datacontenttype:  "application/json"
  data:             { ... }

Read-only (set by Adobe):
  type:    "{type value}"
  source:  "{source value}"

Change any editable field and I'll send it.

Wait for the user's changes. Build the final payload by merging their edits with the canonical `type` and `source` from the original sample.

**Other formats** (`event_delivery_format` is not `"cloud_events_v1"`):

Show the full `sample_payload` as editable — user can change any field including envelope fields. No restrictions apply.

Once ready, confirm before sending:

I'll send this custom event to your registration. Proceed?

Call `get_registrations_for_workspace` if a registration hasn't been selected yet → show list → user picks.

Call `post_sample_event` with `providerId`, `eventCode`, `registrationId`, and `payload` set to the merged payload.

  • If `{ posted: true }` → *"✓ Custom event sent to your registration successfully."*
  • If `{ posted: false }` → *"This event type does not support posting sample events."*

---

Subscriber Filter Flow

Trigger when user says *"add filter"*, *"create filter"*, *"subscriber filter"*, *"filter events"*, *"define filter"*, *"filter registration"*, *"validate filter"*.

Subscriber Defined Filters use **AWS Event Ruler JSON syntax** to match against event payloads. Only events that match the filter reach the registration's endpoint.

---

Step F1 — Resolve registration context

If `consumerOrgId`, `projectId`, `workspaceId` are not already known, invoke the `io-events-registration` skill Step 1 first.

Call `get_registrations_for_workspace` to get all registrations. Then validate eligibility:

**Step F1a — Filter by delivery type**

Exclude any registration with `delivery_type: "aws_eventbridge"` — AWS EventBridge handles its own filtering natively.

**Step F1b — Validate CloudEvents v1 format**

For the remaining registrations, collect all unique `provider_id` values from their `events_of_interest`. Call `list_event_providers` with `consumerOrgId` and `imsOrgCode` to get provider details.

For each provider, check its `event_delivery_format` field:

  • `"cloud_events_v1"` → eligible ✅
  • `"adobe_io"` → **not eligible** — Subscriber Defined Filters are not supported for the Adobe I/O format ❌
  • Any other value (or missing) → not eligible ❌

A registration is **fully eligible** if all its providers use `"cloud_events_v1"`. A registration is **partially eligible** if only some providers do — show it but warn that events from `"adobe_io"` providers will be delivered unfiltered. A registration is **ineligible** if none of its providers use `"cloud_events_v1"` — exclude it.

**Step F1c — Show eligible registrations**

Eligible: 1. My Journal Reg (journal)  2. My Webhook Reg ⚠️ (webhook)
Not eligible: ✗ My EventBridge Reg (aws_eventbridge)

Ask the user to pick from the eligible list only.

If **no eligible registrations exist**, tell the user:

Subscriber Defined Filters are only supported for journal, webhook, and runtime action
registrations whose events us
Read more
@adobe
Ships withskills

Repository of Adobe skills for AI coding agents.

322176 skills5 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
322
Star history of adobe/skills on GitHub, a chart by star-history.com

Other skills on skills.

aa-conversion-funnel-analysis

aa-conversion-funnel-a…

Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Use this skill…

@adobe@adobeInstall Skill
aa-executive-briefing

aa-executive-briefing

Generates a concise, executive-ready performance summary covering key metrics, trends, and what's driving movement. Use this…

@adobe@adobeInstall Skill
aa-kpi-pulse

aa-kpi-pulse

Produces a compact KPI digest showing how key metrics changed over a period and what's driving the movement. Use this skill when…

@adobe@adobeInstall Skill
aa-top-movers-watchlist

aa-top-movers-watchlis…

Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric…

@adobe@adobeInstall Skill
cja-dimension-analysis

cja-dimension-analysis

Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions…

@adobe@adobeInstall Skill

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

openclaw11d393k
@openclaw@openclawInstall Skill

Questions about io-events-filtering.

Which coding agents can use io-events-filtering?
io-events-filtering installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.