# Prompt Contract

中高保真设计、多个方向探索、长 deck、或涉及导出边界的任务，先把用户输入冻结成一个 `prompt contract`，再开始设计。

这不是额外文书工作，而是为了防止做到一半才发现题目变了，尤其是这些场景：

- 用户要的是 `HTML / PDF / editable PPTX / MP4 / GIF` 里的哪一种还没说清
- 你要同时做多个方向，但又不能把核心目标做丢
- 任务跨多轮推进，后面很容易漂移

## 1. Freeze The Contract

至少确认这些字段：

- `subject`：产品、页面、活动、人物或品牌对象
- `goal`：这次设计真正要推动的结果
- `audience`：主要面向谁
- `surface`：落地页 / App 原型 / 幻灯片 / 动画 / 信息图
- `delivery_format`：只要 HTML，还是还要 PDF / editable PPTX / MP4 / GIF
- `must_have`：必须保留的内容、区块、文案、图表或 CTA
- `tone`：定义视觉语气的 `3-5` 个关键词
- `motion`：是否需要动效，以及动效承担什么职责
- `boundaries`：不能改动的品牌限制、技术限制、信息边界
- `success_criteria`：用户如何判断这次交付成功

如果上下文不足，优先补齐这些字段，不要直接猜完整方案。

## 2. Split Invariants And Variables

把决策拆成两类：

- `invariants`：跨所有方向都必须保持不变的内容
- `variables`：允许探索的结构、色彩、密度、排版、动效和节奏

默认规则：

- 目标、核心信息顺序、CTA 意图、导出格式约束属于 `invariants`
- 布局、气质、强调方式、视觉张力属于 `variables`
- 如果某个“变体”改掉了核心目标，它就不是变体，而是另一道题

对这个 skill 尤其要额外冻结这几项：

- `editable_pptx_required`：如果需要，就必须从第一行 HTML 开始按 editable 约束写
- `speaker_notes_required`：是否需要 notes 体系承载讲稿
- `audio_required`：动画默认带音频，除非用户明确说不要

## 3. Build A Minimal Trace Matrix

复杂任务至少维护一个最小追踪表：

| Prompt Token | Design Decision | Evidence | Verification |
|---|---|---|---|
| 例如：更有品牌感 | 强化标题层级和品牌资产占比 | hero 结构 / asset 选择 / token 选择 | 首屏层级检查 |

至少追踪这些项：

- 目标
- 核心语气关键词
- 必须保留的区块或 CTA
- 关键交互要求
- 用户明确给出的限制
- 交付格式和导出限制

## 4. Use The Contract During Exploration

给多个方向时：

- 所有方向共用同一组 `invariants`
- 只改变 `variables`
- 每个方向都说明自己主要改变了哪些变量
- 如果方向之间差异太小，扩大变量差异，而不是碰 `invariants`

## 5. Delivery Gate

交付前再确认一遍：

- `subject` 没被偷换
- `goal` 没被弱化
- `must_have` 没有丢
- `tone` 在视觉语言里可见
- `motion` 被实现，或明确说明为什么降级
- `delivery_format` 和实际产物一致
- `editable_pptx_required = true` 时，没有偷偷走截图型导出

## 6. Minimal Template

```markdown
# Prompt Contract

- subject:
- goal:
- audience:
- surface:
- delivery_format:
- must_have:
- tone:
- motion:
- boundaries:
- success_criteria:

## Invariants
- ...

## Variables
- ...
```
