Загружай этот скилл когда нужно превратить словесное описание в диаграмму: блок-схему процесса, sequence-диаграмму взаимодействия, схему архитектуры сервисов или ER-схему базы данных. Выход всегда в синтаксисе Mermaid.
Вход: natural language описание (текст на stdin, файл или прямо в чате).
Выход:
mmdc (mermaid-cli) — локальный рендер в PNG/SVG/PDFscripts/mermaid_to_markdown.pyШаги при генерации диаграммы:
Уточни тип диаграммы. Если пользователь не назвал тип — определи по описанию: процесс/алгоритм → flowchart; обмен сообщениями во времени → sequence; сервисы и связи → architecture; сущности и связи БД → er. Если неоднозначно — спроси или предложи наиболее вероятный тип.
Составь mermaid-код. Используй шаблоны из templates/ как стартовую
точку. Бери узлы и связи ТОЛЬКО из описания пользователя, не выдумывай
лишние. Именуй узлы коротко и осмысленно.
Проверь синтаксис. Прогони код через scripts/mermaid_to_markdown.py
(валидирует кавычки и спецсимволы) или вставь в mermaid.live. Убедись,
что все связи замкнуты (каждый упомянутый узел соединён хотя бы одной
стрелкой) и нет «висячих» узлов.
Отрендерь. Предложи пользователю mermaid.live, mermaid-cli (mmdc)
или MCP-рендер. Если нужен файл — сформируй markdown с mermaid-блоком.
# Из файла с описанием
python3 scripts/mermaid_to_markdown.py --type flowchart input.txt --output out.md
# Из stdin
echo "A -> B -> C" | python3 scripts/mermaid_to_markdown.py --type flowchart
# С заголовком секции
python3 scripts/mermaid_to_markdown.py --type er --title "Схема БД" schema.txt
Описание: «Пользователь добавляет товар в корзину. Если товар в наличии — переходим к оформлению, иначе показываем сообщение о недоступности. После оформления отправляем заказ на склад.»
flowchart TD
A[Пользователь] --> B{Товар в наличии?}
B -- Да --> C[Оформление заказа]
B -- Нет --> D[Сообщение: недоступен]
C --> E[Отправка на склад]
D --> A
Описание: «Клиент отправляет запрос на подписку. Сервис проверяет платёж, списывает средства и возвращает подтверждение. При ошибке платежа клиент получает сообщение об ошибке.»
sequenceDiagram
participant C as Клиент
participant S as Сервис
participant P as Платёжный шлюз
C->>S: Запрос на подписку
S->>P: Проверка платежа
P-->>S: Успех
S->>C: Подтверждение
S-->>C: Ошибка платежа
flowchart LR
subgraph Frontend
Web[Web-клиент]
end
subgraph Backend
API[API Gateway]
Auth[Auth Service]
Orders[Orders Service]
end
subgraph Data
DB[(PostgreSQL)]
Cache[(Redis)]
end
Web --> API
API --> Auth
API --> Orders
Orders --> DB
Orders --> Cache
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ ORDER_ITEM : contains
PRODUCT ||--o{ ORDER_ITEM : "ordered in"
CUSTOMER {
int id PK
string name
string email
}
ORDER {
int id PK
int customer_id FK
date created_at
}
ORDER_ITEM {
int id PK
int order_id FK
int product_id FK
int quantity
}
PRODUCT {
int id PK
string title
decimal price
}
[, ], {,
}, (, ), :, #) — оборачивай label в одинарные или двойные
кавычки: A["Текст: с двоеточием"].subgraph) или на несколько диаграмм. Скрипт предупредит об этом.||--o{, }o--|| и т.п. — не путай
с flowchart-стрелками.participant, сообщения — через
->> (запрос) и -->> (ответ).