Back to Skills

data-importer

verified

Provides comprehensive guidance for transforming external product data into Saleor config.yml format. This skill should be invoked when the user needs to import products from CSV files, Excel spreadsheets, Shopify exports, or any external data source. Covers file format detection, column mapping strategies, variant grouping, and output validation.

View on GitHub

Marketplace

saleor-configurator

saleor/configurator

Plugin

saleor-configurator

Repository
Verified Org

saleor/configurator
22stars

plugin/skills/data-importer/SKILL.md

Last Verified

February 3, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/saleor/configurator/blob/main/plugin/skills/data-importer/SKILL.md -a claude-code --skill data-importer

Installation paths:

Claude
.claude/skills/data-importer/
Powered by add-skill CLI

Instructions

# Data Importer

Transform product data from any source into Saleor's config.yml format.

## Core Workflow

1. **Detect format** - CSV, Excel, JSON, or unknown
2. **Extract columns** - Read headers and sample data
3. **Map interactively** - User confirms field mappings
4. **Transform** - Convert to Saleor schema
5. **Validate** - Check for issues before output

## File Handling

### Excel (.xlsx)
Excel files need conversion. Ask user to export as CSV from Excel/Sheets, or attempt:
```bash
python3 -c "import pandas as pd; pd.read_excel('$FILE').to_csv('${FILE%.xlsx}.csv', index=False)"
```

### CSV
Read directly:
```bash
head -1 "$FILE"  # Headers
head -5 "$FILE"  # Sample rows
```

## Field Mapping Strategy

**Don't assume column names.** Instead:
1. Show user all columns with sample values
2. Ask which column maps to each Saleor field
3. Mark unmapped columns as potential attributes

### Required Saleor Fields

| Field | Source Options |
|-------|----------------|
| `product.name` | Any "name", "title", or descriptive column |
| `product.slug` | Generate from name, or use ID/handle column |
| `variant.sku` | Any unique ID column (SKU, External ID, Code) |
| `productType` | From "type" column or user-specified |

### Optional Fields

| Field | Notes |
|-------|-------|
| `price` | If missing, import as catalog-only |
| `quantity` | If missing, skip stocks |
| `category` | From category/country/region column |
| `description` | If present |
| Attributes | Any unmapped columns become product attributes |

## Output Structure

```yaml
productTypes:
  - name: "[from type column or user input]"
    isShippingRequired: [ask user]
    productAttributes: [unmapped columns]

categories:
  - name: "[from category column]"
    slug: "[generated]"

products:
  - name: "[from name column]"
    slug: "[generated or from ID]"
    productType: "[reference]"
    variants:
      - sku: "[from SKU column]"
        attributes: {[mapped attributes]}
        channelListings: [if price ex

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
2842 chars