Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here
b2c logo

b2c

b2c-developer-tooling

productivityClaude Codeby Salesforce

Summary

B2C Commerce development skills including Custom API development guides.

Install to Claude Code

/plugin install b2c@b2c-developer-tooling

Run in Claude Code. Add the marketplace first with /plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling if you haven't already.

README.md

B2C CLI, MCP and Tooling SDK

![CI](https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/actions/workflows/ci.yml)

> [!NOTE] > This project is Generally Available (GA). Please provide feedback via GitHub issues.

Salesforce B2C Commerce Command Line Tools.

> [!TIP] > Just looking for the B2C CLI or MCP install instructions? Visit the documentation site at https://salesforcecommercecloud.github.io/b2c-developer-tooling/ for the latest install guide and CLI reference.

Agent Skills & Plugins

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).

  • Claude Code: run these commands in chat:
    /plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
    /plugin install b2c-cli@b2c-developer-tooling
    /plugin install b2c@b2c-developer-tooling
    /plugin install b2c-dx-mcp@b2c-developer-tooling
  • VS Code (GitHub Copilot): Command Palette (Cmd+Shift+P / Ctrl+Shift+P) → Chat: Install Plugin From Source → enter the repo SalesforceCommerceCloud/b2c-developer-tooling.
  • GitHub Copilot CLI:
    copilot plugin marketplace add SalesforceCommerceCloud/b2c-developer-tooling
    copilot plugin install b2c-cli@b2c-developer-tooling
    copilot plugin install b2c@b2c-developer-tooling
  • Cursor: add the marketplace from this repo URL in Cursor Settings → Plugins, then install b2c-cli / b2c.
  • Codex CLI: run /plugins and add from this repo (GitHub URL).
  • Gemini CLI: gemini extensions install https://github.com/SalesforceCommerceCloud/b2c-developer-tooling
  • Any supported IDE (file-copy install via CLI):
    npx @salesforce/b2c-cli setup skills

For Windsurf, OpenCode, Agentforce Vibes, manual installs, and the full install matrix, see docs/guide/agent-skills.

Packages

This is a pnpm monorepo with the following packages:

| Package | Description | | --------------------------------------------------------- | ------------------------------------------------------------------------------------ | | b2c-cli | Command line interface built with oclif | | b2c-tooling-sdk | SDK/library for B2C Commerce operations; supports the CLI and can be used standalone | | b2c-dx-mcp | MCP server for B2C Commerce developer experience tools |

Development

Prerequisites

  • Node.js >= 22.16.0
  • pnpm 10.17.1+

Setup

pnpm install

Running the CLI in Development Mode

pnpm start
# or directly:
pnpm --filter @salesforce/b2c-cli run dev
# or using convenience script:
./cli

The dev mode uses Node.js --conditions=development to resolve TypeScript source files directly from @salesforce/b2c-tooling-sdk without needing to build first.

Building

# Build all packages
pnpm -r run build

# Build individual packages
pnpm --filter @salesforce/b2c-cli run build
pnpm --filter @salesforce/b2c-tooling-sdk run build

Testing

Tests use Mocha + Chai with c8 for coverage. HTTP mocking uses MSW.

# Run all tests with coverage (also runs linter after tests)
pnpm test

# Run tests for a specific package
pnpm --filter @salesforce/b2c-tooling-sdk run test

# Run tests without coverage (faster)
pnpm --filter @salesforce/b2c-tooling-sdk run test:unit

# Watch mode for TDD
pnpm --filter @salesforce/b2c-tooling-sdk run test:watch

# Run a specific test file
cd packages/b2c-tooling-sdk
pnpm mocha "test/clients/webdav.test.ts"

# Run tests matching a pattern
pnpm mocha --grep "uploads a file" "test/**/*.test.ts"

Coverage

Coverage reports are generated in each package's coverage/ directory:

  • coverage/index.html - HTML report
  • coverage/lcov.info - LCOV format for CI integration

The SDK package has a 5% coverage threshold that will fail the build if not met.

Linting

# Run linter only
pnpm --filter @salesforce/b2c-cli run lint
pnpm --filter @salesforce/b2c-tooling-sdk run lint

Code Formatting

This project uses Prettier for code formatting.

# Format all packages
pnpm -r run format

# Check formatting without modifying files
pnpm -r run format:check

Documentation

Documentation is built using TypeDoc for API reference generation and VitePress for the documentation site.

Structure

  • docs/ - VitePress documentation source
  • guide/ - User guide and getting started
  • cli/ - CLI command reference
  • api/ - Generated API documentation (do not edit manually)
  • typedoc.json - TypeDoc configuration with entry points for SDK modules

Development Server

pnpm run docs:dev

This runs typedoc to generate API docs, then starts VitePress in development mode with hot reload.

Building Documentation

pnpm run docs:build

Previewing Built Documentation

pnpm run docs:preview

Deployed Documentation

The documentation site serves two versions:

  • Stable (root URL) — built from the most recent release tag, updated on every stable release
  • Dev (/dev/) — built from the main branch, updated on every push to main

Doc-only releases (without bumping CLI/SDK/MCP versions) are possible by creating a changeset targeting @salesforce/b2c-dx-docs. See PUBLISHING.md for details.

API Documentation

API documentation is auto-generated from JSDoc comments in the @salesforce/b2c-tooling-sdk package. The entry points are defined in typedoc.json:

See the documentation site for the generated API reference.

  • auth - Authentication strategies (OAuth, API Key, Basic)
  • instance - B2C instance configuration
  • platform - MRT and ODS clients
  • operations/code - Cartridge code operations
  • operations/jobs - Job execution
  • operations/sites - Site management
  • i18n - Internationalization utilities
  • logging - Structured logging

When adding new public APIs, ensure they have comprehensive JSDoc comments as these will appear in the generated documentation.

Bundled Platform Data (Script API docs, schemas, job steps)

The SDK ships several corpora derived from the B2C Commerce platform under packages/b2c-tooling-sdk/data/:

| Directory | Contents | Consumed by | |-----------|----------|-------------| | script-api/ | Script API reference markdown + search index | b2c docs search / docs read, MCP docs_ | | content-schemas/ | Page Designer / content metadefinition JSON schemas | b2c content validate | | xsd/ | Import/export XSD schemas + search index | b2c docs schema , XML validation | | job-steps/ | Standard job-step markdown + dataset + search index | b2c docs search / docs read |

All of these originate from the same documentation archive that b2c docs download fetches from an instance (the inner DWAPP-<version>-API-doc.zip). To refresh all of them to a new platform release at once, run the maintainer script against a current instance (it uses your default instance/auth via the CLI):

# Refresh every data set and regenerate the derived indexes
pnpm --filter @salesforce/b2c-tooling-sdk run refresh:docs-data

# Target a non-default instance, or keep the temp workdir for inspection
B2C_INSTANCE=my-sandbox KEEP_WORKDIR=1 pnpm --filter @salesforce/b2c-tooling-sdk run refresh:docs-data

The script prints the detected platform version (e.g. DWAPP 26.7). Afterward, review the diff under packages/b2c-tooling-sdk/data/ (index files always change their generatedAt timestamp; look for substantive schema/doc changes), run pnpm --filter @salesforce/b2c-tooling-sdk run test:agent, and add a changeset if the refresh changes user-facing behavior. See the sdk-module-development skill for details.

Releases and Publishing

This project uses Changesets for version management and publishes to npm using OIDC trusted publishers.

| Release Type | npm Tag | Trigger | |-------------|---------|---------| | Stable | @latest | Merge version PR on main | | Release Branch | @latest or @release-X.Y | Push to release/ branch | | Nightly** | @nightly | Scheduled (weekdays) or manual |

For detailed information about the release process, including release branches, see PUBLISHING.md.

Quick Reference

# Create a changeset for your changes
pnpm changeset

# Check pending changesets
pnpm changeset status

Preview Releases

Preview releases are available as tgz files on GitHub Releases for testing before npm publication.

Package Exports

The @salesforce/b2c-tooling-sdk package uses the exports field in package.json to define its public API surface. Each module is available as a subpath export:

import {OAuthStrategy} from '@salesforce/b2c-tooling-sdk/auth';
import {B2CInstance} from '@salesforce/b2c-tooling-sdk/instance';
import {getLogger} from '@salesforce/b2c-tooling-sdk/logging';

The development condition in exports enables direct TypeScript source resolution when using --conditions=development, which is how bin/dev.js works for local development.

Contributing

We welcome contributions! Please see our Contributing Guide for details on how to get started, submit pull requests, and our code of conduct.

Third-Party Dependency Review

To prevent net-new third-party libraries from being added without discussion, PRs are checked by the 3PL Guard workflow (Net-new 3PL check).

  • The check compares changed package.json files in the PR and detects net-new external dependencies.
  • If net-new dependencies are found, the PR is labeled needs-3pl-review and the check fails.
  • After discussion and approval, a maintainer adds the 3pl-approved label to allow the check to pass.
  • If the net-new dependency is removed, needs-3pl-review is removed automatically.

To enforce this as a merge gate, keep Net-new 3PL check as a required status check in branch protection.

Security

For security concerns, please review our Security Policy. Report any security issues to security@salesforce.com.

License

This project is licensed under the Apache License 2.0. See LICENSE.txt for full details.

Disclaimer

This project is provided "as-is" without warranty of any kind. While the CLI, SDK, and MCP server are Generally Available, the VS Code extension is currently in Developer Preview — see its documentation for details. Breaking changes to any component will follow a documented deprecation cycle.

Related plugins

Browse all →