/commerce-app-admin-ui
Add or modify Adobe Commerce Admin UI extensions on the commerce/backend-ui/2 extension point: custom grid columns, mass actions, order view buttons, and a custom Admin menu entry. Use whenever the user wants to extend the Commerce Admin — add a column to the order, product, or
$ npx -y skills add adobe/skills --skill commerce-app-admin-ui --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/commerce-app-admin-ui
Context preview
The summary Claude sees to decide when to auto-load this skill.
Add or modify Adobe Commerce Admin UI extensions on the commerce/backend-ui/2 extension point: custom grid columns, mass actions, order view buttons, and a custom Admin menu entry. Use whenever the user wants to extend the Commerce Admin — add a column to the order, product, or
SKILL.md
commerce-app-admin-ui.SKILL.mdname: commerce-app-admin-ui
description: >
Add or modify Adobe Commerce Admin UI extensions on the
commerce/backend-ui/2 extension point: custom grid columns, mass actions,
order view buttons, and a custom Admin menu entry. Use whenever the user
wants to extend the Commerce Admin — add a column to the order, product, or
customer grid, add a bulk/mass action to a grid, add a button to the order
view page, or add a custom menu item or page — even when they don't name the
extension point.
license: Apache-2.0
compatibility: >
Requires Node.js 22+, aio CLI, @adobe/aio-commerce-lib-app, and
@adobe/aio-commerce-sdk (for Admin UI runtime action handlers).
View variants use @adobe/aio-commerce-lib-admin-ui/web (installed
automatically by the web-src scaffold).
Requires a base app initialized with commerce-app-init.
metadata:
author: adobe
Configure Commerce App Admin UI
Adds or modifies the `adminUi` block in an existing `app.commerce.config.ts`. The Admin UI extension point (`commerce/backend-ui/2`) lets a Commerce app extend the Commerce Admin with custom grid columns, mass actions, order view buttons, and a menu entry. Other extensibility domains (webhooks, events, business config) are added separately via their own skills.
Prerequisites
- Verify the app is **scaffolded and initialized**, not merely that the config exists. Require **both**:
- `app.commerce.config.ts` present in the project root, **and**
- the project initialized — signalled by the generated `src/commerce-extensibility-1/` directory and installed `node_modules` (the `@adobe/aio-commerce-lib-app` dependency).
- If `app.commerce.config.ts` is **missing**, stop and invoke `commerce-app-init` first (it writes the config, then runs init).
- If the config is **present but the project is not initialized** (no `src/commerce-extensibility-1/` or `node_modules`), run `npx @adobe/aio-commerce-lib-app init` before continuing. Init is idempotent — it finds the existing config, skips the interactive prompts, installs dependencies, and generates the project files.
- Actions can be authored in TypeScript only once the project has the TypeScript build setup (`webpack-config.cjs` + root `tsconfig.json`) that `init` scaffolds for a TypeScript Commerce config — see `commerce-app-init`. Otherwise, author actions in JavaScript.
Extension points at a glance
| Extension point | Entities | Variants | Server handler | Reference | | ------------------ | ----------------------------- | ------------- | -------------- | ------------------------------------------------------ | | Grid columns | order, product, customer | worker only | yes | [grid-columns](references/grid-columns.md) | | Mass actions | order, product, customer | view / worker | worker only | [mass-actions](references/mass-actions.md) | | Order view buttons | order only | view / worker | worker only | [order-view-buttons](references/order-view-buttons.md) | | Menu | single entry (`adminUi.menu`) | view (iframe) | no | [menu](references/menu.md) |
`view` renders an iframe into the app's web UI (`web-src`) at the entry's `path`; `worker` invokes a runtime action server-side. Grid columns are always worker; the menu is always an iframe.
Step 1 — Understand intent
For each thing the user wants to add, gather:
- **Which extension point** — grid columns, mass actions, order view buttons, or menu
- **Which entity** — `order`, `product`, or `customer` (grid columns and mass actions; view buttons are order-only; menu has no entity)
- **For mass actions and view buttons, the variant** — `worker` (runtime action) or `view` (iframe into `web-src`)
- The fields for that extension point (column definitions, button labels, menu parent, etc.) — see the reference file in the table above for the full field set
Step 2 — Declare in `app.commerce.config.ts`
Add (or merge into) the top-level `adminUi` block, preserving all other domains. If `adminUi` already exists, merge into it rather than replacing — keep existing entities, the menu, and existing array entries.
These fields are shared across the extension points:
| Field | Constraint | | -------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | `runtimeAction` | `<package>/<action>`; must resolve to a handler action you declare (Step 4) | | `confirm` | Optional `{ title?, message? }` — confirmation dialog before the action runs | | `notifications` | Optional `{ success?, error? }` — toast text Commerce shows on completion | | `sandboxPermissions` | Optional array (view/iframe entries); non-empty, no duplicates; each one of `allow-downloads`, `allow-modals`, `allow-popups` |
Minimal example covering each feature (use only the parts you need):
import { MENU_SALES } from "@adobe/aio-commerce-sdk/admin-ui/menu";
// inside defineConfig({ ... }):
adminUi: {
order: {
// Custom column on the order grid (worker only)
gridColumns: {
label: "Fulfillment data",
description: "Fulfillment status from the warehouse system.",
runtimeAction: "my-app/order-grid", // <package>/<action> — declare in Step 4
columns: [
{ id: "fulfillment_status", label: "Fulfillment", type: "string", align: "left" },
],
},
// Bulk action on selected orders (worker variant shown)
massActions: [
{ type: "worker", id: "archive-orders", label: "Archive",
runtimeRead more
name: commerce-app-admin-ui description: > Add or modify Adobe Commerce Admin UI extensions on the commerce/backend-ui/2 extension point: custom grid columns, mass actions, order view buttons, and a custom Admin menu entry. Use whenever the user wants to extend the Commerce Admin — add a column to the order, product, or customer grid, add a bulk/mass action to a grid, add a button to the order view page, or add a custom menu item or page — even when they don't name the extension point. license: Apache-2.0 compatibility: > Requires Node.js 22+, aio CLI, @adobe/aio-commerce-lib-app, and @adobe/aio-commerce-sdk (for Admin UI runtime action handlers). View variants use @adobe/aio-commerce-lib-admin-ui/web (installed automatically by the web-src scaffold). Requires a base app initialized with commerce-app-init. metadata: author: adobe
Configure Commerce App Admin UI
Adds or modifies the `adminUi` block in an existing `app.commerce.config.ts`. The Admin UI extension point (`commerce/backend-ui/2`) lets a Commerce app extend the Commerce Admin with custom grid columns, mass actions, order view buttons, and a menu entry. Other extensibility domains (webhooks, events, business config) are added separately via their own skills.
Prerequisites
- Verify the app is **scaffolded and initialized**, not merely that the config exists. Require **both**:
- `app.commerce.config.ts` present in the project root, **and**
- the project initialized — signalled by the generated `src/commerce-extensibility-1/` directory and installed `node_modules` (the `@adobe/aio-commerce-lib-app` dependency).
- If `app.commerce.config.ts` is **missing**, stop and invoke `commerce-app-init` first (it writes the config, then runs init).
- If the config is **present but the project is not initialized** (no `src/commerce-extensibility-1/` or `node_modules`), run `npx @adobe/aio-commerce-lib-app init` before continuing. Init is idempotent — it finds the existing config, skips the interactive prompts, installs dependencies, and generates the project files.
- Actions can be authored in TypeScript only once the project has the TypeScript build setup (`webpack-config.cjs` + root `tsconfig.json`) that `init` scaffolds for a TypeScript Commerce config — see `commerce-app-init`. Otherwise, author actions in JavaScript.
Extension points at a glance
| Extension point | Entities | Variants | Server handler | Reference | | ------------------ | ----------------------------- | ------------- | -------------- | ------------------------------------------------------ | | Grid columns | order, product, customer | worker only | yes | [grid-columns](references/grid-columns.md) | | Mass actions | order, product, customer | view / worker | worker only | [mass-actions](references/mass-actions.md) | | Order view buttons | order only | view / worker | worker only | [order-view-buttons](references/order-view-buttons.md) | | Menu | single entry (`adminUi.menu`) | view (iframe) | no | [menu](references/menu.md) |
`view` renders an iframe into the app's web UI (`web-src`) at the entry's `path`; `worker` invokes a runtime action server-side. Grid columns are always worker; the menu is always an iframe.
Step 1 — Understand intent
For each thing the user wants to add, gather:
- **Which extension point** — grid columns, mass actions, order view buttons, or menu
- **Which entity** — `order`, `product`, or `customer` (grid columns and mass actions; view buttons are order-only; menu has no entity)
- **For mass actions and view buttons, the variant** — `worker` (runtime action) or `view` (iframe into `web-src`)
- The fields for that extension point (column definitions, button labels, menu parent, etc.) — see the reference file in the table above for the full field set
Step 2 — Declare in `app.commerce.config.ts`
Add (or merge into) the top-level `adminUi` block, preserving all other domains. If `adminUi` already exists, merge into it rather than replacing — keep existing entities, the menu, and existing array entries.
These fields are shared across the extension points:
| Field | Constraint | | -------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | `runtimeAction` | `<package>/<action>`; must resolve to a handler action you declare (Step 4) | | `confirm` | Optional `{ title?, message? }` — confirmation dialog before the action runs | | `notifications` | Optional `{ success?, error? }` — toast text Commerce shows on completion | | `sandboxPermissions` | Optional array (view/iframe entries); non-empty, no duplicates; each one of `allow-downloads`, `allow-modals`, `allow-popups` |
Minimal example covering each feature (use only the parts you need):
import { MENU_SALES } from "@adobe/aio-commerce-sdk/admin-ui/menu";
// inside defineConfig({ ... }):
adminUi: {
order: {
// Custom column on the order grid (worker only)
gridColumns: {
label: "Fulfillment data",
description: "Fulfillment status from the warehouse system.",
runtimeAction: "my-app/order-grid", // <package>/<action> — declare in Step 4
columns: [
{ id: "fulfillment_status", label: "Fulfillment", type: "string", align: "left" },
],
},
// Bulk action on selected orders (worker variant shown)
massActions: [
{ type: "worker", id: "archive-orders", label: "Archive",
runtimeRepo: adobe/skills
Other skills on adobe-skills.
- /aa-conversion-funnel-analysis
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Use this skill when someone describes a journey and asks about conversion rates, drop-off, fallout, or step completion. Trigger for "analyze our checkout funnel,"
Open skill - /aa-executive-briefing
Generates a concise, executive-ready performance summary covering key metrics, trends, and what's driving movement. Use this skill when someone needs to produce a briefing, executive summary, performance narrative, or stakeholder readout — for example, "write an exec summary of
Open skill - /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 someone asks for a performance summary, a weekly recap, a morning briefing, a KPI update, or any variation of "how did we do this week/month." Also
Open skill - /aa-segment-performance-comparator
Compares the performance of two or more audience segments across key metrics side by side. Use this skill when someone wants to compare audiences or visitor groups — for example, "how do mobile visitors compare to desktop on conversion," "compare new vs. returning visitors,"
Open skill - /aa-top-movers-watchlist
Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric between two time periods. Use this skill when someone asks "what's up and what's down," "which campaigns moved the most," "top gainers and losers,"
Open skill - /cja-dimension-analysis
Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions — including cardinality, distribution/skew, trends, anomalies, data quality errors, comparisons, and forecasting. Also trigger when someone asks "what
Open skill

