
Commerce App Init
- 71 installs
- 13 repo stars
- Updated August 4, 2026
- adobe/aio-commerce-sdk
commerce-app-init is a Claude Code skill that scaffolds a new Adobe Commerce app using the aio-commerce-sdk by writing app.commerce.config.ts and running init to generate project files.
About
commerce-app-init scaffolds a new Adobe Commerce app using the aio-commerce-sdk. A developer uses it to create a bare Commerce app from scratch: it writes app.commerce.config.ts with metadata, then runs init to install dependencies and generate the required project files. It does not configure extensibility domains, deferring events, webhooks, and business config to their own skills, and chains to appbuilder-project-init for Developer Console setup when deploying.
- Scaffolds a new Adobe Commerce app using the aio-commerce-sdk
- Creates app.commerce.config.ts and runs init to generate project files
- Chains to appbuilder-project-init for Developer Console setup when deploying
Commerce App Init by the numbers
- 71 all-time installs (skills.sh)
- Ranked #3,083 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
commerce-app-init capabilities & compatibility
- Capabilities
- commerce app scaffolding · project init · config generation
- Use cases
- api development
- Pricing
- Free
What commerce-app-init says it does
Scaffold a new Adobe Commerce app using the aio-commerce-sdk. Creates the base project structure and app.commerce.config file with metadata.
Scaffolds a bare Adobe Commerce app: creates `app.commerce.config.ts` with metadata, then runs `init` to install dependencies and generate all required project files.
npx skills add https://github.com/adobe/aio-commerce-sdk --skill commerce-app-initAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 71 |
|---|---|
| repo stars | ★ 13 |
| Last updated | August 4, 2026 |
| Repository | adobe/aio-commerce-sdk ↗ |
What it does
Scaffold a bare Adobe Commerce app: write app.commerce.config.ts and run init to generate the project.
Who is it for?
Creating a new Commerce app from scratch or initializing a bare Commerce app project.
Skip if: Configuring extensibility domains (events, webhooks, business config), which use commerce-app-eventing, commerce-app-webhooks, or commerce-app-business-config.
When should I use this skill?
A user wants to create a new Adobe Commerce app or initialize a bare Commerce app project.
What you get
A scaffolded Commerce app with app.commerce.config.ts and generated project files that passes aio app build.
- app.commerce.config.ts
- generated Commerce app project structure
By the numbers
- 3 setup steps (create config, init, verify build)
- requires Node.js 22+
- metadata.id max 100 chars, displayName max 50 chars
Files
Initialize a new Commerce App
Scaffolds a bare Adobe Commerce app: creates app.commerce.config.ts with metadata, then runs init to install dependencies and generate all required project files. Extensibility domains (events, webhooks, business config) are added separately via domain skills.
Step 1 — Create the config
If app.commerce.config.ts already exists in the project root, do not overwrite it — skip straight to Step 2 (this skill is safe to re-invoke on an app that already has a config). Otherwise, derive values for the following fields from the user's intent, confirm, and write the file to the project root:
// app.commerce.config.ts
import { defineConfig } from "@adobe/aio-commerce-lib-app/config";
export default defineConfig({
metadata: {
id: "my-commerce-app", // alphanumeric + hyphens only, max 100 chars
displayName: "My Commerce App", // shown in App Management UI, max 50 chars
description: "...", // max 255 chars
version: "1.0.0", // Major.Minor.Patch only, no pre-release identifiers
},
});See assets/app.commerce.config.ts for the full annotated template.
Step 2 — Initialize the project
Always run init — it finds the existing config, validates it, and handles project setup:
npx @adobe/aio-commerce-lib-app initSince app.commerce.config.ts already exists, init skips the interactive prompts. Re-running is safe: when a config is present it installs dependencies and (re)generates the project files — the app-management package is regenerated, while user packages under src/commerce-extensibility-1/actions/ are preserved (see Project structure below).
Project structure
After init, the project has two types of directories under src/:
- `src/commerce-extensibility-1/actions/` — custom runtime actions for webhooks and events. Register them in
src/commerce-extensibility-1/ext.config.yamlunder a user-defined package name (any name exceptapp-management, which is reserved by the framework). These surviveaio app build— the generator only regenerates theapp-managementpackage. - `src/commerce-extensibility-1/.generated/` — auto-generated by
aio app build. Treat as read-only; any manual edits here will be overwritten. - `src/commerce-configuration-1/` — managed by
aio app build. Treat as read-only.
Step 3 — Verify the config
Build the project to confirm everything is valid:
aio app buildIf the config is invalid, the build fails with a detailed validation error pointing to the offending field.
Common Issues
- `id` validation error:
metadata.idaccepts alphanumeric characters and hyphens only — no dots, underscores, or spaces. - `version` validation error: Only numeric semver is accepted (
1.0.0). Pre-release identifiers (1.0.0-beta) are not supported. - `defineConfig` not found: Ensure
@adobe/aio-commerce-lib-appis installed and imported from@adobe/aio-commerce-lib-app/config.
Quality Bar
aio app buildcompletes without errors
Chaining
After aio app build passes:
1. Bootstrap the Developer Console — for any follow-up topic related to App Builder setup (Console project/workspace, API subscriptions, deploy, run, workspace wiring), invoke skill appbuilder-project-init (from adobe/skills). Tell it:
- Skip the
aio app initsteps — the Commerce scaffold already exists - Subscribe
AdobeIOManagementAPISDK(I/O Management API) as part of the workspace bootstrap — required for IMS credential syncing at runtime - Once the workspace is created, ask the user whether their Commerce backend is ACCS (Adobe Commerce as Cloud Service) or PaaS. If ACCS,
ACCS-REST-APImust also be subscribed: runaio console opento open the workspace in the browser, then add it manually through the Developer Console UI. Do not proceed until the user confirms it has been added.
If appbuilder-project-init is not installed, ask the user to install it first:
npx skills add adobe/skills --skill appbuilder-project-init -y2. Extend with domain skills — once the workspace is wired:
commerce-app-eventing— manage Commerce and external event sourcescommerce-app-webhooks— manage webhook interceptioncommerce-app-business-config— manage custom business configuration
References
- assets/app.commerce.config.ts — Minimal config template
import { defineConfig } from "@adobe/aio-commerce-lib-app/config";
export default defineConfig({
metadata: {
id: "my-commerce-app", // alphanumeric + hyphens only, max 100 chars
displayName: "My Commerce App", // shown in App Management UI, max 50 chars
description: "A Commerce app built with aio-commerce-sdk.", // max 255 chars
version: "1.0.0", // Major.Minor.Patch only, no pre-release identifiers
},
});
{
"skill_name": "commerce-app-init",
"evals": [
{
"id": 1,
"prompt": "Create a new Adobe Commerce app called 'Loyalty Rewards' that manages customer loyalty points.",
"expected_output": "Project is initialized and app.commerce.config.ts is created with metadata: a meaningful id (e.g. loyalty-rewards), displayName 'Loyalty Rewards', a description about loyalty points, and version 1.0.0. Validation passes with no errors. No domain configuration (events, webhooks, business config) is added.",
"assertions": [
"app.commerce.config.ts is created at the project root",
"metadata.id contains only alphanumeric characters and hyphens",
"metadata.displayName is 'Loyalty Rewards' or equivalent (max 50 chars)",
"metadata.version is a numeric semver string (e.g. 1.0.0)",
"No domain keys (eventing, webhooks, businessConfig) appear in the config",
"aio app build completes without errors"
]
},
{
"id": 2,
"prompt": "I have an existing App Builder project and I want to add Commerce app support to it. The app is for syncing inventory updates between Commerce and an external warehouse system.",
"expected_output": "The agent creates app.commerce.config.ts with metadata reflecting the inventory sync purpose, runs init to set up the project, and builds successfully. No domain configuration is added.",
"assertions": [
"Agent creates app.commerce.config.ts and runs the init command",
"app.commerce.config.ts is created with metadata only",
"metadata.description references inventory or warehouse sync",
"No domain configuration is added",
"aio app build completes without errors"
]
},
{
"id": 3,
"prompt": "Create a Commerce app that listens to order placed events and sends a notification to Slack.",
"expected_output": "The agent scaffolds the base app with metadata only and does not add event configuration.",
"assertions": [
"app.commerce.config.ts is created with metadata only",
"No eventing configuration is added to the config",
"Agent suggests using commerce-app-eventing skill for the event source setup",
"aio app build completes without errors"
]
},
{
"id": 4,
"prompt": "My project already has an app.commerce.config.ts at the root, but it was never initialized — there's no src/commerce-extensibility-1/ directory and no node_modules. Get the project ready to build.",
"expected_output": "The agent detects the existing config, does not overwrite it, and runs npx @adobe/aio-commerce-lib-app init to install dependencies and generate the project files. It notes that re-running init is safe because a config is present (it skips the interactive prompts), and confirms with aio app build.",
"assertions": [
"The existing app.commerce.config.ts is not overwritten",
"The agent runs npx @adobe/aio-commerce-lib-app init",
"The agent explains init is idempotent / safe to re-run when a config exists",
"aio app build completes without errors"
]
}
]
}
Related skills
FAQ
What does init produce?
It installs dependencies and generates the project files, including src/commerce-extensibility-1/ and the app-management package; user actions under src/commerce-extensibility-1/actions/ are preserved on re-run.
Is re-running safe?
Yes. If app.commerce.config.ts already exists it is not overwritten, and init is idempotent.