| name | hh-job-hunter |
| description | hh.ru: рекомендации по резюме, скоринг, отклики Playwright, письма, журнал. При любой первой активации по этому скиллу: запроси у пользователя резюме (текст/файл/ссылка hh), сгенерируй универсальное сопроводительное на русском и сохрани в cover_letter_universal.txt (убери строку REPLACE_ME). Не используй текст из репозитория как личное письмо. При ошибках парсинга или откликов — самостоятельно дебажь код (scraper/apply), читай reference.md, правь и перезапускай.
|
| argument-hint | [--compact] [--skills 'A,B'] [--pages 2] [--apply N] |
| disable-model-invocation | true |
| allowed-tools | Bash Read Write |
hh-job-hunter
Обязательно: самостоятельный дебаг (парсинг и отклики)
Если что-то не работает, не останавливайся на сообщении пользователю «проверьте сайт» или «запустите снова». Сам разберись, улучши код/конфиг и снова прогони, пока цепочка не станет рабочей (в разумных пределах и с уважением к ToS / rate limit).
Парсинг и выдача вакансий — пустой список, исключения, 403/429, неверные поля, сломанные селекторы, пустой output/vacancies_*, не совпадает разметка hh.ru:
- Прочитай traceback и stderr полностью.
- Открой
scripts/scraper.py (и при необходимости reference.md, см. исключение в «Экономия токенов»), найди # SELECTOR: / парсинг HTML.
- Сверь с актуальной страницей (при необходимости сохрани фрагмент HTML через скрипт или
WebFetch на публичный URL), исправь селекторы или логику, сохрани файл.
- Повтори запуск (
run_hunter.py, нужные флаги). Кратко опиши пользователю: что сломалось, что изменил, как проверить.
Отклики не уходят — apply.py / run_apply_batches.py / run_hunter --apply: SKIPPED, зависание модалки, нет записи в APPLICATIONS_MASTER.md, TargetClosedError, профиль браузера занят, employer test, пустое письмо:
- Логи в терминале, хвост
output/APPLICATIONS_MASTER.md, при наличии — employer_test_skips.log и прочие логи из output/.
- Открой
scripts/apply.py, run_apply_batches.py, проверь hunter_config.json, сессию .session, письма (cover_letter_*, REPLACE_ME).
- Воспроизведи с
--dry-run где поддерживается; закрой лишние окна Chromium с профилем ~/.hh_browser_profile, повтори.
- Исправь код (ожидания селекторов, URL вакансии, обработка модалки) или конфиг, перезапусти отклик. Сообщи пользователю итог.
Правило важнее экономии токенов: для дебага можно читать большие файлы и reference.md целиком.
Первая активация (любой первый запрос по hh hunter)
- Спроси резюме: вставь текст, приложи файл или дай ссылку на резюме на hh.ru.
- Сгенерируй универсальное сопроводительное (русский, 1200–2000 знаков, без выдуманных работ и личных контактов, если репозиторий публичный).
- Запиши результат в
cover_letter_universal.txt: удали строку REPLACE_ME и комментарии # ..., оставь только текст письма (или положи текст в hunter_config.json → default_cover_letter).
- Пока в файле есть строка
REPLACE_ME, скрипты не подставят дефолтное письмо — это заглушка репозитория.
Структура скилла (куда смотреть)
| Путь | Назначение |
|---|
SKILL.md | Этот файл — правила для ассистента в Claude Code, коротко |
reference.md | Техдок только по явному запросу пользователя |
scripts/auth.py | Сессия .session + проверка входа |
scripts/scraper.py | Резюме, рекомендации, детали вакансии |
scripts/ranker.py | Скоринг, компактная таблица для stdout |
scripts/filter.py | filter.json, лимиты, blacklist |
scripts/apply.py | Отклик UI, очередь писем, журнал |
scripts/utils.py | Сохранение output/* |
Корень репозитория: run_hunter.py, browser_auth.py, hunter_config.json, README.md.
Экономия токенов (соблюдай всегда)
- Запуск по умолчанию с
--compact — в ответ попадает таблица максимум 8–10 вакансий; остальное только в файлах output/.
- Не вызывай
Read на output/vacancies_*.md, *.json, APPLICATIONS_MASTER.md целиком. Если нужно — попроси пользователя или прочитай только хвост файла (последние ~80 строк).
reference.md: не открывай для обычных запросов. Исключение — обязательное: при любом сбое парсинга, пустой выдаче из-за разметки hh.ru или сбое откликов открой и используй reference.md вместе с scraper.py / apply.py и правь код до восстановления поведения.
- После
run_hunter.py в ответ пользователю: 3–5 буллетов (сколько найдено, топ-3 заголовка, пути к vacancies_*.json), без копирования всей таблицы дважды.
- С
--with-details и большим --pages вывод файлов раздувается — по умолчанию --pages 2 достаточно для работы в Claude Code.
Команды (копируй в Bash из корня репо hhru)
python run_hunter.py --compact --skills "Навык1,Навык2" --pages 2
python browser_auth.py
python run_hunter.py --compact --skills "..." --with-details --apply 3
Флаги: --min-salary, --remote-only, --whitelist, --apply-from-letters, --dry-run, --hunter-config — см. README.md.
Логика отклика (кратко)
- Порог скора:
--apply-min-score (default 40).
- Обязательное письмо на вакансии → в
cover_queue_*.json / .md, не автоотклик с дефолтным текстом.
- Дефолтное письмо из
hunter_config.json — только если поле письма необязательно.
- Журнал всех откликов:
output/APPLICATIONS_MASTER.md.
После подбора вакансий
/hh-cover-letter https://hh.ru/vacancy/XXXXXXXX
Техдок по запросу: reference.md
Воркфлоу и slash-команды (Claude Code)
Файлы команд в репозитории: hh/.claude/commands/ — пользователь вызывает /hh-auth, /hh-setup, /hh-dashboard, /hh-review, /hh-start. Следуй тексту соответствующего .md и шагам ниже.
Универсальное сопроводительное
См. блок «Первая активация» выше: строка REPLACE_ME в cover_letter_universal.txt означает, что письмо ещё не задано.
-
/hh-auth — Запусти python browser_auth.py из корня hh; после успеха можно /hh-dashboard.
-
/hh-setup — Настройка скилла.
Задай вопросы и сохрани ответы в hunter_config.json и filter.json через Write.
- Отклики за сессию, тайминги
apply_delay_min_sec / apply_delay_max_sec, мин. зарплата, удалёнка, whitelist/blacklist, при необходимости resume_id (через scraper get_resumes).
- Универсальное письмо — только сгенерированное / от пользователя (см. выше).
- В конце:
python dashboard.py и полный вывод пользователю.
-
/hh-dashboard — python dashboard.py из корня hh, полный stdout пользователю.
Желательно сразу после первой успешной авторизации.
-
/hh-review — Ручной режим для вакансий с обязательным письмом.
needs_cover_letter_*.json в output/ или APPLICATIONS_MASTER.md.
- Сгенерируй письмо (скилл
hh-cover-letter по возможности), согласование, затем apply_single.py с --letter-text или --letter-file.
-
/hh-start — Старт рассылки откликов: уточни у пользователя N (сколько откликов) и S (мин. скор --apply-min-score), затем запусти run_hunter.py --compact --pages 2 --apply N --apply-min-score S (и опции --skills, --resume-id, --dry-run по смыслу). См. .claude/commands/hh-start.md.