Initial wiki push - 2026-04-10

This commit is contained in:
Stream AI
2026-04-10 20:14:25 +00:00
commit 0d9afaf05a
43 changed files with 3008 additions and 0 deletions

171
sources/skill.md Normal file
View File

@@ -0,0 +1,171 @@
---
pageType: source
id: source.skill
title: SKILL
sourceType: local-file
sourcePath: /home/node/.openclaw/skills/diagram-table/SKILL.md
ingestedAt: 2026-04-10T13:17:08.264Z
updatedAt: 2026-04-10T13:17:08.264Z
status: active
---
# SKILL
## Source
- Type: `local-file`
- Path: `/home/node/.openclaw/skills/diagram-table/SKILL.md`
- Bytes: 3890
- Updated: 2026-04-10T13:17:08.264Z
## Content
````text
# SKILL.md — diagram-table
## Назначение
Генерация таблиц в виде PNG-картинок для отправки в Telegram. Таблицы в текстовом формате плохо читаются в Telegram (моноширинный шрифт, смещения), поэтому конвертируем их в красивую картинку.
---
## Архитектура
```
Вход: JSON/текстовая таблица
Генерация PNG (Pillow)
Отправка в Telegram (или сохранение в файл)
```
---
## Файлы
- `SKILL.md` — этот файл
- `scripts/generate_table.py` — генерация PNG из таблицы
- `scripts/send_table.py` — отправка таблицы в Telegram
---
## generate_table.py
**Вход (JSON):**
```json
{
"headers": ["Проект", "Статус", "Исполнитель"],
"rows": [
["Snowbike RAG", "active", "Dev-агент"],
["Noisemap FR24", "paused", "Слава"]
],
"title": "Бэклог проектов",
"width": 800,
"theme": "dark"
}
```
**Параметры:**
- `headers` — список заголовков (обязательно)
- `rows` — список строк (обязательно)
- `title` — заголовок таблицы (опционально)
- `width` — ширина картинки (по умолчанию 800)
- `theme` — `dark` (по умолчанию) или `light`
**Выход:** PNG файл
**Цвета (dark theme):**
- Фон: `#0d1117`
- Заголовок: `#1a3a2a` (зелёный)
- Чередование строк: `#161b22` / `#0d1117`
- Текст: `#e6edf3`
- Границы: `#30363d`
**Цвета (light theme):**
- Фон: `#ffffff`
- Заголовок: `#238636`
- Чередование строк: `#f6f8fa` / `#ffffff`
- Текст: `#24292f`
- Границы: `#d0d7de`
---
## send_table.py
**Использование:**
```bash
./send_table.py "Бэклог" '{"headers":[...], "rows":[...]}' [BOT_TOKEN] [CHAT_ID]
```
**Или через stdin:**
```bash
echo '{"headers":[...], "rows":[...]}' | ./send_table.py "Заголовок"
```
**Параметры:**
- Аргумент 1: заголовок таблицы (или JSON, если 2 аргумента)
- Аргумент 2: JSON (если 1й аргумент — заголовок)
- BOT_TOKEN: из ~/.openclaw/.env если не передан
- CHAT_ID: из ~/.openclaw/.env если не передан
---
## Пример использования в агенте
```python
import subprocess
import json
table_data = {
"headers": ["Проект", "Статус", "Исполнитель"],
"rows": [
["Snowbike RAG", "active", "Dev-агент"],
["Noisemap FR24", "paused", "Слава"]
],
"title": "Бэклог проектов"
}
result = subprocess.run(
["python3", "skills/diagram-table/scripts/generate_table.py"],
input=json.dumps(table_data),
capture_output=True
)
# result.stdout — путь к PNG файлу
```
---
## Шрифты
- Заголовок: DejaVu Sans Bold, 16px
- Ячейки: DejaVu Sans, 14px
- Путь к шрифтам: системные `/usr/share/fonts/truetype/dejavu/` или встроенный fallback
---
##Marginals
- Минимум 1 колонка, 1 строка
- Максимум 20 колонок, 100 строк
- Если строк > 20 — разбивает на несколько страниц внутри одного PNG (часть N/M)
- Высота картинки — автоматическая (по количеству строк)
## Ограничения send_table.py
- BOT_TOKEN и CHAT_ID должны быть в `~/.openclaw/.env`
- Формат: `TELEGRAM_BOT_TOKEN=<token>`, `TELEGRAM_CHAT_ID=<id>`
````
## Notes
<!-- openclaw:human:start -->
<!-- openclaw:human:end -->
## Related
<!-- openclaw:wiki:related:start -->
### Referenced By
- [Skill: ontology](concepts/skill-ontology.md)
- [Skill: telegram-collector](concepts/skill-telegram-collector.md)
- [Skill: voice-tts](concepts/skill-voice-tts.md)
- [Skills: diagram-png & diagram-table](concepts/skill-diagram.md)
- [Skills: youtube-search & yandex-search](concepts/skill-search.md)
<!-- openclaw:wiki:related:end -->