Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,19 @@
},
"category": "Productivity"
},
{
"name": "storefront-next",
"description": "Storefront Next development skills for building React 19 storefronts on Salesforce B2C Commerce.",
"source": {
"source": "local",
"path": "./skills/storefront-next"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "cap-dev",
"description": "Skills for scaffolding, packaging, validating, and submitting Commerce App Packages (CAPs) for Salesforce Commerce Cloud.",
Expand Down
6 changes: 6 additions & 0 deletions .changeset/storefront-next-cli-sdk-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@salesforce/b2c-tooling-sdk': minor
'@salesforce/b2c-cli': minor
---

Add `storefront-next` skill set to `b2c setup skills`. Install Storefront Next development skills with `b2c setup skills storefront-next`, or via the plugin marketplace with `claude plugin install storefront-next`.
5 changes: 5 additions & 0 deletions .changeset/storefront-next-skills-plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@salesforce/b2c-agent-plugins': minor
---

Add `storefront-next` plugin with 14 skills covering the full Storefront Next development lifecycle — project setup, routing, data fetching, components, Page Designer, authentication, i18n, extensions, testing, performance, and deployment to Managed Runtime.
12 changes: 12 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,18 @@
"category": "productivity",
"strict": false
},
{
"name": "storefront-next",
"description": "Storefront Next development skills for building React 19 storefronts on Salesforce B2C Commerce.",
"author": {
"name": "Salesforce"
},
"license": "Apache-2.0",
"source": "./skills/storefront-next",
"category": "productivity",
"strict": false,
"version": "1.1.2"
},
{
"name": "cap-dev",
"description": "Skills for scaffolding, packaging, validating, and submitting Commerce App Packages (CAPs) for Salesforce Commerce Cloud.",
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,9 @@ jobs:
# Create b2c-cli-skills.zip containing skills/b2c-cli/skills/
cd skills/b2c-cli && zip -r ../../b2c-cli-skills.zip skills/
cd ../..
# Create storefront-next-skills.zip containing skills/storefront-next/skills/
cd skills/storefront-next && zip -r ../../storefront-next-skills.zip skills/
cd ../..
echo "Created skills artifacts:"
ls -la *.zip

Expand All @@ -446,7 +449,7 @@ jobs:
--title "Agent Plugins ${{ steps.packages.outputs.version_plugins }}" \
--notes "Skills artifacts for b2c-agent-plugins v${{ steps.packages.outputs.version_plugins }}"

gh release upload "$RELEASE_TAG" b2c-skills.zip b2c-cli-skills.zip
gh release upload "$RELEASE_TAG" b2c-skills.zip b2c-cli-skills.zip storefront-next-skills.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Expand Down
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ Changeset guidelines:
- HOW a consumer should update their code
- Good changesets are brief and user-focused (not contributor); they are generally 1 line or two; The content of the changeset is used in CHANGELOG and release notes. You do not need to list internal implementation details or all details of commands; just the high level summary for users.

Valid changeset packages: `@salesforce/b2c-cli`, `@salesforce/b2c-tooling-sdk`, `@salesforce/b2c-dx-mcp`, `@salesforce/mrt-utilities`, `b2c-vs-extension`, `@salesforce/b2c-dx-docs`
Valid changeset packages: `@salesforce/b2c-cli`, `@salesforce/b2c-tooling-sdk`, `@salesforce/b2c-dx-mcp`, `@salesforce/mrt-utilities`, `b2c-vs-extension`, `@salesforce/b2c-dx-docs`, `@salesforce/b2c-agent-plugins`

Create a changeset file directly in `.changeset/` with a unique filename (e.g., `descriptive-change-name.md`):

Expand All @@ -201,3 +201,4 @@ Description of the change explaining WHAT, WHY, and HOW to update

- Include only the packages that were directly modified
- For doc-only changes, target `@salesforce/b2c-dx-docs` instead of the CLI/SDK/MCP packages
- For changes to agent skills/plugins in `skills/` (adding or updating skill content, adding a new plugin), target `@salesforce/b2c-agent-plugins`
16 changes: 10 additions & 6 deletions docs/cli/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ b2c setup skills [SKILLSET]

| Argument | Description | Default |
| ---------- | ---------------------------------------- | ---------------------- |
| `SKILLSET` | Skill set to install: `b2c` or `b2c-cli` | Prompted interactively |
| `SKILLSET` | Skill set to install: `b2c`, `b2c-cli`, `storefront-next`, or `cap-dev` | Prompted interactively |

### Flags

Expand Down Expand Up @@ -411,6 +411,7 @@ b2c setup skills
# List available skills in a skillset
b2c setup skills b2c --list
b2c setup skills b2c-cli --list
b2c setup skills storefront-next --list

# Install b2c skills to Cursor (project scope)
b2c setup skills b2c --ide cursor
Expand Down Expand Up @@ -447,7 +448,7 @@ b2c setup skills b2c --list --json

When run without `--force`, the command provides an interactive experience:

1. Prompts you to select skill set(s) (if not provided as argument) - you can select both `b2c` and `b2c-cli`
1. Prompts you to select skill set(s) (if not provided as argument) - you can select multiple sets
2. Downloads skills from the latest release (or specified version)
3. Auto-detects installed IDEs
4. Prompts you to select target IDEs
Expand All @@ -465,6 +466,7 @@ For Claude Code users, we recommend using the plugin marketplace for automatic u
claude plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
claude plugin install b2c-cli
claude plugin install b2c
claude plugin install storefront-next
```

The marketplace provides:
Expand All @@ -477,10 +479,12 @@ Use `--ide manual` if you prefer manual installation, or `--ide agentforce-vibes

### Skill Sets

| Skill Set | Description |
| --------- | ----------------------------------------------- |
| `b2c` | B2C Commerce development patterns and practices |
| `b2c-cli` | B2C CLI commands and operations |
| Skill Set | Description |
| ------------------ | -------------------------------------------------------------- |
| `b2c` | B2C Commerce development patterns and practices |
| `b2c-cli` | B2C CLI commands and operations |
| `storefront-next` | Storefront Next development — routing, components, deployment |
| `cap-dev` | Commerce App Package scaffolding, validation, and submission |

### Output

Expand Down
14 changes: 14 additions & 0 deletions docs/guide/agent-skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ claude plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
# Use --scope project to install for current project only
claude plugin install b2c-cli
claude plugin install b2c
claude plugin install storefront-next
```

```text [Copilot (VS Code)]
Expand All @@ -30,6 +31,7 @@ Then enter:
copilot plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
copilot plugin install b2c-cli@b2c-developer-tooling
copilot plugin install b2c@b2c-developer-tooling
copilot plugin install storefront-next@b2c-developer-tooling
```

```bash [Codex]
Expand Down Expand Up @@ -68,6 +70,10 @@ npx @salesforce/b2c-cli setup skills
<td><a href="https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/tree/main/skills/b2c/skills"><code>b2c</code></a></td>
<td>B2C Commerce development patterns — controllers, ISML, forms, localization, logging, metadata, web services, custom job steps, Page Designer, Business Manager extensions, Custom APIs</td>
</tr>
<tr>
<td><a href="https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/tree/main/skills/storefront-next/skills"><code>storefront-next</code></a></td>
<td>Storefront Next development — project setup, routing, data fetching, components, Page Designer, authentication, i18n, extensions, testing, and deployment to Managed Runtime</td>
</tr>
<tr>
<td><a href="/mcp/"><code>b2c-dx-mcp</code></a></td>
<td>Automatic project type detection and B2C Commerce workflows for your AI assistant. See <a href="/mcp/installation">MCP Installation</a></td>
Expand All @@ -90,12 +96,14 @@ Install plugins at your preferred scope:
```bash [User Scope (default)]
claude plugin install b2c-cli
claude plugin install b2c
claude plugin install storefront-next
claude plugin install b2c-dx-mcp
```

```bash [Project Scope]
claude plugin install b2c-cli --scope project
claude plugin install b2c --scope project
claude plugin install storefront-next --scope project
claude plugin install b2c-dx-mcp --scope project
```

Expand All @@ -107,6 +115,7 @@ Verify, update, or uninstall:
claude plugin list
claude plugin marketplace update
claude plugin update b2c-cli@b2c-developer-tooling
claude plugin update storefront-next@b2c-developer-tooling
claude plugin uninstall b2c-cli@b2c-developer-tooling
claude plugin marketplace remove b2c-developer-tooling
```
Expand Down Expand Up @@ -145,6 +154,7 @@ List available skills:
```bash
b2c setup skills b2c --list
b2c setup skills b2c-cli --list
b2c setup skills storefront-next --list
```

Install to specific IDEs:
Expand Down Expand Up @@ -240,3 +250,7 @@ Once installed, ask your AI assistant:
- "Help me create a Custom API for loyalty information"
- "Add logging to my checkout controller"
- "Create an HTTP service to call the payment gateway API"
- "Set up a new Storefront Next project"
- "Add a new route with a loader to my Storefront Next app"
- "Deploy my Storefront Next storefront to Managed Runtime"
- "Add Page Designer support to my storefront component"
8 changes: 5 additions & 3 deletions packages/b2c-cli/src/commands/setup/skills.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ interface SetupSkillsResponse {
export default class SetupSkills extends BaseCommand<typeof SetupSkills> {
static args = {
skillset: Args.string({
description: 'Skill set to install: b2c, b2c-cli, or cap-dev',
description: 'Skill set to install: b2c, b2c-cli, storefront-next, or cap-dev',
options: ALL_SKILL_SETS,
}),
};
Expand All @@ -77,6 +77,7 @@ export default class SetupSkills extends BaseCommand<typeof SetupSkills> {
static examples = [
'<%= config.bin %> <%= command.id %> b2c',
'<%= config.bin %> <%= command.id %> b2c-cli --ide cursor --global',
'<%= config.bin %> <%= command.id %> storefront-next --ide cursor',
'<%= config.bin %> <%= command.id %> cap-dev --ide claude-code --global',
'<%= config.bin %> <%= command.id %> b2c --list',
'<%= config.bin %> <%= command.id %> b2c-cli --skill b2c-code --skill b2c-webdav --ide cursor',
Expand Down Expand Up @@ -133,7 +134,7 @@ export default class SetupSkills extends BaseCommand<typeof SetupSkills> {
this.error(
t(
'commands.setup.skills.skillsetRequired',
'Skillset argument required in non-interactive mode. Specify b2c, b2c-cli, or cap-dev.',
'Skillset argument required in non-interactive mode. Specify b2c, b2c-cli, storefront-next, or cap-dev.',
),
);
} else {
Expand Down Expand Up @@ -269,7 +270,8 @@ export default class SetupSkills extends BaseCommand<typeof SetupSkills> {
'Note: For Claude Code, we recommend using the plugin marketplace for automatic updates:\n' +
' claude plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling\n' +
' claude plugin install b2c-cli\n' +
' claude plugin install b2c\n\n' +
' claude plugin install b2c\n' +
' claude plugin install storefront-next\n\n' +
'Use --ide manual for manual installation to the same paths.',
),
);
Expand Down
6 changes: 4 additions & 2 deletions packages/b2c-cli/src/i18n/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -179,14 +179,16 @@ export const en = {
'Note: For Claude Code, we recommend using the plugin marketplace for automatic updates:\n' +
' claude plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling\n' +
' claude plugin install b2c-cli\n' +
' claude plugin install b2c\n\n' +
' claude plugin install b2c\n' +
' claude plugin install storefront-next\n\n' +
'Use --ide manual for manual installation to the same paths.',
preview: 'Installing {{count}} skills to {{ides}} ({{scope}})',
cancelled: 'Installation cancelled.',
installed: 'Successfully installed {{count}} skill(s):',
skippedCount: 'Skipped {{count}} skill(s):',
errorsCount: 'Failed to install {{count}} skill(s):',
skillsetRequired: 'Skillset argument required in non-interactive mode. Specify b2c or b2c-cli.',
skillsetRequired:
'Skillset argument required in non-interactive mode. Specify b2c, b2c-cli, storefront-next, or cap-dev.',
selectSkillset: 'Select skill set(s) to install:',
noSkillsetsSelected: 'No skill sets selected.',
selectIdes: 'Select target IDEs:',
Expand Down
5 changes: 4 additions & 1 deletion packages/b2c-tooling-sdk/src/skills/github.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,11 @@ function parseRelease(release: {
}): ReleaseInfo {
const b2cSource = getSkillSource('b2c');
const b2cCliSource = getSkillSource('b2c-cli');
const sfNextSource = getSkillSource('storefront-next');

const b2cAsset = release.assets.find((a) => a.name === b2cSource.assetName);
const b2cCliAsset = release.assets.find((a) => a.name === b2cCliSource.assetName);
const sfNextAsset = release.assets.find((a) => a.name === sfNextSource.assetName);

const versionMatch = release.tag_name.match(/@(\d+\.\d+\.\d+.*)$/);
const version = versionMatch ? versionMatch[1] : release.tag_name.replace(/^v/, '');
Expand All @@ -148,6 +150,7 @@ function parseRelease(release: {
publishedAt: release.published_at,
b2cSkillsAssetUrl: b2cAsset?.browser_download_url ?? null,
b2cCliSkillsAssetUrl: b2cCliAsset?.browser_download_url ?? null,
storefrontNextSkillsAssetUrl: sfNextAsset?.browser_download_url ?? null,
};
}

Expand Down Expand Up @@ -228,7 +231,7 @@ export async function listReleases(limit: number = 10): Promise<ReleaseInfo[]> {
return data
.filter((r) => r.tag_name.startsWith('b2c-agent-plugins@'))
.map(parseRelease)
.filter((r) => r.b2cSkillsAssetUrl || r.b2cCliSkillsAssetUrl);
.filter((r) => r.b2cSkillsAssetUrl || r.b2cCliSkillsAssetUrl || r.storefrontNextSkillsAssetUrl);
}

/**
Expand Down
8 changes: 8 additions & 0 deletions packages/b2c-tooling-sdk/src/skills/sources.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,14 @@ export const SKILL_SOURCES: Record<SkillSet, SkillSourceConfig> = {
assetName: 'b2c-cli-skills.zip',
tagPattern: pluginsTag,
},
'storefront-next': {
id: 'storefront-next',
displayName: 'Storefront Next development skills',
type: 'release-artifact',
repo: 'SalesforceCommerceCloud/b2c-developer-tooling',
assetName: 'storefront-next-skills.zip',
tagPattern: pluginsTag,
},
'cap-dev': {
id: 'cap-dev',
displayName: 'Commerce Apps development skills',
Expand Down
4 changes: 3 additions & 1 deletion packages/b2c-tooling-sdk/src/skills/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export type IdeType =
/**
* Skill set categories matching the plugins directory structure.
*/
export type SkillSet = 'b2c' | 'b2c-cli' | 'cap-dev';
export type SkillSet = 'b2c' | 'b2c-cli' | 'cap-dev' | 'storefront-next';

/**
* Configuration for a skill source — defines how to fetch skills from a particular repository.
Expand Down Expand Up @@ -92,6 +92,8 @@ export interface ReleaseInfo {
b2cSkillsAssetUrl: string | null;
/** Download URL for b2c-cli-skills.zip asset, or null if not present */
b2cCliSkillsAssetUrl: string | null;
/** Download URL for storefront-next-skills.zip asset, or null if not present */
storefrontNextSkillsAssetUrl: string | null;
}

/**
Expand Down
3 changes: 2 additions & 1 deletion packages/b2c-tooling-sdk/test/skills/sources.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ describe('skill sources', () => {
expect(ALL_SKILL_SETS).to.include('b2c');
expect(ALL_SKILL_SETS).to.include('b2c-cli');
expect(ALL_SKILL_SETS).to.include('cap-dev');
expect(ALL_SKILL_SETS).to.have.lengthOf(3);
expect(ALL_SKILL_SETS).to.include('storefront-next');
expect(ALL_SKILL_SETS).to.have.lengthOf(4);
});
});

Expand Down
3 changes: 2 additions & 1 deletion scripts/sync-plugin-versions.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ if (!version) {
// b2c-dx-mcp is NOT part of b2c-agent-plugins — it tracks @salesforce/b2c-dx-mcp separately.
const marketplacePath = join(repoRoot, '.claude-plugin/marketplace.json');
const marketplace = readJson(marketplacePath);
const claudeTargets = new Set(['b2c-cli', 'b2c']);
const claudeTargets = new Set(['b2c-cli', 'b2c', 'storefront-next']);
for (const plugin of marketplace.plugins) {
if (claudeTargets.has(plugin.name)) {
plugin.version = version;
Expand All @@ -46,6 +46,7 @@ writeJson(marketplacePath, marketplace);
const codexTargets = [
'skills/b2c-cli/.codex-plugin/plugin.json',
'skills/b2c/.codex-plugin/plugin.json',
'skills/storefront-next/.codex-plugin/plugin.json',
];
for (const rel of codexTargets) {
const path = join(repoRoot, rel);
Expand Down
39 changes: 39 additions & 0 deletions skills/storefront-next/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"name": "storefront-next",
"version": "1.1.2",
"description": "Storefront Next development skills for building React 19 storefronts on Salesforce B2C Commerce.",
"author": {
"name": "Salesforce"
},
"homepage": "https://salesforcecommercecloud.github.io/b2c-developer-tooling/",
"repository": "https://github.com/SalesforceCommerceCloud/b2c-developer-tooling",
"license": "Apache-2.0",
"keywords": [
"salesforce",
"storefront-next",
"react",
"b2c-commerce",
"commerce-cloud"
],
"skills": "./skills/",
"interface": {
"displayName": "Storefront Next",
"shortDescription": "Build Salesforce B2C Storefront Next projects with AI assistance.",
"longDescription": "Skills for developing React 19 storefronts on Salesforce B2C Commerce — routing, data fetching, components, Page Designer, authentication, i18n, extensions, testing, and deployment to Managed Runtime.",
"developerName": "Salesforce",
"category": "Productivity",
"capabilities": [
"Read"
],
"logo": "./assets/logo.svg",
"composerIcon": "./assets/logo.svg",
"brandColor": "#0D9DDA",
"websiteURL": "https://salesforcecommercecloud.github.io/b2c-developer-tooling/",
"defaultPrompt": [
"Set up a new Storefront Next project",
"Add a new route with data fetching to my storefront",
"Deploy my storefront to Managed Runtime",
"Add Page Designer support to my storefront component"
]
}
}
Loading
Loading