--- description: Generate a branded 1024×1024 cover (Lime style) via draw-image agent: build --- Generate a repository cover image following the **hardcoded slaid098 Lime standard**. Style is NEVER asked of the user and NEVER overridden — only content questions are asked. ## Hardcoded standard (НЕ спрашивается, НЕ переопределяется) - `template` = `cover` (1024×1024, единственный доступный шаблон в `.opencode/draw-image/templates/cover.svg`). - Palette = **Lime** from `.opencode/draw-image/brand.json`: base `#0a0a0a`, surface `#121212`, accent `#ccff00` (icons), fg `#ededed` (text), muted `#a1a1aa`. - `title`: ровно ОДИН заголовок, **lowercase English**, без исключений. Авто-деривация из имени репо (см. правила ниже). - `subtitle`: **ОТСУТСТВУЕТ**. Флаг `--subtitle` / параметр `subtitle` запрещён стандартом. Передача subtitle = ошибка команды. - `out` = `assets/cover.png` (относительно корня репо). Глобальный путь для витрины slaid098.dev — без исключений. ## Slots - `icon` — **обязательный**. Lucide-иконка из `.opencode/draw-image/icons/lucide/` (2007 шт.) ИЛИ brand-logo из `.opencode/draw-image/brand-logos/`. Передаётся без расширения (напр. `mic`, не `mic.svg`). - `sub-icon` — **опциональный**. Brand-logo из `.opencode/draw-image/brand-logos/` для показа brand-принадлежности. - `badge` — **опциональный**. Путь к SVG-бейджу. ## Title derivation rules - Имя репо → lowercase, дефисы/подчёркивания → пробелы: `opencode-voice-dictation` → `opencode voice dictation`. - camelCase / UPPER → lowercase: `MyRepo` → `myrepo`. - Числа сохраняются: `video-uniq-2` → `video uniq 2`. - Если имя длиннее ~40 символов → спроси у пользователя сокращение. ## Flow 1. **Read repo** — прочитай `README.md`, манифест (`package.json` / `pyproject.toml` / иной), пробегись по `src/` (топ-уровень). Определи purpose репо. 2. **Infer** — выведи: `title` (по правилам выше), candidate `icon` (по purpose, напр. voice-dictation → `mic`), candidate `sub-icon` (по brand-принадлежности из README/манифеста). 3. **Ask user** — задай 2-3 вопроса ТОЛЬКО по контенту, который не удалось вывести: подтвердить/скорректировать `icon`, `sub-icon`, `title`. НЕ задавай вопросов по стилю — стиль захардкожен. 4. **Pre-check** — если `assets/cover.png` уже существует, спроси «перезаписать?» перед рендером. 5. **Ensure `assets/` dir** — если директории `assets/` нет, создай её автоматически. 6. **Render** — вызови tool `draw-image`: ``` draw-image({ template: "cover", title: "", slots: "icon=,sub-icon=", out: "assets/cover.png" }) ``` НЕ передавай `subtitle`. Если tool `draw-image` недоступен — остановись с ошибкой: «draw-image tool недоступен — невозможно сгенерировать кавер». 7. **Validate README** — проверь, что в `README.md` есть `![Cover](assets/cover.png)`. Если нет — добавь ссылку сразу после заголовка H1 (прямая проверка; опционально — `project-status.py check_readme`). Если `check_readme` падает (README без delimiter tags) — предупреди, но кавер всё равно остаётся отрендеренным (кавер ≠ README). 8. **Done** — сообщи путь к готовому PNG. ## Extension mechanism (НЕ хардкод брендов) Команда НЕ хардкодит конкретные бренды. **OpenCode упоминается ниже только как ПРИМЕР** — это не special-case в коде. Для любого бренда: если в `.opencode/draw-image/brand-logos/` есть SVG, его можно использовать как `sub-icon`. Расширение = добавление brand-logo SVG в `draw-image/brand-logos/`, а НЕ изменение этой команды. > Пример: README указывает на принадлежность к OpenCode-ecosystem → предложи `sub-icon=opencode` (файл `brand-logos/opencode.svg`). Для не-OpenCode репо `sub-icon` пропускается. ## Граничные случаи - **Нет README / нет манифеста** → purpose не выводится → спроси пользователя `icon` + `title` напрямую (без infer). - **Имя репо camelCase / UPPER** → нормализуется в lowercase (`MyRepo` → `myrepo`). - **Имя репо с числами** → сохраняются (`video-uniq-2` → `video uniq 2`). - **Имя репо > ~40 символов** → спроси сокращение. - **Пользователь хочет не-Lime кавер** → отказ: «команда /cover поддерживает только Lime-стиль. Кастомизация вне scope.» - **Существующий `assets/cover.png`** → спроси «перезаписать?» перед рендером. - **Lucide-иконка не найдена** → ошибка со списком похожих иконок (fuzzy match по имени в `icons/lucide/`). - **`check_readme` падает** (README без delimiter tags) → предупреди, но кавер рендерится. - **`draw-image` tool недоступен** → ясная ошибка, рендер невозможен. - **`assets/` директория отсутствует** → создаётся автоматически.