---
id: SKILL
name: demonstrator-author
description: Создание и правка материалов в Демонстраторе — редакторе курсов с нейросетями. Используй при работе с лонгридами, статьями, блоками :::тип и MCP-инструментами.
updated: 2026-08-16 14:20 GMT+3
---

# Демонстратор — агент

Primary: raw `.md` на https://app.longread.agency/agent/  
Начни с `README.md`. HTML-вкладки — зеркало для человека.

Этот файл — короткий entrypoint-скилл. Полные правила — в `01`–`06` рядом с ним.

## Перед началом

1. Правила уже в контексте (человек положил zip) или открой `README.md` + `01`–`06` с https://app.longread.agency/agent/
2. Работай **только по источнику** (`/agent/`), не «по памяти» и не по локальным копиям без сверки.
3. Сверь поле `updated:` в frontmatter с версией на `/agent/`.
4. Если локальный `updated` старше — перечитай raw `.md` с `/agent/` (или попроси человека заново скачать zip).
5. У локальной копии **нет** `updated:` — она вне механизма сверки; эталоном её не считать.
6. Не сравнивай по mtime — смотри только `updated:` в frontmatter.
7. Не выдумывай «механизмы сверки» и несуществующие файлы/папки. Единственная сверка — `updated:` + чтение с `/agent/`.
8. Работай только в текущем workspace. Не лезь в соседние репозитории и не сканируй диск за helper’ами.
9. MCP только `https://app.longread.agency/mcp/demonstrator/mcp`. Share-URL только на `app.longread.agency` (loopback → перепиши host). Другие MCP Демонстратора не трогай.
10. Эталон — только явно указанный `@path`. После сейва — хвост `get-material`. Перед сдачей — share глазами (`README`: «Эталон и сдача»).

## Маршрут

- Happy path и сценарии → `README.md`
- Синтаксис → `01-syntax.md` (в т.ч. таблица `===` по типам блоков)
- Выбор блока + anti-patterns → `02-methodology.md`
- MCP: `https://app.longread.agency/mcp/demonstrator/mcp`; токен уже в конфиге MCP-клиента в IDE (`mcp.json` → `headers.Authorization`), не из env и не «из ЛК». Args из `tools/list` → `03-mcp-tools.md` (тело — Yjs collab; после write — хвост `get-material`)
- **Локальная картинка → curl, не MCP.** `file_path` в MCP = путь на удалённом сервере. Твоя файловая система (`C:\…`) MCP-серверу не видна. Картинка из локального файла: **Shell `curl` multipart** (см. `03-mcp-tools.md` § «Картинка — curl»). Токен для `curl` — тот же Bearer, что в конфиге MCP-клиента в IDE (сервер `demonstrator-mcp` / `user-demonstrator-mcp`); не ищи его в переменных окружения шелла. `401` от `/api/resources` — стоп и спроси актуальный токен у пользователя. Аудио/видео/файл с диска: `presign-media-upload` → Shell `curl PUT` → `complete-media-upload`. `recipe-upload-and-insert` — для HTTPS `file_url` или server-side `file_path`, не для Windows-путей.
- Локальная картинка для показа → `kind: image`, ASCII-путь + Shell `curl` (`03-mcp-tools.md`), `full_url` как есть (`/images/…webp`). Не `file` / не правка CDN-пути. Insert файл не заливает. Не ищи helper вне workspace
- CSS → `04-css-generation.md` (цвета только `var(--longread-*)`; градиент на весь shared — через `--longread-bg-image` + `--longread-bg-image-size: 100% 100%`, не одним `background` на классе)
- ИИ-HTML → `05-html-widget-rules.md`. Сначала BRIEF + согласие; локальный `.html`; bake только после «да». Сдача = poll `archives/` + маркер, не draft. В `:::ai_widget` — id.
- Русская типографика → `06-russian-typography.md` (тире —, «ёлочки», …, NBSP в материалах)

Без MCP: не качай `.md` в RAG сам — их кладёт человек. Отдай markdown. Медиа — CDN-заполнитель или URL от пользователя. ИИ-HTML — фрагмент с `:::ai_widget`, не голая ссылка. Русский текст — по `06`.

Не дублируй правила из этих файлов здесь.

**СТОП.** Soft-delete, перенос/порядок, `replace_all` поверх непустого, bake — только после описания процедуры и прямого «да». Нет tool в `tools/list` (invite/ACL, permanent delete, unpublish share, suggestions WIP) → спроси пользователя, не обходи. Не меняй план втихую.
