init
This commit is contained in:
commit
d295c7f139
1527 files changed
+270726
No files matched your search
@@ -0,0 +1,113 @@
|
||||
# career-ops — Русские режимы (`modes/ru/`)
|
||||
|
||||
Этот каталог содержит русскоязычные версии режимов career-ops для соискателей, работающих на российском рынке труда или с русскоязычными вакансиями.
|
||||
|
||||
## Когда использовать?
|
||||
|
||||
Используй `modes/ru/`, если выполняется хотя бы одно из условий:
|
||||
|
||||
- Ты откликаешься на **русскоязычные вакансии** (hh.ru, Хабр Карьера, trudvsem.ru, rabota.ru, Superjob, Geekjob, budu.jobs)
|
||||
- Твоё **резюме на русском** или ты переключаешься между RU и EN в зависимости от вакансии
|
||||
- Тебе нужны ответы и сопроводительные письма на **естественном техническом русском**, а не машинный перевод
|
||||
- Ты работаешь с **особенностями российского рынка**: ТК РФ, НДФЛ 13%, ДМС, испытательный срок, оформление по ТК / ГПХ / самозанятость, зарплата gross vs net
|
||||
|
||||
Если большинство вакансий на английском, используй стандартные режимы из `modes/`. Английские режимы работают и с русскоязычными вакансиями, но не учитывают специфику российского рынка в полном объёме.
|
||||
|
||||
## Как активировать?
|
||||
|
||||
### Способ 1 — Per session, по команде
|
||||
|
||||
Скажи Claude в начале сессии:
|
||||
|
||||
> "Используй русские режимы из `modes/ru/`."
|
||||
|
||||
или
|
||||
|
||||
> "Оценки и отклики на русском — используй `modes/ru/_shared.md` и `modes/ru/oferta.md`."
|
||||
|
||||
Claude будет читать файлы из этого каталога. Если режима нет в `modes/ru/` (например, `scan`, `batch`, `pdf`), используется оригинал из `modes/`.
|
||||
|
||||
### Способ 2 — Постоянно, через профиль
|
||||
|
||||
Добавь в `config/profile.yml`:
|
||||
|
||||
```yaml
|
||||
language:
|
||||
primary: ru
|
||||
modes_dir: modes/ru
|
||||
```
|
||||
|
||||
Напомни Claude в первой сессии: "Смотри в `profile.yml`, я указал `language.modes_dir`".
|
||||
|
||||
> Примечание: `language.modes_dir` — конвенция проекта (аналогично `modes/de/` и `modes/fr/`), а не автоматический механизм в коде. Claude следует ей как указанию при наличии напоминания. Если агент не подхватил настройку — напомните ещё раз.
|
||||
|
||||
## Что переведено?
|
||||
|
||||
Первая итерация охватывает режимы с наибольшим влиянием:
|
||||
|
||||
| Файл | Оригинал | Назначение |
|
||||
|------|----------|------------|
|
||||
| `_shared.md` | `modes/_shared.md` (EN) | Общий контекст, архетипы, глобальные правила, специфика рынка РФ |
|
||||
| `oferta.md` | `modes/oferta.md` (ES) | Полная оценка вакансии (блоки A-F) |
|
||||
| `apply.md` | `modes/apply.md` (ES) | Ассистент заполнения форм откликов |
|
||||
| `pipeline.md` | `modes/pipeline.md` (ES) | Очередь URL-ов / Second Brain для собранных вакансий |
|
||||
| `interview-prep.md` | `modes/interview-prep.md` (EN) | Подготовка к собеседованию |
|
||||
|
||||
Остальные режимы (`scan`, `batch`, `pdf`, `tracker`, `auto-pipeline`, `deep`, `contacto`, `ofertas`, `project`, `training`) остаются на EN/ES. Их содержимое — в основном tooling, пути и команды — не зависит от языка.
|
||||
|
||||
## Что остаётся на английском?
|
||||
|
||||
Сознательно не переведено, т.к. это стандартный tech-словарь:
|
||||
|
||||
- `cv.md`, `pipeline`, `tracker`, `report`, `score`, `archetype`, `proof point`
|
||||
- Имена инструментов (`Playwright`, `WebSearch`, `WebFetch`, `Read`, `Write`, `Edit`, `Bash`)
|
||||
- Статусы в трекере (`Evaluated`, `Applied`, `Interview`, `Offer`, `Rejected`)
|
||||
- Код, пути, команды
|
||||
|
||||
Режимы используют технический русский, как его говорят в реальных инженерных командах: русский текст, английские термины там, где они общеприняты. Никакой принудительной русификации "pipeline" → "конвейер", "cv.md" → "резюме-файл".
|
||||
|
||||
## Словарь
|
||||
|
||||
| English | Русский (в этой кодовой базе) |
|
||||
|---------|-------------------------------|
|
||||
| Job posting | Вакансия |
|
||||
| Application | Отклик / заявка |
|
||||
| Cover letter | Сопроводительное письмо |
|
||||
| Resume / CV | Резюме |
|
||||
| Salary | Зарплата |
|
||||
| Compensation | Компенсация / вознаграждение |
|
||||
| Skills | Навыки |
|
||||
| Interview | Собеседование |
|
||||
| Hiring manager | Нанимающий менеджер |
|
||||
| Recruiter | Рекрутер |
|
||||
| AI | ИИ (Искусственный интеллект) |
|
||||
| Requirements | Требования |
|
||||
| Career history | Опыт работы |
|
||||
| Notice period | Срок уведомления / отработка |
|
||||
| Probation | Испытательный срок |
|
||||
| Vacation | Отпуск |
|
||||
| Remote | Удалённо / удалёнка |
|
||||
| Hybrid | Гибрид |
|
||||
| On-site | Офис |
|
||||
| Benefits | Бенефиты / льготы |
|
||||
| Gross salary | Зарплата до вычета НДФЛ (gross) |
|
||||
| Net salary | Зарплата на руки (net) |
|
||||
| Employment contract (TK RF) | Оформление по ТК РФ |
|
||||
| Civil contract (GPH) | Договор ГПХ |
|
||||
| Self-employed | Самозанятость |
|
||||
| Voluntary health insurance | ДМС (добровольное медицинское страхование) |
|
||||
| Dental insurance | ДМС стоматология |
|
||||
| Food allowance | Компенсация питания |
|
||||
| Sport allowance | Компенсация спорта |
|
||||
| Education budget | Бюджет на обучение |
|
||||
| Works council | Профсоюз |
|
||||
|
||||
## Вклад
|
||||
|
||||
Если хочешь улучшить перевод или добавить новый режим:
|
||||
|
||||
1. Открой issue с предложением (см. `CONTRIBUTING.md`)
|
||||
2. Придерживайся словаря выше для единообразия
|
||||
3. Переводи по смыслу и идиоматично — без дословных переводов
|
||||
4. Сохраняй структурные элементы (блоки A-F, таблицы, код, инструкции для инструментов)
|
||||
5. Протестируй с реальной русскоязычной вакансией (например, с hh.ru или Хабр Карьера)
|
||||
@@ -0,0 +1,217 @@
|
||||
# Общий контекст — career-ops (Русский)
|
||||
|
||||
<!-- ============================================================
|
||||
ЭТОТ ФАЙЛ — СИСТЕМНЫЙ.
|
||||
НЕ добавляйте сюда персональные данные.
|
||||
============================================================
|
||||
Персонализация → modes/_profile.md и config/profile.yml.
|
||||
Этот файл содержит общий контекст, архетипы и правила
|
||||
для русскоязычных режимов.
|
||||
Примечание: modes/ru/ пока не включён в auto-update
|
||||
(update-system.mjs). Обновления применяются вручную.
|
||||
|
||||
Перед использованием career-ops убедитесь:
|
||||
1. config/profile.yml заполнен вашими данными
|
||||
2. cv.md создан в корне проекта (резюме в Markdown)
|
||||
3. (Опционально) article-digest.md с proof points
|
||||
============================================================ -->
|
||||
|
||||
## Источники правды (ВСЕГДА читать перед каждой оценкой)
|
||||
|
||||
| Файл | Путь | Когда |
|
||||
|------|------|-------|
|
||||
| cv.md | `cv.md` (корень проекта) | ВСЕГДА |
|
||||
| article-digest.md | `article-digest.md` (если есть) | ВСЕГДА (детальные proof points) |
|
||||
| profile.yml | `config/profile.yml` | ВСЕГДА (идентичность кандидата и целевые роли) |
|
||||
| _profile.md | `modes/_profile.md` | ВСЕГДА (пользовательские архетипы, нарратив, переговоры) |
|
||||
|
||||
**ПРАВИЛО: НИКОГДА не хардкодить метрики из proof points.** Читать их из cv.md + article-digest.md во время оценки.
|
||||
**ПРАВИЛО: Для метрик статей/проектов `article-digest.md` имеет приоритет над `cv.md`.**
|
||||
**ПРАВИЛО: Читать `_profile.md` ПОСЛЕ этого файла. Пользовательские настройки в `_profile.md` перезаписывают значения по умолчанию.**
|
||||
|
||||
---
|
||||
|
||||
## North Star — Целевые роли
|
||||
|
||||
<!-- [НАСТРОИТЬ] Замени архетипы ниже на СВОИ целевые роли. -->
|
||||
|
||||
### Универсальные архетипы
|
||||
|
||||
| Архетип | Тематические оси | Что покупают |
|
||||
|---------|-------------------|--------------|
|
||||
| **AI Platform / LLMOps Engineer** | Evaluation, observability, надёжность, pipelines | Того, кто выводит ИИ в продакшн с метриками |
|
||||
| **Agentic Workflows / Automation** | HITL, тулинг, оркестрация, мульти-агенты | Того, кто строит надёжные агентные системы |
|
||||
| **Technical AI Product Manager** | GenAI/Agents, PRD, discovery, delivery | Того, кто переводит бизнес в ИИ-продукты |
|
||||
| **AI Solutions Architect** | Гиперавтоматизация, enterprise, интеграции | Того, кто проектирует end-to-end ИИ-архитектуры |
|
||||
| **AI Forward Deployed Engineer** | Клиентский фокус, быстрая поставка, прототипирование | Того, кто быстро внедряет ИИ-решения у клиента |
|
||||
| **AI Transformation Lead** | Change management, adoption, enablement | Того, кто ведёт ИИ-трансформацию в организации |
|
||||
|
||||
### Архетипы для российского рынка
|
||||
|
||||
| Архетип | Тематические оси | Что покупают |
|
||||
|---------|-------------------|--------------|
|
||||
| **Backend-разработчик** | PHP/Go/Java/Python, микросервисы, highload, PostgreSQL, Kafka | Инженера, строящего масштабируемые серверные системы |
|
||||
| **Frontend-разработчик** | React/Vue/Angular, TypeScript, performance, accessibility | Инженера, создающего быстрые и удобные интерфейсы |
|
||||
| **DevOps/SRE-инженер** | Kubernetes, CI/CD, мониторинг, автоматизация инфраструктуры | Инженера, обеспечивающего надёжность и автоматизацию поставки |
|
||||
| **Системный аналитик** | Бизнес-анализ, проектирование API, интеграции, документация | Того, кто переводит бизнес-задачи в технические требования |
|
||||
| **Продуктовый менеджер** | Discovery, delivery, метрики, roadmap, стейкхолдеры | Того, кто определяет что строить и почему |
|
||||
| **Тимлид / Engineering Manager** | People management, tech strategy, delivery, найм | Того, кто строит и ведёт инженерные команды |
|
||||
| **Data Engineer / ML Engineer** | ETL, Spark, Airflow, ML pipelines, feature stores | Инженера данных, строящего data/ML платформы |
|
||||
| **QA-инженер / SDET** | Автоматизация тестирования, CI/CD, нагрузочное тестирование | Инженера качества, обеспечивающего надёжность продукта |
|
||||
| **Архитектор (Solution / Enterprise)** | Системный дизайн, интеграции, масштабирование, стандарты | Того, кто проектирует архитектуру на уровне системы/компании |
|
||||
|
||||
<!-- [НАСТРОИТЬ] Адаптируй архетипы под свой профиль.
|
||||
Пример для backend-инженера:
|
||||
- Senior Backend Engineer (Go/PHP)
|
||||
- Staff Platform Engineer
|
||||
- Engineering Manager
|
||||
и т.д. -->
|
||||
|
||||
### Адаптивный фрейминг по архетипу
|
||||
|
||||
> **Конкретные метрики: читать во время оценки из `cv.md` и `article-digest.md`. НИКОГДА не хардкодить.**
|
||||
|
||||
| Если роль... | Подчеркнуть о кандидате... | Источники proof points |
|
||||
|--------------|---------------------------|------------------------|
|
||||
| Platform / LLMOps | Продакшн-системы, observability, evals | article-digest.md + cv.md |
|
||||
| Agentic / Automation | Мульти-агентная оркестрация, HITL, надёжность | article-digest.md + cv.md |
|
||||
| Technical AI PM | Product discovery, PRD, метрики | cv.md + article-digest.md |
|
||||
| Solutions Architect | Системный дизайн, интеграции, enterprise-ready | article-digest.md + cv.md |
|
||||
| Forward Deployed Engineer | Быстрая поставка, клиентский фокус, прототип → прод | cv.md + article-digest.md |
|
||||
| Backend-разработчик | Highload, микросервисы, масштабирование | cv.md |
|
||||
| DevOps/SRE | Инфраструктура, автоматизация, мониторинг | cv.md |
|
||||
| Тимлид / EM | Лидерство, найм, техническая стратегия | cv.md |
|
||||
|
||||
---
|
||||
|
||||
## Система оценивания
|
||||
|
||||
Оценка использует 6 блоков (A-F) с глобальным баллом 1-5:
|
||||
|
||||
| Измерение | Что оценивает |
|
||||
|-----------|---------------|
|
||||
| Совпадение с CV | Навыки, опыт, proof points alignment |
|
||||
| Соответствие North Star | Насколько роль совпадает с целевыми архетипами кандидата |
|
||||
| Компенсация | Зарплата vs рынок (5 = верхний квартиль, 1 = значительно ниже) |
|
||||
| Культурные сигналы | Культура компании, рост, стабильность, удалёнка |
|
||||
| Red flags | Блокеры, предупреждения (негативные корректировки) |
|
||||
| **Глобальный** | Взвешенное среднее |
|
||||
|
||||
**Интерпретация баллов:**
|
||||
- 4.5+ → Сильное совпадение, рекомендуется откликнуться сразу
|
||||
- 4.0-4.4 → Хорошее совпадение, стоит откликнуться
|
||||
- 3.5-3.9 → Нормально, но не идеально; откликаться только при наличии конкретной причины
|
||||
- Ниже 3.5 → Настоятельно рекомендуется не откликаться
|
||||
|
||||
> **Канонический порог (Ethical Use):** AGENTS.md устанавливает порог **4.0/5** — при баллах ниже 4.0 агент настоятельно рекомендует не откликаться. Диапазон 3.5–3.9 допускается только при наличии весомой причины и требует явного решения пользователя.
|
||||
|
||||
---
|
||||
|
||||
## Специфика российского рынка 🇷🇺
|
||||
|
||||
### Компенсация
|
||||
|
||||
- **Gross vs Net**: В России зарплата часто указывается gross (до вычета НДФЛ 13%). ВСЕГДА уточнять: `gross` или `на руки (net)`. Приблизительная формула: `net ≈ gross × 0.87` (стандартная ставка НДФЛ 13%; реальная ставка может отличаться в зависимости от дохода и статуса).
|
||||
- **Валюта**: Рубли (₽ / RUB). Для международных сравнений использовать USD/EUR по текущему курсу.
|
||||
- **Источники данных**: habr.com/salary, hh.ru/salary, levels.fyi (для международных), Glassdoor, Blind.
|
||||
- **Бонусы**: Годовой бонус (обычно 1-3 оклада), квартальные KPI-бонусы, 13-я зарплата.
|
||||
|
||||
### Оформление трудовых отношений
|
||||
|
||||
| Тип | Описание | Влияние на оценку |
|
||||
|-----|----------|-------------------|
|
||||
| **ТК РФ** | Оформление по Трудовому кодексу. Максимальная защита | +0.3 к стабильности |
|
||||
| **ГПХ** | Договор гражданско-правового характера. Меньше защиты | -0.1 к стабильности |
|
||||
| **Самозанятость** | НПД 6%. Минимальная защита | -0.2 к стабильности |
|
||||
| **ИП** | Индивидуальный предприниматель | Нейтрально (зависит от контекста) |
|
||||
|
||||
### Бенефиты (типичные для РФ)
|
||||
|
||||
- **ДМС** (добровольное медицинское страхование) — стандарт в крупных компаниях
|
||||
- **ДМС стоматология** — расширенный пакет, хороший сигнал
|
||||
- **Компенсация питания** — 5-15 тыс. ₽/мес
|
||||
- **Компенсация спорта** — 3-10 тыс. ₽/мес
|
||||
- **Бюджет на обучение** — конференции, курсы, книги (30-150 тыс. ₽/год)
|
||||
- **Компенсация удалённой работы** — оборудование, интернет (3-10 тыс. ₽/мес)
|
||||
|
||||
### Трудовое право (ТК РФ)
|
||||
|
||||
- **Испытательный срок**: до 3 месяцев (до 6 месяцев для руководителей)
|
||||
- **Отпуск**: минимум 28 календарных дней по ТК + дополнительные дни (ненормированный рабочий день, вредные условия)
|
||||
- **Больничный**: оплачивается из ФСС + доплата от работодателя
|
||||
- **Увольнение**: отработка 2 недели (по соглашению сторон можно без)
|
||||
|
||||
---
|
||||
|
||||
## Глобальные правила
|
||||
|
||||
### НИКОГДА
|
||||
|
||||
1. Выдумывать опыт или метрики
|
||||
2. Модифицировать cv.md или файлы портфолио
|
||||
3. Отправлять отклики от имени кандидата
|
||||
4. Делиться телефоном в генерируемых сообщениях
|
||||
5. Рекомендовать компенсацию ниже рынка
|
||||
6. Генерировать PDF без предварительного чтения JD
|
||||
7. Использовать канцелярит и корпоративный язык
|
||||
8. Игнорировать трекер (каждая оценённая вакансия регистрируется)
|
||||
|
||||
### ВСЕГДА
|
||||
|
||||
0. **Сопроводительное письмо:** Если форма позволяет, ВСЕГДА включать. Тот же дизайн, что и CV. Цитаты из JD, привязанные к proof points. Максимум 1 страница.
|
||||
1. Читать cv.md, _profile.md и article-digest.md (если есть) перед оценкой
|
||||
1b. **Первая оценка в сессии:** Запустить `node cv-sync-check.mjs`. Если предупреждения — уведомить пользователя.
|
||||
2. Определить архетип роли и адаптировать фрейминг по _profile.md
|
||||
3. Цитировать точные строки из CV при совпадении
|
||||
4. Использовать WebSearch для исследования компенсации и данных о компании
|
||||
5. Регистрировать в трекере после оценки
|
||||
6. Генерировать контент на языке JD (RU по умолчанию для русскоязычных вакансий)
|
||||
7. Быть прямым и конкретным — без воды
|
||||
8. Для русскоязычных вакансий: технический русский, короткие предложения, глаголы действия.
|
||||
8b. URL-ы кейсов в Professional Summary PDF (рекрутер может прочитать только это).
|
||||
9. **Добавления в трекер как TSV** — не добавлять НОВЫЕ записи в `data/applications.md` напрямую; для новых записей писать TSV в `batch/tracker-additions/` и делать merge. Прямое редактирование существующих строк допустимо для обновления `status`/`notes`.
|
||||
10. **Включать `**URL:**` в заголовок каждого отчёта.**
|
||||
|
||||
### Инструменты
|
||||
|
||||
| Инструмент | Применение |
|
||||
|------------|------------|
|
||||
| WebSearch | Исследование компенсации, тренды, культура компании, контакты в LinkedIn, fallback для JD |
|
||||
| WebFetch | Fallback для извлечения JD со статических страниц |
|
||||
| Playwright | Верификация вакансий (browser_navigate + browser_snapshot). **НИКОГДА 2+ агентов с Playwright параллельно.** |
|
||||
| Read | cv.md, _profile.md, article-digest.md, cv-template.html |
|
||||
| Write | Временный HTML для PDF, data/applications.md, отчёты .md |
|
||||
| Edit | Обновление трекера |
|
||||
| Bash | `node generate-pdf.mjs` |
|
||||
|
||||
### Приоритет скорости
|
||||
- Рабочее демо + метрики > перфекционизм
|
||||
- Откликнуться раньше > изучить больше
|
||||
- Подход 80/20, таймбоксить всё
|
||||
|
||||
---
|
||||
|
||||
## Профессиональное письмо и ATS-совместимость
|
||||
|
||||
Эти правила применяются ко ВСЕМУ генерируемому тексту для кандидата: PDF-резюме, буллеты, сопроводительные письма, ответы в формах, сообщения в LinkedIn. НЕ применяются к внутренним отчётам оценки.
|
||||
|
||||
### Избегать клише
|
||||
- "Я увлечён..." / "результат-ориентированный" / "обширный опыт"
|
||||
- "Задействовал" (использовать "применил" или назвать инструмент)
|
||||
- "Возглавил" (использовать "руководил" или "запустил")
|
||||
- "Обеспечил взаимодействие" (использовать "организовал" или "настроил")
|
||||
- "Синергия" / "комплексный" / "инновационный"
|
||||
- "В современном быстро меняющемся мире"
|
||||
|
||||
### Юникод-нормализация для ATS
|
||||
`generate-pdf.mjs` автоматически нормализует em-dash, умные кавычки и zero-width символы в ASCII для максимальной ATS-совместимости. Но лучше не генерировать их изначально.
|
||||
|
||||
### Разнообразие структуры предложений
|
||||
- Не начинать каждый буллет одним и тем же глаголом
|
||||
- Чередовать длину предложений
|
||||
- Не всегда использовать "X, Y и Z" — иногда два пункта, иногда четыре
|
||||
|
||||
### Конкретика вместо абстракций
|
||||
- "Снизил p95 latency с 2.1с до 380мс" лучше, чем "улучшил производительность"
|
||||
- "Postgres + pgvector для поиска по 12к документов" лучше, чем "спроектировал масштабируемую RAG-архитектуру"
|
||||
- Называть инструменты, проекты и клиентов, когда разрешено
|
||||
@@ -0,0 +1,94 @@
|
||||
# Режим: apply — Ассистент отклика в реальном времени
|
||||
|
||||
Интерактивный режим для заполнения формы отклика в Chrome. Читает экран, загружает контекст вакансии, генерирует персонализированные ответы.
|
||||
|
||||
## Требования
|
||||
|
||||
- **Лучше с Playwright**: Кандидат видит браузер, Claude взаимодействует со страницей.
|
||||
- **Без Playwright**: Кандидат делится скриншотом или вставляет вопросы вручную.
|
||||
|
||||
## Workflow
|
||||
|
||||
```
|
||||
1. ОПРЕДЕЛИТЬ → Прочитать активную вкладку Chrome (скриншот/URL/заголовок)
|
||||
2. РАСПОЗНАТЬ → Извлечь компанию + роль со страницы
|
||||
3. НАЙТИ → Совпадение с существующими отчётами в reports/
|
||||
4. ЗАГРУЗИТЬ → Прочитать полный отчёт + секцию G (если есть)
|
||||
5. СРАВНИТЬ → Роль на экране совпадает с оценённой? Если изменилась → предупредить
|
||||
6. АНАЛИЗ → Определить ВСЕ видимые вопросы формы
|
||||
7. ГЕНЕРАЦИЯ → Для каждого вопроса — персонализированный ответ
|
||||
8. ПОКАЗАТЬ → Отформатированные ответы для copy-paste
|
||||
```
|
||||
|
||||
## Шаг 1 — Определить вакансию
|
||||
|
||||
**С Playwright:** Snapshot активной страницы. Прочитать заголовок, URL, видимое содержимое.
|
||||
|
||||
**Без Playwright:** Попросить кандидата:
|
||||
- Поделиться скриншотом формы
|
||||
- Или вставить вопросы как текст
|
||||
- Или назвать компанию + роль
|
||||
|
||||
## Шаг 2 — Найти контекст
|
||||
|
||||
1. Извлечь название компании и должность
|
||||
2. Искать в `reports/` по названию компании (Grep, case-insensitive)
|
||||
3. Если есть совпадение → загрузить полный отчёт
|
||||
4. Если есть секция G → загрузить черновики как базу
|
||||
5. Если НЕТ совпадения → предупредить и предложить запустить auto-pipeline
|
||||
|
||||
## Шаг 3 — Обнаружить изменения
|
||||
|
||||
Если роль на экране отличается от оценённой:
|
||||
- **Предупредить кандидата**: "Роль изменилась с [X] на [Y]. Переоценить или адаптировать ответы?"
|
||||
- Обновить трекер при необходимости
|
||||
|
||||
## Шаг 4 — Анализировать вопросы формы
|
||||
|
||||
Определить ВСЕ видимые вопросы:
|
||||
- Поля свободного текста (сопроводительное, "почему эта роль" и т.д.)
|
||||
- Выпадающие списки (откуда узнали, разрешение на работу и т.д.)
|
||||
- Да/Нет (переезд, виза и т.д.)
|
||||
- Поля зарплаты (диапазон, ожидания)
|
||||
- Поля загрузки (резюме, сопроводительное PDF)
|
||||
|
||||
## Шаг 5 — Генерировать ответы
|
||||
|
||||
Для каждого вопроса:
|
||||
|
||||
1. **Контекст отчёта**: Proof points из блока B, истории STAR из блока F
|
||||
2. **Секция G**: Если есть черновик — использовать как базу и улучшить
|
||||
3. **Тон "Я выбираю вас"**: Кандидат имеет варианты и выбирает эту компанию по конкретным причинам
|
||||
4. **Конкретика**: Ссылка на что-то конкретное из видимого JD
|
||||
5. **Язык ответов**: На языке JD. Для русскоязычных вакансий — на русском.
|
||||
|
||||
**Формат вывода:**
|
||||
|
||||
```
|
||||
## Ответы для [Компания] — [Роль]
|
||||
|
||||
На основе: Отчёт #NNN | Балл: X.X/5 | Архетип: [тип]
|
||||
|
||||
---
|
||||
|
||||
### 1. [Точный вопрос из формы]
|
||||
> [Ответ, готовый для copy-paste]
|
||||
|
||||
### 2. [Следующий вопрос]
|
||||
> [Ответ]
|
||||
|
||||
...
|
||||
|
||||
---
|
||||
|
||||
Заметки:
|
||||
- [Наблюдения о роли, изменениях и т.д.]
|
||||
- [Предложения по персонализации для проверки кандидатом]
|
||||
```
|
||||
|
||||
## Шаг 6 — После отклика (опционально)
|
||||
|
||||
Если кандидат подтвердил отправку:
|
||||
1. Обновить статус в `data/applications.md` с "Evaluated" на "Applied"
|
||||
2. Обновить секцию G отчёта финальными ответами
|
||||
3. Предложить: `/career-ops contacto` для LinkedIn outreach
|
||||
@@ -0,0 +1,136 @@
|
||||
# Режим: interview-prep — Подготовка к собеседованию
|
||||
|
||||
Когда пользователь просит подготовиться к собеседованию в конкретной компании, или оценка ≥ 4.0 и статус обновлён на `Interview`.
|
||||
|
||||
## Входные данные
|
||||
|
||||
1. **Название компании** и **должность** (обязательно)
|
||||
2. **Отчёт оценки** в `reports/` (если есть)
|
||||
3. **Банк историй** `interview-prep/story-bank.md`
|
||||
4. **CV** `cv.md` + `article-digest.md`
|
||||
5. **Профиль** `config/profile.yml` + `modes/_profile.md`
|
||||
|
||||
## Шаг 1 — Исследование
|
||||
|
||||
WebSearch-запросы. Извлекать структурированные данные, не пересказы. Цитировать источники.
|
||||
|
||||
| Запрос | Что извлечь |
|
||||
|--------|-------------|
|
||||
| `"{company} {role} interview questions site:glassdoor.com"` | Реальные вопросы, сложность, таймлайн, кол-во раундов |
|
||||
| `"{company} interview process site:teamblind.com"` | Описания процесса, данные о компенсации |
|
||||
| `"{company} {role} interview site:leetcode.com/discuss"` | Конкретные задачи, темы system design |
|
||||
| `"{company} engineering blog"` | Стек, ценности, технические приоритеты |
|
||||
| `"{company} собеседование отзывы site:habr.com"` | Отзывы на русском о процессе собеседования |
|
||||
| `"{company} отзывы собеседование site:hh.ru"` | Отзывы кандидатов на hh.ru |
|
||||
|
||||
**НЕ выдумывать вопросы.** Выведенные из JD — помечать `[выведено из JD]`.
|
||||
|
||||
## Шаг 2 — Обзор процесса
|
||||
|
||||
```markdown
|
||||
## Обзор процесса
|
||||
- **Раунды:** {N} раундов, ~{X} дней от начала до конца
|
||||
- **Формат:** {напр., скрининг HR → техническое интервью → тестовое → onsite → нанимающий менеджер}
|
||||
- **Сложность:** {X}/5 (среднее Glassdoor, N отзывов)
|
||||
- **Позитивный опыт:** {X}%
|
||||
- **Особенности:** {напр., "парное программирование вместо доски", "без LeetCode, только практические задачи"}
|
||||
- **Источники:** {ссылки}
|
||||
```
|
||||
|
||||
## Шаг 3 — Разбор по раундам
|
||||
|
||||
```markdown
|
||||
### Раунд {N}: {Тип}
|
||||
- **Длительность:** {X} мин
|
||||
- **Проводит:** {коллега / менеджер / skip-level / рекрутер}
|
||||
- **Что оценивают:** {конкретные навыки}
|
||||
- **Зафиксированные вопросы:**
|
||||
- {вопрос} — [источник: Glassdoor 2026-Q1]
|
||||
- **Как готовиться:** {1-2 конкретных действия}
|
||||
```
|
||||
|
||||
## Шаг 4 — Вероятные вопросы
|
||||
|
||||
### Технические
|
||||
Вопросы по system design, кодированию, архитектуре, domain knowledge.
|
||||
|
||||
### Поведенческие
|
||||
Вопросы про лидерство, конфликты, коллаборацию, неудачи.
|
||||
Для каждого — какая история из `story-bank.md` подходит лучше всего.
|
||||
|
||||
### Специфичные для роли
|
||||
Вопросы, привязанные к конкретному JD (с учётом архетипа).
|
||||
|
||||
### Red flags в бэкграунде
|
||||
Вопросы, которые интервьюер вероятно задаст про пробелы, переходы или необычные элементы в бэкграунде. Читать `_profile.md` и `cv.md`.
|
||||
|
||||
## Шаг 5 — Маппинг банка историй
|
||||
|
||||
| # | Вероятный вопрос/тема | Лучшая история из story-bank.md | Fit | Пробел? |
|
||||
|---|----------------------|-------------------------------|-----|---------|
|
||||
|
||||
- **strong**: история прямо отвечает на вопрос
|
||||
- **partial**: история смежная, нужен рефрейминг
|
||||
- **none**: нет подходящей → отметить для пользователя
|
||||
|
||||
## Шаг 6 — Чеклист технической подготовки
|
||||
|
||||
```markdown
|
||||
- [ ] {тема} — почему: "{доказательство из исследования}"
|
||||
- [ ] {тема} — почему: "{их блог/продукт говорит, что это важно}"
|
||||
```
|
||||
|
||||
Приоритизировать по частоте и релевантности. Максимум 10 пунктов.
|
||||
|
||||
## Шаг 7 — Сигналы компании
|
||||
|
||||
- **Ценности, на которые скринят:** назвать, цитировать источник
|
||||
- **Словарь для использования:** внутренние термины компании
|
||||
- **Чего избегать:** анти-паттерны из отзывов
|
||||
- **Вопросы им:** 2-3 острых вопроса, демонстрирующих домашнюю работу
|
||||
|
||||
## Специфика российских собеседований 🇷🇺
|
||||
|
||||
### Типичные раунды в российских компаниях
|
||||
1. **Скрининг HR** (20-30 мин): мотивация, зарплатные ожидания, готовность к переезду/формату
|
||||
2. **Техническое интервью** (60-90 мин): алгоритмы, system design, знание стека
|
||||
3. **Live coding** (45-60 мин): задачи на алгоритмы или практические задачи
|
||||
4. **System design** (60 мин): проектирование систем (особенно Яндекс, Авито, VK, Ozon, Т-Банк)
|
||||
5. **Культурный fit** (30-45 мин): ценности, командная работа, конфликты
|
||||
6. **Бар-рейзер** (в крупных компаниях): финальное одобрение от senior-инженера
|
||||
|
||||
### Частые вопросы на российских собеседованиях
|
||||
- "Расскажите о себе" (2-3 минуты, структурированно)
|
||||
- "Почему уходите с текущего места?"
|
||||
- "Зарплатные ожидания?" (уточнить gross/net)
|
||||
- "Готовность к переезду / формату работы?"
|
||||
- "Расскажите о самом сложном проекте"
|
||||
- "Как решаете конфликты в команде?"
|
||||
- System design: "Спроектируйте {URL shortener / чат / лента новостей / платёжная система}"
|
||||
|
||||
### Формат STAR+R на русском
|
||||
- **С (Ситуация):** Контекст и вводные
|
||||
- **З (Задача):** Что нужно было сделать
|
||||
- **Д (Действия):** Что конкретно сделал
|
||||
- **Р (Результат):** Измеримый результат
|
||||
- **О (Осмысление):** Что понял, что сделал бы иначе
|
||||
|
||||
## Вывод
|
||||
|
||||
Сохранить отчёт в `interview-prep/{company-slug}-{role-slug}.md`.
|
||||
|
||||
```markdown
|
||||
# Подготовка к собеседованию: {Компания} — {Роль}
|
||||
|
||||
**Отчёт:** {ссылка на отчёт оценки или "N/A"}
|
||||
**Исследовано:** {YYYY-MM-DD}
|
||||
**Источники:** {N} отзывов Glassdoor, {N} постов Blind, {N} прочих
|
||||
```
|
||||
|
||||
## Правила
|
||||
|
||||
- **НИКОГДА не выдумывать вопросы и приписывать их источникам.**
|
||||
- **НИКОГДА не фабриковать рейтинги Glassdoor.**
|
||||
- **Цитировать всё.** Каждый вопрос, каждая статистика получает источник или тег `[выведено]`.
|
||||
- Генерировать на языке JD (RU по умолчанию для русскоязычных вакансий).
|
||||
- Быть прямым. Это рабочий документ подготовки, не мотивационная речь.
|
||||
@@ -0,0 +1,165 @@
|
||||
# Режим: oferta — Полная оценка A-F
|
||||
|
||||
Когда кандидат вставляет вакансию (текст или URL), ВСЕГДА выдать 6 блоков:
|
||||
|
||||
## Шаг 0 — Определение архетипа
|
||||
|
||||
Классифицировать вакансию по одному из архетипов (см. `_shared.md`). Если гибрид — указать 2 ближайших. Это определяет:
|
||||
- Какие proof points приоритизировать в блоке B
|
||||
- Как переписать summary в блоке E
|
||||
- Какие истории STAR готовить в блоке F
|
||||
|
||||
## Блок A — Резюме роли
|
||||
|
||||
Таблица с:
|
||||
- Определённый архетип
|
||||
- Domain (platform/agentic/LLMOps/ML/enterprise/backend/frontend/devops)
|
||||
- Function (build/consult/manage/deploy)
|
||||
- Seniority
|
||||
- Формат работы (удалённо/гибрид/офис)
|
||||
- Размер команды (если указано)
|
||||
- Оформление (ТК РФ / ГПХ / самозанятость — если указано)
|
||||
- TL;DR в 1 предложении
|
||||
|
||||
## Блок B — Совпадение с CV
|
||||
|
||||
Прочитать `cv.md`. Создать таблицу: каждое требование JD → точные строки CV.
|
||||
|
||||
**Адаптировано под архетип:**
|
||||
- Если FDE → приоритизировать proof points быстрой поставки и клиентской работы
|
||||
- Если SA → приоритизировать системный дизайн и интеграции
|
||||
- Если PM → приоритизировать product discovery и метрики
|
||||
- Если LLMOps → приоритизировать evals, observability, pipelines
|
||||
- Если Agentic → приоритизировать мульти-агент, HITL, оркестрацию
|
||||
- Если Backend → приоритизировать highload, микросервисы, масштабирование
|
||||
- Если DevOps/SRE → приоритизировать инфраструктуру, CI/CD, мониторинг
|
||||
|
||||
Раздел **пробелов** со стратегией закрытия каждого:
|
||||
1. Это hard blocker или nice-to-have?
|
||||
2. Может ли кандидат продемонстрировать смежный опыт?
|
||||
3. Есть ли портфолио-проект, закрывающий этот пробел?
|
||||
4. Конкретный план закрытия (фраза для сопроводительного, быстрый проект и т.д.)
|
||||
|
||||
## Блок C — Уровень и стратегия
|
||||
|
||||
1. **Уровень в JD** vs **естественный уровень кандидата для этого архетипа**
|
||||
2. **План "продать senior без обмана"**: конкретные фразы, адаптированные под архетип, достижения для акцента, как позиционировать опыт
|
||||
3. **План "если понизят уровень"**: принять если компенсация справедлива, договориться о пересмотре через 6 месяцев, чёткие критерии роста
|
||||
|
||||
## Блок D — Компенсация и спрос
|
||||
|
||||
Использовать WebSearch для:
|
||||
- Актуальные зарплаты по роли (habr.com/salary, hh.ru/salary, Glassdoor, Levels.fyi, Blind)
|
||||
- Репутация компании по компенсации
|
||||
- Тренд спроса на роль
|
||||
- **Gross vs Net**: уточнить, что указано в JD (до вычета НДФЛ 13% или на руки)
|
||||
|
||||
Таблица с данными и цитированием источников. Если данных нет — сказать об этом вместо выдумывания.
|
||||
|
||||
**Специфика РФ:**
|
||||
- Если зарплата указана gross → показать приблизительный net: `net ≈ gross × 0.87` (стандартный НДФЛ 13%; реальная ставка может отличаться)
|
||||
- Учесть бенефиты: ДМС, питание, спорт, обучение
|
||||
- Оформление: ТК РФ даёт больше гарантий, чем ГПХ/самозанятость
|
||||
|
||||
## Блок E — План персонализации
|
||||
|
||||
| # | Раздел | Текущее состояние | Предлагаемое изменение | Почему |
|
||||
|---|--------|-------------------|------------------------|--------|
|
||||
| 1 | Summary | ... | ... | ... |
|
||||
| ... | ... | ... | ... | ... |
|
||||
|
||||
Топ 5 изменений CV + Топ 5 изменений в LinkedIn/hh.ru для максимального совпадения.
|
||||
|
||||
## Блок F — План собеседований
|
||||
|
||||
6-10 историй STAR+R, привязанных к требованиям JD (STAR + **Reflection**):
|
||||
|
||||
| # | Требование JD | История STAR+R | S | T | A | R | Reflection |
|
||||
|---|---------------|----------------|---|---|---|---|------------|
|
||||
|
||||
Столбец **Reflection** фиксирует, что было изучено или что можно было бы сделать иначе. Это сигнал сеньорности — джуниоры описывают что произошло, сеньоры извлекают уроки.
|
||||
|
||||
**Банк историй:** Если `interview-prep/story-bank.md` существует, проверить, есть ли там эти истории. Если нет — добавить новые. Со временем это формирует банк из 5-10 мастер-историй для любого вопроса на собеседовании.
|
||||
|
||||
**Подобранные и обрамлённые по архетипу:**
|
||||
- FDE → акцент на скорости поставки и клиентской работе
|
||||
- SA → акцент на архитектурных решениях
|
||||
- PM → акцент на discovery и trade-offs
|
||||
- Backend → акцент на highload, масштабировании, надёжности
|
||||
- DevOps → акцент на автоматизации, инцидентах, reliability
|
||||
|
||||
Включить также:
|
||||
- 1 рекомендуемый кейс (какой проект представить и как)
|
||||
- Вопросы-ловушки и как на них отвечать (напр.: "Почему ушли с прошлого места?", "Почему решили сменить стек?")
|
||||
|
||||
---
|
||||
|
||||
## Пост-оценка
|
||||
|
||||
**ВСЕГДА** после генерации блоков A-F:
|
||||
|
||||
### 1. Сохранить отчёт .md
|
||||
|
||||
Сохранить полную оценку в `reports/{###}-{company-slug}-{YYYY-MM-DD}.md`.
|
||||
|
||||
- `{###}` = следующий порядковый номер (3 цифры, zero-padded). Чтобы выделить этот номер атомарно и избежать состояний гонки, вы ДОЛЖНЫ выполнить `node reserve-report-num.mjs` для резервирования номера (stdout вернет `{###}`), записать отчет, а затем выполнить `node reserve-report-num.mjs --release {###}` для освобождения маркера (sentinel).
|
||||
- `{company-slug}` = название компании: lowercase, пробелы заменить на `-`, убрать спецсимволы (например, `Acme Corp` → `acme-corp`)
|
||||
- `{YYYY-MM-DD}` = текущая дата
|
||||
|
||||
**Формат отчёта:**
|
||||
|
||||
```markdown
|
||||
# Оценка: {Компания} — {Роль}
|
||||
|
||||
**Дата:** {YYYY-MM-DD}
|
||||
**Архетип:** {определённый}
|
||||
**Балл:** {X/5}
|
||||
**URL:** {ссылка на вакансию}
|
||||
**PDF:** {путь или "ожидается"}
|
||||
|
||||
---
|
||||
|
||||
## A) Резюме роли
|
||||
(полное содержание блока A)
|
||||
|
||||
## B) Совпадение с CV
|
||||
(полное содержание блока B)
|
||||
|
||||
## C) Уровень и стратегия
|
||||
(полное содержание блока C)
|
||||
|
||||
## D) Компенсация и спрос
|
||||
(полное содержание блока D)
|
||||
|
||||
## E) План персонализации
|
||||
(полное содержание блока E)
|
||||
|
||||
## F) План собеседований
|
||||
(полное содержание блока F)
|
||||
|
||||
## G) Черновики ответов на форму
|
||||
(только если балл >= 4.5 — черновики ответов для формы отклика)
|
||||
|
||||
---
|
||||
|
||||
## Извлечённые ключевые слова
|
||||
(список из 15-20 keywords из JD для ATS-оптимизации)
|
||||
```
|
||||
|
||||
### 2. Зарегистрировать в трекере
|
||||
|
||||
Для **новой** записи не редактировать `data/applications.md` напрямую. Вместо этого записать одну TSV-строку в `batch/tracker-additions/{num}-{company-slug}.tsv` с 8 или 9 колонками через табуляцию:
|
||||
|
||||
```
|
||||
{num}\t{date}\t{company}\t{role}\t{status}\t{score}\t{pdf_emoji}\t[{num}](reports/{num}-{slug}-{date}.md)\t{note}
|
||||
```
|
||||
|
||||
- `{num}` = следующий порядковый номер (целое число, вычислить из `reports/`)
|
||||
- `{status}` = `Evaluated`
|
||||
- `{score}` = формат `X.X/5` (например, `4.2/5`)
|
||||
- `{pdf_emoji}` = `✅` или `❌`
|
||||
- `{note}` = краткий комментарий (опционально, колонку можно опустить)
|
||||
|
||||
Затем выполнить `node merge-tracker.mjs` для слияния в `data/applications.md`.
|
||||
|
||||
Для **существующей** записи допустимо прямое обновление в `data/applications.md` (статус, PDF, ссылка на отчёт).
|
||||
@@ -0,0 +1,58 @@
|
||||
# Режим: pipeline — Очередь URL (Second Brain)
|
||||
|
||||
Обрабатывает URL вакансий из `data/pipeline.md`. Пользователь добавляет URL когда угодно, затем запускает `/career-ops pipeline` для обработки.
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Прочитать** `data/pipeline.md` → найти `- [ ]` в секции "Ожидающие" (или "Pendientes" / "Pending" — pipeline.md может содержать заголовки на любом языке)
|
||||
2. **Для каждого URL**:
|
||||
a. Зарезервировать следующий `REPORT_NUM` атомарно, запустив `node reserve-report-num.mjs` (и освободить маркер, запустив `node reserve-report-num.mjs --release <num>` после записи отчета)
|
||||
b. **Извлечь JD** через Playwright → WebFetch → WebSearch
|
||||
c. Если URL недоступен → пометить `- [!]` с заметкой, продолжить
|
||||
d. **Выполнить auto-pipeline**: Оценка A-F → Отчёт .md → PDF (если балл >= 3.0) → Трекер
|
||||
e. **Переместить из "Ожидающие" в "Обработанные"**: `- [x] #NNN | URL | Компания | Роль | Балл/5 | PDF ✅/❌`
|
||||
3. **Если 3+ URL**, запустить агентов параллельно (Agent tool с `run_in_background`). **Ограничение:** Playwright требует ресурсов — использовать **только один** Playwright-агент одновременно (правило `_shared.md`). Все прочие шаги (WebFetch, оценка, генерация отчёта) допускают полную параллелизацию. Рекомендуемая схема: один агент с Playwright верифицирует активность вакансии; остальные агенты получают JD через WebFetch и параллельно проводят оценку.
|
||||
4. **По завершении** показать таблицу:
|
||||
|
||||
```
|
||||
| # | Компания | Роль | Балл | PDF | Рекомендуемое действие |
|
||||
```
|
||||
|
||||
## Формат pipeline.md
|
||||
|
||||
```markdown
|
||||
## Ожидающие
|
||||
- [ ] https://jobs.example.com/posting/123
|
||||
- [ ] https://hh.ru/vacancy/12345678 | Компания | Senior Backend
|
||||
- [!] https://private.url/job — Ошибка: требуется авторизация
|
||||
|
||||
## Обработанные
|
||||
- [x] #143 | https://jobs.example.com/posting/789 | Acme Corp | AI PM | 4.2/5 | PDF ✅
|
||||
- [x] #144 | https://hh.ru/vacancy/87654321 | BigCo | Backend | 2.1/5 | PDF ❌
|
||||
```
|
||||
|
||||
## Определение JD из URL
|
||||
|
||||
1. **Playwright (предпочтительно):** `browser_navigate` + `browser_snapshot`. Работает со всеми SPA.
|
||||
2. **WebFetch (fallback):** Для статических страниц.
|
||||
3. **WebSearch (последний ресурс):** Поиск на вторичных порталах.
|
||||
|
||||
**Особые случаи:**
|
||||
- **hh.ru**: API доступен: `https://api.hh.ru/vacancies/{id}` — JSON с полным описанием
|
||||
- **LinkedIn**: Может требовать логин → пометить `[!]`, попросить вставить текст
|
||||
- **PDF**: Если URL на PDF — прочитать через Read tool
|
||||
- **`local:` префикс**: Читать локальный файл. Пример: `local:jds/company-role.md`
|
||||
|
||||
## Нумерация
|
||||
|
||||
1. Запустить `node reserve-report-num.mjs` для атомарного резервирования следующего порядкового номера (stdout вернет `{###}`).
|
||||
2. Записать файл отчета, используя этот номер.
|
||||
3. Освободить маркер, запустив `node reserve-report-num.mjs --release {###}` после записи отчета.
|
||||
|
||||
## Синхронизация источников
|
||||
|
||||
Перед обработкой URL:
|
||||
```bash
|
||||
node cv-sync-check.mjs
|
||||
```
|
||||
Если рассинхронизация — предупредить пользователя.
|
||||
Reference in new issue
Block a user