Plank help · updated 2026-08-09
Как Plank выдаёт готовые документы
Отчёты, аналитика и сводки выдаются в виде аккуратных самодостаточных HTML-документов, которые автоматически подстраиваются под вашу светлую или тёмную тему, — и как это изменить.
Agents: fetch the raw markdown of this page at /ru/help/deliverables.md
Как Plank выдаёт готовые документы
Когда Plank создаёт что-то, что вам нужно прочитать — отчёт, аналитику, сводку, резюме, — по умолчанию он выдаёт аккуратный самодостаточный HTML-документ, а не сырой markdown. Это один файл, оформленный в фирменном стиле Plank, который выглядит готовым в тот же момент, когда вы его открываете, и продолжает выглядеть правильно, если вы скачаете его или перешлёте.
Эта страница написана и для вас, и для ассистента. Ассистент обращается к ней по адресу https://plank.md/help/deliverables.md перед тем, как создать документ, поэтому каждый документ получается единообразным.
Что считается документом
Выдаётся как оформленный HTML: документы, которые читает человек, — отчёты, аналитика, сводки, резюме, обзоры.
Это не затрагивает:
- Рабочие заметки, которые ассистент ведёт для порядка (
log.md,index.md, папкаknowledge/), остаются в markdown — это картотека ассистента, а не документы, которые вы садитесь читать. - Таблицы остаются в формате
.xlsx, и вы по-прежнему можете попросить файл.pdfили Word. HTML — это формат по умолчанию для текстовых документов, а не замена этим форматам. У презентаций свой фирменный стиль и свои два формата: редактируемый.pptx— или HTML, распечатанный в PDF, когда презентация должна выглядеть как арт-дирекшн, а не переделываться. Выбирает жанр; на той странице написано, чего лишается каждый вариант.
У графиков и дашбордов тоже есть своя страница — Дашборды и графики: выбор типа графика, проверенная палитра и самодостаточные компоненты.
Когда вывод описывает связь, а не число — порядок, передачу из рук в руки, вложенность, распределение времени, — рисунок передаёт её целиком, тогда как абзац заставляет читателя собирать её заново. Об этом страница Схемы: когда схема лучше абзаца или таблицы и когда она явно лишняя, какой блок встроенного SVG вставить в лист и каким требованиям он должен отвечать. Прочитайте её перед тем, как рисовать что-либо в документе: схема, скопированная из обычного редактора схем, несёт зашитые цвета — значит, она невидима в другой теме и безымянна для скринридера, и при отрисовке об этом ничто не сообщит.
Планка качества — это навык, а не правило с этой страницы. Два навыка от Plank — Deliverable Writing (заголовок формулирует вывод, у чисел есть база для сравнения, документ заканчивается решением) и Deliverable Design (смысловая точка, отступы, читаемые графики) — задают стандарт для презентаций, документов и дашбордов. Если хотя бы один установлен в этом рабочем пространстве, вызовите его перед выдачей результата. См. Навыки.
Фирменный стиль
Каждый документ — это один самодостаточный файл .html: всё оформление встроено внутрь, а тема автоматически следует за светлым или тёмным режимом, поэтому файл отображается правильно сам по себе, без чего-либо ещё.
- Текст набран шрифтом Inter, а цифры в таблицах — JetBrains Mono.
- Тёплая страница цвета слоновой кости и белый «лист» в светлом режиме; глубокий обсидиан и сланцевый цвет в тёмном.
- Синий акцент Plank, щедрые, но спокойные отступы, прямые углы — это документ, а не приложение.
- Автоматически подстраивается под вашу светлую или тёмную тему и переключается в реальном времени, когда вы её меняете: внутри Plank он следует за темой приложения, а сам по себе — за настройкой системы. Никаких переключателей.
- Адаптивный: на телефоне лист сворачивается на всю ширину экрана.
Канонический шаблон
Начинайте с этого точного шаблона и заполняйте <article class="sheet"> содержимым документа, используя только нужные элементы (надзаголовок, заголовок, вводный абзац, строку метаданных, сетку показателей, разделы, списки, выноску, таблицу, нижний колонтитул). Не переоформляйте его произвольно — смысл именно в единообразии.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>{{TITLE}}</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@500&display=swap"
rel="stylesheet"
/>
<style>
:root {
--ivory: #fafaf7;
--surface: #ffffff;
--stone: #f0ede8;
--mist: #e5e2dc;
--ink: #0a0a0f;
--graphite: #3a3a42;
--muted: #72706b;
--faint: #aaa69e;
--blue: #4f6df5;
--blue-soft: #eef1fe;
--blue-on: #243fbf;
--green: #2f9461;
--green-soft: #edf8f2;
--shadow: 0 24px 80px rgba(10, 10, 15, 0.08);
}
:root[data-theme="dark"] {
--ivory: #0a0a0f;
--surface: #16161d;
--stone: #20202a;
--mist: #2a2a35;
--ink: #fafaf7;
--graphite: #d6d3cc;
--muted: #918e87;
--faint: #6a685f;
--blue: #7d93f8;
--blue-soft: #1c2030;
--blue-on: #aab8fb;
--green: #4cc189;
--green-soft: #14241c;
--shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
}
* { box-sizing: border-box; }
body {
margin: 0;
background: var(--ivory);
color: var(--ink);
font-family: Inter, system-ui, sans-serif;
font-size: 16px;
line-height: 1.55;
-webkit-font-smoothing: antialiased;
transition: background 0.25s ease, color 0.25s ease;
}
.sheet {
max-width: 760px;
margin: 40px auto;
background: var(--surface);
border: 1px solid var(--mist);
border-radius: 10px;
box-shadow: var(--shadow);
padding: clamp(24px, 5vw, 52px);
}
.eyebrow {
display: inline-flex;
align-items: center;
gap: 8px;
border-radius: 6px;
background: var(--blue-soft);
color: var(--blue-on);
padding: 6px 12px;
font-size: 12px;
font-weight: 700;
letter-spacing: 0.02em;
}
h1 {
margin: 18px 0 0;
font-size: clamp(30px, 5vw, 44px);
line-height: 1.05;
letter-spacing: -0.04em;
font-weight: 700;
}
.lead {
margin: 14px 0 0;
color: var(--graphite);
font-size: 18px;
line-height: 1.5;
}
.meta {
display: flex;
flex-wrap: wrap;
gap: 8px 22px;
margin-top: 20px;
padding-top: 18px;
border-top: 1px solid var(--mist);
color: var(--muted);
font-size: 14px;
}
.meta b { color: var(--graphite); font-weight: 600; }
h2 {
margin: 38px 0 0;
font-size: 23px;
letter-spacing: -0.02em;
font-weight: 600;
}
h2 + p, h2 + ul { margin-top: 12px; }
p { margin: 14px 0 0; color: var(--graphite); }
ul { margin: 16px 0 0; padding-left: 0; list-style: none; }
li {
position: relative;
padding-left: 26px;
margin-top: 10px;
color: var(--graphite);
}
li::before {
content: "";
position: absolute;
left: 6px;
top: 11px;
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--blue);
}
.callout {
margin-top: 20px;
border: 1px solid var(--mist);
border-left: 3px solid var(--blue);
border-radius: 8px;
background: var(--ivory);
padding: 16px 18px;
}
.callout strong { color: var(--ink); }
.stats {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 14px;
margin-top: 20px;
}
.stat {
border: 1px solid var(--mist);
border-radius: 8px;
background: var(--ivory);
padding: 16px;
}
.stat .n {
font-size: 32px;
font-weight: 700;
letter-spacing: -0.04em;
color: var(--blue);
}
.stat .k { margin-top: 4px; color: var(--muted); font-size: 13px; }
table {
width: 100%;
border-collapse: collapse;
margin-top: 16px;
font-size: 15px;
}
th {
text-align: left;
padding: 11px 14px;
color: var(--muted);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.04em;
text-transform: uppercase;
border-bottom: 1px solid var(--mist);
}
td {
padding: 10px 14px;
border-bottom: 1px solid var(--stone);
color: var(--graphite);
}
td.num { font-family: "JetBrains Mono", monospace; text-align: right; }
.tag {
display: inline-flex;
padding: 3px 9px;
border-radius: 6px;
font-size: 12px;
font-weight: 600;
}
.tag.up { background: var(--green-soft); color: var(--green); }
.tag.flat { background: var(--stone); color: var(--muted); }
footer {
margin-top: 36px;
padding-top: 18px;
border-top: 1px solid var(--mist);
color: var(--faint);
font-size: 13px;
}
@media (max-width: 640px) {
.sheet { margin: 0; border-radius: 0; border-left: 0; border-right: 0; }
.stats { grid-template-columns: 1fr; }
body { font-size: 15px; }
}
</style>
</head>
<body>
<article class="sheet">
<!-- содержимое документа: eyebrow, h1, lead, meta, stats, h2-разделы,
списки, callout, таблица, footer — используйте только то, что нужно документу -->
</article>
<script>
// Тема автоматически следует за окружением — без ручного переключателя.
// • Внутри Plank она отслеживает тему приложения (которая может отличаться от системной)
// и обновляется в реальном времени, когда вы переключаете тему при открытом файле.
// • Сам по себе (скачанный или присланный) файл следует за настройкой системы и
// реагирует в реальном времени, если вы меняете тему системы.
(function () {
var root = document.documentElement;
// Тема, заданная приложением; когда она задана, она важнее системной настройки.
var override = null;
var mql =
window.matchMedia &&
window.matchMedia("(prefers-color-scheme: dark)");
function apply() {
root.setAttribute(
"data-theme",
override || (mql && mql.matches ? "dark" : "light"),
);
}
apply();
if (mql) {
var onChange = function () { apply(); };
if (mql.addEventListener) mql.addEventListener("change", onChange);
else if (mql.addListener) mql.addListener(onChange);
}
window.addEventListener("message", function (e) {
var d = e && e.data;
if (
d &&
d.type === "plank:set-theme" &&
(d.theme === "dark" || d.theme === "light")
) {
override = d.theme;
apply();
}
});
})();
</script>
</body>
</html>
Изображения и имена файлов
Два простых правила делают HTML-документы переносимыми и удобными для поиска. Они касаются каждого создаваемого вами HTML-файла, а не только дашбордов.
Ссылайтесь на изображения по пути относительно папки самого HTML-файла. chart.png загружается из той же папки, images/q4.png — из подпапки, ../shared/logo.png — на уровень выше. Пути отсчитываются не от корня рабочего пространства, и ведущий слеш (/chart.png) тоже разрешается относительно папки самого файла, а не корня. Поэтому держите изображение рядом с HTML (или в подпапке) и ссылайтесь на него относительным путём; абсолютный или корневой URL тихо не загрузится. (Для дашбордов полные правила по ресурсам есть в разделе Интерактивные HTML-панели.)
Давайте каждому HTML-файлу описательное, отражающее содержимое имя — q4-revenue-report.html, acme-invoice.html — а не общий index.html. Рабочее пространство накапливает множество HTML-файлов в множестве папок, и здесь нет соглашения об index.html как точке входа по умолчанию; именно имя помогает различать файлы в списках и поиске.
Проверьте русский перед тем, как передать документ
Русский документ, в котором вместо «ёлочек» стоят "прямые кавычки", вместо тире — дефис, а ё пропущена, читается как чужой, как бы хорошо он ни был написан. Это не вопрос вкуса, поэтому это проверяется, а не запоминается — тем же инструментом, что проверяет презентации: он принимает и HTML-файл:
mkdir -p /workspace/scripts/deck
curl -sSfL -o /workspace/scripts/deck/plank_deck_qa.py https://plank.md/help/assets/plank_deck_qa.py
python3 /workspace/scripts/deck/plank_deck_qa.py квартальный-отчёт.html
В этом режиме ничего не рендерится, поэтому LibreOffice не нужен: инструмент читает видимый текст, пропускает <script>, <style> и <code> и сообщает про кавычки, тире, диапазоны, формат чисел, неразрывные пробелы и пропущенную ё. При ошибке код возврата ненулевой, так что инструмент встраивается в тот же цикл «собрать → проверить → исправить». Чего он не проверяет — это сам текст; что именно оставлено за скобками и почему, написано в разделе Проверка готовой презентации.
Эта же команда проверяет и схемы в файле. Встроенный <svg>, залитый буквальным цветом вместо токена или оставшийся без доступного имени, — это тоже ошибка, причём в английском документе ровно так же, как в русском. Правила собраны на странице Схемы; исправляйте найденное тем же порядком.
Хотите что-то другое?
Это значение по умолчанию, а не правило. Формат всегда под вашим контролем:
- Нужен markdown (или PDF, или Word)? Просто скажите — «дай мне это в markdown» — и вы это получите.
- Есть свой фирменный стиль или HTML-шаблон? Укажите Plank на него, и он будет использовать ваш.
- Хотите, чтобы это закрепилось на всё рабочее пространство? Добавьте строку в файл
AGENTS.mdэтого пространства — например, «Документы: обычный markdown» или «Документы: использоватьtemplates/report.html». Plank читаетAGENTS.mdи следует вашему предпочтению вместо этого значения по умолчанию каждый раз в этом пространстве.