Install
$ agentstack add skill-salesforcecommercecloud-b2c-developer-tooling-b2c-site-import-export ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Site Import/Export Skill
Use the b2c CLI plugin to import and export site archives on Salesforce B2C Commerce instances.
> Tip: If b2c is not installed globally, use npx @salesforce/b2c-cli instead (e.g., npx @salesforce/b2c-cli job import).
Configuration & Authentication
The CLI auto-discovers the target instance and credentials from SFCC_* environment variables, dw.json in the current or parent directories, ~/.mobify, package.json, and configuration plugins. Flags like --server, --client-id, --client-secret, --username, and --password are usually unnecessary — only pass them to override what's auto-detected.
Run b2c setup inspect to see the resolved configuration and which source provided each value (use --json for scripting, --unmask to reveal secrets). For precedence rules and troubleshooting, see the b2c-cli:b2c-config skill.
Import Commands
Import Local Directory
# Import a local directory as a site archive (waits for completion by default)
b2c job import ./my-site-data
# Import and return immediately without waiting
b2c job import ./my-site-data --no-wait
# Import a local zip file
b2c job import ./export.zip
# Keep the archive on the instance after import
b2c job import ./my-site-data --keep-archive
# Show job log if the import fails
b2c job import ./my-site-data --show-log
Import Remote Archive
# Import an archive that already exists on the instance (in Impex/src/instance/)
b2c job import existing-archive.zip --remote
Import Archives Larger Than the Instance Limit
An instance rejects a single import archive above its size limit (typically 200 MB). Use --split on a directory import to import the data in multiple smaller parts:
# Split a large directory import into multiple archive parts
b2c job import ./big-site-data --split
# Tune the per-archive size limit (default 190mb; bare number is MiB)
b2c job import ./big-site-data --split --max-size 150mb
How splitting works:
- Metadata/XML is imported first, kept together in one archive when it fits (so internal references and dependency ordering resolve within a single import). If the XML alone is too large, it splits at top-level data-unit boundaries (
catalogs,libraries,sites,meta, …) in dependency order — never splitting a single unit. - Static assets (files under a
static/folder) are deferred into later archive parts, packed by compressed size. They attach to the catalogs/libraries created by the metadata import. - Parts import sequentially; the command stops on the first failure.
If a single file, or a single data unit's XML, is larger than --max-size on its own, the command errors (a file is never split across archives). A normal directory import that exceeds the limit warns and recommends --split. --split cannot be combined with --remote, subset paths, or --no-wait.
Export Commands
# Export global metadata (waits for completion by default)
b2c job export --global-data meta_data
# Export a site with specific data units
b2c job export --site RefArch --site-data content,site_preferences
Common Workflows
Adding a Custom Attribute to Products
- Create the metadata XML file:
meta/system-objecttype-extensions.xml:
Vendor SKU
string
false
true
Custom Attributes
- Create the directory structure:
my-import/
└── meta/
└── system-objecttype-extensions.xml
- Import:
b2c job import ./my-import
Adding Site Preferences
- Create metadata for the preference:
meta/system-objecttype-extensions.xml:
Enable Feature X
boolean
false
- Create preference values:
sites/MySite/preferences.xml:
true
- Directory structure:
my-import/
├── meta/
│ └── system-objecttype-extensions.xml
└── sites/
└── MySite/
└── preferences.xml
- Import:
b2c job import ./my-import
Creating a Custom Object Type
- Define the custom object:
meta/custom-objecttype-definitions.xml:
API Configuration
source-to-target
site
Config ID
string
1
API Endpoint
string
API Key
password
Active
boolean
true
- Import:
b2c job import ./my-import
Importing Custom Object Data
customobjects/APIConfiguration.xml:
https://api.payment.com/v2
true
Site Archive Structure
site-archive/
├── services.xml # Service configurations (credentials, profiles, services)
├── meta/
│ ├── system-objecttype-extensions.xml # Custom attributes on system objects
│ └── custom-objecttype-definitions.xml # Custom object type definitions
├── sites/
│ └── {SiteID}/
│ ├── preferences.xml # Site preference values
│ └── library/
│ └── content/
│ └── content.xml # Content assets
├── catalogs/
│ └── {CatalogID}/
│ └── catalog.xml # Products and categories
├── pricebooks/
│ └── {PriceBookID}/
│ └── pricebook.xml # Price definitions
├── customobjects/
│ └── {ObjectTypeID}.xml # Custom object instances
└── inventory-lists/
└── {InventoryListID}/
└── inventory.xml # Inventory records
Tips
Checking Job Status
# Search for recent job executions
b2c job search
# Wait for a specific job execution
b2c job wait
# View job logs on failure
b2c job import ./my-data --show-log
Best Practices
- Test imports on sandbox first before importing to staging/production
- Import waits for completion by default — use
--no-waitonly when you want to return immediately - Use
--show-logto debug failed imports - Keep archives organized by feature or change type
- Version control your metadata XML files
Configuring External Services
For service configurations (HTTP, FTP, SOAP services), see the b2c:b2c-webservices skill which includes:
- Complete services.xml examples
- Credential, profile, and service element patterns
- Import/export workflows
Quick example:
# Import service configuration
b2c job import ./services-folder
Where services-folder/services.xml follows the patterns in the b2c:b2c-webservices skill.
Detailed Reference
- [Metadata XML Patterns](references/METADATA-XML.md) - Common XML patterns for imports
Related Skills
b2c:b2c-webservices- Service configurations (HTTP, FTP, SOAP), services.xml formatb2c:b2c-metadata- System object extensions and custom object definitionsb2c-cli:b2c-job- Running jobs and monitoring import status
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: SalesforceCommerceCloud
- Source: SalesforceCommerceCloud/b2c-developer-tooling
- License: Apache-2.0
- Homepage: https://salesforcecommercecloud.github.io/b2c-developer-tooling/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.