视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
commerce-app-review【文档与办公】Use when validating an App Builder app before submitting to Adobe Exchange, or when the user mentions Adobe Commerce app compliance, extension review, marketplace submission, or Adobe Exchange listing. Checks security requirements, project structure, documentation completeness, and dependency health; reports MUST-have blockers and NICE-to-have recomm…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Reviews a local app directory against Adobe's Commerce submission guidelines and walks through each finding interactively — MUST-have blockers first, then NICE-to-have recommendations.
APP_PATH (optional) — path to the app root. Defaults to the current working directory.APP_TYPE (required) — downloadable or non-downloadable. A downloadable app allows merchants to download the source package; a non-downloadable app is installed directly from Adobe Exchange with one click.If APP_PATH is not provided, use the current working directory. Confirm it exists and is a directory. If not, stop and report:
Path not found. Please provide the path to the root of your app codebase.
If APP_TYPE is not provided, ask:
Is this app downloadable or non-downloadable?
- Downloadable — merchants download the source package and deploy it themselves
- Non-downloadable — merchants install directly from Adobe Exchange with one click
Do not proceed until both are confirmed.
Check whether aio is installed (e.g. command -v aio). This is a presence check only — do not attempt to authenticate at this stage. If aio is not found, note it once:
Note:
aioisn't installed. Walkthrough enrichment (Step 8) will use fallback knowledge unlessaiois installed and authenticated before then.
Continue either way.
Read references/finding.md and all files under references/exceptions/ (paths relative to this skill file).
Load pattern files conditionally:
Pattern files take precedence over fetched guidelines. Exception files suppress findings from both.
If any file is not found, skip and continue.
Fetch both pages using curl. Use raw GitHub URLs — the rendered developer.adobe.com pages are not reliably accessible:
https://raw.githubusercontent.com/AdobeDocs/commerce-extensibility/refs/heads/main/src/pages/app-development/app-submission-guidelines.mdhttps://raw.githubusercontent.com/AdobeDocs/commerce-extensibility/refs/heads/main/src/pages/admin-ui-sdk/app-review-checklist.md — only if commerce/backend-ui/1 is in app.config.yaml or ext.config.yaml, or @adobe/uix-guest/@adobe/uix-core in package.jsonIf a page is unreachable, note which one failed, proceed with the other, and warn the user that coverage is partial.
Read these files in order:
app.config.yaml — extension points, actions, inputs, annotations, productDependenciespackage.json — name, description, author, version, dependencies, scriptsenv.dist / env.example / any env.* at the root — documented env varsREADME.md — installation instructions, events, API requirementsdeploy.yaml — app ID, APIs, workspacesinstall.yaml — extension points (if Admin UI SDK detected)*.config.yaml and ext.config.yaml under src/ and actions/index.js under actions/web-src/src/ — UI code, innerHTML, routingextension-manifest.json — if Admin UI SDK detectedIf a file does not exist, note it and continue.
Build a complete list of checks from the pattern files and fetched guidelines. Then work through every item silently, one by one. Do not skip any item.
Exclude the following entirely — do not check:
npm audit, npx npm-check, or any check requiring running npmFor each item:
references/exceptions/ applies → suppress itAPP_TYPE → skip itBefore recording any FINDING, verify it in the actual files. If you cannot point to a specific file and line number, do not flag it.
Before flagging a missing package — verify it is directly imported in source files, not just a transitive dependency.
After working through all items, collect all FINDINGs and assign codes: MUST-<n> and NICE-<n>. Merge closely related findings before assigning codes.
For each finding track:
SEVERITY — MUST or NICEDESCRIPTION — one sentence, specific and actionableFILE_PATH — absolute path to the relevant file; empty for general issues. Render as a markdown link: [relative/path](file:///absolute/path)LINE_NUMBER — specific line; 0 for general issuesCATEGORY — one or more of: security · documentation · code · dependencies · otherPrint a concise findings list — no enrichment yet. Format:
Found N MUST-have issue(s) and M NICE-to-have recommendation(s).
**MUST — blockers**
- MUST-1: <one-line description> (`<FILE_PATH>`, line <LINE_NUMBER>)
- MUST-2: …
**NICE — recommendations**
- NICE-1: <one-line description> (`<FILE_PATH>`, line <LINE_NUMBER>)
- NICE-2: …
Omit a group heading if it is empty. Omit the file reference when FILE_PATH is empty.
After the list, show:
Type walkthrough to go through each finding · MUST-n or NICE-n to dig into a specific one · or ask anything.
Then wait for the user's response.
Repeat until the user ends the session or all findings have been walked through.
Work through all findings sequentially — MUST first, then NICE. Before starting, obtain the IMS token (see below).
--- MUST issue [n/N] ---)**"resolve it"** to work on this finding together · **"next"** to move on · or ask anythingAfter the last finding, close with a short encouraging message including how many findings were resolved (e.g. "X of N+M findings resolved") and wish the developer good luck.
Run once per session, the first time enrichment is needed:
IMS_TOKEN=$(aio auth login --bare 2>/dev/null)
$IMS_TOKEN is non-empty → use the documentation agent for enrichment.aio login and restart for the best experience; ask whether to continue without enrichment or stop.curl -s -X POST https://commerce-docs-prod-endpoint-d0ctgyebe7bec8e6.a02.azurefd.net/api/query \
-H "Authorization: Bearer $IMS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query": "<topic derived from the finding>", "count": 5}'
Pick the index based on category:
security, deployment, code → app-builder-docsdocumentation, dependencies → commerce-extensibility-docsindexRead the actual file at FILE_PATH and LINE_NUMBER. Generate a concrete before/after fix specific to the developer's code — not a generic example.
Compose the enriched finding using the format in references/finding.md.
If the agent returns no results, fall back to App Builder / Commerce knowledge and continue.
aio not installed or not authenticated → warn the user, instruct them to run aio login, and ask whether to continue without enrichment or stop