# AGENTS.md — new-job-2026: поиск удалённой работы на зарубежном рынке

## Что это за проект
Личная база знаний + рабочие материалы для поиска удалённой работы на зарубежном рынке из России (доход в валюте). Здесь же готовятся все материалы профиля: LinkedIn, резюме/CV, описания компаний.

## Цель и позиционирование (читай всегда — меняется по решению пользователя)
- Ищем позицию **разработчика (IC)**, НЕ тимлид/менеджер (пользователь не хочет управлять командой) — это трек **зарубежной удалёнки**; принципы подачи → `profile/positioning-principles-ruby-ai.md`.
- Параллельный трек — **лидерские роли на рынке РФ, целевая роль — тимлид** (Team Lead; также Engineering Lead / Technical Lead / hands-on Engineering Manager): заголовок CV — «Tech Lead · Backend & Highload Systems»; позиционирование «инженерный лидер: 20 лет разработки + 9 лет руководства командами, hands-on» → `profile/positioning-principles-lead.md` (дословная постановка пользователя + дополнение от 23.09.2026). Последняя роль Lead Backend Engineer — НЕ «возврат в разработку», это hands-on лидерство с ownership за delivery. **People-факты подтверждены и обязательны к использованию**: команды 7 (Телематика) / 9 (Баланс) / 18+ в трёх командах (Самокат) / 20+ разработчиков и аналитиков (Райф); найм, 1:1, карьерный агрегат менторства — ок. 20 выросших инженеров за 9 лет (пятеро до повышения + преемник-тимлид в Самокате, 3 выросли в тимлидов в Телематике, преемник в Балансе, инициированное повышение в Райфе). Правило двух резюме: `cv.yaml` — источник структуры и engineering-achievements, people-доказательства — из полного CV (`/mnt/storage/projects/publicity/blog/cv.md`); при адаптации собирать из обоих, не противореча фактам. Не приписывать неподтверждённое (perf-review, бюджеты, увольнения, выдуманные KPI).
- Рынок: **зарубежный, удалёнка** (full-time или контракт), профиль на английском.
- Два акцента: **экспертность в Ruby** (20+ лет, Rails, high-load e-commerce/fintech) + **интерес/экспертность в AI/LLM**. Рабочих кейсов по AI нет — строим через пет-проекты, контент, GitHub. AI — «направление развития», а не второй стек (один фокус в профиле).
- Общение с пользователем — по-русски; готовые тексты для LinkedIn/CV — на английском.
- **Master-резюме: `profile/cv.yaml`** (структурный источник) → `profile/western-cv-template.html` + `profile/western-cv-template.md` (генерируются, сборка PDF → `profile/build-western-cv-pdf.sh`). Это основное резюме для поиска работы на позиции разработчика / ведущего разработчика / principal-инженера (IC), позиционирование «Senior Backend Engineer / Staff Engineer · Ruby on Rails · Distributed Systems». Все производные материалы (LinkedIn, cover letter, точечные версии под вакансии) собираются отсюда.
- Производные: `profile/linkedin-experience-draft.md` (Experience для LinkedIn, собирается из master-резюме), `profile/linkedin-headline-about.md`, `profile/linkedin-about.md`.
- ⚠️ `/root/projects/publicity/blog/cv-en.md` — устаревшая версия (заголовок «Technical Lead», старая фактура), только для блога. Для LinkedIn и откликов НЕ использовать: мастер — `western-cv-template.html`.

## Структура проекта
- `README.md` — обзор базы знаний по валютной удалёнке
- `knowledge-base/` — систематизированные знания: `01-overview` … `06-youtube-insights`, `facts-checklist.md`, `action-plan.md`, `index.md` (оглавление), `youtube-vs-articles.md`
- `profile/` — **личные материалы профиля** (LinkedIn-черновики, описания компаний, About). Правило: всё про резюме/профиль кладём сюда. Чек-лист ведения LinkedIn-аккаунта → `profile/linkedin-account-checklist.md`
- `applications/` — **кейсы откликов на вакансии**: письма, брифы, черновики вопросов, статусы. По папке на компанию (пример: `applications/sms-aggregate/`), журнал — `applications/README.md`
- `sources/` — ссылки (`links.md`), полные тексты (`full/`, `full/youtube/`), выжимки (`summaries/`, `summaries/youtube/`)

## Статусы работ

- Журнал откликов и детальная история кейсов → `applications/README.md` (таблица + «Детальный журнал кейсов»; детали кейса — в его `vacancy.md`/`case.md`).
- Статус работ по LinkedIn-профилю → `profile/README.md`.
- В AGENTS.md статусы и историю НЕ ведём — только правила и структура (решение пользователя от 24.09.2026).
## Постановка задач ассистенту

- Ассистент в проекте один: **`@assistant`** (описание → `agents/assistant.md`).
- Задача ставится кратко, в человеческом формате: **что хотим получить**, а не точную реализацию или пошаговые инструкции.
- Ассистент волен выбирать способ исполнения самостоятельно. Свобода принятия решений — норма.
- По факту выполнения ассистент фиксирует принятые решения и то, что было сделано, в комментариях к задаче.
- Рабочий процесс самого ассистента (порядок действий, инструменты) уже зашит в его настройках → `agents/assistant.md` — здесь не дублируется.

## Конвенции и рабочие правила
- **Коммиты: допустимы напрямую в master, без ID задачи** (решение пользователя).
- Материалы поиска работы (резюме, LinkedIn, CV-деривативы) — **только в `profile/`**, НЕ в publicity (там блог/посты).
- Тексты для LinkedIn: простой текст без markdown внутри вставляемых блоков; лимиты: headline 220 симв., About 2600, описание поста 3000.
- Минимальный чеклист LinkedIn (из КБ, `03-interviews-and-profile.md`): реальная локация «Moscow, Russia», фото человека, заполненные контакты, Open-to-Work «только рекрутеры», активность 1 пост/неделю.
- Пользователь вносит правки в аккаунты сам; ассистент готовит готовые к вставке тексты и файлы на русском/английском.
- **Сопроводительные письма в кейсах откликов — `.txt`, не `.md`** (решение пользователя от 24.09.2026): это плоский текст для вставки в формы hh/LinkedIn, без markdown-разметки. Pipeline-артефакты генератора (`cover-letter-build.py` жёстко пишет `cover-letter.md`, кейс GitLab) не переименовывать.
- Актуализировать этот файл только при изменении правил, структуры, позиционирования или конвенций; статусы и историю кейсов — в `applications/README.md` и `profile/README.md` («агент должен быть в курсе того, что происходит» — через журнал и кейсы).

## Резюме: единый источник данных (master CV)

- **Источник правды: `profile/cv.yaml`** — структурированные данные (контакты, summary, skills, опыт, проекты, образование). Только факты, без вёрстки. Руками не редактируем выходные файлы.
- **Генератор: `python3 profile/cv-build.py`** рендерит из YAML три формата:
  - `profile/western-cv-template.html` — печатная вёрстка (западный стиль: без фото/возраста, ATS-дружелюбный текст, A4);
  - `profile/western-cv-template.md` — текстовое зеркало для копирования (простая ASCII-типографика);
  - `profile/western-cv-template.txt` — плоское зеркало без markdown-разметки (без `#`, `**`, `[]()`), готовое к вставке в веб-формы (hh, поля откликов); разделы — заголовками КАПСОМ, ссылки — «label (URL)».
- Проверка, что выходные файлы не разъехались с YAML: `python3 profile/cv-build.py --check` (вернёт ненулевой код, если устарели).
- **Варианты резюме: `python3 profile/cv-build.py --src <name>.yaml`** рендерит любой другой YAML из `profile/` → `<name>.html` + `<name>.md`. Фиксированные строки (заголовки секций, титул, футер) берутся из `lang:` в YAML (en/ru); для ru MD-зеркало сохраняет типографику («ёлочки», тире).
- **Русскоязычное лидерское резюме: `profile/cv-ru-lead.yaml`** (рынок РФ, «Tech Lead · Backend & Highload Systems»; без фото/возраста). PDF: `bash profile/build-western-cv-pdf.sh profile/cv-ru-lead.yaml` → `cv-ru-lead.pdf` в инбоксе. Не перевод мастер-CV, а перекомпоновка под лидерский нарратив: масштаб управления и процессы вперёд, инженерные результаты как доказательство. Факты и метрики синхронизируем с `cv.yaml`.
- ⚠️ **Синхронизация RU → EN (перенести по решению пользователя; напоминать при работе с EN-материалами):** русское CV (финальная редакция 23.09.2026) содержит вещи, которых нет в мастер-CV `cv.yaml` и западных материалах. Уже закрыто: агент code review в Самокате добавлен в `cv.yaml`; `positioning-principles-ruby-ai.md` обновлён (зафиксированы два production-кейса — voice bot Райф + code review агент Самокат). Осталось: (1) people-фактура из полного CV (1:1, преемники, 3 тимлида, ~20 выросших за 9 лет, 10+ семинаров, система оценки кандидатов, PBR/дежурства, техроудмап и юнит Райфа, инициированное повышение) в EN-мастере отсутствует; (2) публичность: TechLead Conf 2025, SberMarket RubyMeetup 2023, GeekBrains, YouTube/TG-контент — в EN projects только HeavyTech + RubyRussia; (3) «Мегамаркет» уточнён 09.10.2026: это не отдельное место работы, а часть эпохи Самоката — Сбер купил Самокат и объединил с Мегамаркетом в ecom.tech, одна из команд Сергея делала продукт под интеграцию ассортимента Мегамаркета в Самокат (детали — `knowledge-base/07-management-career/samokat.md`).
- Разметка `**bold**` внутри YAML работает в обоих форматах; длинные тире `—` в YAML для markdown автоматически становятся `-`.
- `profile/western-cv-fuse-energy.html` — отдельная ручная версия под вакансию Fuse Energy, из YAML не генерируется.

## Сборка PDF-версии резюме (западное CV)

- **Сборка:** `bash profile/build-western-cv-pdf.sh` — сначала запускает `cv-build.py` (YAML → HTML + MD), потом рендерит PDF через Playwright сразу в `/mnt/storage/inbox` (никаких бинарников в репозитории). Полный таймстемп в имени (`western-cv-template-<ГГГГММДД-ЧЧММСС>.pdf`) + стабильная копия `western-cv-template.pdf`. Время генерации (UTC) встраивается в подвал PDF.
- Предыдущие версии в инбоксе сохраняются (история). Просмотр: https://files.udalovs.ru (папка `files` = `/mnt/storage/inbox`) — кликнуть по файлу.

## Cover letter: единый источник данных

- **Источник правды: `profile/cover-letter.yaml`** — sender и контакты, дата, `subject`, `salutation`, 5 абзацев, блок «What I bring», футер, `accent` и `context` (подстановки `{{company}}`, `{{role}}`). Только содержание, без вёрстки.
- **Генератор: `python3 profile/cover-letter-build.py`** рендерит `profile/cover-letter.html` (печатная вёрстка A4) и `profile/cover-letter.md` (плоский ASCII-текст для форм откликов). Проверка синхронности — `--check`.
- **PDF: `bash profile/build-cover-letter-pdf.sh`** → `/mnt/storage/inbox` (`cover-letter-<таймстемп>.pdf` + стабильный `cover-letter.pdf`), как у резюме.
- **Под вакансию:** скопировать YAML в `applications/<company>/cover-letter.yaml`, поправить `context`/абзацы и собрать `bash profile/build-cover-letter-pdf.sh applications/<company>/cover-letter.yaml` → `<company>-cover-letter.pdf`.
- **Дизайн-контроль: `python3 profile/cover-letter-verify.py`** — по `style` проверяет свой набор правил: editorial (Inter, name 30px, заголовок 22px, body 15.5px/1.52, один акцент) или plain (базовый шрифт, name ≤18px, без заголовка/футера/акцента); в обоих — один блок «What I bring» и одна A4. Запускать после правок YAML/CSS: лишняя строка в абзаце уводит письмо на вторую страницу.
- **Два стиля (`style:` в YAML):** `plain` (по умолчанию) — базовый системный шрифт, без заголовков и футера, минимальная шапка (имя/роль/контакты обычным текстом); `editorial` — «дизайнерская» версия (Inter, акцент, заголовок «Cover Letter», футер). Переключение — смена `style:` в YAML и пересборка.
- Акцент (только в стиле `editorial`) по умолчанию красный `#DC2020`; `accent: "#2457B8"` переключает на синий резюме. Незакавыченные значения с `": "` в YAML парсятся как словарь — генератор специально падает с понятной ошибкой.
- Шрифт Inter лежит в `profile/assets/fonts/` (OFL), HTML ссылается на него относительно — из YAML/HTML ничего не коммитим, кроме самого шрифта.

## Полезные материалы
- `knowledge-base/index.md` — оглавление КБ
- `knowledge-base/03-interviews-and-profile.md` — LinkedIn-чеклист, CV, STAR-истории, вопросы
- `knowledge-base/02-job-search.md` — стратегии поиска, воронка откликов, площадки
- `knowledge-base/action-plan.md` — пошаговый план на 4–8 месяцев
- **Сайт-браузер материалов: https://job2026.apps.udalovs.ru** — раздел System Design (`applications/yandex-codenv/system-design/`); md — как страницы, папки — как списки-карточки; читается напрямую из репо (правки видны сразу). Сервер: `site/server.py`, systemd `job2026-site` (:8090), TLS на edge-Caddy 192.168.88.35. PDF (книги) публично не отдаются

<!-- BACKLOG.MD GUIDELINES START -->
<!-- backlog.md-instructions-version: 1.50.1 -->
<CRITICAL_INSTRUCTION>

## Backlog.md Workflow

This project uses Backlog.md for task and project management.

**For every user request in this project, run `backlog instructions overview` before answering or taking action.**

Use the overview to decide whether to search, read, create, or update Backlog tasks.

Before task lifecycle actions, read the matching detailed guide:
- `backlog instructions task-creation` before creating or splitting tasks
- `backlog instructions task-execution` before planning, changing status or assignee, adding a plan or implementation notes, or implementing task work
- `backlog instructions task-finalization` before checking acceptance criteria, writing final summaries, or moving tasks to terminal statuses

Use `backlog <command> --help` before running unfamiliar commands. Help shows options, fields, and examples.

Do not edit Backlog task, draft, document, decision, or milestone markdown files directly. Use the `backlog` CLI so metadata, relationships, and history stay consistent.

</CRITICAL_INSTRUCTION>
<!-- BACKLOG.MD GUIDELINES END -->
