Skip to content

Commit d16e906

Browse files
committed
Merge remote-tracking branch 'upstream/main' into W-22162268-OAuth-JWT-Client
2 parents f8274d0 + ceaefc0 commit d16e906

33 files changed

Lines changed: 763 additions & 243 deletions

File tree

.agents/plugins/marketplace.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,26 @@
2727
"authentication": "ON_INSTALL"
2828
},
2929
"category": "Productivity"
30+
},
31+
{
32+
"name": "cap-dev",
33+
"description": "Skills for scaffolding, packaging, validating, and submitting Commerce App Packages (CAPs) for Salesforce Commerce Cloud.",
34+
"source": {
35+
"source": "git-subdir",
36+
"url": "SalesforceCommerceCloud/commerce-apps",
37+
"path": ".claude",
38+
"ref": "feature/codex-copilot-plugin-docs"
39+
},
40+
"interface": {
41+
"displayName": "Commerce Apps Dev",
42+
"shortDescription": "Scaffold, validate, package, and submit Commerce App Packages.",
43+
"longDescription": "Skills for building Salesforce Commerce Cloud app packages — scaffold new apps (UI-only, backend-only, or fullstack), generate IMPEX configurations for services, custom objects, and site preferences, validate packages against registry requirements, and submit pull requests to the commerce-apps registry."
44+
},
45+
"policy": {
46+
"installation": "AVAILABLE",
47+
"authentication": "ON_INSTALL"
48+
},
49+
"category": "Productivity"
3050
}
3151
]
3252
}

.changeset/RELEASE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Wed Apr 22 00:26:31 UTC 2026
1+
Thu Apr 23 15:00:58 UTC 2026

.changeset/cap-skill-improvements.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

.claude-plugin/marketplace.json

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"source": "./skills/b2c-cli",
1818
"category": "productivity",
1919
"strict": false,
20-
"version": "1.1.0"
20+
"version": "1.1.3"
2121
},
2222
{
2323
"name": "b2c",
@@ -29,7 +29,7 @@
2929
"source": "./skills/b2c",
3030
"category": "productivity",
3131
"strict": false,
32-
"version": "1.1.0"
32+
"version": "1.1.3"
3333
},
3434
{
3535
"name": "b2c-dx-mcp",
@@ -41,6 +41,36 @@
4141
"source": "./plugins/b2c-dx-mcp",
4242
"category": "productivity",
4343
"strict": false
44+
},
45+
{
46+
"name": "cap-dev",
47+
"description": "Skills for scaffolding, packaging, validating, and submitting Commerce App Packages (CAPs) for Salesforce Commerce Cloud.",
48+
"author": {
49+
"name": "Salesforce"
50+
},
51+
"homepage": "https://github.com/SalesforceCommerceCloud/commerce-apps",
52+
"repository": "https://github.com/SalesforceCommerceCloud/commerce-apps",
53+
"license": "Apache-2.0",
54+
"source": {
55+
"source": "git-subdir",
56+
"url": "SalesforceCommerceCloud/commerce-apps",
57+
"path": ".claude",
58+
"ref": "feature/codex-copilot-plugin-docs"
59+
},
60+
"category": "productivity",
61+
"keywords": [
62+
"salesforce",
63+
"commerce-apps",
64+
"commerce-cloud",
65+
"cap",
66+
"impex"
67+
],
68+
"interface": {
69+
"displayName": "Commerce Apps Dev",
70+
"shortDescription": "Scaffold, validate, package, and submit Commerce App Packages.",
71+
"longDescription": "Skills for building Salesforce Commerce Cloud app packages — scaffold new apps (UI-only, backend-only, or fullstack), generate IMPEX configurations for services, custom objects, and site preferences, validate packages against registry requirements, and submit pull requests to the commerce-apps registry."
72+
},
73+
"strict": false
4474
}
4575
]
4676
}

.github/workflows/ci.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,15 @@ jobs:
7676
working-directory: packages/b2c-cli
7777
run: pnpm run pretest && pnpm run test:ci && pnpm run lint
7878

79+
- name: Run MRT Utilities tests
80+
id: mrt-test
81+
if: always() && steps.cli-test.conclusion != 'cancelled'
82+
working-directory: packages/mrt-utilities
83+
run: pnpm run pretest && pnpm run test:ci && pnpm run lint
84+
7985
- name: Run VS Extension checks
8086
id: vs-extension-test
81-
if: always() && steps.cli-test.conclusion != 'cancelled'
87+
if: always() && steps.mrt-test.conclusion != 'cancelled'
8288
working-directory: packages/b2c-vs-extension
8389
run: pnpm run typecheck:agent && pnpm run lint
8490

@@ -167,8 +173,13 @@ jobs:
167173
# the Linux-calibrated 70% threshold even though the tests pass.
168174
# Coverage is still generated and uploaded for inspection.
169175
run: pnpm run pretest && pnpm run test:ci:win && pnpm run lint
170-
- name: Run VS Extension checks
176+
- name: Run MRT Utilities tests
177+
id: mrt-test
171178
if: always() && steps.cli-test.conclusion != 'cancelled'
179+
working-directory: packages/mrt-utilities
180+
run: pnpm run pretest && pnpm run test:ci && pnpm run lint
181+
- name: Run VS Extension checks
182+
if: always() && steps.mrt-test.conclusion != 'cancelled'
172183
working-directory: packages/b2c-vs-extension
173184
run: pnpm run typecheck:agent && pnpm run lint
174185
- name: Print Windows test failures

.github/workflows/publish.yml

Lines changed: 51 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,8 @@ jobs:
394394
- name: Create GitHub Release
395395
if: steps.release-type.outputs.type == 'stable' && steps.changesets.outputs.skip != 'true' && steps.quick-check.outputs.skip != 'true'
396396
run: |
397-
# Determine the release tag — prefer CLI as the user-facing product
397+
# Determine the release tag — prefer CLI as the user-facing product.
398+
# Plugins and VSX get their own dedicated releases, so they are excluded here.
398399
if [[ "${{ steps.packages.outputs.publish_cli }}" == "true" ]]; then
399400
RELEASE_TAG="@salesforce/b2c-cli@${{ steps.packages.outputs.version_cli }}"
400401
elif [[ "${{ steps.packages.outputs.publish_sdk }}" == "true" ]]; then
@@ -403,18 +404,24 @@ jobs:
403404
RELEASE_TAG="@salesforce/b2c-dx-mcp@${{ steps.packages.outputs.version_mcp }}"
404405
elif [[ "${{ steps.packages.outputs.publish_mrt }}" == "true" ]]; then
405406
RELEASE_TAG="@salesforce/mrt-utilities@${{ steps.packages.outputs.version_mrt }}"
406-
elif [[ "${{ steps.packages.outputs.publish_vsx }}" == "true" ]]; then
407-
RELEASE_TAG="b2c-vs-extension@${{ steps.packages.outputs.version_vsx }}"
408407
elif [[ "${{ steps.packages.outputs.publish_docs }}" == "true" ]]; then
409408
RELEASE_TAG="docs@${{ steps.packages.outputs.version_docs }}"
410-
elif [[ "${{ steps.packages.outputs.publish_plugins }}" == "true" ]]; then
411-
RELEASE_TAG="b2c-agent-plugins@${{ steps.packages.outputs.version_plugins }}"
412409
else
413-
echo "No packages published, skipping release"
410+
echo "No non-VSX/non-plugins packages published, skipping main release"
414411
exit 0
415412
fi
416413
417-
gh release create "$RELEASE_TAG" --notes-file /tmp/release-notes.md
414+
# Build a human-readable title from published package versions
415+
TITLE_PARTS=()
416+
[[ "${{ steps.packages.outputs.publish_cli }}" == "true" ]] && TITLE_PARTS+=("b2c-cli ${{ steps.packages.outputs.version_cli }}")
417+
[[ "${{ steps.packages.outputs.publish_sdk }}" == "true" ]] && TITLE_PARTS+=("b2c-tooling-sdk ${{ steps.packages.outputs.version_sdk }}")
418+
[[ "${{ steps.packages.outputs.publish_mcp }}" == "true" ]] && TITLE_PARTS+=("b2c-dx-mcp ${{ steps.packages.outputs.version_mcp }}")
419+
[[ "${{ steps.packages.outputs.publish_mrt }}" == "true" ]] && TITLE_PARTS+=("mrt-utilities ${{ steps.packages.outputs.version_mrt }}")
420+
[[ "${{ steps.packages.outputs.publish_vsx }}" == "true" ]] && TITLE_PARTS+=("b2c-vs-extension ${{ steps.packages.outputs.version_vsx }}")
421+
[[ "${{ steps.packages.outputs.publish_docs }}" == "true" ]] && TITLE_PARTS+=("docs ${{ steps.packages.outputs.version_docs }}")
422+
RELEASE_TITLE="Version Packages — $(IFS=', '; echo "${TITLE_PARTS[*]}")"
423+
424+
gh release create "$RELEASE_TAG" --title "$RELEASE_TITLE" --notes-file /tmp/release-notes.md
418425
env:
419426
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
420427

@@ -433,47 +440,13 @@ jobs:
433440
- name: Upload skills to release
434441
if: steps.release-type.outputs.type == 'stable' && steps.changesets.outputs.skip != 'true' && steps.quick-check.outputs.skip != 'true' && steps.packages.outputs.publish_plugins == 'true'
435442
run: |
436-
# Determine the release tag (same priority as Create GitHub Release)
437-
if [[ "${{ steps.packages.outputs.publish_cli }}" == "true" ]]; then
438-
RELEASE_TAG="@salesforce/b2c-cli@${{ steps.packages.outputs.version_cli }}"
439-
elif [[ "${{ steps.packages.outputs.publish_sdk }}" == "true" ]]; then
440-
RELEASE_TAG="@salesforce/b2c-tooling-sdk@${{ steps.packages.outputs.version_sdk }}"
441-
elif [[ "${{ steps.packages.outputs.publish_mcp }}" == "true" ]]; then
442-
RELEASE_TAG="@salesforce/b2c-dx-mcp@${{ steps.packages.outputs.version_mcp }}"
443-
elif [[ "${{ steps.packages.outputs.publish_mrt }}" == "true" ]]; then
444-
RELEASE_TAG="@salesforce/mrt-utilities@${{ steps.packages.outputs.version_mrt }}"
445-
elif [[ "${{ steps.packages.outputs.publish_vsx }}" == "true" ]]; then
446-
RELEASE_TAG="b2c-vs-extension@${{ steps.packages.outputs.version_vsx }}"
447-
elif [[ "${{ steps.packages.outputs.publish_docs }}" == "true" ]]; then
448-
RELEASE_TAG="docs@${{ steps.packages.outputs.version_docs }}"
449-
else
450-
RELEASE_TAG="b2c-agent-plugins@${{ steps.packages.outputs.version_plugins }}"
451-
fi
443+
RELEASE_TAG="b2c-agent-plugins@${{ steps.packages.outputs.version_plugins }}"
452444
453-
gh release upload "$RELEASE_TAG" b2c-skills.zip b2c-cli-skills.zip
454-
env:
455-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
445+
gh release create "$RELEASE_TAG" \
446+
--title "Agent Plugins ${{ steps.packages.outputs.version_plugins }}" \
447+
--notes "Skills artifacts for b2c-agent-plugins v${{ steps.packages.outputs.version_plugins }}"
456448
457-
- name: Upload VS Code extension to release
458-
if: steps.release-type.outputs.type == 'stable' && steps.packages.outputs.publish_vsx == 'true'
459-
run: |
460-
# Determine the release tag (same logic as Create GitHub Release)
461-
if [[ "${{ steps.packages.outputs.publish_cli }}" == "true" ]]; then
462-
RELEASE_TAG="@salesforce/b2c-cli@${{ steps.packages.outputs.version_cli }}"
463-
elif [[ "${{ steps.packages.outputs.publish_sdk }}" == "true" ]]; then
464-
RELEASE_TAG="@salesforce/b2c-tooling-sdk@${{ steps.packages.outputs.version_sdk }}"
465-
elif [[ "${{ steps.packages.outputs.publish_mcp }}" == "true" ]]; then
466-
RELEASE_TAG="@salesforce/b2c-dx-mcp@${{ steps.packages.outputs.version_mcp }}"
467-
elif [[ "${{ steps.packages.outputs.publish_mrt }}" == "true" ]]; then
468-
RELEASE_TAG="@salesforce/mrt-utilities@${{ steps.packages.outputs.version_mrt }}"
469-
elif [[ "${{ steps.packages.outputs.publish_vsx }}" == "true" ]]; then
470-
RELEASE_TAG="b2c-vs-extension@${{ steps.packages.outputs.version_vsx }}"
471-
else
472-
echo "No release to upload to"
473-
exit 0
474-
fi
475-
476-
gh release upload "$RELEASE_TAG" packages/b2c-vs-extension/*.vsix
449+
gh release upload "$RELEASE_TAG" b2c-skills.zip b2c-cli-skills.zip
477450
env:
478451
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
479452

@@ -483,6 +456,36 @@ jobs:
483456
&& steps.packages.outputs.publish_vsx == 'true'
484457
run: |
485458
VSX_TAG="b2c-vs-extension@${{ steps.packages.outputs.version_vsx }}"
459+
VSX_VERSION="${{ steps.packages.outputs.version_vsx }}"
460+
461+
# Extract extension changelog for the dedicated release
462+
extract_latest() {
463+
awk '
464+
/^## / { if (found) exit; found=1; next }
465+
found { print }
466+
' "$1"
467+
}
468+
469+
VSX_CHANGELOG=$(extract_latest packages/b2c-vs-extension/CHANGELOG.md)
470+
471+
{
472+
cat <<HEADER
473+
## B2C DX VS Code Extension v${VSX_VERSION}
474+
475+
Download the \`.vsix\` file below and install via:
476+
\`\`\`
477+
code --install-extension b2c-vs-extension-${VSX_VERSION}.vsix
478+
\`\`\`
479+
480+
Or in VS Code: Extensions → ⋯ → Install from VSIX...
481+
482+
---
483+
484+
### Changelog
485+
486+
HEADER
487+
echo "$VSX_CHANGELOG"
488+
} | sed 's/^ //' > /tmp/vsx-release-notes.md
486489
487490
# Create a dedicated release for the extension (not latest — main releases own that)
488491
# Use --clobber on upload in case a previous run partially completed
@@ -491,21 +494,10 @@ jobs:
491494
gh release upload "$VSX_TAG" packages/b2c-vs-extension/*.vsix --clobber
492495
else
493496
gh release create "$VSX_TAG" \
494-
--title "VS Code Extension ${{ steps.packages.outputs.version_vsx }}" \
497+
--title "VS Code Extension ${VSX_VERSION}" \
495498
--latest=false \
496-
--notes "$(cat <<'NOTES'
497-
## B2C DX VS Code Extension v${{ steps.packages.outputs.version_vsx }}
498-
499-
Download the `.vsix` file below and install via:
500-
```
501-
code --install-extension b2c-vs-extension-${{ steps.packages.outputs.version_vsx }}.vsix
502-
```
503-
504-
Or in VS Code: Extensions → ⋯ → Install from VSIX...
505-
NOTES
506-
)"
499+
--notes-file /tmp/vsx-release-notes.md
507500
508-
# Upload the VSIX to the dedicated release
509501
gh release upload "$VSX_TAG" packages/b2c-vs-extension/*.vsix
510502
fi
511503
env:

docs/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# @salesforce/b2c-dx-docs
22

3+
## 0.2.18
4+
5+
### Patch Changes
6+
7+
- [`c5edd5d`](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/commit/c5edd5dccc5e472528c08c3fb2fc12b1872440c6) - Updated plugin install examples to default to user scope (Thanks [@clavery](https://github.com/clavery)!)
8+
39
## 0.2.17
410

511
### Patch Changes

docs/guide/agent-skills.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ Skills follow the open [Agent Skills](https://agentskills.io/home) standard and
1414

1515
```bash [Claude Code]
1616
claude plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
17-
# Use --scope user to install globally (available in all projects)
18-
claude plugin install b2c-cli --scope project
19-
claude plugin install b2c --scope project
17+
# Use --scope project to install for current project only
18+
claude plugin install b2c-cli
19+
claude plugin install b2c
2020
```
2121

2222
```text [Copilot (VS Code)]
@@ -87,18 +87,18 @@ Install plugins at your preferred scope:
8787

8888
::: code-group
8989

90+
```bash [User Scope (default)]
91+
claude plugin install b2c-cli
92+
claude plugin install b2c
93+
claude plugin install b2c-dx-mcp
94+
```
95+
9096
```bash [Project Scope]
9197
claude plugin install b2c-cli --scope project
9298
claude plugin install b2c --scope project
9399
claude plugin install b2c-dx-mcp --scope project
94100
```
95101

96-
```bash [User Scope]
97-
claude plugin install b2c-cli --scope user
98-
claude plugin install b2c --scope user
99-
claude plugin install b2c-dx-mcp --scope user
100-
```
101-
102102
:::
103103

104104
Verify, update, or uninstall:

docs/index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ Detailed setup: [Claude Code](/guide/agent-skills#claude-code) · [Codex](/guide
7777

7878
```bash [Claude Code]
7979
claude plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
80-
# Use --scope user to install globally (available in all projects)
81-
claude plugin install b2c-cli --scope project
82-
claude plugin install b2c --scope project
80+
# Use --scope project to install for current project only
81+
claude plugin install b2c-cli
82+
claude plugin install b2c
8383
```
8484

8585
```text [Copilot (VS Code)]

docs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@salesforce/b2c-dx-docs",
3-
"version": "0.2.17",
3+
"version": "0.2.18",
44
"private": true,
55
"description": "Documentation for B2C Developer Tooling",
66
"scripts": {

0 commit comments

Comments
 (0)