Write product descriptions from a catalogue file¶
Attach a small catalogue file to a plain chat agent bound to a listing-copy skill, and check that it writes one description per product without inventing anything the spec sheet does not state. One row is deliberately missing a required attribute, so you can check that the agent flags the gap rather than filling it in. This is a procedure to run, with one recorded run as a reference.
What you need¶
- A running installation with a model profile.
- No sandbox or embedding model — a plain chat agent with the skills capability is enough; the CSV is small enough to be pasted into the prompt as text.
- Optional reading: Skills → Skill gallery → e-commerce has a
product-description-writerskill with the same rules this page uses, and theecommerce/listing-writeragent template in the same gallery shows a fuller agent built around it, with knowledge and MCP connections added. This page's skill is written from that entry's content.
Prepare the input¶
Save this as products.csv. Four rows are complete; FW-104's material
column is deliberately blank — that is the gap this fixture is built to
test.
sku,name,category,material,size_run,weight_g,fit_note,care,box_contents
FW-101,Harbor Rain Jacket,Outerwear,recycled nylon 100%,S-XXL,410,true to size,machine wash cold,jacket and stuff sack
FW-102,Harbor Wool Beanie,Accessories,merino wool 100%,one size,80,one size fits most,hand wash cold,beanie only
FW-103,Harbor Steel Water Bottle,Drinkware,stainless steel,650 ml,320,not applicable,dishwasher safe lid only,bottle and lid
FW-104,Harbor Canvas Tote,Bags,,38 x 42 x 10 cm,260,not applicable,spot clean,tote bag only
FW-105,Harbor Trail Socks (2-pack),Apparel,merino wool blend 60%,S/M and L/XL,60,true to size,machine wash cold,two pairs of socks
Save this as a skill, in Skills → New skill — name it
listing-copy-from-spec, adapted from the gallery's
ecommerce/product-description-writer:
Copy that describes a product the customer does not receive is the most
expensive sentence in e-commerce.
## Work only from the spec
Every claim traces to the spec sheet, the supplier data or a photograph. If
the material is not stated, the description does not name a material.
## The shape
One line saying what it is and who it is for; three to five bullets of
concrete attributes with numbers; one short paragraph on use; then the full
specification as given.
## Concrete beats enthusiastic
"320 gsm, pre-shrunk, fits true to size" outperforms "premium quality".
Numbers survive translation, reduce returns and answer the question that
would otherwise become a support ticket.
## Always include
Dimensions with units, materials, care, what is in the box, and — for
anything worn — the fit note. Missing fit information is the single largest
driver of apparel returns.
## Never
Claim a certification, a country of origin, a health benefit or a
compatibility that the source does not state.
Build the agent¶
- Create an agent in Agents → New agent and select your model profile.
- In Toolbox, enable Skills and bind
listing-copy-from-spec. - Set the instructions below, then Publish.
You write product listing descriptions from an attached catalogue file.
Follow the bound listing-copy-from-spec skill for shape and rules.
Write one description per row of the attached CSV.
If a row is missing an attribute the skill says to always include, do not
invent it: name it as missing in that product's description instead.
Return the result as a markdown table: sku, name, then the description.
Run it¶
Open a new chat with the agent, attach products.csv and send:
Check the result¶
| Check | Reference |
|---|---|
| Row count | Five descriptions, one per SKU |
| Numbers | Weights, dimensions and capacities match the CSV exactly, with units |
| FW-104's missing material | Flagged as missing in that description, no material named |
| Fit note present | On FW-101, FW-102 and FW-105 — the three worn or wearable items |
| Never-claimed attributes | No certification, country of origin, health benefit or compatibility claim anywhere |
| Same request with no file attached | The agent says the file is missing and invents no catalogue |
Check FW-104 first — a missing attribute silently filled in is the failure this fixture exists to catch.
Recorded on v0.0.504, 25 September 2026
Model: Claude Sonnet 4.6 through OpenRouter. The agent loaded the bound skill, then wrote five descriptions in one reply, one per row. Every number — 650 ml, 320 g, 38 x 42 x 10 cm, 60% merino, S/M and L/XL — matched the CSV. For FW-104 it wrote "Material composition is not specified in the product data and has not been stated in this listing" instead of naming a fabric. Fit notes appeared on the jacket, the beanie and the socks; no certification, origin or health claim appeared anywhere. Cost: 0.053 USD.
With no file attached, the agent still loaded the skill, then said "I don't see any attached catalogue file or CSV in your message" and asked for it, instead of writing descriptions from nothing.
When it goes wrong¶
- A material or dimension is invented for FW-104. The skill's "Never" section is being ignored; repeat the instruction in the agent's own instructions field, not only in the skill.
- The agent calls
load_capabilitywith the wrong id and the turn ends in an error. This happened during verification on 0.0.508, when the gallery entry was installed asProduct description writer: the model twice wrote the hyphenated id instead, and the turn ended inUnexpectedModelBehaviorrather than a normal refusal. Since 0.0.509 gallery skills are installed under that hyphenated name, and a new skill's name has to be lowercase letters, digits and hyphens (#1911). A skill installed before then keeps its old name — install it again from the gallery and bind the new one. - The fit note is missing on a worn item. Ask which attribute the skill's "Always include" section names for that row; a missing fit note is the return driver the skill exists to prevent.
- The reply skips a row. Ask for the row count before trusting the table; five rows in, five descriptions out.
Record the trial¶
Keep the CSV, the skill body, the five descriptions, the agent version and the run in Activity. Keep a run where the missing attribute was invented, if one happens — it is the clearest evidence the skill's wording needs tightening.
A person still decides whether a description is fit to publish and follows up on the flagged gap before the listing goes live; the check above catches an invented fact, not a dull one.
Next steps¶
For a live catalogue, bind a knowledge collection
of supplier spec sheets instead of pasting rows, and add the
ecommerce/review-response skill from the same gallery shelf to answer
customer questions about a product with the same source discipline.