| name | hh-cover-letter |
| description | Пишет персонализированное сопроводительное письмо для конкретной вакансии на hh.ru. Парсит страницу вакансии, извлекает требования и стек, сопоставляет с резюме/навыками пользователя и генерирует письмо в профессиональном русскоязычном стиле — убедительное, конкретное, без воды. Используй когда пользователь говорит: напиши сопроводительное письмо, cover letter для hh, письмо на вакансию, или вызывает /hh-cover-letter. Если парсинг вакансии падает или пустой — сам дебажь run_cover_letter.py и парсер в скилле hh-job-hunter (scraper), правь и перезапускай.
|
| argument-hint | <URL вакансии> [--resume-file path] [--from-last-run] [--position N] |
| disable-model-invocation | false |
| allowed-tools | Bash Read Write WebFetch |
hh-cover-letter
Пишет идеальное сопроводительное письмо под конкретную вакансию.
Экономия токенов
- После
run_cover_letter.py --parse-only используй краткое резюме полей в ответ; не вставляй весь JSON/HTML в чат Claude Code.
- Не открывай
output/vacancies_*.json целиком — только нужную вакансию по --position или по URL.
Обязательно: дебаг парсинга вакансии
Если --parse-only падает с ошибкой, возвращает пустые/битые поля или не тот HTML — не проси только пользователя «скопируй описание». Сам открой run_cover_letter.py в корне клона и парсинг в .claude/skills/hh-job-hunter/scripts/scraper.py (и при необходимости .claude/skills/hh-job-hunter/reference.md), найди причину, исправь селекторы/логику, снова запусти скрипт. Кратко сообщи, что изменил.
Алгоритм
Шаг 1 — Получи данные вакансии
Вариант A: URL передан напрямую
Загрузи страницу вакансии скриптом:
python hh/run_cover_letter.py --url "https://hh.ru/vacancy/XXXXXXXX" --parse-only
Вариант B: из последнего запуска hunter
python hh/run_cover_letter.py --from-last-run --position 1
Это загрузит данные первой вакансии из последнего output/vacancies_*.json.
Вариант C: пользователь вставил текст вакансии в чат Claude Code
Используй текст напрямую — переходи к Шагу 3.
Шаг 2 — Получи данные резюме
Спроси пользователя (если не переданы):
- Какую должность/роль они занимали последние 3 года?
- Ключевые достижения (числа, результаты)?
- Стек / ключевые навыки?
- Имя и город?
Либо загрузи резюме из файла:
python hh/run_cover_letter.py --resume-file hh/my_resume.txt
Шаг 3 — Сопоставь и напиши письмо
Используй шаблон из templates/cover_letter_ru.md.
Обязательные правила письма:
- Первый абзац — зачем ты хочешь именно эту компанию/роль (1–2 предложения, конкретно)
- Второй абзац — 2–3 конкретных достижения с цифрами, прямо релевантных вакансии
- Третий абзац — как твой стек/опыт закрывает ключевые требования (без повторения резюме)
- Финал — короткий призыв к действию
Запрещено:
- Шаблонные фразы: «Я коммуникабельный», «Стрессоустойчив», «Быстро обучаюсь»
- Пересказ резюме списком
- Больше 250 слов
- Начинать с «Я хочу работать у вас, потому что...»
Шаг 4 — Сохрани результат
python hh/run_cover_letter.py --save --vacancy-id XXXXXXXX
Файл сохранится в hh/output/cover_letter_VACANCY_ID_TIMESTAMP.md.
Примеры хорошего и плохого письма
Плохо
Здравствуйте! Я очень хочу работать в вашей компании. Я коммуникабельный,
ответственный и быстро обучаюсь. У меня есть опыт в Python и я умею работать
в команде. Буду рад рассмотреть ваше предложение.
Хорошо
Вы ищете Python-разработчика для масштабирования платёжной системы —
именно этим я занимался последние два года в FinTech-стартапе.
Три релевантных результата: сократил время обработки транзакций с 800 мс
до 120 мс (оптимизация PostgreSQL + Redis), перевёл монолит на микросервисы
(FastAPI + Kafka) без простоев, поднял покрытие тестами с 12% до 87%.
Ваш стек (Django, Celery, ClickHouse) мне знаком — использовал аналогичную
связку в проекте аналитики. Готов выйти через две недели.
Параметры run_cover_letter.py
| Флаг | Описание |
|---|
--url URL | URL вакансии на hh.ru |
--from-last-run | Взять данные из последнего output/*.json |
--position N | Номер вакансии в списке (default: 1) |
--resume-file PATH | Путь к текстовому файлу с резюме |
--parse-only | Только распарсить вакансию, не писать письмо |
--save | Сохранить письмо в output/ |
--tone | formal / friendly / startup (default: formal) |
Дополнительные материалы