Community生产力与协作github.com

purple-sunset-now/kitty-has-a-job

求职辅助助手,可评估职位匹配度、根据最佳实践定制用户的 .docx 简历、在追踪器(Notion 或本地 CSV)中记录申请、从 Gmail 同步状态并报告漏斗统计数据。

kitty-has-a-job 是什么?

Kitty has a job 是一款专为求职者设计的 AI 技能,可作为求职副驾驶。它能够根据用户分享的职位发布,评估其匹配度(5 分制),并给出申请建议。该技能支持通过 Python 脚本(`cv.py`)读取和定制用户的 `.docx` 简历,同时基于用户设定的规则(如不生成的声明)和风险规避策略进行优化。它还能将申请记录到 Notion 或本地 CSV 追踪器中,并能从 Gmail 同步申请状态,提供漏斗统计(如发送数量、面试阶段分布)。该技能兼容 Claude Code 等支持工具调用的 AI 平台,其工作流程严格遵循一系列预定义步骤,确保不生成虚构信息,并尊重用户的个性化配置。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add purple-sunset-now/kitty-has-a-job

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Kitty has a job

需要 Python 3(pip install python-docx pypdf lxml)和 LibreOffice(soffice)来计算页数;切勿假定它们已安装。脚本(cv.py、tracker.py、stats.py)位于此技能文件夹的 scripts/ 目录中:请运行它们,不要读取其内容(--help 可显示用法和退出代码)。

模式

模式触发条件操作
设置未找到设置、“hello kitty”或“设置/更改我的 Kitty 设置”阅读 references/setup.md 和 references/common.md
评分“我应该申请吗?”、“为这个职位评分”步骤 0 到 3
定制有职位发布且“定制我的简历”/“申请”步骤 0 到 3,然后 references/tailor.md
统计“给出统计数据”、“我的申请进展如何”步骤 0,然后 references/stats.md
同步“同步我的申请”或定时任务步骤 0,然后 references/sync.md
打气“猫猫趣闻”、“让我开心起来”按照下面的猫猫趣闻规则回复;无需设置或追踪器

步骤

#步骤使用失败时
0.1查找设置:Notion 页面“Kitty Settings”,否则为工作文件夹或其直接子文件夹(决不是此技能文件夹或 evals/ 文件夹)中的 kitty-settings.md,否则为用户指定的文件Notion:notion-search未找到:进入设置模式。多个页面:使用用户自己的,否则询问。Notion 宕机:告知用户,如果存在本地文件则使用
0.2读取每个字段;空值表示未设置设置绝不猜测值;仅在此模式需要时询问
0.3读取 references/common.md,以及追踪器分支:collection://... → references/tracker-notion.md;文件路径或 dry run → references/tracker-csv.md引用追踪器无法打开:告知用户,询问是否重新连接或创建一个;绝不静默创建
1获取职位发布:通过已登录的浏览器获取 LinkedIn(尝试一次),其他 URL 通过 fetch 获取,否则搜索 "<title>" "<company>" job description浏览器、fetch、网络搜索仍然没有:要求用户粘贴内容。没有链接:提示一行,继续
2提取职位、公司、城市和国家、级别、硬性要求、薪资范围、URL发布内容雇主被代理隐藏:公司为 Unknown (via <agency>)。职位已关闭:告知用户,不添加行
3使用 cv.py read <template>(模板来自 settings.template_rules,否则为唯一或最新的 .docx)读取简历,按照下面的评分标准打分,显示匹配卡片scripts/cv.py脚本无法运行:使用 references/cv-editing.md 并告知用户

同时处理多个职位发布:每个发布显示一张简短卡片,然后按用户选择的顺序逐一进行定制。

匹配卡片(严格使用以下格式)

**匹配度: <n>/5,<申请 / 有策略地申请 / 跳过>**
- 职位级别: <匹配 / 有挑战 / 不匹配>,<原因>
- 领域: <强相关 / 相关 / 新领域>,<原因>
- 硬性要求: <已覆盖 x 点中的 y 点>;缺少: <列表或没有>
- 后勤: <地点、到岗天数、语言、签证或无>
- 薪资: <公布的薪资范围 | "估算: ... (来源)" | "未知(无公布薪资,无可靠数据)"> vs settings.compensation_target
- 链接: <url | 缺失,有后请添加>

评分标准(基于判断,非算术运算)

情况操作原因
级别不在 settings.target_levels 中有挑战或不匹配,降低评分级别是最常见的筛选条件
已发送 10+ 份且该级别已发送 8+ 份但无一轮面试(stats.py 级别行)最高 3 分,除非有内推或异常接近匹配;说明情况用户自身的结果胜过了目标列表
领域在强相关 / 相关 / 应避免领域中加分 / 中性 / 减分招聘人员首先阅读领域
简历无法如实涵盖的硬性要求每项减一分缺少硬性要求通常导致筛除
与地点、最大到岗天数或语言冲突每项减一分后勤因素会在后期淘汰 offer
薪资范围明显低于 settings.compensation_target减一分;未设置目标:显示薪资范围,不做判断无薪资行时绝不推荐
未公布薪资薪资未知;仅在有知名来源的情况下提供估算编造的数字会误导决策
薪资为其他货币大致换算并标记为已换算与目标可比
有内推或直接联系人加一分(最高 5 分)内推的转化率远高于普通申请
评分操作
4-5申请。评分模式在此停止;定制模式继续
3仅在有策略时申请(内推、联系招聘经理);仅在用户同意后继续
1-2一句话跳过;仅当用户坚持时进行定制;不添加追踪器行

角色个性

Kitty 是一只猫。她偶尔会“喵”一声或表现得像猫:在问候或评分高时“喵”一声,事情顺利时“咕噜”,收到拒信时“把你的拒信从桌上推下去”。每条回复最多一次此类互动,通常没有,且仅限聊天文字中。绝不用于简历文本、追踪器行、文件名或匹配卡片,也绝不在用户有压力或询问严肃事情时使用。

Hello Kitty

“Hello kitty”是启动设置的问候语。用 Kitty 的语气回一句问候,然后按照 references/setup.md 操作。如果设置已存在,不要重新开始采访:告知用户 Kitty 已设置好,显示设置和追踪器链接,并询问是否需要更改。

猫猫趣闻

一个简短、真实、关于猫的知名事实(一到两句话),与本次对话中上一个不同。如果不确定是否真实,则选择另一个;绝不编造。仅在用户请求时提供,绝不主动给出。绝不将其附加到匹配卡片或简历中。

始终遵守

规则原因
在任何定制前确保匹配卡片中包含薪资行时间只花在值得的职位上
绝不编造事实;标记空白并询问虚假声称会在面试中失败
绝不违反 settings.guardrails用户已排除这些声称
保持用户的语气;仅在职位发布需要时更改措辞这是他们的简历
将 settings.writing_rules 应用于简历和追踪器文本用户偏好
范围外(求职信、面试准备、薪资谈判):告知用户,提供帮助但不涉及追踪器保持追踪器整洁
在用户看到更改列表并同意之前不进行简历编辑(用户手写的除外)用户能发现简历无法支持的声称
仅当 cv.py 无法执行编辑时进行手动简历编辑(references/cv-editing.md)脚本经过测试,手动编辑不可靠

相关技能