From saleor-configurator
Guides Saleor Configurator deployment workflow: validate config, diff changes, plan preview, deploy with JSON parsing and failure recovery. Use for store config sync, debugging deploys, or CLI automation in CI/CD.
npx claudepluginhub saleor/configuratorThis skill uses the workspace's default tool permissions.
This skill defines the optimal workflow sequence for deploying Saleor configurations. It covers the validate-diff-plan-deploy pipeline, JSON envelope parsing at each step, failure recovery with entity-scoped drill-down, and report-based context gathering.
Guides Saleor Configurator CLI commands for validating, introspecting, deploying, diffing YAML store configs, and CI/CD setup. Use for any CLI invocation or output debugging.
Deploys Saleor to production via Docker Compose with API, Celery workers, PostgreSQL, Redis, React dashboard, Next.js storefront; covers Saleor Cloud, env vars, S3 storage, DB management, scaling. Use for Saleor deployments.
Guides Shopify CLI usage for validating app/extension configs (shopify.app.toml), running store workflows (auth/execute), inventory/product changes by handle/SKU, and troubleshooting setup/auth/upgrade.
Share bugs, ideas, or general feedback.
This skill defines the optimal workflow sequence for deploying Saleor configurations. It covers the validate-diff-plan-deploy pipeline, JSON envelope parsing at each step, failure recovery with entity-scoped drill-down, and report-based context gathering.
configurator-cli insteadagent-output-parsing insteadAlways follow this sequence for safe deployments:
pnpm dlx @saleor/configurator validate --json 2>/dev/null
Parse the envelope:
result.valid === false: fix config.yml errors before proceedingresult.valid === true: continue to diffpnpm dlx @saleor/configurator diff --json 2>/dev/null
Parse the envelope:
result.summary.totalChanges === 0: config is in sync, no deployment neededresult.hasDestructiveOperations === true: warn about deletionspnpm dlx @saleor/configurator deploy --plan --json 2>/dev/null
Parse the envelope:
result.willDeleteEntities === true: explicitly warnpnpm dlx @saleor/configurator deploy --json 2>/dev/null
Parse the envelope:
exitCode === 0: successexitCode === 5: partial failure, drill down into errorsvalidate --json
|
v
valid? --no--> fix config.yml --> validate again
|
yes
|
v
diff --json
|
v
changes? --no--> done (in sync)
|
yes
|
v
deploy --plan --json
|
v
review plan
|
v
deploy --json
|
v
exitCode 0? --no--> check errors, drill down
|
yes
|
v
done
When exitCode === 5 (partial failure):
.errors array for failed entitiespnpm dlx @saleor/configurator diff --entity "Type/name" --json 2>/dev/null
# 1. Deploy fails with partial errors
OUTPUT=$(pnpm dlx @saleor/configurator deploy --json 2>/dev/null)
echo "$OUTPUT" | jq -r '.errors[] | "\(.entity): \(.message)"'
# 2. Drill into the failing entity type
pnpm dlx @saleor/configurator diff --entity-type "Categories" --json 2>/dev/null | jq '.result'
# 3. Drill into the specific entity
pnpm dlx @saleor/configurator diff --entity "Categories/electronics" --json 2>/dev/null | jq '.result.operations[].changes'
# 4. Fix config.yml based on field-level diff
# 5. Validate fix
pnpm dlx @saleor/configurator validate --json 2>/dev/null
# 6. Redeploy
pnpm dlx @saleor/configurator deploy --json 2>/dev/null
Check previous deployment reports before starting a new workflow:
# List recent reports
ls -lt deployment-report-*.json 2>/dev/null | head -5
# Read latest report
ls -t deployment-report-*.json 2>/dev/null | head -1 | xargs cat | jq '.'
# Check for previous failures
ls -t deployment-report-*.json 2>/dev/null | head -1 | xargs cat | jq '.result.operations[] | select(.status == "failed")'
| Code | Action |
|---|---|
| 0 | Success - report completion |
| 1 | Unexpected - check .errors and .logs |
| 2 | Auth - verify SALEOR_URL and SALEOR_TOKEN |
| 3 | Network - verify URL is reachable |
| 4 | Validation - run validate, fix errors |
| 5 | Partial - drill down with --entity, fix, redeploy |
| 6 | Deletions blocked - show deletions, confirm intent |
| 7 | Breaking blocked - show breaking changes, confirm intent |
#!/bin/bash
set -e
# Step 1: Validate
VALIDATE=$(pnpm dlx @saleor/configurator validate --json 2>/dev/null)
if [ "$(echo "$VALIDATE" | jq -r '.result.valid')" != "true" ]; then
echo "Validation failed:"
echo "$VALIDATE" | jq -r '.result.errors[] | " \(.path): \(.message)"'
exit 4
fi
# Step 2: Plan
PLAN=$(pnpm dlx @saleor/configurator deploy --plan --json 2>/dev/null)
echo "Plan: $(echo "$PLAN" | jq -r '.result.summary | "creates=\(.creates) updates=\(.updates) deletes=\(.deletes)"')"
# Step 3: Deploy with safety guards
pnpm dlx @saleor/configurator deploy --fail-on-delete --json 2>/dev/null
Credentials come from .env.local (auto-loaded) or environment variables:
SALEOR_URL - Saleor GraphQL endpoint (must end with /graphql/)SALEOR_TOKEN - API authentication token--fail-on-delete in CI/CD pipelinesconfigurator-cli - Individual command reference and flagsagent-output-parsing - JSON envelope structure and parsing patternsconfigurator-troubleshoot - Error diagnosis and fix guidance