# 角色设定图的版面规格

`image.sheet` 是**给出图模型的完整版面指令**，本 skill 只负责把它写对，**不负责出图**。
出图在下游（要选模型、画风、画幅，这三件事在这一层一个都答不了）。

下面这些约束必须逐条写进 `image.sheet` 的英文正文。它们都是被真实输出打出来的——
不写死，模型就会各自发挥，而且总往同一个方向崩。

## 每个角色一张图

一张横构图，内部左右分栏：

```
┌──────────┬────────────────────────────┐
│          │   正视    侧视    背视       │
│  半身像   │                            │
│ （证件照） ├────────────────────────────┤
│  面部基准  │  细节 · 细节 · 细节 · 细节   │
│   ~34%   │                            │
└──────────┴────────────────────────────┘
                    16:9
```

左栏的半身像是**面部设计的基准**，右栏三视图的脸照着它画。

## 主体信息不能在排版时缩水

`image.sheet` 的主体段必须承接 `image.prompt` 中的年龄、身份对应的服饰、面料品质、发饰、随身物件与仪态，不能只保留衣服颜色和发髻。三个区是同一身份、同一场合、同一套装束；原文明确的便装、乔装或落难状态同样保留，不擅自换成礼服。细节条优先展示能辨认这个人的特征，不能为了填满细节格凭空添加补丁、磨损或饰物。

## 背景：白底

一律**纯白背景**。理由有三个：抠图干净、印出来是设定表该有的样子、在深色报告里也能读。
`image.sheet` 里写死 `plain pure white background`，不要改成灰底或场景背景。

## 分区光照

设定表要平光（抠图、量比例），体积感要方向光。两者矛盾，所以**分区解决**：左栏半身像给柔和
方向主光 + 环境遮蔽，右侧三视图和细节条保持平光正交。提示词里是两句独立的
`LIGHTING IN THE LEFT ZONE ONLY` / `LIGHTING IN THE RIGHT ZONES`，**不要合并成一句全局光照**。

## 比例 ⚠️

这个版面最容易崩的就是比例——模型为了把细节条塞进去，会把三个全身像压扁或拉长。必须写死
`PROPORTIONS ARE CRITICAL`、`no stretching, squashing or foreshortening`、
`the detail studies give way, not the figures`。

## 左栏的收口 ⚠️

模型默认会把半身像的两侧肩膀裁掉、底边做成圆角或渐隐晕影，看着很别扭。必须显式禁掉：
肩膀完整、两侧留空、底边齐平直切。**这条不写就一定会出问题。**

## 面部一致性 ⚠️

一张图里出现两个长相是这个版面最容易出的问题——左栏画一个人、右栏画另一个人。必须写死
`must match the bust portrait exactly — same features, same hairstyle, same expression`。

## 画风不在这里

**`image.sheet` 里不写画风。** 画风是出图那一刻由调用方整批附加在提示词前面的一层，
写进这里只会跟当时选的那一档打架，而且换风格要逐条改。细节见 `profile-pass.md`。

同一批角色的画风一致性因此也是下游的事：整批共用同一段风格指令，必要时再拿第一张成图
当参考图压一压。这一层管的是「这个人长什么样、这张表怎么排」。

## 文件名

`render` 默认去 cast.json 同级的 `images/<slug>-sheet.png` 找图，找到就嵌进 report.html；
图在别处就用 `--images <目录>` 指过去。本 skill 不产生这些文件，下游出完图重跑 `render` 就能捡起来。
`node scripts/novel-characters.mjs slug "<角色名>"` 生成安全文件名（中文会保留）。
