Build a dashboard from idea to live link in one pass: create the visualization, file it in one shared catalog, cross-link it with the others, publish to GitHub Pages and return the working URL right away. Use when results carry more than one fact to decide on. Triggers: /dash, build a dashboard, show it visually, publish the dashboard, give me the dashboard link.
Installs into .claude/skills of the current project.
Are you the author of Dash?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tonydzi-dash)
---
name: dash
description: "Build a dashboard from idea to live link in one pass: create the visualization, file it in one shared catalog, cross-link it with the others, publish to GitHub Pages and return the working URL right away. Use when results carry more than one fact to decide on. Triggers: /dash, build a dashboard, show it visually, publish the dashboard, give me the dashboard link."
license: MIT
version: 1.0.0
---
# /dash — дашборд от идеи до живой ссылки
> 🧒 В отчёте Антону не забудь блок «Простыми словами».
**Три правила Антона (06.08.2026), которые этот скилл исполняет:**
1. **Всегда стараться делать визуализацию в любой сессии.** Не «предложить», а сделать.
2. **Каждая новая визуализация перелинковывается с существующими и выкладывается на GitHub.**
3. **Ссылку даёшь СРАЗУ ЖЕ, как сделал, и открываешь панель в правой части экрана.**
Фундамент: витрина https://tonydzi.github.io/dashboards/ — ссылка оттуда
открывается у любого пира без синка, VPN и логина. Канон: память `dashboards-live-on-hub`,
Библия `reglament-dashbordy-na-github-pages`, `CLAUDE.md` §2.4.
---
## Шаг 1 — Решить, что дашборд нужен (по умолчанию нужен)
Триггер: результат сессии несёт **больше одного факта**, по которому принимают решение —
данные, статус, счётчики, аудит, список, сравнение, «покажи X», итог раскатки, разбор.
Не строю: однострочный ответ · «готово» · один-два факта · спор без данных · Антон сказал
«тут дашборд не нужен» на этом типе задач. **Решил не строить — пишу это строкой с причиной,
а не молчу.** Стена текста вместо панели = нарушение правила, а не стиль.
## Шаг 2 — Собрать
Самодостаточный HTML в **`$OBSIDIAN_VAULT\_Dashboards`** (единый каталог, второй копии нигде).
Палитра как у соседей: `--canvas:#010409 --panel:#161b22 --border:#30363d --ink:#e6edf3
--dim:#8b949e --link:#2f81f7 --green:#3fb950 --[человек]:#d29922 --red:#f85149`.
АК-47: один файл, без внешних библиотек и CDN, чтобы открывался всегда и чинился руками.
Широкое (таблицы, диаграммы) прячем в `overflow-x:auto`, страница по горизонтали не едет.
⚠️ **Цифры в панели обязаны быть настоящими.** Нет данных — пишем «не измерено», а не
правдоподобное число. Панель существует ради решений.
## Шаг 3 — Перелинковать и выложить
```
python ~/.claude/scripts/dashboards_build_public.py --build
```
Сборщик сам: отсеет CRM и секреты, замаскирует имена (половина символов, цифры не трогает),
**сверит все числа до и после** (разошлись = файл не поедет), врежет в каждую панель полосу
навигации «все дашборды + категория + соседи» и пересоберёт индекс по категориям.
Затем публикация из `~/.claude/_dashboards_publish/dashboards`:
```
git add -A && git commit -m "новый дашборд: <имя>" && git push origin main
```
Сборка Pages занимает несколько минут. Если статус висит `building` дольше десяти минут или
упал в `errored`, дёрни пересборку через API `POST /repos/.../pages/builds` — легаси-сборщик
у нас уже падал один раз с безликим «Page build failed» и чинился ровно этим.
## Шаг 4 — Отдать человеку. НЕМЕДЛЕННО, тем же сообщением
**Три вещи в одном ответе, ни одну не откладываем:**
1. **Живая ссылка** `https://tonydzi.github.io/dashboards/<Имя-Файла>.html`
— прямо в тексте, а не «лежит в папке». Ссылка на локальный путь у коллеги битая.
2. **Открыть в правой части экрана:**
- в этом приложении — `mcp__Claude_Browser__preview_start` с URL панели (браузерная
панель открывается справа), либо `SendUserFile` с `display:"render"`;
- [коллега] на её машине дополнительно `Start-Process "<путь к файлу>"` — она просила
открывать в браузере, а не только присылать файлом.
3. **Абсолютный путь текстом** — Антону ссылки-файлы не кликаются, путь нужен строкой.
⛔ «Дашборд готов, посмотри в папке» = правило нарушено. Готово = ссылка есть и панель уже
открыта у человека на экране.
## Шаг 5 — Записать след
- Счётчик: `python ~/.claude/scripts/dashboard_log.py built --type "<тип задачи>" --file "<путь>"`.
- Если панель обновляется регулярно, у неё должен быть генератор, и генератор пишет
**один** файл в `_Dashboards`, а не копии.
---
## Грабли, уже оплаченные (06.08.2026)
- **Маска съедала цифры** внутри хендлов и почт → гейт чисел краснел на 8 файлах. Цифры не
трогаются никогда, даже внутри маскируемого слова.
- **Детектор секретов ловил слово «task-»** и снимал с публикации 23 здоровые панели.
Ложный сторож хуже отсутствующего: его перестают читать.
- **CRM-фильтр сравнивал подстроки** и прятал наши же панели про recall, потому что внутри
«Recall» сидит «call». Сравнивай слова.
- **`_Dashboards` в волте на машине [коллега] синкается ТОЛЬКО в одну сторону** (шара
`anton-knowledge` = receiveonly): панель, рождённая у неё, по синку наружу не уедет
вообще. Именно поэтому доставка идёт через GitHub, а не через общую папку.
«Положил в правильное место» ≠ «доставлено».
## Границы
- CRM наружу не публикуем. Панель про людей, лиды и контакты остаётся в волте; сборщик
определяет это сам, обойти можно только явным `--include-crm`.
- Секреты не публикуем никогда, детектор жёсткий.
- Правило про то, ЧТО строить по умолчанию — `prefer-visual-dashboards` (§2.4). Этот скилл
про полный путь от сборки до экрана человека.
<!--kit-footer-->
---
**Like this skill?** It is one of 100 in [second-brain-starter-kit](https://github.com/tonydzi/second-brain-starter-kit): the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with `npx skills add tonydzi/second-brain-starter-kit`. Everything is open source and free, so take what you need.
Flagships worth a look on their own: [secondop-panel](https://github.com/tonydzi/secondop-panel) (a second opinion from a panel of external models), [claude-memory-tidy](https://github.com/tonydzi/claude-memory-tidy) (stop your agent's memory from rotting), [telegram-mcp-kit](https://github.com/tonydzi/telegram-mcp-kit) (your own Telegram over MCP in about 15 minutes).
Author: **Anton Dziatkovskii**, Palo Alto AI Research Lab. Telegram [@tonydzi](https://t.me/tonydzi) - WhatsApp [+1 341 222 9178](https://wa.me/13412229178) - X [@Tony_Stef_](https://x.com/Tony_Stef_)
**Engineers: want to test-drive this setup?** Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.