Skip to main content
ClaudeWave
Skill719 repo starsupdated 10d ago

assess-interview-candidate

>-

Install in Claude Code
Copy
git clone --depth 1 https://github.com/dongshuyan/compass-skills /tmp/assess-interview-candidate && cp -r /tmp/assess-interview-candidate/skills/assess-interview-candidate ~/.claude/skills/assess-interview-candidate
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# 候选人评估与面试报告

## 目标

把简历和岗位要求整理成两层材料:

1. 后台保留完整岗位模型、证据账本、来源、假设和评分数据,便于复核。
2. 给面试官的 HTML 只保留“候选人简介、简历疑点与水分排查、面试提问”三个模块,使用通俗中文。

始终区分候选人明确提供的事实、外部佐证、推断和未知。最终招聘决定由具备权限的人作出。

## 可移植运行约定

本 Skill 不依赖某个特定 Agent、Skill 安装根目录或命令行外壳。任何能够读取本地文件并运行 Python 3.10 及以上版本的 Agent 都可以使用;PDF 处理、联网核验和浏览器检查按当前宿主实际具备的能力执行。

- 先把 `<skill-dir>` 解析为本 `SKILL.md` 所在目录,不猜测固定安装路径。
- `<python>` 表示当前系统可用的 Python 3 启动方式。Windows 通常使用 `py -3` 或 `python`,macOS 与 Linux 通常使用 `python3` 或 `python`;先用版本命令确认实际可用项。
- `<approved-root>`、`<output-dir>` 等是路径占位符,不代表固定路径分隔符。通过宿主文件 API 或 `pathlib` 组合路径,并把含空格或非 ASCII 字符的路径作为一个完整参数传入。
- 命令示例使用单行、外壳无关的参数形式。不要依赖 Bash 续行符、环境变量展开、当前用户主目录结构或某个 Agent 的专用工具名。
- `agents/` 中的文件只是特定宿主可选的界面元数据;核心工作流以本文件、`references/`、`scripts/`、`assets/` 和 `evals/` 为准。

遇到能力差异时按 [agent-portability.md](references/agent-portability.md) 处理。缺少必要能力时明确报告未完成的核验,不得把未执行的步骤写成已完成。

## 结果契约

每次完整运行在新的案件目录中生成:

```text
input/       原始简历、岗位要求和用户提供的链接
normalized/  经文字提取与视觉核对的文本及案件清单
research/    查询和来源记录
models/      岗位模型、证据账本、行为假设和面试蓝图
interview/   初始评分状态
output/      完整后台数据、精简报告数据和离线 HTML
audit/       运行、校验和隐私排除记录
```

关键输出:

```text
output/assessment-data.json
output/interviewer-report-data.json
output/<候选人姓名>-候选人评估与面试报告.html
```

HTML 文件名、浏览器标题和页面最上方标题都必须包含候选人姓名。不要覆盖既有案件或报告。

## 开始前读取

先把 `<skill-dir>` 解析为本文件所在目录。

1. 每次读取 [workflow-contract.md](references/workflow-contract.md)、[evidence-and-inference-policy.md](references/evidence-and-inference-policy.md) 和 [privacy-and-fairness-cn.md](references/privacy-and-fairness-cn.md)。
2. 建立岗位模型前读取 [job-modeling.md](references/job-modeling.md)。
3. 联网核验候选人职业证据前读取 [research-and-identity-policy.md](references/research-and-identity-policy.md)。
4. 生成题目时读取 [structured-interview-methods.md](references/structured-interview-methods.md) 和 [scoring-and-coverage.md](references/scoring-and-coverage.md)。
5. AI、LLM、Agent 或工程岗位读取 [role-adapter-ai-llm-engineering.md](references/role-adapter-ai-llm-engineering.md)。
6. 写 JSON 前读取对应 Schema;面试官报告必须读取 [schema-interviewer-report.json](references/schema-interviewer-report.json)。

## 输入门

必需输入:

- 可读取的候选人简历;
- 岗位要求或招聘方确认的实际任务;
- 输出根目录,未提供时使用当前目录下的 `candidate-cases/`。

尽可能取得:

- 公司工作地点、岗位级别、现场办公和出差要求;
- 候选人主动提供的职业链接;
- 候选人职业信息联网核验的允许范围;
- 岗位专家确认的能力权重和门槛。

缺少简历或岗位要求时以 `REQUIRED_INPUT_MISSING` 停止,不创建案件。缺少公司地点时继续生成,但写明“距离无法计算,待补充公司地址”。缺少候选人联网核验权限时关闭该分支,不影响本地简历分析。

## 工作流

### 1. 创建案件并完整读取材料

```text
<python> "<skill-dir>/scripts/create_candidate_case.py" --root "<approved-root>" --role-slug "<role-slug>"
```

复制原始输入并记录哈希,不移动或删除用户文件。PDF 简历在案件目录中使用固定受限副本 `input/resume-original.pdf`,同时在案件清单保留原文件名和哈希。PDF 必须同时使用当前宿主可用的文字提取能力和逐页视觉检查能力,核对页数、姓名、时间线、表格、图片文字及提取遗漏。为保证完整核对,原件和逐页提取文本可能保留电话、邮箱、证件号或精确住址,因此 `input/` 与 `normalized/` 都按受限候选人资料处理;这些内容不得进入联网查询、面试官数据或 HTML。若无法完成逐页视觉检查,以 `PDF_VISUAL_CHECK_UNAVAILABLE` 停止生成最终报告,并说明缺少的能力。

逐页视觉检查时同时记录照片状态:

- 页面上没有候选人个人头像时使用 `not_present`;
- 有疑似头像但无法可靠确认是候选人本人时使用 `ambiguous`;
- 已确认页面上有候选人头像、但当前工具无法可靠提取时使用 `extraction_unavailable`;
- 只有在头像来自原始简历 PDF、已与对应页面视觉核对一致、且能记录页码和提取位置时才使用 `included`。

先检查 PDF 的嵌入图片;若头像不是独立图片,再从对应页面裁切。所有提取结果统一转换为 PNG,并在转换后再次与 PDF 页面视觉比对;JPEG、PPM 等格式不能直接嵌入。不得从公开主页或其他文件补图,不得使用人脸识别、相似度匹配、照片年龄估计或外貌分析。选定图片后运行下列脚本;脚本要求来源为案件内的 `input/resume-original.pdf`,会在解压前检查尺寸、校验 PNG 结构和像素数据、移除非显示所需元数据和文件尾随内容,再以内嵌图片输出:

```text
<python> "<skill-dir>/scripts/prepare_candidate_photo.py" --input "<visually-confirmed-image>" --resume-pdf "<original-resume-pdf>" --page <one-based-page> --extraction-method embedded_image --image-index <zero-based-image-index>
```

页面裁切时把最后两个参数改为 `--extraction-method page_crop --crop-box <x,y,width,height>`。脚本只负责校验格式、尺寸、哈希和结构化来源,不能替代视觉身份确认。

### 2. 建立当前岗位模型

按“工作产出 → 关键任务 → 能力 → 目标熟练度 → 可接受证据 → 验证方法”拆解岗位。记录重要性、频率、失败影响和是否入职即需具备。缺少招聘方确认时标为暂定,不把学历、年限或公司名气自动当作能力。

对快速变化岗位进行不含候选人身份信息的当前岗位研究;优先官方招聘页、一手技术资料、标准和职业框架。

### 3. 建立简历证据账本

逐条拆分与岗位重要能力有关的声明,记录原文位置、情境、任务、本人行动、结果、个人贡献边界、可验证材料和剩余缺口。简历没有写某项能力只表示“当前证据不足”,不能直接写成“不具备”。

疑点使用“描述不清”“可核验缺口”等中性语言。优先检查:

- 只写“参与”但没有本人分工;
- 完成功能但没说明自主设计、改造开源方案还是简单调用;
- 提到增长、准确率或降本,但没有基线、时间范围和计算口径;
- 团队、论文或平台结果与个人贡献边界不清;
- 岗位关键能力只有技能名词,没有可运行产物或验证过程。

### 4. 可选的公开职业证据核验

仅研究获得允许、公开可访问、身份确认且与岗位直接相关的职业资料。系统发现的页面至少需要两个一致职业锚点;同名不足以确认身份。不得搜索年龄、籍贯、婚姻、家庭或私人生活。没有公开主页、论文或代码仓库不得扣分。

### 5. 保留完整后台审计

继续生成岗位模型、证据账本、候选人视角、九类岗位行为假设、面试蓝图、评分状态、来源记录和 `output/assessment-data.json`。这些对象供审计与人工复核,不直接展示在面试官 HTML 中。

### 6. 生成精简面试官数据

按 [schema-interviewer-report.json](references/schema-interviewer-report.json) 生成 `output/interviewer-report-data.json`。

#### 候选人简介

- 姓名必须使用候选人材料中的明确姓名。
- `personal_info` 只保存候选人主动提供的出生信息、出生地、老家或籍贯、婚姻状况、现居城市;没有就显示“未提供”,不得搜索或补写。
- 有出生日期时按报告日期计算准确周岁;有出生年月或出生年份时计算近似年龄并标“约”。同时保存原始出生信息、规范日期、换算截止日和来源位置。
- 照片放在 `candidate_overview.candidate_photo`,不得放进 `personal_info`。只有 `status=included` 时 HTML 才显示本地 `data:` 图片;其他状态不保留空白照片栏。
- 候选人未提供出生信息时,才可生成独立的 `candidate_overview.timeline_age_estimate`:优先使用简历明确写出的最早本科入学时间;没有入学时间时,只有同时明确写出本科毕业时间和学制,才可反推入学年份。毕业月份或日期不能证明入学月份或日期,因此回推锚点一律降为年份精度。以本科入学年龄 18 岁为中心,固定使用 16–20 岁区间,并把锚点精度造成的日期不确定性计入上下界。
- 研究生入学、工作开始等后续时间只能做先后关系核对,不能单独作为年龄锚点。时间线冲突或证据不足时不输出数值区间;推算结果必须标明“非候选人自述”。
- 候选人已经明确提供的学校、学历、专业、工作单位、职位、时间和城市应直接汇总;某个城市没写就显示“未提供”,不根据学校或单位地址推测。
- 照片、年龄(包括履历推算区间)、籍贯和婚姻状况不进入人岗匹配、能力评分、稳定性预测、录用决定或候选人排序。
- 人岗匹配只用“符合”“有相关基础,需面试确认”“当前证据不足”。
- 单列现居地、公司地点、实际通勤、搬迁意愿、现场办公、出差和最早到岗问题。出生地或老家不能代替现居地计算距离。

#### 简历疑点与水分排查

只列与岗位核心能力直接相关的 0–8 项,按能力重要性降序。每项写清:对应能力、简历原话、哪里说不清、为什么要核实、怎么核实。不要在可见文案中输出内部状态码、能力编号或英文评估术语。

#### 面试提问

生成 12–18 道按优先级排列的问题。问题必须能让面试官直接照读。每道岗位题提供提问目的、回答好/一般/差的具体表现、加分点和减分点。

题库必须包含:

- 共同核心专业题和至少一个真实工作样本;
- 与本候选人核心简历声明对应的核验题;
- 表达沟通、协作责任、危机处理或压力情境题;
- 现居地、通勤/搬迁、到岗和现场工作安排;这些题只记录双方条件,不评分;
- 一道可选择不问的婚姻状况问题。该题只记录候选人自愿回答,不设好坏、不加分、不扣分;候选人可以不回答。

### 7. 生成离线 HTML

HTML 只嵌入 `interviewer-report-data.json`,不嵌入完整 `assessment-data.json`。页面恰好包含三个主模块:

1. 候选人简介;
2. 简历疑点与水分排查;
3. 面试提问。

头像只在 `candidate_photo.status=included` 时出现在候选人简介中,并注明来自简历 PDF、只展示、不参与评估或排序。履历年龄区间使用独立标签,明确它是推算而非候选人自述。每道题支持:单击“标记”默认设为黄色“可能要问”;下拉改为红色“一定要问”、蓝色“备选”或取消;记录“好/一般/差/未问”及备注。地点、到岗和其他自述类问题只记录“已记录/不便回答/未问”。重点标记和回答自动保存到当前浏览器本机,并可导出或清空。不得发送网络请求、加载外部资源或保存候选人资料到远程服务。

页面不显示简历证据分、综合分、权重、覆盖率、门槛、可比性、来源表、九类行为假
task-clarifierSkill

>-

task-forestSkill

Maintains a repo-local task forest or task DAG for the current workspace. Use when the user asks to initialize or update a task forest, close a session, summarize evolving project work, align a request with a global goal, track progress/history/deviations/todos, save or apply a task proposal, or export the client-readable task-forest HTML. Do not use for executing the tracked tasks themselves or for generic HTML work.

user-profile-keeperSkill

Local user-profile maintenance skill for Codex, Claude Code, OpenClaw, OpenCode, and other agent harnesses. Use only when the user explicitly invokes $user-profile-keeper to create, initialize, update, query, correct, delete, export, or audit a local persistent user profile. It can extract durable collaboration preferences, requirement-expression habits, capability boundaries, recurring omissions, risk preferences, privacy boundaries, and typical events from the current session into auditable, confirmable, retractable local profile data. Do not auto-invoke, upload profile data, or replace task-clarifier's normal clarification flow.

session-handoff-promptSkill

Create a concise continuation prompt that a fresh agent session can paste in to resume a long or degraded session. Use when the user asks for a handoff prompt, restart prompt, continuation prompt, context transfer, fresh-session resume, or a compact summary for opening a new session. Do not use for ordinary summaries, task-forest maintenance, durable user-profile updates, automatic session creation, code execution, or external publishing.

academic-humanizerSkill

>-

pause-and-resumeSkill

>-

run-history-skill-builderSkill

Turn a completed task, browser flow, artifact pipeline, failure-recovery trace, or repeatedly refined workflow into a new reusable skill package or a reviewed skill-design plan. Use when the user asks to make a new skill from real run history, extract a reusable workflow from conversation/logs/files, summarize lessons into a new skill, or produce a plan before writing files. Do not use to upgrade an existing skill or to execute the business workflow itself.

run-history-skill-upgraderSkill

Use real run evidence, validation failures, source drift, platform drift, and user feedback to plan and, only after explicit approval, apply structural upgrades to an existing skill. Use when the user asks to improve an existing skill from recent runs, recurring failures, outdated sources, excessive bloat, changed platform behavior, or validated workflow feedback. Do not use to create a brand-new skill or to execute the business workflow itself.