mcpbeat

Product Enrich

alpacalabsllc/product-enrich

Enrich FF&E schedule rows with categories, colors, materials, and style tags. Use to tag, categorize, or fill those missing fields; not to research new products.

2k tokens
context cost
the whole folder, loaded on every use
2
files
instructions only
0
copies elsewhere
how many repositories repackaged it
302
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/AlpacaLabsLLC/skills-for-architects --skill product-enrich

What comes with it

666 bytes besides the instruction
README.md

The instruction itself

16 sections, as written by the author

/as:product-enrich — Product Enrichment

Takes product rows from the nearest project's product-library.csv or pasted data and proposes missing category, color, material, and style metadata.

When to Use

  • After a bulk import where products are missing categories or tags
  • When a designer clips products quickly without filling in details
  • To standardize metadata across products from different sources
  • Before generating an FF&E schedule (enriched data makes better schedules)

Step 1: Accept Input

Accept product data in any format:

CSV file:

/as:product-enrich ./products.csv

Pasted data:

/as:product-enrich
Eames Lounge Chair, Herman Miller
Saarinen Tulip Table, Knoll
PH 5 Pendant, Louis Poulsen
Togo Sofa, Ligne Roset

Step 2: Analyze Each Product

For each product, infer the following fields:

Category

Map to the canonical vocabulary (22 terms) defined in ../../schema/product-schema.md.

Subcategory

More specific classification within the category:

  • Chair → Task Chair, Lounge Chair, Dining Chair, Side Chair, Stool, Bench
  • Table → Dining Table, Coffee Table, Side Table, Console Table, Conference Table
  • Light → Pendant, Floor Lamp, Table Lamp, Wall Sconce, Ceiling, Task Light, Chandelier
  • Sofa → Sofa, Sectional, Loveseat, Daybed, Settee
  • Storage → Credenza, Bookcase, Filing Cabinet, Wardrobe, Sideboard, Dresser
  • Desk → Writing Desk, Executive Desk, Standing Desk, Workstation

Primary Color

The dominant color of the product as typically sold:

  • Use standard color names: Black, White, Gray, Brown, Beige, Navy, Blue, Green, Red, Orange, Yellow, Pink, Purple, Natural, Walnut, Oak, Teak, Chrome, Brass, Copper, Multi

Material

Primary materials, comma-separated:

  • Wood (specify type if known: Walnut, Oak, Maple, Teak, Birch, Ash, Beech)
  • Metal (specify: Steel, Aluminum, Brass, Chrome, Iron, Copper)
  • Upholstery (specify: Leather, Fabric, Velvet, Bouclé, Mohair, Linen, Wool)
  • Other: Glass, Marble, Concrete, Ceramic, Plastic, Fiberglass, Rattan, Cane, Acrylic

Style Tags

2-4 descriptive tags from:

  • Period/movement: Mid-Century Modern, Art Deco, Bauhaus, Scandinavian, Japanese, Industrial, Contemporary, Traditional, Minimalist, Postmodern, Memphis
  • Character: Organic, Geometric, Sculptural, Modular, Stackable, Compact, Statement, Classic, Iconic
  • Context: Residential, Contract, Hospitality, Healthcare, Education, Outdoor

Image Analysis

If product data includes the named Image URL field, use image analysis to verify and refine the enrichment. The image may reveal:

  • Actual color (not just what the name suggests)
  • Material details not in the product name
  • Style characteristics

Step 3: Present Preview

Show a preview of the enrichment before applying:

## Product Enrichment Preview

| Product | Brand | Category | Subcategory | Color | Material | Style Tags |
|---------|-------|----------|-------------|-------|----------|------------|
| Eames Lounge Chair | Herman Miller | Chair | Lounge Chair | Walnut/Black | Molded plywood, Leather | Mid-Century Modern, Iconic, Residential |
| Saarinen Tulip Table | Knoll | Table | Dining Table | White | Marble, Aluminum | Mid-Century Modern, Sculptural, Organic |
| PH 5 Pendant | Louis Poulsen | Light | Pendant | White | Aluminum | Scandinavian, Classic, Iconic |
| Togo Sofa | Ligne Roset | Sofa | Sofa | Brown | Fabric | Contemporary, Organic, Sculptural |

4 products enriched. Apply? (y/n)

Flag any products where enrichment is uncertain:

⚠ "Custom Reception Desk" — unknown product, category set to Desk but verify

Step 4: Apply

To the project library

Read ../../schema/product-schema.md and ../../schema/csv-conventions.md. Map enrichment only to canonical named fields: Category, Materials, Colors/Finishes, and appended Tags; place noncanonical subcategory detail in Notes. Do not overwrite a populated field unless the preview explicitly calls that out.

For multiple enriched rows, materialize the complete proposed 33-column CSV as a temporary or user-visible review file. Validate it, preview every material change and the target product-library.csv once, then use the single confirmation gate. After approval, invoke python3 "${CLAUDE_PLUGIN_ROOT}/skills/master-schedule/scripts/csv-library.py" import product --project <project-root> --source <review.csv> exactly once for one atomic replacement; never loop update. A genuinely single-record enrichment may use the same plugin-root helper's update command once with a uniquely matching stable field.

To conversation

Output the enriched table in markdown.

Step 5: Summary

✓ Enriched 4 products
  Categories: 4 assigned (0 already had values)
  Colors: 4 assigned
  Materials: 4 assigned
  Style tags: 14 total tags across 4 products
  Uncertain: 1 (flagged for review)

Pairs With

  • /as:product-spec-bulk-fetch — fetch specs first, then enrich the results
  • /as:product-data-cleanup — cleanup normalizes formatting, enrich adds metadata
  • /as:product-data-import — enriched products make better formatted schedules
  • /as:product-match — enriched tags help find better matches

How to use it

Copy the folder

Take alpacalabsllc/product-enrich from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.