Сначала сюда, потом просить доработку
Что HERON уже умеет
Перед тем как написать «нужна доработка HERON», найдите потребность в этих таблицах. Если она здесь есть — делайте средствами сайта и темы. Если нет — смотрите «Чего нет» внизу: часть вещей отсутствует намеренно.
Ссылки в колонке «Где описано»: контракт — разделы папка сайта (§1–3), формат страницы (§4), site.yaml (§5), theme.yaml (§6), картинки и файлы (§7); сборка — спецификация 21; поставка — спецификация 23.
Простыми словами
Эта страница — список того, что HERON уже умеет, по задачам. Прочитайте её, прежде чем просить что-то новое: почти всё, что нужно сайту, здесь уже есть, просто может называться не так, как вы ожидаете.
Пример. Вы хотите, чтобы одна страница была в двух разделах сайта. Ищете на этой странице «раздел» и находите «страница в нескольких разделах: плоско и через связи» — новая функция не нужна, достаточно связей между страницами.
Эта страница нужна, когда вы планируете сайт или когда агент собирается сказать «HERON нужно доработать». В последней таблице — чего нет намеренно и почему.
Структура и адреса
| Нужно сайту | Как в HERON | Где описано |
|---|---|---|
Страница по адресу /about/ |
файл content/ru/about.md (в папке своего языка) |
контракт §2 |
| Раздел с каталогом детей | папка с _index.md; дети — файлы рядом; шаблон получает page.children |
контракт §2, сборка §4 |
| Адрес не совпадает с именем файла | поле slug |
контракт §2 |
Разные адреса на разных языках (/guides/ и /ru/rukovodstva/) |
одинаковое имя файла, slug в файле второго языка |
контракт §2 |
| Тип страницы и свой шаблон | type в файле или children_type в _index.md раздела; шаблон templates/TYPE.html |
контракт §4.2 |
Одиночная страница со своей раскладкой (about.md) |
type: about в файле, templates/about.html в теме |
контракт §4.2 |
| Порядок в каталоге и меню | order |
контракт §4.2 |
| Меню | nav в site.yaml, ключами; главная — "/" |
контракт §4.2, §5 |
| Короткое имя в меню и крошках | nav_title |
контракт §4.2 |
| Хлебные крошки | строятся сами: page.breadcrumbs |
сборка §6 |
| Черновик, который не собирается | published: false (--drafts включает) |
контракт §4.2 |
| Новая страница с полным SEO-блоком и заготовками секций типа | heron page TYPE NAME; главную и 404 кладут new/init |
сборка §10 |
| Комментарии в файлах сайта по-русски или по-английски | --notes ru|en, HERON_NOTES, build.notes |
поставка §4 |
| Раздел в 100+ страниц | одна страница каталога, без пагинации; группировку делает тема | сборка §4 |
Языки
| Нужно сайту | Как в HERON | Где описано |
|---|---|---|
| Один язык, два, N | site.languages, site.default_lang |
контракт §3 |
Основной язык в корне, остальные под префиксом языка (/ru/) |
так всегда | контракт §3 |
hreflang, x-default |
генерируются сами | контракт §3 |
| Переключатель языков, неактивный пункт без перевода | languages, lang, page.translations в шаблоне |
контракт §3 |
| Второй язык пишется раньше основного | дев-сборка проходит с предупреждением; прод с пустым основным — E021 |
контракт §3 |
| Ссылка в тексте ведёт на страницу своего языка | писать ключом без префикса, например /guides/x/ |
контракт §2 |
Название сайта и суффикс title по языкам |
site.name_ru, seo.title_suffix_ru (и так для каждого языка) |
контракт §5 |
| Адрес, телефон, описание компании по языкам | contact.address_ru и т. п. в своих блоках; подстановки и тема берут язык сами |
контракт §5 |
| Строки интерфейса темы («Read more» / «Читать далее») | theme/i18n/ru.yaml и файл на каждый язык, в шаблоне t.KEY |
сборка §7 |
Контент страницы
| Нужно сайту | Как в HERON | Где описано |
|---|---|---|
| Вступление и подзаголовок | текст до первой секции: lead и promise |
контракт §4.3 |
| Блок, который тема ставит в нужное место | секция ## Заголовок {#якорь} |
контракт §4.3 |
| Список, пары «термин — пояснение» | list |
контракт §4.4 |
| Тревожные признаки | list с классом .alert → alert-list |
контракт §4.4 |
| Шаги «как мы работаем», с метками | нумерованный список → steps |
контракт §4.4 |
FAQ (и FAQPage в разметке) |
группы ### Вопрос? без списков → faq |
контракт §4.4 |
| Чек-лист документов | три и больше групп ### со списками → checklist |
контракт §4.4 |
| «Подходит / не подходит» | две группы ### со списками → two-lists |
контракт §4.4 |
| Короткие факты «формат — очно» | строки ключ | значение → facts |
контракт §4.4 |
| Таблица сравнения | markdown-таблица → table |
контракт §4.4 |
| Шкала времени | facts или нумерованный список с классом .timeline |
контракт §4.4 |
| Врезка-совет | цитата > → callout (и section.callout у любой секции) |
контракт §4.4 |
| Галерея | список картинок с классом .gallery |
контракт §4.4 |
| Сквозные данные: отзывы, цифры доверия, реквизиты | yaml в data/, в шаблоне data.FILE |
контракт §1 |
| Сырой HTML в markdown | запрещён по умолчанию (E015); build.allow_raw_html: true |
контракт §5 |
Как каждая форма выглядит на этом сайте — в справочнике форм.
Связи
| Нужно сайту | Как в HERON | Где описано |
|---|---|---|
| «Связанные услуги», «статьи по теме» | поле связи во фронтматтере, объявленное в theme.yaml links |
контракт §6 |
| Обратный список («где упоминается») | back: у связи |
контракт §6 |
| Связь внутри одного типа | разрешена | контракт §6 |
| Подпись к связи | {slug: имя, note: "…"} |
контракт §6 |
| Предупреждать, если связь не заполнена | required и on |
контракт §6 |
Картинки и файлы
| Нужно сайту | Как в HERON | Где описано |
|---|---|---|
| Адаптивные картинки, WebP/AVIF | путь в media/, в шаблоне picture() |
контракт §7, сборка §8 |
| Пропорции карточек | images.ratios в theme.yaml; иллюстрации вписываются, фото кропаются |
контракт §7.6 |
| PDF, видео, любой файл | в media/, адрес — media_url() |
контракт §7.2, §7.4 |
| Видео страницы | video, video_poster, video_title |
контракт §7.5 |
| Сканы без нарезки | images.as_is |
контракт §7.3 |
favicon, webmanifest, .well-known |
static/ |
контракт §7.8 |
SEO и служебное
| Нужно сайту | Как в HERON | Где описано |
|---|---|---|
| sitemap | генерируется: один файл или индекс по языкам | сборка §9 |
| robots.txt | генерируется; дев — Disallow: / |
сборка §9 |
llms.txt, полные тексты для нейросетей |
генерируются; сведения о сайте — seo.llms_note |
сборка §9, контракт §5 |
| JSON-LD | типы — theme.yaml types.TYPE.jsonld; данные — schema в site.yaml и в странице |
контракт §5 |
| Цены в разметке | запрещены, пока seo.allow_prices: false; разрешить — true |
контракт §5 |
| Дата публикации и обновления | date, updated, build.updated_from: git |
контракт §4.2, §5 |
| Лента Atom | seo.feed: TYPE |
сборка §9 |
| Open Graph, картинка по умолчанию по языкам | og_* в странице, seo.og_default_image и seo.og_default_image_ru |
контракт §4.2, §5 |
301 со старых адресов, кириллица и %D0%… |
redirect_from в странице |
контракт §2 |
| 410 для архивов, служебных путей, дорвеев | gone в site.yaml: точные, /wp/*, /?p=* |
контракт §5 |
| Страница 404 на каждом языке | content/ru/404.md в папке каждого языка |
контракт §2 |
| Счётчики только в проде | analytics в site.yaml; дев их не выводит |
контракт §5 |
| Закрыть дев от индексации | так по умолчанию; прод — build --env prod |
сборка §10 |
| Образ nginx с сайтом, smoke-проверка | scripts/site.sh SITE image, smoke, push |
поставка §5 |
Чего нет — намеренно или пока
| Чего нет | Почему и что делать |
|---|---|
| Пагинация каталогов | намеренно: один раздел — одна страница. Большие разделы делить на подразделы папками (сборка §4) |
| Поиск по сайту, комментарии, личный кабинет | статический сайт; рантайма нет. Внешний сервис — решение темы |
| Подгрузка контента скриптом | запрещено: числа и текст обязаны быть в HTML (контракт §10) |
| Приём форм | будет отдельный сервис heron-relay, пока не реализован. Описание формы в site.yaml (forms, sinks) HERON проверяет, но POST принимать некому. Сейчас — телефон, почта, мессенджеры, внешняя форма |
| Админка, база данных | намеренно: источник правды — файлы |
| Отложенная публикация по дате | нет: published — флаг, date — только дата. Публикация = коммит и сборка |
| Яндекс.Метрика в заготовке темы | убрана; ключ analytics.metrika принимается, вывести его — дело своей темы |
Сборка на сервере (install.sh, deploy.sh) |
описана в спецификации развёртывания как целевая схема, скриптов пока нет. Сегодня — образ через site.sh |
Если потребности нет ни в одной таблице — это задача на HERON. Шаблон оформления — на странице Архитектор, раздел «Задача на HERON».
Источник
Эта страница повторяет файл docs/agents/capabilities.md из ветки prod. Репозиторий обновляется первым: capabilities.md на GitHub.