configurator-cli
CLI commands for deploying, diffing, and introspecting Saleor stores. Use this skill whenever running ANY configurator CLI command or debugging CLI output. Covers deploy, introspect, diff, validate, --plan, CI/CD setup, and CLI flags.
What this skill does
# Configurator CLI
## Overview
The Saleor Configurator CLI syncs your YAML configuration with a live Saleor instance. You define your store in `config.yml`, then use CLI commands to preview and apply changes.
In non-TTY mode (pipes, CI, subprocesses), all commands automatically output a JSON envelope. Use `--json` to force JSON in a terminal, or `--text` to force human-readable in non-TTY.
## When to Use
- "How do I deploy my config?"
- "How do I pull the current store configuration?"
- "How do I preview changes before deploying?"
- "What flags does deploy support?"
- "How do I set up CI/CD for my store?"
- "What do the exit codes mean?"
- "How do I validate my config without network?"
- When NOT modeling products or writing YAML -- use `product-modeling` or `configurator-schema` instead
## Core Commands
### validate
Validates `config.yml` against the schema locally (no network required).
```bash
pnpm dlx @saleor/configurator validate
pnpm dlx @saleor/configurator validate --config custom-config.yml
pnpm dlx @saleor/configurator validate --json
```
### introspect
Pulls the current configuration from a Saleor instance into `config.yml`.
```bash
pnpm dlx @saleor/configurator introspect --url=$SALEOR_URL --token=$SALEOR_TOKEN
```
**Use cases:** initial setup, backup before changes, restore from known-good state.
### deploy
Pushes local `config.yml` changes to a Saleor instance.
```bash
pnpm dlx @saleor/configurator deploy --url=$SALEOR_URL --token=$SALEOR_TOKEN
```
**Important flags:**
- `--plan` -- preview changes without applying (replaces `--dry-run`)
- `--plan --json` -- machine-readable deployment plan
- `--fail-on-delete` -- abort if any deletions would occur (exit code 6)
- `--fail-on-breaking` -- abort if breaking changes detected (exit code 7)
- `--include <types>` -- only deploy specific entity types
- `--exclude <types>` -- skip specific entity types
- `--report-path <file>` -- custom path for deployment report (default: auto-generated in CWD)
- `--skip-media` -- skip media file uploads
### diff
Compares local `config.yml` with the remote Saleor instance.
```bash
pnpm dlx @saleor/configurator diff --url=$SALEOR_URL --token=$SALEOR_TOKEN
```
**Output markers:** `+ CREATE` (new), `~ UPDATE` (modified), `- DELETE` (removed).
**Entity scoping:**
- `--entity-type "Categories"` -- filter to one entity type
- `--entity "Categories/electronics"` -- filter to one specific entity
## Quick Reference
| Flag | Commands | Description |
|------|----------|-------------|
| `--url` | deploy, diff, introspect | Saleor GraphQL endpoint URL |
| `--token` | deploy, diff, introspect | Saleor API authentication token |
| `--json` | All | Force JSON envelope output |
| `--text` | All | Force human-readable output |
| `--drift-check` | introspect | Exit code 1 if remote differs from local |
| `--include` | deploy, diff, introspect | Comma-separated entity types to include |
| `--exclude` | deploy, diff, introspect | Comma-separated entity types to exclude |
| `--fail-on-delete` | deploy | Exit code 6 if deletions detected |
| `--fail-on-breaking` | deploy | Exit code 7 if breaking changes detected |
| `--plan` | deploy | Show plan without executing changes |
| `--report-path` | deploy | Custom path for deployment report |
| `--skip-media` | deploy, diff | Skip media file comparison/upload |
| `--entity-type` | diff | Filter to one entity type |
| `--entity` | diff | Filter to one specific entity (Type/name) |
## Environment Variables
Set credentials via `.env.local` (auto-loaded) or environment variables:
```bash
export SALEOR_URL="https://your-store.saleor.cloud/graphql/"
export SALEOR_TOKEN="your-api-token"
pnpm dlx @saleor/configurator deploy # No flags needed
```
## JSON Envelope
In non-TTY mode, all commands output:
```json
{
"command": "deploy",
"version": "1.3.0",
"exitCode": 0,
"result": { },
"logs": [{ "level": "info", "ts": "...", "message": "..." }],
"errors": []
}
```
Parse with `jq`:
```bash
OUTPUT=$(pnpm dlx @saleor/configurator validate --json 2>/dev/null)
echo "$OUTPUT" | jq '.result.valid'
echo "$OUTPUT" | jq '.result.errors[]'
```
## Exit Codes
| Code | Meaning | Action |
|------|---------|--------|
| 0 | Success | Operation completed |
| 1 | Unexpected error | Check error message and logs |
| 2 | Authentication error | Verify URL and token |
| 3 | Network error | Check connectivity |
| 4 | Validation error | Fix config.yml syntax/schema |
| 5 | Partial failure | Some operations failed, check errors array |
| 6 | Deletion blocked | `--fail-on-delete` triggered |
| 7 | Breaking blocked | `--fail-on-breaking` triggered |
## Common Workflows
### Optimal Agent Workflow
```bash
# 1. Validate locally first
pnpm dlx @saleor/configurator validate --json
# 2. Compare with remote
pnpm dlx @saleor/configurator diff --json
# 3. Preview deployment
pnpm dlx @saleor/configurator deploy --plan --json
# 4. Execute deployment
pnpm dlx @saleor/configurator deploy --json
```
### Safe CI/CD Deployment
```bash
pnpm dlx @saleor/configurator deploy --fail-on-delete
```
### Entity-Scoped Debugging
```bash
# Drill into a specific entity type
pnpm dlx @saleor/configurator diff --entity-type "Categories" --json
# Drill into a specific entity
pnpm dlx @saleor/configurator diff --entity "Categories/electronics" --json
```
### Selective Deployment
```bash
# Deploy only channels and products
pnpm dlx @saleor/configurator deploy --include channels,products
# Deploy everything except products
pnpm dlx @saleor/configurator deploy --exclude products
```
## Common Mistakes
| Mistake | Fix |
|---------|-----|
| Deploying without previewing first | Always run `diff` or `deploy --plan` before `deploy` |
| Wrong URL format | URL must end with `/graphql/` (e.g., `https://store.saleor.cloud/graphql/`) |
| Expired or invalid token | Regenerate your API token in Saleor Dashboard |
| Not using `--drift-check` for CI drift detection | Use `introspect --drift-check` to fail CI if remote config has drifted |
| Forgetting `--fail-on-delete` in CI | Prevents accidental deletions |
| Using `SALEOR_API_URL` | Correct env var is `SALEOR_URL` |
## `diff` vs `deploy --plan`
| | `diff` | `deploy --plan` |
|---|--------|-----------------|
| **Purpose** | Show field-level differences between local and remote | Show what operations deploy would execute |
| **Output** | Per-field changes (old → new values) | Operation summary (creates, updates, deletes) |
| **Scoping** | `--entity-type`, `--entity` for drill-down | No entity-level scoping |
| **Use when** | Debugging what changed, reviewing individual fields | Pre-deploy safety check, CI gates |
**Recommended workflow**: Use `diff` to understand changes, then `deploy --plan` to confirm the execution plan.
## Rollback & Recovery
Configurator doesn't have a built-in rollback command, but you can recover using these patterns:
**Before deploying** (recommended):
```bash
# Save current remote state as backup
pnpm dlx @saleor/configurator introspect --config=backup-config.yml
```
**After a bad deploy**:
```bash
# Restore from backup
pnpm dlx @saleor/configurator deploy --config=backup-config.yml
```
**Using git**:
```bash
# Revert config.yml to last known good state
git checkout HEAD~1 -- config.yml
pnpm dlx @saleor/configurator deploy
```
**Partial recovery** (only fix specific entities):
```bash
# Deploy only the entity types that need fixing
pnpm dlx @saleor/configurator deploy --include=categories,products
```
## See Also
- For complete command reference, see [references/commands.md](references/commands.md)
- For all flags and options, see [references/flags.md](references/flags.md)
- For error code details, see [references/error-codes.md](references/error-codes.md)
- For CI/CD setup, see [references/ci-cd.md](references/ci-cd.md)
### Related Skills
- **`configurator-schema`** - Config.yml structure and validation rules
- **`saleor-domain`** - Entity relationships and Saleor concepts
Related in Cloud & DevOps
appbuilder-action-scaffolder
IncludedCreate, implement, deploy, and debug Adobe Runtime actions with consistent layout, validation, and error handling. Use this skill whenever the user needs to add actions to an App Builder project, understand action structure (params, response format, web/raw actions), configure actions in the manifest, use App Builder SDKs (State, Files, Events, database), deploy and invoke actions via CLI, debug action issues, or implement patterns such as webhook receivers, custom event providers, journaling consumers, large payload redirects, action sequence pipelines, and Asset Compute workers. Also trigger when users mention serverless functions in Adobe context, action logging, IMS authentication for actions, or cron-style scheduled actions.
orchestrating-datacloud
IncludedSalesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. Use this skill when the user needs a multi-step Data Cloud pipeline, cross-phase troubleshooting, or data space and data kit management. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase sf data360 workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching phase-specific skill), the task is STDM/session tracing/parquet telemetry (use observing-agentforce), standard CRM SOQL (use querying-soql), or Apex implementation (use generating-apex).
github-project-automation
IncludedAutomate GitHub repository setup with CI/CD workflows, issue templates, Dependabot, and CodeQL security scanning. Includes 12 production-tested workflows and prevents 18 errors: YAML syntax, action pinning, and configuration. Use when: setting up GitHub Actions CI/CD, creating issue/PR templates, enabling Dependabot or CodeQL scanning, deploying to Cloudflare Workers, implementing matrix testing, or troubleshooting YAML indentation, action version pinning, secrets syntax, runner versions, or CodeQL configuration. Keywords: github actions, github workflow, ci/cd, issue templates, pull request templates, dependabot, codeql, security scanning, yaml syntax, github automation, repository setup, workflow templates, github actions matrix, secrets management, branch protection, codeowners, github projects, continuous integration, continuous deployment, workflow syntax error, action version pinning, runner version, github context, yaml indentation error
sf-datacloud
IncludedSalesforce Data Cloud product orchestrator for connect→prepare→harmonize→segment→act workflows. TRIGGER when: user needs a multi-step Data Cloud pipeline, asks to set up or troubleshoot Data Cloud across phases, manages data spaces or data kits, or wants a cross-phase `sf data360` workflow. DO NOT TRIGGER when: work is isolated to a single phase (use the matching sf-datacloud-* skill), the task is STDM/session tracing/parquet telemetry (use sf-ai-agentforce-observability), standard CRM SOQL (use sf-soql), or Apex implementation (use sf-apex).
fabric-cli
IncludedUse this skill for Fabric.so CLI workflows with the `fabric` terminal command: diagnose/install/login, search or browse a Fabric library, save notes/links/files, create folders, ask the Fabric AI assistant, manage tasks/workspaces, generate shell completion, check subscription usage, produce JSON output, and use Fabric as persistent agent memory. Do not use for Microsoft Fabric/Azure/Power BI `fab`, Daniel Miessler's Fabric framework, Python Fabric SSH, Fabric.js, or textile/fashion fabric.
lark
IncludedLark/Feishu CLI skills: lark-cli operations for docs, markdown, sheets, base, calendar, im, mail, task, okr, drive, wiki, slides, whiteboard, apps, approval, attendance, contact, vc, minutes, event. Use when the user needs to operate Lark/Feishu resources via lark-cli, send messages, manage documents, spreadsheets, calendars, tasks, OKRs, deploy web pages, or any Feishu/Lark workspace operations.