---
name: resume-builder
description: 简历制作流水线：为求职 / 比赛 / 升学新建、完善或重组简历（中文 / 英文，1–2 页），覆盖对话收集→事实核对→撰写→画廊选模板→Typst 排版→浏览器可视化精修→导出 PDF，强调事实可溯源、不编造。触发词：简历、resume、CV、投简历、改简历。
---

# Resume Builder — 简历制作流水线

## 适用场景
用户要为某个具体目标（求职岗位 / 比赛 / 升学）制作中文或英文简历，或要把不同用途的简历分目录管理。

## 能力边界（不做什么）
- 只做 **1–2 页**求职 / 比赛 / 升学简历。
- 不做：三页及以上简历、多页学术 CV、求职信 / 推荐信、作品集 / 个人主页、手机和平板编辑。
- 素材只通过对话提供（粘贴文字、口述、让 Agent 读本地 PDF）；网页端不上传旧简历、PDF 或 JD。
- 编辑器不内置 AI 对话、不做跨板块拖拽、不做快照回滚；所有数据只在本机，不调用云端接口。

超出范围就明示用户，另寻工具。

## 项目归档（每个用途一个独立目录）
```text
<用途>/
├── resume.json      ← 唯一内容数据源，Agent 与网页编辑器共同读写
├── resume.pdf       ← 导出的正式交付物（姓名-目标岗位-电话.pdf）
└── work/
    ├── 信息整理.md   ← 素材库
    ├── claim-map.md  ← 事实追溯表
    ├── session.json  ← 阶段状态机（Agent 与本地服务协作）
    ├── events.jsonl  ← 事件日志
    └── build/        ← 渲染中间产物，不作为交付物
```
用途目录之间互不联动。新建简历先建目录，再开始收集。

## 核心原则
- **撰写前必读**：在撰写、改写、审计简历或针对 JD 定制之前，**必须完整阅读 [Resume-Writing-Guide-LLM.md](references/Resume-Writing-Guide-LLM.md)**，并按其方法进行内容取舍、证据表达与措辞调整。它是本 skill 写作方法论的唯一权威，也适用于模板适配时的压缩与润色；不能只读阶段说明就直接动笔。同一会话已完整读过后，后续按需回查，不必每轮重读。
- **事实不可编造（最高优先级）**：决策链 `真实性 > 岗位匹配 > 证据强度 > 个人贡献 > 结果影响 > 可扫描性 > 文辞漂亮`。没有可靠数字时**不估算、不补造、不美化**，改用真实的上线、采用、验收、规模、交付物、决策影响或外部认可。
- **强表述必须可举证**：`主导`、`Owner`、`独立负责`、`设计`、`优化` 等说法要有事实支撑；团队结果不得自动写成个人结果。
- **目标决定取舍**：每份简历围绕一个明确的「背景 + 目的」，与目标无关的经历果断舍弃并说明理由。重包装 ≠ 编造。
- **内容表达与排版质量**：内容清楚、有重点，版面饱满、均衡、易扫读。两者冲突时保留核心证据与可读性；不为排满页面增加空话、重复或无关内容。
- **两阶段撰写**：先产出**模板无关**的完整内容稿；用户选定模板后，才做模板相关的压缩、排序、断行和页数控制。
- **模板由用户选**：画廊分中文与英文，各 9 套；中文使用指定的 9 个上游原版排版库，英文复用既有来源的原版模板，其中 Harvard 为原版纯黑白。Agent 不替用户最终决定，也不自行重写模板版式。中英文各用其原版字体与布局，不做跨语言或双语适配。
- **提问驱动完善**：缺口分优先级批量提问；用户说"跳过 / 没有"就接受，不反复追问。

## 事实与防幻觉（claim 追溯）
每份简历在 `<用途>/work/claim-map.md` 维护一张三列表，贯穿收集→撰写→导出全过程：

| 简历内容 | 来源 | 状态 |
|---|---|---|
| 某某大学 某专业本科 | 原 PDF / 用户口述 | ✅ 已确认 |
| 某项目 年化收益 X% | （待用户给出） | ⛔ 缺失阻塞 |

四态：**✅ 已确认**（可写入）· **❓ 待确认**（暂不写入，等确认）· **⛔ 缺失阻塞**（高危且缺失，必须先问清才能动笔）· **➖ 已省略**（经用户同意不写）。

高危类目（要么确认、要么经用户同意省略，绝不猜、不偷删）：身份信息 · 学历 / 学校 · 雇主 / 公司 · 时间日期 · 论文 / 专利 · 量化数字 · 照片取舍。

claim-map 由 Agent 在对话中维护；网页端只读展示，不自动改状态。

## 阶段流程与阅读路由
```text
A 对话收集与模板无关撰写 → B 模板选择（画廊）→ C 模板适配与正式排版
    → D 可视化精修（编辑器）→ F 正式导出
D 中用户换模板 → E 重新排版检查 → 回 D
```

| 阶段 | Agent 做什么 | 进入时读取 |
|---|---|---|
| A | 收集素材、确认目标、claim-map、缺口提问、模板无关内容稿 | `references/writing-stage.md`（首次调用即读） |
| B | 启动本地画廊，等用户选模板，自动获取结果 | `references/template-selection.md` |
| C | 按所选模板二轮精修，写入 `resume.json`，渲染并检查 | `references/rendering-stage.md` + `references/data-contract.md` |
| D | 与网页编辑器协作精修（双方改同一份 JSON） | `references/editor-stage.md` |
| E | 针对新模板重新排版和检查 | `references/rendering-stage.md` 的换模板一节 |
| F | 终检后引导导出规范命名 PDF | `references/editor-stage.md` 的导出一节 |

- 服务器、前端、模板语法、Typst 排错细节全部放在上表按需文件里，主入口不展开。**阶段 A 不启动任何服务、不讨论模板与排版实现。**
- **运行与恢复**：Windows 使用 `scripts/run.ps1`、macOS 使用 `scripts/run.sh` 调用服务和脚本，或使用 bootstrap 输出的解释器绝对路径。默认只装基础运行时，选模板后按需准备字体。首次渲染失败读取具体错误，不连续盲目重试；详见阶段 B/C。
- **日常制作只检查当前简历**：内容与版面检查按 `references/rendering-stage.md` §4 执行，已检查且未变化的部分不重复检查。发布版不附带开发测试流程。
- **恢复旧项目**：先看 `work/session.json` 的 `stage` 字段，按上表路由到对应阶段文件继续。模板退役或语言不匹配时回画廊让用户重选；不得静默换模板。

## 何时进入模板选择（Agent 自行判断，不问用户"该进下一步吗"）
同时满足以下条件即告知用户"素材已充分，即将进入模板选择"，然后读 `references/template-selection.md`：

1. 内容稿覆盖全部拟保留板块与条目，无占位空壳；
2. claim-map 中 **⛔ 缺失阻塞清零**（已确认，或经用户同意记 ➖）；
3. 关键 ❓ 已确认过一轮（影响定稿的都问过）；
4. 用户暂无新增信息。

## 信息安全（硬性要求）
- skill 文件、任何"模板 / 示例 / 流程"内容中**不得出现真实姓名、电话、邮箱、学校、公司等个人数据**，一律占位符脱敏。
- 用户真实数据只存在于其自己的用途目录中，不回灌进 skill。
- 第三方原始源码与许可证保留其上游署名；其中公开示例仅用于来源审计，不注入用户简历。画廊按用户要求使用上游公开预览原图；上游公开示例仅供展示，不注入用户数据。
