/dev-console-subscribe-api
Use when the user wants to add, subscribe, enable, or integrate an Adobe API — phrases like "add Analytics", "subscribe Firefly", "enable API", "add API to project", "create credential", "set up OAuth S2S", "subscribe to service", "add service", "connect API", "integrate Adobe
Claude Code
$ npx -y skills add adobe/skills --skill dev-console-subscribe-api --agent claude-code
Codex
$ npx skills add adobe/skills --skill dev-console-subscribe-api -a codex -y
Cursor
$ npx skills add adobe/skills --skill dev-console-subscribe-api -a cursor -y
Gemini CLI
$ npx skills add adobe/skills --skill dev-console-subscribe-api -a gemini-cli -y
GitHub Copilot
$ npx skills add adobe/skills --skill dev-console-subscribe-api -a github-copilot -y
OpenCode
$ npx skills add adobe/skills --skill dev-console-subscribe-api -a opencode -y
Windsurf
$ npx skills add adobe/skills --skill dev-console-subscribe-api -a windsurf -y
SKILL.md
dev-console-subscribe-api.SKILL.mdname: dev-console-subscribe-api
description: Use when the user wants to add, subscribe, enable, or integrate an Adobe API — phrases like "add Analytics", "subscribe Firefly", "enable API", "add API to project", "create credential", "set up OAuth S2S", "subscribe to service", "add service", "connect API", "integrate Adobe API", "I need access to", "set up credentials for", "create project", "create a new project", "new project", "set up a project", "provision API", "provision access", "get API access", "generate credentials", "new credential", "create OAuth", "create S2S". Handles the full flow — finding the API, picking a credential type, selecting a product profile, creating a credential if needed, and subscribing to the API.
license: Apache-2.0
Subscribe API Flow
Guide the user through subscribing an Adobe API to a credential in their workspace, step by step.
**Before starting:** invoke the `dev-console-context` skill.
Steps
1. **Get org** — Call `get_organisations` and ask the user which org to use.
2. **New or existing project?** — Ask the user:
1. Create a new project
2. Use an existing project
**If new project (1):**
- Ask the user for a **title** only (e.g. "My Analytics Project"). Do NOT ask for a name.
- Derive the `name` from the title automatically: strip all non-alphanumeric characters, camelCase or concatenate words, truncate to 20 characters. For example: "My Analytics Project" → "MyAnalyticsProject".
- Call `create_project` with `projectType: "default"`, the derived `name`, and the user's title.
- The response returns both `projectId` and `workspaceId` directly — the default workspace is always **Production**. Do NOT call `list_workspaces` unless the credential type is **User Auth (AdobeId)**, in which case call `list_workspaces` to confirm the available workspaces.
**If existing project (2):**
- Ask:
1. All projects
2. My projects (created or modified by me)- 1 → call `get_projects` with `filterBy: "all"`
- 2 → call `get_projects` with `filterBy: "me"`
- Show the returned project list as a numbered list (names only, no raw IDs) and ask the user which project they want.
- Call `list_workspaces` with the chosen project → show workspace list as a numbered list → ask which workspace to use.
- Once the workspace is selected, **automatically** (without asking):
1. Call `get_credentials` for that workspace. 2. For each credential in the response, call `get_credential_services` with its `id_integration`. Only show credentials returned by `get_credentials` — do NOT include org-level credentials. 3. Display a summary like:
Here's what's already set up in this workspace:
📋 Credential: "My S2S Cred" (OAuth Server-to-Server)
APIs subscribed: Adobe Analytics, Firefly API
📋 Credential: "My Web App" (AdobeId)
APIs subscribed: noneIf `get_credentials` returns an empty list, say: *"No credentials found in this workspace yet."* 4. Then proceed to ask which API they want to add.
3. **Find the API** — If the user asks *"what APIs are available"*, *"show me available APIs"*, or similar, call `list_services` with `filterBy: "enabled"` and display only the enabled APIs as a list (name + description, no raw codes). If the user named a specific API, call `list_services` with `filterBy: "enabled"` to find its `code` and full details. Never guess an SDK code.
4. **Pick credential type** — **Always run this step based on the API's supported types — never skip it because an existing credential was found.** An API can have multiple enabled instances with different `type` values. Collect ALL enabled instances for the API code, then:
- Any instance whose `type` is `admin_entp` → **do not offer it as a selectable option**, but show a note to the user:
⚠️ Admin Enterprise credential is also available for this API but is not yet
supported in this connector. You can still subscribe to it via the
Adobe Developer Console.- If **no instances remain** after setting aside `admin_entp` → tell the user:
This API only supports Admin Enterprise credentials, which are not yet supported
in this connector. You can subscribe via the Adobe Developer Console directly.and stop.
- If only **one** remaining credential type → proceed with it automatically.
- If **multiple** remaining credential types → show them as a numbered list and ask: *"This API supports multiple credential types. Which would you like to use?"*
1. Analytics credential *(internal: `analytics`)* — if an `analytics` instance is present 2. User Auth (AdobeId) — for user-facing apps *(internal: `adobeid`)* 3. OAuth Server-to-Server — for server-to-server access *(internal: `oauth_server_to_server`, also used for `entp`)*
- **Wait for the user to pick before proceeding.** Do not auto-select based on what credentials already exist in the workspace.
- **Show only credential type names in this list — never mention existing credentials here.** Do not append "subscribe to the existing X credential" or any reference to existing workspace credentials. Existing credential lookup happens in step 6, after the type is chosen.
5. **Check for product profiles** — After the credential type is decided, inspect its `properties.licenseConfigs` array from the matching API instance:
- If it is **non-empty**: present the profiles as a numbered list (show `name`, never raw `id` or `productId`) and tell the user: *"You can select one or more of these profiles."* Collect their choices — you'll need the selected profiles' `id` and `productId` fields when subscribing.
- If it is **empty or absent**: skip directly to step 6 with no `licenseConfigs`.
- **This step must complete before any credential creation or subscription call** — even when
Read more
name: dev-console-subscribe-api description: Use when the user wants to add, subscribe, enable, or integrate an Adobe API — phrases like "add Analytics", "subscribe Firefly", "enable API", "add API to project", "create credential", "set up OAuth S2S", "subscribe to service", "add service", "connect API", "integrate Adobe API", "I need access to", "set up credentials for", "create project", "create a new project", "new project", "set up a project", "provision API", "provision access", "get API access", "generate credentials", "new credential", "create OAuth", "create S2S". Handles the full flow — finding the API, picking a credential type, selecting a product profile, creating a credential if needed, and subscribing to the API. license: Apache-2.0
Subscribe API Flow
Guide the user through subscribing an Adobe API to a credential in their workspace, step by step.
**Before starting:** invoke the `dev-console-context` skill.
Steps
1. **Get org** — Call `get_organisations` and ask the user which org to use.
2. **New or existing project?** — Ask the user:
1. Create a new project 2. Use an existing project
**If new project (1):**
- Ask the user for a **title** only (e.g. "My Analytics Project"). Do NOT ask for a name.
- Derive the `name` from the title automatically: strip all non-alphanumeric characters, camelCase or concatenate words, truncate to 20 characters. For example: "My Analytics Project" → "MyAnalyticsProject".
- Call `create_project` with `projectType: "default"`, the derived `name`, and the user's title.
- The response returns both `projectId` and `workspaceId` directly — the default workspace is always **Production**. Do NOT call `list_workspaces` unless the credential type is **User Auth (AdobeId)**, in which case call `list_workspaces` to confirm the available workspaces.
**If existing project (2):**
- Ask:
1. All projects
2. My projects (created or modified by me)- 1 → call `get_projects` with `filterBy: "all"`
- 2 → call `get_projects` with `filterBy: "me"`
- Show the returned project list as a numbered list (names only, no raw IDs) and ask the user which project they want.
- Call `list_workspaces` with the chosen project → show workspace list as a numbered list → ask which workspace to use.
- Once the workspace is selected, **automatically** (without asking):
1. Call `get_credentials` for that workspace. 2. For each credential in the response, call `get_credential_services` with its `id_integration`. Only show credentials returned by `get_credentials` — do NOT include org-level credentials. 3. Display a summary like:
Here's what's already set up in this workspace:
📋 Credential: "My S2S Cred" (OAuth Server-to-Server)
APIs subscribed: Adobe Analytics, Firefly API
📋 Credential: "My Web App" (AdobeId)
APIs subscribed: noneIf `get_credentials` returns an empty list, say: *"No credentials found in this workspace yet."* 4. Then proceed to ask which API they want to add.
3. **Find the API** — If the user asks *"what APIs are available"*, *"show me available APIs"*, or similar, call `list_services` with `filterBy: "enabled"` and display only the enabled APIs as a list (name + description, no raw codes). If the user named a specific API, call `list_services` with `filterBy: "enabled"` to find its `code` and full details. Never guess an SDK code.
4. **Pick credential type** — **Always run this step based on the API's supported types — never skip it because an existing credential was found.** An API can have multiple enabled instances with different `type` values. Collect ALL enabled instances for the API code, then:
- Any instance whose `type` is `admin_entp` → **do not offer it as a selectable option**, but show a note to the user:
⚠️ Admin Enterprise credential is also available for this API but is not yet
supported in this connector. You can still subscribe to it via the
Adobe Developer Console.- If **no instances remain** after setting aside `admin_entp` → tell the user:
This API only supports Admin Enterprise credentials, which are not yet supported
in this connector. You can subscribe via the Adobe Developer Console directly.and stop.
- If only **one** remaining credential type → proceed with it automatically.
- If **multiple** remaining credential types → show them as a numbered list and ask: *"This API supports multiple credential types. Which would you like to use?"*
1. Analytics credential *(internal: `analytics`)* — if an `analytics` instance is present 2. User Auth (AdobeId) — for user-facing apps *(internal: `adobeid`)* 3. OAuth Server-to-Server — for server-to-server access *(internal: `oauth_server_to_server`, also used for `entp`)*
- **Wait for the user to pick before proceeding.** Do not auto-select based on what credentials already exist in the workspace.
- **Show only credential type names in this list — never mention existing credentials here.** Do not append "subscribe to the existing X credential" or any reference to existing workspace credentials. Existing credential lookup happens in step 6, after the type is chosen.
5. **Check for product profiles** — After the credential type is decided, inspect its `properties.licenseConfigs` array from the matching API instance:
- If it is **non-empty**: present the profiles as a numbered list (show `name`, never raw `id` or `productId`) and tell the user: *"You can select one or more of these profiles."* Collect their choices — you'll need the selected profiles' `id` and `productId` fields when subscribing.
- If it is **empty or absent**: skip directly to step 6 with no `licenseConfigs`.
- **This step must complete before any credential creation or subscription call** — even when
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 dev-console-subscribe-api.
- Which coding agents can use dev-console-subscribe-api?
- dev-console-subscribe-api 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.

