Skip to content

Commit c4309db

Browse files
authored
feat(skills): broaden plugin install support and add onboarding skill (#365)
* feat(skills): add multi-IDE install support, onboarding skill, and validation scripts - Add Codex marketplace (.agents/plugins/marketplace.json) and per-plugin .codex-plugin/plugin.json manifests for b2c-cli, b2c, b2c-dx-mcp - Ship logo.svg in each plugin's assets/ dir (sourced from docs/public/logo.svg) - Add per-plugin README.md with install commands for Claude Code, GitHub Copilot (VS Code + CLI), and Codex - Remove b2c-experimental from the published marketplace - Add b2c-onboarding skill: IDE detection, CLI verify, setup, sandbox, first deploy, goal-routing handoff - Add optional auth-free validation scripts: * skills/b2c/skills/b2c-metadata/scripts/validate.mjs (XSD via xmllint) * skills/b2c-cli/skills/b2c-config/scripts/validate.mjs (dw.json lint) - Update README.md and docs/guide/agent-skills.md with the new install paths for Copilot (VS Code + CLI) and Codex * docs(skills): trim implementation details from install page Install-oriented pages should cover how to install, not how the plugins are wired. Scrub manifest-schema and file-layout language from the agent skills doc, root README, per-plugin READMEs, and the onboarding skill so users see only the install commands they need to run. - Drop "Type" column from Available Plugins; rewrite MCP description. - Remove the "CLI does the actual work" and "drop skills into your IDE's skills directory manually" tagline language. - Collapse the Agentforce manual-install directory table into a single concise reference row in Manual Installation. - Move file-copy destination paths out of the main Other IDEs row into a Manual Installation reference sub-table. - Remove the zip-download block. * chore(changeset): skills plugin install improvements * revert(skills): remove offline validation scripts Drop the metadata XML and dw.json validation scripts plus the optional SKILL.md sections that referenced them. Use case needs more evaluation. * refactor(codex): drop b2c-dx-mcp from Codex/Copilot, bump plugin version to 1.0.0 The b2c-dx-mcp plugin ships the MCP server entry point and is only consumed by Claude Code's plugin system today. Remove it from the Codex marketplace (and from the Copilot CLI install snippets) so users don't install a dead plugin. For other clients, the MCP server can still be installed directly via the standalone MCP docs. - .agents/plugins/marketplace.json: remove b2c-dx-mcp entry - plugins/b2c-dx-mcp/.codex-plugin/ and assets/: delete - Bump b2c-cli and b2c .codex-plugin/plugin.json version from 0.0.1 to 1.0.0 - Update root README, docs/guide/agent-skills.md, b2c-onboarding SKILL.md, and plugins/b2c-dx-mcp/README.md to reflect the scope change * css tweaks to homepage * feat(skills): version skills plugins via dedicated workspace package Introduce @salesforce/b2c-agent-plugins (at skills/package.json, private) as the changesets target for skill-content changes. Its version syncs into the plugin manifest files (.claude-plugin/marketplace.json entries for b2c-cli and b2c, plus both .codex-plugin/plugin.json files) so installed plugins see a proper version bump when skills change. Publish workflow now tracks skills-only bumps with a `b2c-agent-plugins@X.Y.Z` GitHub release tag. Skills zips are only attached to releases where the plugins package actually changed. Skills installer resolves "latest" via a hybrid: GitHub REST API (paginated, asset-filtered) with a raw.githubusercontent.com fallback when the API is rate-limited. The resolved version is cached for 1 hour to avoid redundant lookups. Zip downloads continue to go through the GitHub CDN with no API calls. - skills/package.json: new private workspace package `@salesforce/b2c-agent-plugins` - pnpm-workspace.yaml: add `skills` - scripts/sync-plugin-versions.mjs: stamps version into plugin manifests - package.json: `version` script now runs changeset version + sync - .github/workflows/changesets.yml: action uses `pnpm run version` - .github/workflows/publish.yml: adds publish_plugins gate, re-gates skills zip steps, adds release-tag fallback - packages/b2c-tooling-sdk/src/skills/github.ts: adds resolveLatestVersion() with API→raw hybrid, replaces /releases/latest usage - .claude-plugin/marketplace.json: b2c-cli and b2c entries gain `version` * chore(changeset): skills installer latest-resolution refactor * chore(changeset): initial release for @salesforce/b2c-agent-plugins * docs(home): custom feature icons and correct Codex install steps Replace emoji feature icons with brand-gradient SVGs (CLI, skills, MCP) and style them with a soft brand-tinted tile. Fix Codex install instructions on both the homepage and agent-skills guide to use `codex plugin marketplace add` plus the interactive `/plugins` picker. * docs(agent-skills): tighten intro, IDE-named sections, reorder quick start Shorten the skills intro to a concise summary instead of an exhaustive capability list. Rename installation sections to bare IDE names (Claude Code, Codex, B2C CLI, Agentforce Vibes, Other IDEs) and update the homepage cross-page anchors to match. Move Agentforce Vibes to the end of the quick-start code group, before B2C CLI. * docs(nav): add Skills top-level nav between Guides and MCP * docs: text-less Salesforce logo in nav and tagline-based SEO description Use a mark-only Salesforce cloud logo (no wordmark) in the top nav so it reads cleanly beside the site title. Align the homepage meta description with the hero tagline for consistent SEO copy. * docs(home): blend SEO description with tagline messaging * docs(home): trim SEO description * docs(home): shorten SEO description
1 parent 59dd584 commit c4309db

31 files changed

Lines changed: 887 additions & 140 deletions

File tree

.agents/plugins/marketplace.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"name": "b2c-developer-tooling",
3+
"interface": {
4+
"displayName": "B2C Developer Tooling"
5+
},
6+
"plugins": [
7+
{
8+
"name": "b2c-cli",
9+
"source": {
10+
"source": "local",
11+
"path": "./skills/b2c-cli"
12+
},
13+
"policy": {
14+
"installation": "AVAILABLE",
15+
"authentication": "ON_INSTALL"
16+
},
17+
"category": "Productivity"
18+
},
19+
{
20+
"name": "b2c",
21+
"source": {
22+
"source": "local",
23+
"path": "./skills/b2c"
24+
},
25+
"policy": {
26+
"installation": "AVAILABLE",
27+
"authentication": "ON_INSTALL"
28+
},
29+
"category": "Productivity"
30+
}
31+
]
32+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@salesforce/b2c-agent-plugins': minor
3+
---
4+
5+
Initial release. This package tracks the version of the B2C Commerce agent skills plugins (`b2c-cli` and `b2c`). Its version is stamped into the Claude Code marketplace entries and the Codex plugin manifests at release time, and skills-only changes get a dedicated `b2c-agent-plugins@X.Y.Z` GitHub release tag with updated skills zips attached. Target this package in a changeset when you change skills under `skills/b2c-cli/skills/` or `skills/b2c/skills/`.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
'@salesforce/b2c-cli': patch
3+
'@salesforce/b2c-dx-docs': patch
4+
---
5+
6+
Broaden skills-plugin install support and improve the installation docs.
7+
8+
- Add a Codex plugin marketplace so the three plugins (`b2c-cli`, `b2c`, `b2c-dx-mcp`) can be installed directly from Codex CLI's plugin directory.
9+
- Add a new `b2c-onboarding` skill (in the `b2c` plugin) that walks new developers through CLI verify, `dw.json` setup, sandbox connect, and first cartridge deploy, then hands off to the topic-specific skill for the user's goal.
10+
- Add per-plugin READMEs with install instructions for each supported client.
11+
- Document Copilot CLI + VS Code Copilot install paths and the Codex marketplace install path.
12+
- Remove the `b2c-experimental` plugin from the public marketplace.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@salesforce/b2c-tooling-sdk': patch
3+
---
4+
5+
Skills installer (`b2c setup skills`) now resolves the latest skills release by querying GitHub for releases that actually carry skills zips, instead of relying on GitHub's opinionated "latest release" endpoint. Falls back to a CDN-backed lookup when the GitHub API is rate-limited. Zip downloads continue to use the GitHub release CDN with no API calls. Resolved versions are cached locally for 1 hour to keep consecutive installs fast.

.claude-plugin/marketplace.json

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
"license": "Apache-2.0",
1717
"source": "./skills/b2c-cli",
1818
"category": "productivity",
19-
"strict": false
19+
"strict": false,
20+
"version": "1.0.0"
2021
},
2122
{
2223
"name": "b2c",
@@ -27,18 +28,8 @@
2728
"license": "Apache-2.0",
2829
"source": "./skills/b2c",
2930
"category": "productivity",
30-
"strict": false
31-
},
32-
{
33-
"name": "b2c-experimental",
34-
"description": "Experimental B2C Commerce skills including scaffold templates. Not installed by default.",
35-
"author": {
36-
"name": "Salesforce"
37-
},
38-
"license": "Apache-2.0",
39-
"source": "./skills/b2c-experimental",
40-
"category": "productivity",
41-
"strict": false
31+
"strict": false,
32+
"version": "1.0.0"
4233
},
4334
{
4435
"name": "b2c-dx-mcp",

.github/workflows/changesets.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
id: changesets
3838
uses: changesets/action@6a0a831ff30acef54f2c6aa1cbbc1096b066edaf # v1.7.0
3939
with:
40-
version: pnpm changeset version
40+
version: pnpm run version
4141
title: 'Next Release: changelog and version packages'
4242
commit: 'chore: version packages'
4343
env:

.github/workflows/publish.yml

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,13 @@ jobs:
9696
HAS_CHANGES=true
9797
fi
9898
fi
99+
# Also check agent-plugins tag
100+
if [ "$HAS_CHANGES" = "false" ]; then
101+
PLUGINS_VERSION=$(node -p "require('./skills/package.json').version")
102+
if ! git rev-parse "b2c-agent-plugins@${PLUGINS_VERSION}" >/dev/null 2>&1; then
103+
HAS_CHANGES=true
104+
fi
105+
fi
99106
if [ "$HAS_CHANGES" = "false" ]; then
100107
echo "skip=true" >> $GITHUB_OUTPUT
101108
echo "::notice::All package versions match npm — nothing to publish"
@@ -184,6 +191,16 @@ jobs:
184191
fi
185192
echo "@salesforce/b2c-docs: version=${DOCS_VERSION}"
186193
194+
# Check if agent-plugins version changed (private package — uses git tag)
195+
PLUGINS_VERSION=$(node -p "require('./skills/package.json').version")
196+
if git rev-parse "b2c-agent-plugins@${PLUGINS_VERSION}" >/dev/null 2>&1; then
197+
echo "publish_plugins=false" >> $GITHUB_OUTPUT
198+
else
199+
echo "publish_plugins=true" >> $GITHUB_OUTPUT
200+
echo "version_plugins=${PLUGINS_VERSION}" >> $GITHUB_OUTPUT
201+
fi
202+
echo "@salesforce/b2c-agent-plugins: version=${PLUGINS_VERSION}"
203+
187204
- name: Create snapshot versions
188205
if: steps.release-type.outputs.type == 'nightly'
189206
run: |
@@ -357,6 +374,13 @@ jobs:
357374
extract_latest docs/CHANGELOG.md
358375
echo ""
359376
fi
377+
378+
if [[ "${{ steps.packages.outputs.publish_plugins }}" == "true" && -f skills/CHANGELOG.md ]]; then
379+
echo "## Agent Skills Plugins"
380+
echo ""
381+
extract_latest skills/CHANGELOG.md
382+
echo ""
383+
fi
360384
} > /tmp/release-notes.md
361385
362386
- name: Create GitHub Release
@@ -375,6 +399,8 @@ jobs:
375399
RELEASE_TAG="b2c-vs-extension@${{ steps.packages.outputs.version_vsx }}"
376400
elif [[ "${{ steps.packages.outputs.publish_docs }}" == "true" ]]; then
377401
RELEASE_TAG="docs@${{ steps.packages.outputs.version_docs }}"
402+
elif [[ "${{ steps.packages.outputs.publish_plugins }}" == "true" ]]; then
403+
RELEASE_TAG="b2c-agent-plugins@${{ steps.packages.outputs.version_plugins }}"
378404
else
379405
echo "No packages published, skipping release"
380406
exit 0
@@ -385,7 +411,7 @@ jobs:
385411
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
386412

387413
- name: Package skills artifacts
388-
if: steps.release-type.outputs.type == 'stable' && steps.changesets.outputs.skip != 'true' && steps.quick-check.outputs.skip != 'true'
414+
if: steps.release-type.outputs.type == 'stable' && steps.changesets.outputs.skip != 'true' && steps.quick-check.outputs.skip != 'true' && steps.packages.outputs.publish_plugins == 'true'
389415
run: |
390416
# Create b2c-skills.zip containing skills/b2c/skills/
391417
cd skills/b2c && zip -r ../../b2c-skills.zip skills/
@@ -397,9 +423,9 @@ jobs:
397423
ls -la *.zip
398424
399425
- name: Upload skills to release
400-
if: steps.release-type.outputs.type == 'stable' && steps.changesets.outputs.skip != 'true' && steps.quick-check.outputs.skip != 'true'
426+
if: steps.release-type.outputs.type == 'stable' && steps.changesets.outputs.skip != 'true' && steps.quick-check.outputs.skip != 'true' && steps.packages.outputs.publish_plugins == 'true'
401427
run: |
402-
# Determine the release tag (same logic as Create GitHub Release)
428+
# Determine the release tag (same priority as Create GitHub Release)
403429
if [[ "${{ steps.packages.outputs.publish_cli }}" == "true" ]]; then
404430
RELEASE_TAG="@salesforce/b2c-cli@${{ steps.packages.outputs.version_cli }}"
405431
elif [[ "${{ steps.packages.outputs.publish_sdk }}" == "true" ]]; then
@@ -410,9 +436,10 @@ jobs:
410436
RELEASE_TAG="@salesforce/mrt-utilities@${{ steps.packages.outputs.version_mrt }}"
411437
elif [[ "${{ steps.packages.outputs.publish_vsx }}" == "true" ]]; then
412438
RELEASE_TAG="b2c-vs-extension@${{ steps.packages.outputs.version_vsx }}"
439+
elif [[ "${{ steps.packages.outputs.publish_docs }}" == "true" ]]; then
440+
RELEASE_TAG="docs@${{ steps.packages.outputs.version_docs }}"
413441
else
414-
echo "No package release to upload to"
415-
exit 0
442+
RELEASE_TAG="b2c-agent-plugins@${{ steps.packages.outputs.version_plugins }}"
416443
fi
417444
418445
gh release upload "$RELEASE_TAG" b2c-skills.zip b2c-cli-skills.zip

README.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,43 @@ Salesforce B2C Commerce Command Line Tools.
1010
> [!TIP]
1111
> **Just looking for the B2C CLI or MCP install instructions?** Visit the documentation site at [https://salesforcecommercecloud.github.io/b2c-developer-tooling/](https://salesforcecommercecloud.github.io/b2c-developer-tooling/) for the latest install guide and CLI reference.
1212
13+
## Agent Skills & Plugins
14+
15+
Install B2C Commerce agent skills and plugins in your AI-powered editor. Three plugins are available: `b2c-cli` (CLI operations), `b2c` (development patterns), and `b2c-dx-mcp` (MCP server — Claude Code only).
16+
17+
- **Claude Code**: run these commands in chat:
18+
19+
```
20+
/plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
21+
/plugin install b2c-cli@b2c-developer-tooling
22+
/plugin install b2c@b2c-developer-tooling
23+
/plugin install b2c-dx-mcp@b2c-developer-tooling
24+
```
25+
26+
- **VS Code (GitHub Copilot)**: Command Palette (`Cmd+Shift+P` / `Ctrl+Shift+P`) → **Chat: Install Plugin From Source** → enter the repo `SalesforceCommerceCloud/b2c-developer-tooling`.
27+
28+
- **GitHub Copilot CLI**:
29+
30+
```
31+
copilot plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
32+
copilot plugin install b2c-cli@b2c-developer-tooling
33+
copilot plugin install b2c@b2c-developer-tooling
34+
```
35+
36+
- **Cursor**: add the marketplace from this repo URL in Cursor Settings → Plugins, then install `b2c-cli` / `b2c`.
37+
38+
- **Codex CLI**: run `/plugins` and add from this repo (GitHub URL).
39+
40+
- **Gemini CLI**: `gemini extensions install https://github.com/SalesforceCommerceCloud/b2c-developer-tooling`
41+
42+
- **Any supported IDE (file-copy install via CLI)**:
43+
44+
```
45+
npx @salesforce/b2c-cli setup skills
46+
```
47+
48+
For Windsurf, OpenCode, Agentforce Vibes, manual installs, and the full install matrix, see [docs/guide/agent-skills](https://salesforcecommercecloud.github.io/b2c-developer-tooling/guide/agent-skills).
49+
1350
## Packages
1451
1552
This is a pnpm monorepo with the following packages:

docs/.vitepress/config.mts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ export default defineConfig({
218218
},
219219

220220
themeConfig: {
221-
logo: '/logo.svg',
221+
logo: '/logo-mark.svg',
222222
outline: {
223223
level: [2, 3],
224224
},
@@ -232,6 +232,7 @@ export default defineConfig({
232232
},
233233
nav: [
234234
{text: 'Guides', link: '/guide/'},
235+
{text: 'Skills', link: '/guide/agent-skills'},
235236
{text: 'MCP', link: '/mcp/'},
236237
{text: 'Reference', link: '/cli/'},
237238
{text: 'SDK', link: '/api/'},

docs/.vitepress/theme/custom.css

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,21 @@
1818

1919
/* Hero image sizing */
2020
.VPHero .container {
21-
max-width: 100% !important;
21+
max-width: calc(var(--vp-layout-max-width) - 100px);
2222
}
2323

2424
.VPHero .image-container {
25-
max-width: 550px !important;
25+
max-width: 600px !important;
2626
padding: 24px;
2727
margin-bottom: 20px;
2828
}
2929

3030
@media (min-width: 960px) {
3131
.VPHero .image-container {
3232
margin-bottom: 0;
33+
transform: none;
34+
max-width: 100% !important;
35+
margin-left: 60px;
3336
}
3437
}
3538

@@ -38,7 +41,21 @@
3841
}
3942

4043
.VPHero .image-container img {
41-
max-width: 550px !important;
42-
max-height: 470px;
44+
max-width: 600px !important;
45+
max-height: 500px;
4346
object-fit: contain;
4447
}
48+
49+
/* Home features icon treatment */
50+
.VPFeature .box .icon {
51+
background-color: var(--vp-c-brand-soft);
52+
width: 56px;
53+
height: 56px;
54+
font-size: 28px;
55+
border-radius: 12px;
56+
}
57+
58+
.VPFeature .box .icon img {
59+
width: 32px;
60+
height: 32px;
61+
}

0 commit comments

Comments
 (0)