/io-events-registration
Use when the user wants to subscribe to Adobe I/O Events, create an event registration, set up a webhook, configure event delivery, or manage existing registrations — phrases like "subscribe to events", "register for events", "set up webhook", "listen to events", "event
Claude Code
$ npx -y skills add adobe/skills --skill io-events-registration --agent claude-code
Codex
$ npx skills add adobe/skills --skill io-events-registration -a codex -y
Cursor
$ npx skills add adobe/skills --skill io-events-registration -a cursor -y
Gemini CLI
$ npx skills add adobe/skills --skill io-events-registration -a gemini-cli -y
GitHub Copilot
$ npx skills add adobe/skills --skill io-events-registration -a github-copilot -y
OpenCode
$ npx skills add adobe/skills --skill io-events-registration -a opencode -y
Windsurf
$ npx skills add adobe/skills --skill io-events-registration -a windsurf -y
SKILL.md
io-events-registration.SKILL.mdname: io-events-registration
description: Use when the user wants to subscribe to Adobe I/O Events, create an event registration, set up a webhook, configure event delivery, or manage existing registrations — phrases like "subscribe to events", "register for events", "set up webhook", "listen to events", "event registration", "I/O Events", "configure journal", "set up event delivery", "delete registration", "remove event registration", "unsubscribe from events", "list registrations", "update registration", "disable registration", "enable registration", "trace events", "debug delivery", "check event delivery", "why didn't I receive events", "event trace", "webhook verification failed", "re-verify webhook", "retry webhook", "webhook not verified", "webhook challenge", "add event to registration", "subscribe to more events", "add event type", "read journal", "fetch events", "poll journal", "get journal events".
license: Apache-2.0
I/O Events Registration Flow
Guide the user through creating an event registration to receive events from Adobe services.
**Before starting:** invoke the `dev-console-context` skill.
Steps
Step 1 — Org, Project, Workspace
1. Call `get_organisations` → ask user to pick org. Store both `id` (numeric) and `code` (IMS org code). 2. Ask: *"Do you want to use an existing project or create a new one?"*
**If existing project:**
- Call `get_projects` with `filterBy: "me"` → show as numbered list → user picks project.
**If new project:**
- Ask for a **title** only. Derive `name` automatically (strip non-alphanumeric, camelCase, truncate to 20 chars).
- Call `create_project` with `projectType: "default"`, the derived `name`, and title.
- The response returns `projectId` and `workspaceId` directly — the default workspace is **Production**. Use these directly.
3. For existing projects: call `list_workspaces` → auto-select if only one workspace (Production), otherwise ask user to pick.
---
Step 2 — Pick event provider
Call **both** in parallel:
- `list_event_providers` with both `consumerOrgId` (org `id` field) and `imsOrgCode` (org `code` field)
- `get_provider_metadata` with `imsOrgCode` (the org `code` field)
**Map and enrich:** 1. From `list_event_providers`, collect the unique `provider_metadata` values across all returned providers. 2. Filter `get_provider_metadata` results to **only those whose `id` matches one of the collected `provider_metadata` values** — discard the rest. 3. For display, use the enriched metadata (`group`, `label`, `description`, `type`) for the filtered entries only.
Show the enriched list grouped by `group` — **only providers actually available to this org**:
Creative Cloud:
1. Adobe Illustrator Cloud Docs — OAuth S2S or User Auth
Adobe Services:
2. Adobe Admin Console Audit Logs — OAuth S2S only
**Credential type display** — map `providerMetadata.type` field:
- `entp` → show **"OAuth S2S only"**
- `adobeid` → show **"User Auth only"**
- `entp_and_adobeid` → show **"OAuth S2S or User Auth"**
Ask the user to pick one provider category.
After picking, if `has_multiple_providers: true` → show instances (from `list_event_providers` filtered by `providerMetadataId`) and let the user pick one or more. If `has_multiple_providers: false` → auto-select the single instance.
---
Step 3 — Pick event types
For each selected provider `id`, call `list_provider_events`.
Combine all returned event types. Show and ask user to pick one or more:
1. Cloud Doc Deleted (ai_cloud_docs_deleted)
2. Cloud Doc Created (ai_cloud_docs_created)
3. Cloud Doc Updated (ai_cloud_docs_updated)
---
Step 4 — Pick credential
Use the `type` from the selected provider metadata to determine which credential types are valid:
| Provider metadata `type` | Valid credentials to show | |---|---| | `entp` | OAuth S2S only | | `adobeid` | User Auth (AdobeId) only | | `entp_and_adobeid` | Both OAuth S2S and User Auth |
**4a. Ask credential type first** (based on provider `type`):
- If `entp` → skip asking, proceed with OAuth S2S automatically
- If `adobeid` → skip asking, proceed with User Auth automatically
- If `entp_and_adobeid` → ask:
This provider supports multiple credential types. Which would you like to use?
1. OAuth Server-to-Server
2. User Auth (AdobeId)
**4b. If OAuth S2S selected:**
- Call `get_credentials` and check if one exists (`flow_type: "entp"` or `integration_type: "oauth_server_to_server"`)
- If exists → use it, call `get_credential_secrets` with `id_integration` to get `client_id`
- If not → **follow the OAuth S2S credential creation steps from the `dev-console-subscribe-api` skill** (`### OAuth Server-to-Server` section), then call `get_credential_secrets`
**4c. If User Auth selected:**
Ask for platform: WebApp, SinglePageApp, NativeApp, or apiKey.
- Call `get_credentials` and check if a User Auth credential exists for that platform (`flow_type: "adobeid"`)
- If exists → use it, call `get_credential_secrets` to get `client_id`
- If not → **follow the User Auth credential creation steps from the `dev-console-subscribe-api` skill** (`### User Auth — AdobeId` section) for the chosen platform, then call `get_credential_secrets`
---
Step 5 — Pick delivery type
Ask the user to pick **one** delivery type:
How would you like to receive events?
1. Journal — poll events from a journal endpoint (Adobe manages the queue)
2. Webhook — push events to a URL in real time
3. AWS EventBridge — deliver events to AWS
4. Runtime Action — invoke an App Builder runtime action
**If Journal selected:** no extra inputs needed.
**If Webhook selected:** 1. Ask for **webhook URL** 2. Ask: *"Single events or batches?"* → Single = `"webhook"`, Batch = `"webhook_batch"`
**If AWS EventBridge selected:**
- Ask for **AWS Region** and **AWS Account ID**
- `delivery_type: "aws_eventbridge"`, goes into `destination_metadata: { aws_region, aws_account_id }
Read more
name: io-events-registration description: Use when the user wants to subscribe to Adobe I/O Events, create an event registration, set up a webhook, configure event delivery, or manage existing registrations — phrases like "subscribe to events", "register for events", "set up webhook", "listen to events", "event registration", "I/O Events", "configure journal", "set up event delivery", "delete registration", "remove event registration", "unsubscribe from events", "list registrations", "update registration", "disable registration", "enable registration", "trace events", "debug delivery", "check event delivery", "why didn't I receive events", "event trace", "webhook verification failed", "re-verify webhook", "retry webhook", "webhook not verified", "webhook challenge", "add event to registration", "subscribe to more events", "add event type", "read journal", "fetch events", "poll journal", "get journal events". license: Apache-2.0
I/O Events Registration Flow
Guide the user through creating an event registration to receive events from Adobe services.
**Before starting:** invoke the `dev-console-context` skill.
Steps
Step 1 — Org, Project, Workspace
1. Call `get_organisations` → ask user to pick org. Store both `id` (numeric) and `code` (IMS org code). 2. Ask: *"Do you want to use an existing project or create a new one?"*
**If existing project:**
- Call `get_projects` with `filterBy: "me"` → show as numbered list → user picks project.
**If new project:**
- Ask for a **title** only. Derive `name` automatically (strip non-alphanumeric, camelCase, truncate to 20 chars).
- Call `create_project` with `projectType: "default"`, the derived `name`, and title.
- The response returns `projectId` and `workspaceId` directly — the default workspace is **Production**. Use these directly.
3. For existing projects: call `list_workspaces` → auto-select if only one workspace (Production), otherwise ask user to pick.
---
Step 2 — Pick event provider
Call **both** in parallel:
- `list_event_providers` with both `consumerOrgId` (org `id` field) and `imsOrgCode` (org `code` field)
- `get_provider_metadata` with `imsOrgCode` (the org `code` field)
**Map and enrich:** 1. From `list_event_providers`, collect the unique `provider_metadata` values across all returned providers. 2. Filter `get_provider_metadata` results to **only those whose `id` matches one of the collected `provider_metadata` values** — discard the rest. 3. For display, use the enriched metadata (`group`, `label`, `description`, `type`) for the filtered entries only.
Show the enriched list grouped by `group` — **only providers actually available to this org**:
Creative Cloud: 1. Adobe Illustrator Cloud Docs — OAuth S2S or User Auth Adobe Services: 2. Adobe Admin Console Audit Logs — OAuth S2S only
**Credential type display** — map `providerMetadata.type` field:
- `entp` → show **"OAuth S2S only"**
- `adobeid` → show **"User Auth only"**
- `entp_and_adobeid` → show **"OAuth S2S or User Auth"**
Ask the user to pick one provider category.
After picking, if `has_multiple_providers: true` → show instances (from `list_event_providers` filtered by `providerMetadataId`) and let the user pick one or more. If `has_multiple_providers: false` → auto-select the single instance.
---
Step 3 — Pick event types
For each selected provider `id`, call `list_provider_events`.
Combine all returned event types. Show and ask user to pick one or more:
1. Cloud Doc Deleted (ai_cloud_docs_deleted) 2. Cloud Doc Created (ai_cloud_docs_created) 3. Cloud Doc Updated (ai_cloud_docs_updated)
---
Step 4 — Pick credential
Use the `type` from the selected provider metadata to determine which credential types are valid:
| Provider metadata `type` | Valid credentials to show | |---|---| | `entp` | OAuth S2S only | | `adobeid` | User Auth (AdobeId) only | | `entp_and_adobeid` | Both OAuth S2S and User Auth |
**4a. Ask credential type first** (based on provider `type`):
- If `entp` → skip asking, proceed with OAuth S2S automatically
- If `adobeid` → skip asking, proceed with User Auth automatically
- If `entp_and_adobeid` → ask:
This provider supports multiple credential types. Which would you like to use? 1. OAuth Server-to-Server 2. User Auth (AdobeId)
**4b. If OAuth S2S selected:**
- Call `get_credentials` and check if one exists (`flow_type: "entp"` or `integration_type: "oauth_server_to_server"`)
- If exists → use it, call `get_credential_secrets` with `id_integration` to get `client_id`
- If not → **follow the OAuth S2S credential creation steps from the `dev-console-subscribe-api` skill** (`### OAuth Server-to-Server` section), then call `get_credential_secrets`
**4c. If User Auth selected:**
Ask for platform: WebApp, SinglePageApp, NativeApp, or apiKey.
- Call `get_credentials` and check if a User Auth credential exists for that platform (`flow_type: "adobeid"`)
- If exists → use it, call `get_credential_secrets` to get `client_id`
- If not → **follow the User Auth credential creation steps from the `dev-console-subscribe-api` skill** (`### User Auth — AdobeId` section) for the chosen platform, then call `get_credential_secrets`
---
Step 5 — Pick delivery type
Ask the user to pick **one** delivery type:
How would you like to receive events? 1. Journal — poll events from a journal endpoint (Adobe manages the queue) 2. Webhook — push events to a URL in real time 3. AWS EventBridge — deliver events to AWS 4. Runtime Action — invoke an App Builder runtime action
**If Journal selected:** no extra inputs needed.
**If Webhook selected:** 1. Ask for **webhook URL** 2. Ask: *"Single events or batches?"* → Single = `"webhook"`, Batch = `"webhook_batch"`
**If AWS EventBridge selected:**
- Ask for **AWS Region** and **AWS Account ID**
- `delivery_type: "aws_eventbridge"`, goes into `destination_metadata: { aws_region, aws_account_id }
Other skills on skills.
More skills from other plugins.
karpathy-guidelines
Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid…
agent-builder
Design and build AI agents for any domain. Use when users: (1) ask to "create an agent", "build an assistant", or "design an AI…
Questions about io-events-registration.
- Which coding agents can use io-events-registration?
- io-events-registration 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.

