自动从 Boss 直聘发现、筛选、记录合适岗位。使用 /job-hunter 启动定时求职助手。
本文件是 job-hunter skill 的主入口。Claude 在用户触发 /job-hunter 时读取此文件,按照以下逻辑执行完整流程。
| 命令 | 操作 |
|---|---|
/job-hunter | 等同于 /job-hunter start,启动定时搜索 |
/job-hunter start | 启动定时搜索任务 |
/job-hunter stop | 停止定时搜索任务,数据保留 |
/job-hunter status | 查看当前运行状态 |
/job-hunter update | 更新 Job Hunter Skill 到最新版本 |
/job-hunter exclude | 查看排除列表 |
| 用户说「排除编号X」 | 触发排除流程(自然语言触发) |
/job-hunter practice | 查看练手列表 |
/job-hunter target | 查看目标列表 |
| 用户说「练手编号X」 |
| 触发分类流程,分类为练手 |
| 用户说「目标编号X」 | 触发分类流程,分类为目标 |
| 用户说「标记编号X」 | 触发分类流程,询问分类类型 |
收到 /job-hunter 命令后,按以下顺序执行:
检查当前工作目录(CWD)下是否存在 data/ 目录:
当前目录不是 Job Hunter 的工作目录。
数据文件(画像、候选岗位)将保存在当前目录的 data/ 下。
请确认:
1. 在当前目录继续 — 数据将保存在 {CWD}/data/
2. 我想先切换到其他目录
如果用户选择 2,提示用户使用 cd 切换到目标目录后重新运行 /job-hunter,然后结束。
如果用户选择 1,继续步骤 1。
重要:所有
data/路径(如 data/job-profile.md、data/meta.json)均相对于当前工作目录(CWD)解析。模板文件通过${CLAUDE_SKILL_DIR}/prompts/从 skill 安装目录读取。两者分离。
读取 data/job-profile.md 是否存在:
当 data/job-profile.md 存在时(老用户),检查 data/ 目录下是否缺少必要文件。
当前必要文件清单:
| 文件 | 说明 |
|---|---|
data/job-candidates.csv | 候选岗位记录 |
data/job-excluded.csv | 排除岗位归档 |
data/job-practice.csv | 练手岗位归档 |
data/job-target.csv | 目标岗位归档 |
data/job-profile.md | 用户求职画像 |
data/meta.json | 运行元数据 |
检查逻辑:
检测到以下文件缺失,已自动补充:
[已创建] {缺失文件名} — {文件说明}
这可能是因为 skill 更新引入了新文件。你的现有数据未受影响。
各缺失文件的默认初始内容:
data/job-candidates.csv:写入表头行(编号,岗位名称,公司名,...,security_id)data/job-excluded.csv:写入表头行(编号,岗位名称,公司名,...,排除原因,排除日期)data/job-practice.csv:写入表头行(编号,岗位名称,公司名,...,备注,分类日期)data/job-target.csv:写入表头行(编号,岗位名称,公司名,...,备注,分类日期)data/meta.json:不自动创建(缺少此文件说明引导流程未完成,应视为异常,提示用户重新运行引导)此外,检查 data/meta.json 是否缺少以下字段,如果缺少则追加默认值:
practice_count: 0target_count: 0next_practice_number: 1next_target_number: 1检查完成后,继续步骤 3。
读取并执行 ${CLAUDE_SKILL_DIR}/prompts/intake.md 中的完整引导流程。
该流程包含:
data/job-profile.mddata/job-candidates.csv、data/job-excluded.csv 和 data/meta.json环境检测未通过时:读取 ${CLAUDE_SKILL_DIR}/prompts/notifications.md 中的「环境检测未通过」模板,填充检测结果后输出。不继续后续流程。
引导完成后:自动进入步骤 3。
读取 data/meta.json,获取以下字段:
cron_job_id:当前定时任务 ID(null 表示未运行)run_count:已运行次数total_candidates:已记录岗位总数last_run_time:上次运行时间search_interval_minutes:搜索间隔next_candidate_number:下一个岗位编号practice_count:已标记为练手的岗位数target_count:已标记为目标的岗位数next_practice_number:下一个练手编号next_target_number:下一个目标编号根据用户传入的参数(argument)判断操作类型,读取对应的操作文件执行:
| 参数 | 读取文件 |
|---|---|
| start / 无参数 | ${CLAUDE_SKILL_DIR}/prompts/operations/start.md |
| stop | ${CLAUDE_SKILL_DIR}/prompts/operations/stop.md |
| status | ${CLAUDE_SKILL_DIR}/prompts/operations/status.md |
| exclude | ${CLAUDE_SKILL_DIR}/prompts/operations/view-exclude.md |
| practice | ${CLAUDE_SKILL_DIR}/prompts/operations/view-practice.md |
| target | ${CLAUDE_SKILL_DIR}/prompts/operations/view-target.md |
| update | ${CLAUDE_SKILL_DIR}/prompts/operations/update.md |
| 用户说「排除编号X」 | ${CLAUDE_SKILL_DIR}/prompts/operations/exclude.md |
| 用户说「练手/目标/标记 编号X」 | ${CLAUDE_SKILL_DIR}/prompts/operations/classify.md |