Agent Skillsdongshuyan/compass-skills › assess-interview-candidate

assess-interview-candidate

GitHub

根据简历与岗位要求生成结构化面试评估报告,包含证据核验、疑点排查及定制面试题,输出离线HTML供面试官使用。

skills/assess-interview-candidate/SKILL.md dongshuyan/compass-skills

Trigger Scenarios

需要生成候选人面试评估报告 准备结构化面试题目

Install

npx skills add dongshuyan/compass-skills --skill assess-interview-candidate -g -y
More Options

Use without installing

npx skills use dongshuyan/compass-skills@assess-interview-candidate

指定 Agent (Claude Code)

npx skills add dongshuyan/compass-skills --skill assess-interview-candidate -a claude-code -g -y

安装 repo 全部 skill

npx skills add dongshuyan/compass-skills --all -g -y

预览 repo 内 skill

npx skills add dongshuyan/compass-skills --list

SKILL.md

Frontmatter
{
    "name": "assess-interview-candidate",
    "description": "根据候选人简历与岗位要求生成可审计的后台评估、简明的候选人介绍、按岗位重要性排列的简历疑点、12–18 道可直接照读的面试题,以及支持重点标记和本机保存的离线 HTML。用于招聘方准备结构化面试、核验岗位能力和记录回答。不要用于求职者模拟面试、私人背景调查、心理或人格诊断、从敏感属性推断表现,或自动录用、淘汰、排序候选人。"
}

候选人评估与面试报告

目标

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

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

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

可移植运行约定

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

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

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

结果契约

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

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

关键输出:

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

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

开始前读取

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

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

输入门

必需输入:

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

尽可能取得:

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

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

工作流

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

<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 结构和像素数据、移除非显示所需元数据和文件尾随内容,再以内嵌图片输出:

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

页面不显示简历证据分、综合分、权重、覆盖率、门槛、可比性、来源表、九类行为假设或内部英文状态。这些信息继续留在后台文件。

使用:

<python> "<skill-dir>/scripts/derive_timeline_age.py" --report-date "<YYYY-MM-DD>" --undergraduate-start "<YYYY-or-YYYY-MM-or-YYYY-MM-DD>" --source-locator "<resume-page-or-section>"
<python> "<skill-dir>/scripts/derive_timeline_age.py" --report-date "<YYYY-MM-DD>" --undergraduate-graduation "<YYYY-or-YYYY-MM-or-YYYY-MM-DD>" --degree-duration-years <explicit-duration> --source-locator "<resume-page-or-section>"
<python> "<skill-dir>/scripts/validate_interviewer_report_data.py" "<interviewer-report-data.json>"
<python> "<skill-dir>/scripts/render_candidate_report.py" --data "<interviewer-report-data.json>" --output "<candidate-report-file>"
<python> "<skill-dir>/scripts/validate_candidate_report.py" "<candidate-report-file>"

如需核对后续时间线,可重复传入 --consistency-check-json。每个参数是一个含 eventdatesource_locator 的 JSON 对象;脚本自动补出日期精度,并在明确矛盾时输出 timeline_conflict

渲染器会拒绝文件名不含候选人姓名的输出。

8. 校验和交付

继续校验后台对象:

<python> "<skill-dir>/scripts/validate_case_contract.py" --job-model "<job-model.json>" --sources "<sources.json>" --evidence-ledger "<evidence-ledger.json>" --blueprint "<interview-blueprint.json>" --score-state "<score-state.json>" --assessment-data "<assessment-data.json>"
<python> "<skill-dir>/scripts/validate_source_log.py" "<sources.json>"
<python> "<skill-dir>/scripts/validate_evidence_ledger.py" "<evidence-ledger.json>"
<python> "<skill-dir>/scripts/calculate_interview_score.py" --blueprint "<interview-blueprint.json>" --state "<score-state.json>"

将命令、时间、退出码、错误和警告写入 audit/validation.json。交付时说明案件目录、HTML 文件、采用与拒绝的来源数量、关键未知项、校验结果和仍需人工确认的内容。

停止条件

  • REQUIRED_INPUT_MISSING:缺少简历或岗位要求;
  • PDF_VISUAL_CHECK_UNAVAILABLE:当前宿主无法完成 PDF 逐页视觉核对;
  • AUTHORITY_UNCONFIRMED:无法确认有权处理简历;
  • IDENTITY_UNRESOLVED:候选人职业页面身份不能确认;
  • PRIVATE_ACCESS_REQUIRED:需要登录私人账号或绕过权限;
  • SENSITIVE_DATA_HIT:联网结果出现不应处理的私人或敏感内容;
  • CONTACT_DETAIL_LEAK:面试官数据或 HTML 中出现邮箱、手机号、证件号或其他不应展示的联系方式;
  • JOB_RELEVANCE_MISSING:信息无法映射到岗位任务;
  • AUTOMATED_ADVERSE_ACTION:要求自动拒绝、排序或触发不利决定;
  • HUMAN_REVIEW_MISSING:拟把未经人工确认的结果用于招聘决定。

停止一个联网分支不妨碍继续处理获准的本地材料。

完成检查

  • PDF 已通过文字提取和逐页视觉检查。
  • 照片状态已逐页确认;显示照片时,其规范化字节、尺寸、哈希、原始 PDF 哈希、页码和提取位置可追溯,非显示元数据与尾随内容已移除,且没有使用公开头像或生物识别分析。
  • 后台岗位、证据、来源、蓝图和评分对象可互相追溯。
  • HTML 文件名、浏览器标题和页面主标题都包含候选人姓名。
  • HTML 只有三个主模块,问题数为 12–18。
  • 面试官数据和 HTML 不含邮箱、手机号、证件号或精确住址。
  • 候选人已明确提供的学校、工作单位和城市已汇总;缺失项没有被推测。
  • 出生信息存在时年龄已按报告日期换算,并禁用履历推算;出生信息不存在时,年龄事实显示“未提供”,履历推算对象按明确本科时间锚点生成,或透明记录证据不足/时间冲突。
  • 照片、年龄(含履历推算区间)、籍贯和婚姻没有进入岗位匹配、评分、稳定性判断或排序。
  • 简历疑点按岗位重要性排序,使用中性、通俗中文。
  • 问题可直接照读,判断参考和加减分标准具体。
  • 重点标记、回答、备注、本机恢复、导出和清空均可用。
  • 页面离线可用、无外部资源、文本安全转义、移动端可读。
  • 最终输出不含自动录用、淘汰、排序、人格诊断或虚假确定性。

Version History

  • 1b2e556 Current 2026-08-27 12:31

Same Skill Collection

skills/pause-and-resume/SKILL.md
skills/run-history-skill-builder/SKILL.md
skills/run-history-skill-upgrader/SKILL.md
skills/session-handoff-prompt/SKILL.md
skills/task-clarifier/SKILL.md
skills/task-forest/SKILL.md
skills/academic-humanizer/SKILL.md
skills/user-profile-keeper/SKILL.md

Metadata

Files
0
Version
1b2e556
Hash
45aadc03
Indexed
2026-08-27 12:31

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-28 03:00
浙ICP备14020137号-1 $Carte des visiteurs$