HERON

Сначала сюда, потом просить доработку

Что 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.