$npx -y skills add AlpacaLabsLLC/skills-for-architects --skill csv-to-sifConvert a CSV or Excel FF&E product list to SIF (Standard Interchange Format) for dealer and procurement systems. Use when the user asks to "convert to SIF", export a schedule for a dealer, or produce a .sif file from a spreadsheet. For the reverse direction use /sif-to-csv.
| 1 | # /csv-to-sif — CSV to SIF Converter |
| 2 | |
| 3 | Converts a CSV, Excel, or Google Sheets product list into a SIF (Standard Interchange Format) file for import into dealer and procurement systems like Hedberg, CAP, CET, Cyncly Worksheet, ProjectMatrix, Studio Webware, and Design Manager. |
| 4 | |
| 5 | ## When to Use |
| 6 | |
| 7 | - Sending a specification to a dealer for quoting |
| 8 | - Importing product data into a dealer management system |
| 9 | - Sharing a standardized product list with procurement |
| 10 | - Converting an FF&E schedule into a format dealers expect |
| 11 | |
| 12 | ## SIF Format Reference |
| 13 | |
| 14 | SIF is a text-based key-value format. Each line is `CODE=VALUE`, terminated by CRLF. Products are separated by records starting with `PN=`. |
| 15 | |
| 16 | ### Core fields |
| 17 | |
| 18 | | Code | Name | Required | Description | |
| 19 | |------|------|----------|-------------| |
| 20 | | `SF` | Specification File | No | Project reference (header, once per file) | |
| 21 | | `ST` | Specification Title | No | Display title (header, once per file) | |
| 22 | | `PN` | Product Number | **Yes** | SKU or model number. Marks the start of a new record. | |
| 23 | | `PD` | Product Description | **Yes** | Product name and description | |
| 24 | | `MC` | Manufacturer Code | **Yes** | 3-5 character code (HMI, KNL, STC) | |
| 25 | | `MN` | Manufacturer Name | No | Full manufacturer name | |
| 26 | | `QT` | Quantity | **Yes** | Integer quantity | |
| 27 | | `NT` | Quantity (alt) | No | Some systems use NT instead of QT | |
| 28 | | `GC` | Category / Group Code | No | Product category | |
| 29 | | `G0` | Vendor / Group ID | No | Vendor or dealer identifier | |
| 30 | |
| 31 | ### Pricing fields |
| 32 | |
| 33 | | Code | Name | Description | |
| 34 | |------|------|-------------| |
| 35 | | `PL` | List Price | Unit list price (numeric, no currency symbol) | |
| 36 | | `P1` | Price Tier 1 | Primary price (some systems use P1 instead of PL) | |
| 37 | | `P2` | Price Tier 2 | Alternate price tier | |
| 38 | | `P4` | Price Tier 4 | Alternate price tier | |
| 39 | | `P5` | Price Tier 5 | Alternate price tier | |
| 40 | | `I1` | Unit List Price (Cyncly) | Used by Cyncly Worksheet | |
| 41 | | `I2` | Purchase Price (Cyncly) | Used by Cyncly Worksheet | |
| 42 | | `S-` / `S%` | Sell Discount % | Sell = PL - (PL × S- × 0.01) | |
| 43 | | `P%` / `B%` | Purchase/Buy % | Cost = PL × (P% × 0.01) | |
| 44 | |
| 45 | ### Product detail fields |
| 46 | |
| 47 | | Code | Name | Description | |
| 48 | |------|------|-------------| |
| 49 | | `TG` | Side Mark / Tag | Room name, area code, or project tag | |
| 50 | | `ON` | Option Number | Must pair with OD | |
| 51 | | `OD` | Option Description | Finish, fabric, color selection | |
| 52 | | `AN` | Attribute Number | Must pair with AD | |
| 53 | | `AD` | Attribute Description | Dimension, weight, or other attribute | |
| 54 | | `WT` | Weight | Product weight | |
| 55 | | `VO` | Volume | Product volume | |
| 56 | | `PRC` | Product Category (Cyncly) | Category for Cyncly Worksheet | |
| 57 | |
| 58 | ### Link fields |
| 59 | |
| 60 | | Code | Name | Description | |
| 61 | |------|------|-------------| |
| 62 | | `ProductURL` | Product Page URL | Link to manufacturer product page | |
| 63 | | `ImageURL` | Product Image URL | Link to product image | |
| 64 | | `PV` | Picture Path | Windows bitmap or TIF file path | |
| 65 | |
| 66 | ### Alternate manufacturer codes (by system) |
| 67 | |
| 68 | | System | Code | Purpose | |
| 69 | |--------|------|---------| |
| 70 | | Standard | `MC` | 3-5 char manufacturer code | |
| 71 | | Cyncly Worksheet | `MG` | Manufacturer code (replaces MC) | |
| 72 | | Cyncly Worksheet | `MN` | Full manufacturer name | |
| 73 | | CET / Configura | `EC` | Manufacturer code (alt) | |
| 74 | |
| 75 | ### File structure example |
| 76 | |
| 77 | ``` |
| 78 | SF=Project Alpha - FF&E Specification |
| 79 | ST=FF&E Schedule — March 2026 |
| 80 | PN=670 |
| 81 | PD=Eames Lounge Chair and Ottoman |
| 82 | MC=HMI |
| 83 | MN=Herman Miller |
| 84 | GC=Seating |
| 85 | QT=3 |
| 86 | PL=5695.00 |
| 87 | WT=92 |
| 88 | TG=Executive Lounge |
| 89 | OD=Santos Palisander / Black MCL Leather |
| 90 | AN=DIM |
| 91 | AD=32.75W x 32.5D x 33.5H in |
| 92 | ProductURL=https://www.hermanmiller.com/products/seating/lounge-seating/eames-lounge-chair-and-ottoman/ |
| 93 | ImageURL=https://www.hermanmiller.com/content/dam/hmicom/page_assets/products/eames_lounge_chair_and_ottoman/mh_prd_ovw_eames_lounge_chair_and_ottoman.jpg |
| 94 | |
| 95 | PN=164-500 |
| 96 | PD=Saarinen Round Dining Table 54" |
| 97 | MC=KNL |
| 98 | MN=Knoll |
| 99 | GC=Tables |
| 100 | QT=1 |
| 101 | PL=4750.00 |
| 102 | TG=Dining Area |
| 103 | OD=Arabescato Marble Top / White Base |
| 104 | AN=DIM |
| 105 | AD=54dia x 28.5H in |
| 106 | ``` |
| 107 | |
| 108 | ### Rules |
| 109 | - Each line is one field: `CODE=VALUE` |
| 110 | - Lines terminated by CRLF |
| 111 | - Blank line between records |
| 112 | - `PN` starts a new record — must come first in each record |
| 113 | - `ON`/`OD` and `AN`/`AD` pairs must stay together |
| 114 | - No embedded line breaks within a field value |
| 115 | - Empty values use `CODE=` with nothing after the equals sign |
| 116 | |
| 117 | ## Step 1: Accept Input |
| 118 | |
| 119 | **CSV file:** |
| 120 | ``` |
| 121 | /csv-to-sif ./product-data-import.csv |
| 122 | ``` |
| 123 | |
| 124 | **Google Sheet:** |
| 125 | ``` |
| 126 | /csv-to-sif 1FMScYW9guezOWc_m4ClTQxxFIpS6TNRr373R-MJGzgE |
| 127 | ``` |
| 128 | |
| 129 | **Pasted CSV:** |
| 130 | ``` |
| 131 | /csv-to-sif |
| 132 | Product,Brand,SKU,Qty,Price,Finish,Room |
| 133 | Eames Lounge Chair,Herman Miller,670,3,5695,Walnut/Black Leather,Executive Lounge |
| 134 | Saarinen Table 5 |