--- name: resume-ru description: > Составление, рецензирование и адаптация резюме и сопроводительных писем под российский рынок труда (hh.ru, Habr Career) с учётом ATS-РФ и реалий 2026 года. Многостадийный процесс: разбор резюме и вакансии, gap-анализ, стратегические вопросы, оптимизация под ATS и поиск рекрутёра, скоринг, вывод в PDF/DOCX. Используй этот скилл ВСЕГДА, когда речь идёт о: создании или обновлении резюме/CV, рецензировании и улучшении резюме, адаптации резюме под конкретную вакансию, прохождении ATS- или hh-фильтров, подборе ключевых навыков под запрос рекрутёра, написании или правке сопроводительного письма, удалении из резюме «воды» и канцелярита, оценке резюме глазами рекрутёра, или когда пользователь упоминает «резюме», «резюме под вакансию», «CV», «hh.ru», «хедхантер», «хх», «Habr Career», «отклик на вакансию», «сопроводительное письмо», «ключевые навыки», «составь/проверь/адаптируй резюме», «пройти ATS», «карьерный консультант». Базовая локаль — Россия (структура hh-резюме, зарплатные ожидания, анти-канцелярит, ATS-системы РФ, защита от «нейросетевого» вида текста). Работает для любых специальностей (IT, инженерия, 1С, менеджмент, рабочие профессии). user-invocable: true --- # Резюме РФ Многостадийный скилл: превращает резюме в адаптированный под конкретную вакансию документ, оптимизированный под ATS и поиск рекрутёра на hh.ru. Базовая и единственная локаль — **Россия** (2026). Для двуязычных/западных резюме существует исходный плагин — см. `ATTRIBUTION.md`. ## Справочные файлы Читать на соответствующих стадиях — в них правила, конвенции и шаблоны: - `references/ats-rules-ru.md` — ATS-РФ, правила формата, ключевые слова, формула скоринга, анти-паттерны. - `references/locale-ru.md` — конвенции резюме РФ (2026). - `references/hh-ru.md` — специфика hh.ru и Habr Career. - `references/anti-cliche-ru.md` — анти-канцелярит и сильные глаголы. - `references/anti-ai-fingerprint.md` — чтобы текст не выглядел «нейросетевым». - `references/section-templates-ru.md` — шаблоны разделов и сопроводительного. - `references/html-template-ru.html` — HTML-шаблон для PDF через weasyprint. ## Мастер-профиль Расположение: `docs/resume/master-profile.md` Мастер-профиль — это полное хранилище карьерных данных (все роли, метрики, навыки, контекст переходов). Это НЕ готовое резюме. Скилл адаптирует резюме ИЗ мастер-профиля под каждую вакансию. - Если мастер-профиль есть — использовать как основной источник. - Если нет — построить его из присланного резюме при первом запуске. - После каждой сессии — предложить дополнить его новой информацией. Структура мастер-профиля: ``` # Мастер-профиль ## Контакты (ФИО, email, телефон, Telegram, город) ## Карьерный нарратив (сырой, неформатированный — полная история) ## Схема видимости (определения enum и известные варианты) ## Роли (для каждой: Видимость, Варианты, контекст компании, должность, даты, размер/структура команды, обязанности, достижения с метриками, технологии) ## Образование (с Видимостью) ## Сертификаты ## Инвентарь навыков (полный, не отфильтрованный) ## Языки ## Заметки (пробелы, пет-проекты, консалтинг и т. п.) ``` ### Система видимости У каждой роли/раздела может быть поле `Видимость`. Если полей нет — считать все роли `always`. | Значение | Смысл | Поведение | |---|---|---| | `always` | Во всех вариантах резюме | Всегда рассматривать к включению | | `variant-specific` | Только в вариантах из поля `Варианты` | Включать, если целевой вариант совпал или пользователь явно попросил | | `on-request` | Никогда без явной просьбы | По умолчанию пропускать | | `reference-only` | Псевдоним/метаданные | Никогда не включать в вывод | ### Правила разрешения видимости 1. **Определить целевой вариант** — из запроса, домена вакансии или спросить. Пользователь может задать исключение («без варианта X»). 2. **Отфильтровать роли:** `always` → включить; `variant-specific` → только при совпадении варианта; `on-request` → пропустить, если не названа явно; `reference-only` → никогда. 3. **Образование, сертификаты, языки** — уважать их `Видимость` так же. 4. **Решение пользователя приоритетно.** --- ## Рабочий процесс ``` СТАДИЯ 0: Сбор входных данных | СТАДИЯ 1: Разбор и анализ (через subagent) | СТАДИЯ 1.5: Фидбэк по резюме (пользователю) | СТАДИЯ 2: Стратегические вопросы (AskUserQuestion) | СТАДИЯ 3: Оптимизация под ATS и адаптация | СТАДИЯ 4: Черновик (.md) | СТАДИЯ 5: Ревью и итерации | СТАДИЯ 6: Финальный вывод (PDF/DOCX + опц. сопроводительное) ``` --- ## СТАДИЯ 0: Сбор входных данных ### Резюме ``` ЕСЛИ в аргументах путь к файлу (PDF/MD/TXT): прочитать файл ИНАЧЕ ЕСЛИ есть docs/resume/master-profile.md: прочитать, подтвердить с пользователем «Использую ваш мастер-профиль как основу. Верно?» ИНАЧЕ: попросить резюме (текст, путь к файлу или PDF). ``` ### Вакансия ``` ЕСЛИ в аргументах URL: WebFetch, извлечь название, компанию, требования, обязанности, квалификацию. Если контента мало — попросить вставить текст. ИНАЧЕ ЕСЛИ вставлен текст: разобрать напрямую. ИНАЧЕ: попросить описание вакансии (текст или URL). ``` ### Первый запуск: создание мастер-профиля Если профиля нет, а резюме передано — построить мастер-профиль по структуре выше, сохранить в `docs/resume/master-profile.md`, сообщить пользователю. --- ## СТАДИЯ 1: Разбор и анализ **Использовать subagent** — чтобы защитить основной контекст от тяжёлого парсинга. Subagent получает сырой текст резюме/профиля и вакансии и возвращает: **Из резюме:** роли (должность, компания, даты, достижения с метриками, технологии); инвентарь навыков; образование и сертификаты; карьерную линию. **Из вакансии:** компанию и контекст; целевую должность и грейд; обязательные навыки (must-have); желательные (nice-to-have); ключевые обязанности; домен; неявные требования (между строк). **Gap-анализ:** сильные совпадения; частичные (можно переформулировать); пробелы; отличительные преимущества; красные флаги (пересечения дат, необъяснённые перерывы, нестыковки должностей). --- ## СТАДИЯ 1.5: Фидбэк по резюме **Показать анализ пользователю до стратегических вопросов.** Формат: ``` ## Анализ резюме под [роль] в [компания] ### Сильные стороны (что работает на эту роль) - [конкретно, привязано к требованию вакансии] ### Что исправить - [конкретная проблема + действие] ### Gap-анализ против вакансии | Требование вакансии | Покрытие в резюме | Статус | |---|---|---| | [навык/опыт] | [где есть или «не найдено»] | Совпадение / Частично / Пробел | ### Красные флаги (если есть) - [пересечения дат, перерывы, нестыковки — только если реально есть] ### Рекомендации - [конкретное действие, привязанное к вакансии] ``` Правила: конкретика, а не общие советы; каждое наблюдение привязано к вакансии; флагать только реальные проблемы; отличать структурные проблемы (всегда чинить) от контентных (под эту вакансию). Если у профиля есть поля Видимости — отдельным блоком показать исключённые роли и причину. --- ## СТАДИЯ 2: Стратегические вопросы Задать 3–5 вопросов через AskUserQuestion, адаптируя под результаты анализа. **Q1: Позиционирование** «Судя по вакансии — [краткое резюме]. Как вас позиционировать?» — Техническая глубина / Управленческая широта / Сбалансированно. **Q2: Акценты** «Сильнейшие совпадения: [топ-3-4]. Пробелы: [топ-2-3]. Что выделить, что приглушить?» — Использовать мои рекомендации / [указания пользователя]. **Q3: Зарплатные ожидания** «Указать зарплатные ожидания? На hh это поднимает резюме в выдаче с фильтром „с зарплатой“.» — Указать вилку [сумма] / Не указывать / «по итогам собеседования». **Условные:** пересечение дат (если есть); судьба нерелевантного домена; нужно ли сопроводительное письмо. После вопросов — собрать внутреннюю стратегию адаптации (не сохранять). --- ## СТАДИЯ 3: Оптимизация под ATS и адаптация Прочитать: `references/ats-rules-ru.md`, `references/locale-ru.md`, `references/hh-ru.md`, `references/section-templates-ru.md`. ### 3.1 Краткое описание (summary) Написать под ЭТУ роль по шаблону из section-templates-ru. Указать целевую должность + 1–2 метрики, бьющие в приоритеты вакансии. АНТИ-ПАТТЕРН: не начинать с «Опытный/Целеустремлённый/Ответственный…» — переписать. См. `anti-cliche-ru.md`. ### 3.2 Ключевые навыки 3–5 функциональных категорий, самая релевантная — первой. Каждый обязательный навык вакансии присутствует. Это поисковый индекс для рекрутёра hh — см. `hh-ru.md`. Нерелевантное убрать (оставить в профиле). ### 3.3 Опыт работы Свежие 2–3 роли — полный формат (контекст компании, масштаб, 3–5 буллетов с метриками по формуле). Старые — сжато (1–2 релевантных достижения), но не удалять. Каждый буллет — с числом и бизнес-контекстом. Сильные глаголы из `anti-cliche-ru.md`. ### 3.4 Ключевые слова Каждый обязательный навык — минимум в 2 местах (навыки + буллет опыта). Семантические варианты, рус + англ синонимы («1С»/«1C»). Не более 3 упоминаний (без «накрутки»). ### 3.5 Образование и сертификаты Порядок по локали (см. `locale-ru.md`: для опытных — после опыта; для студентов/выпускников — перед). Релевантные сертификаты — на видном месте. ### 3.6 Правки под локаль РФ По `locale-ru.md`: фото/ДР/семейное — опционально (по умолчанию без фото и ДР для ATS-версии); зарплата — по решению из Q3; объём 1–2 страницы. ### 3.7 Анти-канцелярит Прогнать весь текст по `anti-cliche-ru.md`: убрать мусорные «качества» (стрессоустойчивость, коммуникабельность…) и канцелярит, заменить фактами. --- ## СТАДИЯ 4: Черновик Сохранить в `docs/resume/draft-[компания-slug]-[ГГГГ-ММ-ДД].md`. Файл содержит: (1) полное адаптированное резюме в markdown; (2) маркер ``; (3) блок анализа (только для ревью, удаляется перед финалом): ```markdown ## Анализ ATS (только для ревью — в финал не войдёт) ### Оценка ATS: [XX]% ### Покрытие ключевых слов | Требование | Найдено | Раздел | ### Разбивка скоринга - Покрытие обязательных навыков: X/Y - Покрытие желательных: X/Y - Доля буллетов с метриками: Z% - Полнота разделов: Z% - Распределение ключевых слов: Z% ### Оставшиеся пробелы / Принятые решения ``` Перед показом прогнать **чек-лист анти-AI** (`anti-ai-fingerprint.md`). Показать черновик пользователю. --- ## СТАДИЯ 5: Ревью и итерации ``` ЦИКЛ: ждать обратную связь ЕСЛИ «ок»/«финал»/«готово»: → Стадия 6 ИНАЧЕ: внести правки, пересчитать ATS-скоринг, обновить черновик, показать с подсветкой изменений ``` --- ## СТАДИЯ 6: Финальный вывод ### 6.1 Чистый markdown Удалить блок анализа (всё после ``). ### 6.2 Выбор формата вывода Определить по запросу/контексту вакансии: - **PDF (по умолчанию для прямого отклика)** — через HTML + weasyprint, шаблон `references/html-template-ru.html`. Точный РФ-формат, фото опционально (по умолчанию выкл; включать только если пользователь просит и канал — hh/прямой отклик, не ATS). - **DOCX** — если портал/вакансия просит .docx или нет weasyprint. Через pandoc: `pandoc resume.md -o resume.docx` (опц. `--reference-doc=reference.docx` для стилей). - **Текст на hh.ru** — если цель: заполнить анкету hh. Выдать готовые блоки (должность, ключевые навыки, о себе, опыт) для копирования в поля hh; см. `hh-ru.md`. ### 6.3 PDF через weasyprint (если выбран) Заполнить слоты `[SLOT]` в html-template-ru.html. Конвертация: ```bash cd docs/resume && DYLD_LIBRARY_PATH="$(brew --prefix)/lib" \ uv run weasyprint resume-[slug].html [Имя]-[Роль].pdf ``` Требует weasyprint (`uv add weasyprint` или `pip install weasyprint`) и system-deps `glib`/`pango`/`cairo` (через brew). На macOS нужен `DYLD_LIBRARY_PATH`. Если weasyprint недоступен — fallback на DOCX (pandoc). ### 6.4 Сопроводительное письмо (если просили) По `references/section-templates-ru.md` — короткое (3–6 предложений), под вакансию, без штампов. Тон по `anti-cliche-ru.md` и `anti-ai-fingerprint.md`. ### 6.5 Отчёт и обновление профиля Перечислить созданные файлы. Предложить дополнить мастер-профиль новой информацией из сессии. --- ## Чек-лист перед выводом (Стадия 4) ### Соответствие ATS / hh - [ ] Один столбец (без таблиц для вёрстки) - [ ] Контакты в теле документа (не только в шапке) - [ ] Стандартные заголовки разделов (по `ats-rules-ru.md`) - [ ] Единый формат дат - [ ] Без шкал навыков, иконок, графики - [ ] Аббревиатуры расшифрованы при первом употреблении - [ ] Ключевые навыки покрывают теги поиска рекрутёра (hh) ### Покрытие ключевых слов - [ ] Каждый обязательный навык — в 2+ местах - [ ] Ни одно слово не повторяется более 3 раз - [ ] Должность из вакансии отражена в summary ### Качество контента - [ ] Summary конкретно под ЭТУ роль (не шаблон) - [ ] В каждом буллете опыта — метрика с бизнес-контекстом - [ ] Свежие 2–3 роли подробно, старые сжато (не удалены) - [ ] Перерывы > 6 мес. отмечены пользователю - [ ] Нет мусорных «качеств» и канцелярита (`anti-cliche-ru.md`) - [ ] Пройден скан анти-AI (`anti-ai-fingerprint.md`) ### Локаль РФ - [ ] Фото/ДР/семейное — по решению (по умолчанию ATS-версия без них) - [ ] Зарплата — по решению Q3 - [ ] Объём 1–2 страницы ### Анти-паттерны - [ ] Summary НЕ начинается с «Опытный/Целеустремлённый/Ответственный» - [ ] Нет «рекомендации предоставлю по запросу» - [ ] Нет процентных шкал владения навыком - [ ] Ранний опыт не вырезан в ноль - [ ] Смежный домен переформулирован, а не выброшен