---
name: jwb-apply
description: Use when 用户已确认要投递某个岗位，要求生成投递包、按 JD 改简历、生成简历 PDF、归档投递材料或把投递记入追踪表时。English triggers：apply to a job, tailor resume to a JD, generate resume PDF, archive application materials, record an application in the tracker.
# 环境声明：宿主据此判断能否挂载（不是装饰字段）
compatibility: Python 3.12+；jobws 指仓库内的 python tools/jobws.py（在仓库根运行）；工作区已初始化；全本地运行，产物只写你的工作区。
license: MIT
metadata:
  version: 26.10.0
allowed-tools: Bash(jobws:*)
---

# 生成投递包

**执行前必读**：工作区的 `AGENTS.md`（经验资产、自定义红线、简历版本）与 `jwb-recruit-coach` 技能。

## 前置检查

读 `<工作区>/01_岗位池/<公司>_<岗位>/解析卡.md`。

- 不存在 → 提示先执行 JD 解析
- 「门槛结论」是「不通过」→ 终止，提示未通过硬门槛
- 「门槛结论」是「待补档案」→ 不终止，提示先补齐档案中缺失的硬门槛事实再重跑（2026-09-24 四态口径）
- 「门槛结论」是「待确认」→ 不终止，请用户人工确认门槛判定
- 总分低于 45 → 先向用户确认是否仍要投递，不直接生成材料

## 流程

### 1. 选定简历版本

按解析卡的方向，在工作区的 `02_简历工坊/` 下选对应版本。版本文件名见工作区 `AGENTS.md` 的「简历版本」小节。

方向在档案中无对应版本时，按 JD 侧重点选最接近的一版，并在备注说明。

### 2. 按需微调简历

**只改四处**：求职方向、Profile、技能顺序、项目表述。**项目事实一律不动。**

每个动词都要经得起 5–10 分钟追问。动词由 `00_事实库/` 的事实卡决定，**不把「参与」一律升级为「负责」**。

改完**必须同步更新对应 HTML 模板**——HTML 是 PDF 的生成源，只改 md 不反映到 PDF。模板命名约定为 `02_简历工坊/pdf/resume_<版本>.html`。

**简历风格**：模板主色收敛在一个变量 `--resume-accent` 上（默认专业蓝，石墨灰备选写在注释里）——换色只改它。简历**保持亮底深字**的专业取向（打印与 ATS 优先），**不跟随应用主题皮肤**；工作区的 `resume_style` 偏好（`jobws prefs get resume_style`）用来记录你选定的风格名，保证跨会话一致。

### 3. 生成 PDF 并 ATS 校验

```
jobws resume --workspace <工作区> --version <版本>
```

走数据驱动「标准版式」时（生成源是 `source/resume_<版本>.json`）：

```
jobws resume render --workspace <工作区> --version <版本>
```

三项全过才算成功：

1. 页数为 1
2. 可提取文本 ≥ 300 字符（可用 `--min-text-length` 调整）
3. `config/ats_required_facts.txt` 中的关键事实全部命中（该文件不存在时跳过第三项）

**任一项不通过 → 中止，不归档、不写追踪表**，报告具体失败项。

关键事实清单由用户自己定义——通常是最不能删的核心数字与成果。若工作区尚无此文件，提示用户建立。

超页时的删减原则：**先删装饰性内容，绝不删核心成果与可验证数字**。具体顺序见工作区 `AGENTS.md` 的自定义红线。

### 4. 归档

在 `<工作区>/05_投递追踪/applications/<公司>_<岗位>/` 下保存：

- `JD原文.md`：投递时的 JD 快照（能回答「三个月前投这家时 JD 怎么写的」）
- `简历_投递版_<YYYYMMDD>.pdf`：本次实际投递的版本（能回答「当时用的哪版简历」）
- `面试记录.md`：空白模板，含公司、岗位、轮次、日期、被问问题、答得不好的点

### 5. 写入追踪表

```
jobws track --workspace <工作区> add \
    --company "<公司>" --role "<岗位>" --direction <方向> \
    --batch <批次> --source <来源> --deadline <YYYY-MM-DD> \
    --applied <YYYY-MM-DD> --stage 已投 --resume <版本> --score <评分> \
    --archive "05_投递追踪/applications/<公司>_<岗位>"
```

取回 id，回填归档目录备注。

### 6. 提交

**不得自动执行 `git commit`。** 生成提交信息 `apply: <公司> <岗位>` 与待提交清单，交用户确认后由用户执行。

工作区含姓名、照片与联系方式，非预期提交难以撤回。

## 输出要求

报告：简历版本、PDF 路径、ATS 校验结果、归档目录、追踪表 id、待提交清单与建议的提交信息。

## 宿主形态：没有仓库时（MCP / DSH）

宿主未接仓库（`jobws` CLI 不可用，如装进 DSH 的形态）时：

- JD 内容：只读工具 `read_job_text(job_name)`（`kind` 默认 `jd`，解析卡用 `kind="card"`）；
  读不到就让用户提供，**不要自己补写岗位要求**。
- 追踪记录写入**必须两段式**：`preview_add_application` / `preview_update_application`
  拿 token → 把 diff 展示给用户 → 用户确认后 `apply_approval` 落盘。预览阶段**零落盘**，
  不得跳过展示这一步。
- 简历渲染与归档写文件不在 MCP 工具面内：需要生成 PDF / 归档时请用户在桌面端或仓库形态
  完成，**不要声称已生成**。
- 输出：投递记录摘要（公司 / 岗位 / 评分 / 追加上去的字段）+ 待用户确认的动作。
