Kitty has a job — скилл

Навык для Claude оценивает вакансии, подгоняет резюме под описание, ведет таблицу откликов и по почте обновляет статусы.

  • 52 ★ репозитория
  • Последний коммит
  • MIT
Скилл

Широкий доступ

Почему такой уровень

  • Навык работает с персональными данными резюме и по коннектору читает почту Gmail для статусов откликов.
  • Таблица откликов хранится в Notion или локальных файлах и содержит сведения о работодателях и собеседованиях.
Все причины и проверки

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

Установка

Работает в

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/kitty-has-a-job

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • Навык работает с персональными данными резюме и по коннектору читает почту Gmail для статусов откликов.
  • Таблица откликов хранится в Notion или локальных файлах и содержит сведения о работодателях и собеседованиях.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

Вы присылаете ссылку на вакансию, а Kitty оценивает соответствие и говорит, стоит ли откликаться. Карточка соответствия показывает уровень роли, область, закрытые обязательные требования, условия работы и зарплатную вилку против вашей цели. Со временем оценка учитывается результаты ваших собеседований. Затем навык подгоняет резюме: читает ваш шаблон `.docx`, сопоставляет опыт с описанием, составляет список правок по разделам с явными сокращениями и ничего не меняет, пока вы не согласитесь. Каждый отклик попадает в таблицу: в Notion или, без него, в локальные файлы `tracker.csv` и `kitty-settings.md`. Через коннектор Gmail навык обновляет статусы откликов по расписанию. Отчет показывает, сколько собеседований на каждом этапе, где воронка проседает и какие роли конвертируются лучше. Навык не выдумывает факты: недостающие метрики он спрашивает у вас.

Для кого. Тем, кто ищет работу и устал рассылать резюме без ответа: нужен порядок откликов, правки под вакансию и честная картина воронки.

Подходит, если

  • Перед откликом на вакансию надо понять, стоит ли тратить время, по карточке соответствия.
  • Резюме нужно подогнать под слова вакансии, не меняя шаблон и не раздувая число страниц.
  • Откликов уже десятки, и таблица должна показывать, куда вы уже писали.
  • Хочется видеть по этапам, где теряются приглашения на собеседование.

Не подходит, если

  • Нужны гарантии прохождения ATS: навык следует общей практике и отмечает проблемы макета, но парсеры у всех разные.
  • Резюме хранится не в `.docx`: другие форматы пока не поддерживаются.
  • Нужна работа в другом агенте: навык проверен только в Claude.

Пример запроса к агенту

Вот описание вакансии. Оцени соответствие, предложи правки в резюме по разделам и отметь, какие термины вакансии мне нечем подтвердить.

Ограничения

Навык проверен в Claude Cowork и Claude Code, а в других средах, например Codex, нет. Нужны Python 3 с пакетами `python-docx`, `pypdf`, `lxml` и LibreOffice (`soffice`) для подсчета страниц. Резюме должно быть в `.docx`. Ссылки LinkedIn навык открыть не может, потому что сайт блокирует автоматические читалки, поэтому текст вакансии вставляют вручную. Notion и Gmail подключают коннекторами в настройках Claude, без Notion таблица ведется в локальных файлах, а синхронизация статусов всегда требует Gmail. Навык не обещает гарантированного прохождения ATS.

Как отключить. Удалите папку `~/.claude/skills/kitty-has-a-job/`, а в Claude Cowork снимите загруженный навык. Таблицу откликов в Notion или в `tracker.csv` и коннекторы Notion и Gmail отключайте отдельно.

Частые вопросы

Как поставить навык?

Скачайте `dist/kitty-has-a-job.zip` из репозитория. В Claude Code распакуйте его в `~/.claude/skills/`, чтобы получилась папка `~/.claude/skills/kitty-has-a-job/`. В приложении Claude или Cowork загрузите zip как навык.

Как начать работу?

Скажите «hello kitty» или «set up Kitty has a job». Claude создаст таблицу и страницу настроек и спросит о целях, городах, лимите страниц, границах и расписании синхронизации. Потом достаточно прислать ссылку на вакансию.

Меняет ли навык мое резюме без спроса?

Нет. Он читает копию шаблона, показывает полный список правок по разделам, и любой термин вакансии, которого нет в резюме, помечен как новое утверждение. Правки попадают в новый файл, а шаблон остается прежним.

Где хранятся данные?

Файлы резюме остаются в вашей папке, а таблица и настройки лежат в вашем Notion или в локальных файлах. Данные уходят только через Claude и коннекторы, которые вы включили, то есть Notion и Gmail.

Есть ли пример для пробы?

Да, `examples/sample_cv.docx`: вымышленное резюме менеджера продукта на два листа. При пробе поставьте лимит страниц 2. Для реальных откликов берите свое резюме.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы

Набор для Claude Code: скилл оценивает вакансию, сборщик делает резюме и письма, ежедневный сканер ищет новые объявления.

СкиллРасширенный доступ76Звезды репозитория
Выбор редакции

Поиск работы в кодовом агенте: оценка вакансии по резюме от 1 до 5, CV в PDF под каждую роль, черновики писем и трекер откликов

ВоркфлоуРасширенный доступ82,1 тыс.Звезды репозитория

Набор скиллов для резюме и поиска работы: адаптация под вакансию, проверка на прохождение ATS, сопроводительные письма и подготовка к собеседованию

СкиллМинимальный доступ3,2 тыс.Звезды репозитория

Resume Optimizer разбирает резюме по списку проблем, превращает обязанности в результаты и сжимает текст до страницы под вакансию.

СкиллМинимальный доступ570Звезды репозитория

Набор скиллов для поиска работы: разбор вакансии, резюме по шаблонам, подготовка к поведенческому интервью, сравнение офферов и переговоры

СкиллРасширенный доступ571Звезды репозитория

Плагин для Codex и Claude Code заполняет анкеты вакансий в видимом браузере по вашему резюме и останавливается перед отправкой

ПлагинШирокий доступ139Звезды репозитория

Коротко о README

README объясняет, как навык оценивает вакансию, правит резюме, ведет таблицу и читает статусы из почты. Описаны принципы (подлинность, добросовестность, приватность, честность), пример правки одного пункта, быстрый старт, зависимости, локальный режим без Notion и внутреннее устройство.

Бейдж для README

Исходный SKILL.md

---
name: kitty-has-a-job
description: Job search copilot that scores a posting for fit, tailors the user's .docx CV according to best practices, logs applications in a tracker (Notion or local CSV), syncs statuses from Gmail, reports funnel stats. Use when the user shares a job posting, asks "should I apply", to tailor their CV, for application stats, to set up or sync their tracker, says "hello kitty" (starts setup), or asks for a cat fact. Not for cover letters, interview prep, salary negotiation or career advice.
metadata:
  version: '1.0.0'
---

# Kitty has a job

Needs Python 3 (`pip install python-docx pypdf lxml`) and LibreOffice (`soffice`) for page counts; never assume they are installed. Scripts (`cv.py`, `tracker.py`, `stats.py`) are in `scripts/` in this skill's folder: run them, don't read them (`--help` shows usage and exit codes).

## Modes

| Mode | When | Do |
|---|---|---|
| Setup | No settings found, "hello kitty", or "set up / change my Kitty settings" | Read `references/setup.md` and `references/common.md` |
| Score | "Should I apply?", "score this role" | Steps 0 to 3 |
| Tailor | A posting plus "tailor my CV" / "apply" | Steps 0 to 3, then `references/tailor.md` |
| Stats | "Give stats", "how are my applications going" | Step 0, then `references/stats.md` |
| Sync | "Sync my applications", or the scheduled task | Step 0, then `references/sync.md` |
| Cheer up | "Cat fact", "cheer me up" | Reply with the cat fact rules below; no settings or tracker needed |

## Steps

| # | Step | Use | On failure |
|---|---|---|---|
| 0.1 | Find settings: Notion page "Kitty Settings", else `kitty-settings.md` in the working folder or its direct subfolders (never this skill's or an `evals/` folder), else a file the user names | `Notion:notion-search` | None found: Setup. Several pages: use the user's own, else ask. Notion down: say so, use a local file if one exists |
| 0.2 | Read every field; empty means not set | settings | Never guess a value; ask only if this mode needs it |
| 0.3 | Read `references/common.md`, plus the tracker branch: `collection://...` → `references/tracker-notion.md`; a file path or `dry run` → `references/tracker-csv.md` | references | Tracker cannot be opened: tell the user, ask whether to reconnect or create one; never create silently |
| 1 | Get the posting: LinkedIn via a logged-in browser (try once), other URLs via fetch, else search `"<title>" "<company>" job description` | browser, fetch, web search | Still nothing: ask the user to paste it. No link: one reminder line, carry on |
| 2 | Extract title, company, city and country, level, hard requirements, salary band, URL | posting | Employer hidden by an agency: Company `Unknown (via <agency>)`. Posting closed: say so, no row |
| 3 | Read the CV with `cv.py read <template>` (template from `settings.template_rules`, else the only or newest .docx), score with the rubric below, show the fit card | `scripts/cv.py` | Script cannot run: use `references/cv-editing.md` and say so |

Several postings at once: one short card each, then tailor one at a time in the order the user picks.

## Fit card (use exactly)

```
**Fit: <n>/5, <apply / apply with an angle / skip>**
- Role level: <match / stretch / mismatch>, <why>
- Domain: <strong / adjacent / new>, <why>
- Must-haves: <x of y covered>; missing: <list or none>
- Logistics: <location, on-site days, language, visa, or none>
- Salary: <published band | "estimate: ... (source)" | "unknown (no published band, no reliable data)"> vs settings.compensation_target
- Link: <url | missing, add it when you have it>

Сообщить о проблеме