executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
assess-interview-candidate根据候选人简历与岗位要求生成可审计的后台评估、简明的候选人介绍、按岗位重要性排列的简历疑点、12–18 道可直接照读的面试题,以及支持重点标记和本机保存的离线 HTML。用于招聘方准备结构化面试、核验岗位能力和记录回答。不要用于求职者模拟面试、私人背景调查、心理或人格诊断、从敏感属性推断表现,或自动录用、淘汰、排序候选人。
Independent GitHub snapshot · Automated classification · Original documentation governs
把简历和岗位要求整理成两层材料:
始终区分候选人明确提供的事实、外部佐证、推断和未知。最终招聘决定由具备权限的人作出。
本 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 字符的路径作为一个完整参数传入。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> 解析为本文件所在目录。
必需输入:
candidate-cases/。尽可能取得:
缺少简历或岗位要求时以 REQUIRED_INPUT_MISSING 停止,不创建案件。缺少公司地点时继续生成,但写明“距离无法计算,待补充公司地址”。缺少候选人联网核验权限时关闭该分支,不影响本地简历分析。
<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;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>。脚本只负责校验格式、尺寸、哈希和结构化来源,不能替代视觉身份确认。
按“工作产出 → 关键任务 → 能力 → 目标熟练度 → 可接受证据 → 验证方法”拆解岗位。记录重要性、频率、失败影响和是否入职即需具备。缺少招聘方确认时标为暂定,不把学历、年限或公司名气自动当作能力。
对快速变化岗位进行不含候选人身份信息的当前岗位研究;优先官方招聘页、一手技术资料、标准和职业框架。
逐条拆分与岗位重要能力有关的声明,记录原文位置、情境、任务、本人行动、结果、个人贡献边界、可验证材料和剩余缺口。简历没有写某项能力只表示“当前证据不足”,不能直接写成“不具备”。
疑点使用“描述不清”“可核验缺口”等中性语言。优先检查:
仅研究获得允许、公开可访问、身份确认且与岗位直接相关的职业资料。系统发现的页面至少需要两个一致职业锚点;同名不足以确认身份。不得搜索年龄、籍贯、婚姻、家庭或私人生活。没有公开主页、论文或代码仓库不得扣分。
继续生成岗位模型、证据账本、候选人视角、九类岗位行为假设、面试蓝图、评分状态、来源记录和 output/assessment-data.json。这些对象供审计与人工复核,不直接展示在面试官 HTML 中。
按 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 道按优先级排列的问题。问题必须能让面试官直接照读。每道岗位题提供提问目的、回答好/一般/差的具体表现、加分点和减分点。
题库必须包含:
HTML 只嵌入 interviewer-report-data.json,不嵌入完整 assessment-data.json。页面恰好包含三个主模块:
头像只在 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。每个参数是一个含 event、date 和 source_locator 的 JSON 对象;脚本自动补出日期精度,并在明确矛盾时输出 timeline_conflict。
渲染器会拒绝文件名不含候选人姓名的输出。
继续校验后台对象:
<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:拟把未经人工确认的结果用于招聘决定。停止一个联网分支不妨碍继续处理获准的本地材料。