# CSV data files **Keep CSV files clean** — a header row and data rows, nothing else. Put deck configuration and templates in the `yaml role=tag` block's `data-config`, not in the CSV. This keeps data portable and presentation in one place. See `reference.md` for the element and role catalog. ```csv label,body,name,type 1,"### 火球术卷轴 一张泛黄的羊皮纸。",火球术卷轴,消耗品 ``` - `label` — unique row id (number or text). - `body` — main content, supports markdown. - Any other columns are custom fields. - `{{prop}}` in `body` interpolates another column from the same row (or a random row when the table uses `{remix}`). - Wrap values containing `,`, `"`, or newlines in double quotes; escape `"` as `""`. Lines beginning with `#` are comments. ## Front matter (avoid) The parser also accepts YAML front matter delimited by `---`, which can declare `fields`, a `deck:` block, and arbitrary keys merged into every row. **Prefer not to use it** — it mixes presentation into the data file. Use the YAML tag block instead. ```csv --- fields: - name: name description: 卡牌名称 deck: size: 63x88 grid: 5x5 game_system: D&D 5e --- label,body,name,type 1,"### 火球术卷轴",火球术卷轴,消耗品 ```