关于 product-data-cleanup
product-data-cleanup 是整理和规范 FF&E 产品排期数据的技能,适用于需要清理产品字段并检查异常的工作。它支持预览或生成独立清理文件,库和项目排期的正式变更则交由相应所有者处理。
主要功能
- 01规范大小写、类别和材料
- 02拆分尺寸并保留单位依据
- 03清理语言、价格和货币格式
- 04标记潜在重复项供审查
- 05提供变更预览及清理结果
适用场景
- 01整理含不一致格式的 FF&E 排期
- 02统一产品类别、材料和颜色字段
- 03检查尺寸或货币信息不完整的数据
- 04生成独立清理文件供审阅
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alpacalabsllc/ skills-for-architects --skill product-data-cleanup安装后在 Claude Code 中输入/product-data-cleanup确认已加载。
附带文件host-contract.jsonREADME.md
详细介绍
/as:product-data-cleanup — 商品数据规范化
开始操作前,请阅读宿主契约以及本组件的声明(skill:product-data-cleanup)。仅加载共享目录中引用的模式配置文件。根据实际任务组合所需模式;声明表示要求,并不代表已获得访问权限或许可。
库的变更由 /as:product-library 负责。准备好完整的选定行/变更集及证据,然后在现有授权范围内移交原生保存操作。该负责人会验证整个批次,绑定确切的请求/预览/当前状态,并核实实际发布情况。本技能不会自行修改 product-library.csv。
宿主适配器:请阅读交付专属指南,了解调用方式、问题、目标访问权限和可选委派。
记录权威性与宿主交接
如需交接结构化证据,请阅读完整的 native product-observation owner 和 schema。对完整信封应用原生 validate/validate-batch,仅通过明确的选定项目/当前修订/字段绑定进行适配。保留精确的类型化值、来源/定位信息/时间和未知状态;将完整信封、审计观察结果、冲突和通知一并保留。现有的 null/空白/用户覆盖值均须保留。这些是尚未采纳的证据和审查提案,绝不构成编写规格的授权。
对于绑定到项目的工作,请应用原生的 context resolution,使用其已验证的项目身份,并阅读项目说明。内联或一次性来源工作无需创建项目。product-library 负责可复用 CSV 存储;master-schedule 负责已采纳的规格身份/修订,而 product-data-import 负责已接受的作业输入。不得根据目录、来源文档或交付声明推断权威性。
明确区分已采纳的项目进度表、一次性来源工作,以及可选的可复用 product-library.csv。已采纳的项目/进度表记录具有权威性;通过 /as:master-schedule 读取固定版本,并向该所有者提议变更,同时提供预期修订、证据并保留覆盖值。此技能不会独立重写规范项目/进度表记录,也不会推断审批情况。以下有关保存到库的说明仅适用于可选的 CSV 库;不会采纳或更新项目进度表。
宿主使用其可用功能读取和编辑提供的工作簿。保留原始文件、选定图片、公式、真实超链接和无关单元格。对于已采纳的进度表,通过 /as:master-schedule 处理采纳/对账、编辑前原生备份,以及经过验证的编辑前/后记录 CSV 恢复快照;另行保留宿主提取的工作簿数据和映射。对于一次性模式,宿主在作业恢复文件中保留原生备份,以及实际从工作簿提取的 CSV 快照/映射,不调用进度表快照,也不采纳记录。三方冲突和拟议删除均需明确解决。工作簿访问能力不受支持时,应提供准确的交接信息,不得谎称已完成。对于一次性工作,已接受的来源仍是任务输入,不会被隐式采纳。
对每条观察结果,保留来源身份、页面/URL 定位信息、检索时间、选定与可用配置、单位和不确定性。绝不臆造 SKU 组合、尺寸、饰面选择、价格或货币;单独的 $ 含义不明确。除非明确更改,否则保留用户选择。当前事实声明必须基于实际来源检索;无法访问的证据仍视为未知。/as:product-data-import 负责已接受的作业输入和更正;/as:product-audit 报告差异,但不会静默应用更改。/as:product-cut-sheet 和 /as:ffe-spec-book 使用共享文档模板,并在输入解析完成后由宿主渲染。
整理杂乱的 FF&E 进度表并统一所有内容:大小写、尺寸、单位、语言、材料词汇、货币格式和重复项。输出整洁、一致、可直接用于规格编制的进度表。
清理结果可以是内联预览,也可以是按明确要求生成的独立清理文件,无需采纳到库中。只有在要求更改可复用库时,才交由 product-library 处理;已采纳进度表的变更则交由 master-schedule 处理。
输入
用户通过以下任一方式提供日程:
- 项目库 — 位于包含
PROJECT.md的祖先目录下最近的product-library.csv。 - CSV 文件路径 — 单次清理时保留提供的架构;只有在请求导入规范库时,才验证确切的 33 列表头。
- 粘贴的表格 — 预览预期的输出架构;只有在请求保存到库时,才需要规范映射。
如果输入格式不明确,请询问。
清理规则
1. 大小写
| 字段 | 规则 | 示例 |
|---|---|---|
| Collection | 标题式大小写 | cosm → Cosm |
| Category | 标题式大小写,使用单数 | chairs → Chair,TABLES → Table |
| Materials | 句首字母大写,其余小写 | MOLDED PLYWOOD, FULL GRAIN LEATHER → Molded plywood, full grain leather |
| Colors/Finishes | 每个项目使用标题式大小写 | walnut/black leather → Walnut / Black Leather |
需保留的已知品牌缩写:HAY、USM、B&B、DWR、CB2、HBF、OFS、SitOnIt、3form、ICF
2. 类别规范化
将自由文本类别映射到 ../../schema/product-schema.md 中定义的规范词汇和别名表。阅读该文件,查看将各种变体(英语、西班牙语、旧术语)映射到规范类别名称的完整列表。
如果类别存在歧义,保留其原始值,并另行提供候选项供审核。不要发布猜测的类别,也不要在规范类别字段中放入审核标记。
3. 尺寸
拆分组合尺寸:
| 输入 | → W | → D | → H | → Unit |
|---|---|---|---|---|
32 x 24 x 30 in,来源注明 W×D×H | 32 | 24 | 30 | in |
80 × 60 × 75 cm,来源注明 W×D×H | 80 | 60 | 75 | cm |
W32 D24 H30,无单位证据 | — | — | — | 未知;保留原始值 |
32"W x 24"D x 30"H | 32 | 24 | 30 | in |
Ancho: 80, Prof: 60, Alto: 75 cm | 80 | 60 | 75 | cm |
尺寸规则:
- 始终使用独立的 W、D、H 列和 Unit 列存储
- 如果尺寸已拆分,验证其为数字(从数值中去除单位文本)
- 将
"解释为英寸,将'解释为英尺。英尺或英尺-英寸值(2'6")没有in/cm/mm单位值:仅在用户要求转换时将其转换为英寸(30);否则保留原始值并标记为[?] - 接受
×、x、X、by、por作为分隔符 - W × D × H 是输出约定,并不能证明来源中的轴顺序。使用明确的来源标签/图例;未分配的轴保留为未知。只有在来源术语提供证据时,才将 L/B 映射到对应轴。整体尺寸、开孔尺寸和包装箱尺寸应分别保留。
- 在证据中保留原始精度;仅在用户要求显示投影时才进行舍入。
- 缺失的单位应保持未知,不论数值大小。不要根据家具尺寸是否合理来推断英寸或厘米。
默认保留来源单位。仅在用户要求时进行转换,并保留原始值和精确的转换依据。阅读原生尺寸语义,并在明确映射轴和单位后应用 dimension_values.normalize。支持时,应填写实际的尺寸输出列;仅将原始尺寸放入 Notes 不属于规范化输出。交接前应独立于 CSV 表头验证,对结构化观测进行验证。
4. 语言规范化
检测每个字段值的语言,除非用户另有指定,否则统一为英语。
| 西班牙语(乌拉圭来源中常见) | → 英语 |
|---|---|
| Silla | Chair(类别) |
| Mesa | Table(类别) |
| Escritorio | Desk(类别) |
| Madera | Wood(材料) |
| Cuero | Leather(材料) |
| Acero | Steel(材料) |
| Vidrio | Glass(材料) |
| Tela | Fabric(材料) |
| Mármol | Marble(材料) |
| Roble | Oak(材料) |
| Nogal | Walnut(材料) |
| Blanco | White(颜色) |
| Negro | Black(颜色) |
| Natural | Natural(保留原样) |
| Cromado | Chrome(表面处理) |
**规则:**翻译类别、材料和颜色/表面处理字段。产品名称和品牌保持原样(专有名词)。
如果用户说“保留西班牙语”或指定目标语言,请遵照要求。
5. 材料与表面处理术语
仅进行有来源依据且不改变含义的术语规范化。含义不明确的缩写应保持原样,并附上审核备注;不得添加关于成分、制造方法或表面处理的说法。语义修正建议必须有依据并获得明确授权。以下示例仅适用于来源明确表达相同含义的情况:
| 变体 | → 标准形式 |
|---|---|
| SS, Stainless, S/S | Stainless steel |
| Ply, Plywood | Plywood |
| Mold ply, Molded plywood | Molded plywood |
| MDF, Medium density | MDF |
| HPL, High pressure laminate | HPL |
| Lam, Laminate | Laminate |
| Fab, Textile | Fabric |
| COM, C.O.M. | COM(Customer's Own Material) |
| COL, C.O.L. | COL(Customer's Own Leather) |
| Powder coat, PC, Pwdr | Powder-coated |
| Chrm, Chrome plated | Chrome |
| Anodized alum, Anod. | Anodized aluminum |
| Ven, Veneer | Veneer |
| Sol. wood, Solid | Solid wood |
6. 价格与货币
- 从价格数值中移除货币符号(
$、€、£、¥)。仅凭符号无法确定 Currency 列;请应用下方的货币检测规则 - 移除千位分隔符(
.和,均可能是分隔符,需判断区域格式:1.234,56为欧式格式,1,234.56为美式格式) - 存储为普通十进制数:
5695.00 - 如果价格为“Contact”、“Quote”、“Trade”、“A consultar”或“Consultar”,则将数值价格留空(未知,绝不可填零),并在 Notes 中保留原始价格文本
- 货币检测:单独出现
$不能确定货币。使用明确的来源信息或用户提供的 ISO 货币代码;否则保留为未知。仅凭网站所在地不足以确定货币。 - 如果价格表中混有多种货币,保留每行原有的货币,并在顶部添加备注。
7. 重复项检测
- 将产品名称和品牌均相同的行标记为潜在重复项
- 将 URL 相同的行标记为潜在重复项;系列产品/配置器链接可能对应不同的已选商品
- 不要自动删除;将重复项展示给用户,并询问要保留哪些
8. 空格与格式
- 删除所有字段首尾的空格
- 将连续多个空格合并为一个
- 删除字段值中的换行符
- 统一列表分隔符:
wood / metal / glass→Wood, Metal, Glass(用逗号分隔) - 删除末尾的逗号或分号
工作流
步骤 1:加载价格表
读取输入。报告:“已加载 N 行、M 列。” 将输入列映射到规范模式。如果列映射不明确(例如,名为“Size”的列可能包含合并尺寸),请询问用户。
步骤 2:分析问题
扫描所有行并生成摘要:
## Cleanup Preview
- **Casing**: X product names need Title Case
- **Categories**: Y rows have non-standard categories (mapping: "chairs" → Chair, etc.)
- **Dimensions**: Z rows have combined dimensions to split
- **Language**: W rows have Spanish-language fields to translate
- **Materials**: V rows have non-standard material terms
- **Prices**: U rows need currency formatting cleanup
- **Duplicates**: T potential duplicate rows found
- **Empty fields**: S rows missing dimensions, R rows missing price
步骤 3:确认范围
问题摘要即为更改预览。使用先前选定的清理组和现有的明确授权;仅在必要时通过一次确认询问尚未确定的可选分组;不要先在正文中重复询问同一问题。
步骤 4:应用修正
按照当前生效的清理规则处理每一行。记录所做的所有更改。
第 5 步:展示结果
展示部分已更改行的更改前/更改后差异(最多 5 个示例)。然后展示完整的清理后表格。
报告:
## Cleanup Complete
- Rows processed: N
- Changes made: X
- Flagged for review: Y (marked with [?])
第 6 步:保存
对于明确要求的独立清理文件,保留已商定的源列和未解决的原始值,保留原件和更改报告,并遵循以下完整的原生输出保管流程。不要强行将一次性导出内容套入库架构,也不要采纳记录。
对于要求保存到可复用库的情况,请读取 ../../schema/product-schema.md 和 ../../schema/csv-conventions.md。对于多行更改,将完整的 33 列 CSV 提案实例化为临时或用户可见的审阅文件,验证该候选文件,一次性预览全部更改,并使用现有的精确授权,或仅询问一次以取得缺失的批准。获批后,将完整批次交给 product-library 的原生导入操作;该所有者会执行一次受保护的发布,而不是逐行循环处理。对于确实只涉及单条记录的编辑,可以改用其原生更新功能,但必须使用唯一匹配的稳定字段,以及精确的请求/当前状态证据。绝不要覆盖任意输入文件,也不要手动编辑 product-library.csv。
边缘情况
- 混合语言的日程表:检测每列的主导语言,并统一为一种语言
- 合并单元格或格式不规则:标记并询问用户如何处理
- 架构中不存在的额外列:在独立输出中保留;保存到规范库时,先解决这些列的映射
- 空行:在预览中列为拟删除项;仅在获批范围内删除
- 表头检测:自动检测表头行(首个包含与已知字段名匹配文本的行)。如果无法确定,请询问。
原始产品证据
针对任务,从原始文档中检索所选制造商/产品/变体的准确事实。示例数据是合成数据,绝不能作为证据。不要将产品事实、认证、价格或供应商格式定义复制到插件中,作为可复用的参考知识。保留未解决的值,并区分代表性图片与确切选定的变体。
原生输出与所有者交接
对于要求持久保存的编写报告,使用 receive 的原生文档所有者进行基于精确坐标的放置、查询和注册;不要根据标签拼装项目文件夹。一次性报告只能使用明确获准的目标位置,且无需设置工作室/项目。规范采纳的修订和可复用库保存仍由各自所有者负责。现有的精确授权持续有效;仅获取缺失的实质范围授权或原生权限。
对于此技能实际保存或编辑的任何输出,都要对其完整受影响范围应用原生变更序列。保留所有原始字节/访问权限、源文件/身份防护、完整的准备输出以及缺失状态/前置条件;在首个发布者执行操作前,完成持久化保存,并独立重新读取所有保留/准备的内容和访问权限。保留无关数据,并在适用时保留工作簿的实际功能。重新打开每个实际目标位置,读取其完整字节以及模式/适用的所有权/ACL,并在报告完成前验证更改、源文件沿袭关系和受保护的原件。字节正确、传入创建模式参数或仅生成回执,都不足以证明完成。对于不受支持的保护机制或状态不确定的发布,必须保持阻止/待处理状态,并提供恢复证据。
使用适合所选模式的原生功能;仅当所选方法需要时才执行进程。无需使用 Arch Studio runner、下载可执行文件或重建源文件。只读/内联工作不需要写入能力。分别报告实际研究/提取、已验证的提案,以及任何经过独立验证的所有者保存;没有实际证据时,不要声称所有者交接已完成。
原生工作簿保留比较
如果已明确选定前后两个原生 .xlsx 或 .xlsm 文件,且允许进行单元格编辑,则加载完整的工作簿比较责任方,并通过实际的 ZIP/XML 检查执行原生 workbook_preservation.compare。保留完全一致的成员字节、声明的工作表/单元格属性、公式/缓存的区别以及 XML 空白规则。此只读比较不授权编辑,也不能替代任务要求的实际目标单元格回读、备份、功能检查、重新计算或视觉验证。对于提供方格式或二进制格式,以及无法达到的检查精度,均须明确标注为差距;绝不要通过重新保存/转换工作簿来掩盖这些问题。无需使用 Arch Studio 辅助工具或进程运行时。