--- pr: 151 title: feat(create-readme): add bilingual tagline and repo_name validation --- ## Что сделано В `.opencode/tools/create-readme.ts` (mode `create`): параметр `tagline` переименован в `tagline_en` + добавлен `tagline_ru` (оба required). Рендер top-блока теперь обёрнут в delimiter-теги `` и `` (для парсера slaid098.dev). Добавлена content-валидация в `execute()` ПОСЛЕ presence-чеков, ДО Quick Start guard: `repo_name` — lowercase kebab-case regex `^[a-z0-9]+(-[a-z0-9]+)*$`; `tagline_en` — no Cyrillic (`/[ЁА-яё]/`); `tagline_ru` — require Cyrillic. `validateReadme`: +4 delimiter'а (tagline-en/ru start/end, итого 12), +2 пары (EN/RU tagline), +check H1 prefix `# 🚀 `. Schema обновлена (`tagline_en`/`tagline_ru` с обновлёнными `.describe()`). SKILL.md обновлён: разделители tagline в список, шаблон top-блока, таблица параметров, пример вызова, новый раздел 9 «Breaking change: tagline → tagline_en + tagline_ru». Smoke-тест: 7 сценариев, 16 assertion'ов, все PASS (happy path + validate ok, repo_name uppercase, repo_name underscore, tagline_en Cyrillic, tagline_ru no Cyrillic, old tagline breaking, validateReadme на старом README без tagline delimiterов). ## Почему Issue #150: slaid098.dev парсер нуждается в отдельном RU tagline (раньше был только один английский `tagline`). Валидация гарантирует: `repo_name` — строго английский kebab-case (lowercase, без uppercase/underscore/пробелов); `tagline_en` — реально на английском (без кириллицы); `tagline_ru` — реально на русском (содержит кириллицу, не копия английского). Breaking change: параметр `tagline` удалён — миграция на `tagline_en` + `tagline_ru`. ## Pending Регенерация существующих README в репо slaid098 через `create-readme` с новыми параметрами (`tagline_en`/`tagline_ru`) — отдельный шаг после merge (PR/issue вне scope #150). Существующие README без tagline delimiter-тегов станут invalid при `validate` (ожидаемо). ## Watch out **BREAKING CHANGE**: параметр `tagline` удалён из `create-readme` (mode `create`). Старые вызовы с `tagline` падают с `❌ tagline_en is required for create mode`. Миграция: заменить `tagline` на `tagline_en` + добавить `tagline_ru`. Существующие README без tagline delimiter-тегов станут invalid при `validate` (`Missing delimiter`) — регенерация отдельный шаг (см. Pending). Порядок валидации в `execute()` (create mode): presence-чеки (required Record) → content-чеки (regex: repo_name, tagline_en, tagline_ru) → Quick Start guard (PR #149). Content-чеки используют non-null assertion `args.x!` — безопасно, т.к. presence-чеки уже прошли. `validateReadme` НЕ проверяет repo_name regex — только create mode (legacy README с uppercase repo_name не должны ломаться). H1 prefix check `# 🚀 ` — substring-чек, не строгий (ищет presence префикса, не валидирует что после него). ADR-064 отмечает backward-compat альтернативу «оставить tagline alias» — отвергнута (явный breaking лучше молчаливого дуализма).