---
name: document-authoring
description: Create, inspect and deliver charts, PDFs, Word documents and spreadsheets, and open animated browser presentations.
metadata:
  author: "Louis Grenard <louis@getleon.ai>"
  version: "1.0.0"
---

# Document Authoring

1. Establish the requested format, audience and content. Reuse supplied source material.
2. Choose the creation tool based on the requested output:
   - Charts: use `document.echarts.render` with one named entry per requested chart and native ECharts JSON options. Ground the values in supplied/retrieved data, label units, and select only the requested image formats. Each chart becomes a separate SVG/PNG artifact. Use both formats when a vector document figure and raster preview are useful. Inspect a PNG preview and fix clipping or misleading axes before delivering it. Do not use image-generation models to invent or redraw quantitative charts.
   - Presentations: use `document.slidev.create` for an editable project, author `slides.md` and `style.css` with the file tool, and place selected chart/image assets in `public/`. Treat the scaffold as editable: owner choices for theme, layout, colors, typography, icons and animation override all defaults. Replace scaffold styles and components when needed; ensure additional themes have compatible installed dependencies. Use local Lucide icons and coherent cover/section/content layouts. Default to fully visible slides and a simple `transition: fade` between them. Animate mechanisms inside the slide automatically while it is active: moving evidence along a flow, state changes, process cycles or grounded chart evolution. Use CSS or `v-motion` with a static reduced-motion fallback. Avoid generic text/panel entrance and exit effects. Add click-triggered reveals (`v-click` or click motion variants) and elaborate slide transitions only when the owner explicitly requests them. Ground technical claims in retrieved context/source and label illustrative data. Batch independent grounding reads and author related files together. Use fenced code or HTML-escaped `<pre v-pre><code>` for literal examples; keep Vue markup balanced. Run `inspect`, then `check`; during repairs select affected `options.slides`. Targeted success has `complete=false` and cannot establish full-deck coverage. Run the default full check on the final source and require `scope=full`, `complete=true` and `ok=true`. Batch independent checks/previews and requested exports once source is stable; never edit files while those operations are reading them. Reuse current-run evidence and successful results while relevant source/assets are unchanged. Preview early/late motion frames and, only for requested staged reveals, initial/final click states; a passing check alone does not establish visual or animation quality. Finish with `present` to start/reuse a managed native Slidev server and open the deck in the host’s default browser. Return its audience and presenter links, Space/Right/Left navigation and `f` fullscreen control. Verify opening with the browser tool; if `browserOpened=false`, explain the reported issue and host-local URL scope. Use Satellite for device-side presentation when Leon runs remotely and ensure the project is on that device. Keep the session until the owner finishes, then `stop` its sessionId. Export web/PDF/PNG/PPTX downloads only when requested; opening a deck should not require extracting files or running commands. A web ZIP includes `serve.mjs`: extract and run `node serve.mjs`, then open its localhost URL; it can also be hosted as a static site. PDF/PNG and PowerPoint exports capture states rather than native browser motion. Normal PPTX contains slide images; editable PPTX may rasterize complex elements and needs fidelity review. Shared web decks omit notes by default; an optional source ZIP (`includeSource=true`) always contains them; omit that archive unless requested.
   - PDF: write a local `.typ` source with the file tool, then call `document.typst.compile`. Keep the source and selected assets together in a project directory. Use the smallest `rootPath` containing that project. Built-in/local assets require no generation-provider account or package download.
   - Editable Word: use `document.document.create` with `format=docx`. Typst does not export DOCX.
   - SVG/PNG: compile Typst with the requested format. Each selected page becomes an image artifact. For a standalone figure, set the page dimensions to fit the figure rather than exporting a full report page.
   - Plain text, CSV, Markdown and source files: use existing file writing.
   - Hosted generation or Office formats requiring a provider: inspect `document.document.capabilities`, then use `generate` with the configured defaults. Reserve `generateWithModel` for an explicitly owner-requested provider/model.

If hosted generation returns `selection_required`, ask the owner to select a provider or use local Typst/DOCX creation when it satisfies the request. Save a choice with `configure` only if asked to remember it.

3. Use readable typography, consistent headings and generous spacing. Typst source supports tables, lists, equations, references and figures; use these instead of flattening everything into paragraphs. Generate chart assets with `echarts.render` or reuse supplied SVG/PNG assets. For PDFs, copy selected assets into the Typst project with the shell tool, embed them with `image` inside `figure`, and add a useful caption. For DOCX, pass each selected absolute artifact path in `content.sections[].images` with `caption` and `altText`; the writer preserves proportions and includes PNG fallbacks for SVG. Images follow the section's paragraphs, so use separate sections to position figures between text blocks. Keep chart values grounded in supplied or retrieved data. Use `typst.listFonts` before choosing multilingual fonts, and provide local `fontPaths` when needed. Inspect compiler diagnostics and fix unknown fonts or layout warnings; do not silently produce missing glyphs. Preview-package imports may download missing packages, so avoid them for offline work.
4. Inspect the resulting content with the file tool. Render PDF pages with `readPdf` and inspect layout. For Word/Office files use an available renderer to inspect a PDF export; disclose when only structural/content checks were possible.
5. Fix clipped text, missing content or layout defects before delivering the final revision. A provider's success response alone is not a quality check.
6. Generated files already have artifact references. For existing files use `operating_system_control.file.attach`. Do not duplicate attachments, paste base64, or use server-local file markers as downloads.
