Document Templates & Themes

SkillFiles & storage

Visual theme catalog and template handling for generated documents (PPTX, DOCX, PDF, XLSX). Use whenever a document request names a theme, or provides a template file to adapt.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Document Templates & Themes skill

What this skill tells your AI

The instructions your AI receives, as published by navinspire-ia/navin in navin/skills/document-templates/SKILL.md and read by ahel’s review.

Order of work (mandatory)

  1. Start now. A document request is a simple job, template or not. Do not file a board plan and wait for Build. Write the JSON, render, convert, deliver the PPTX/DOCX in this turn.
  2. Lock the chosen template. PPT or Word: the Document Template Attachment, or the theme the user named, is the look. Read metadata.json + design-system.json + theme.css. Do not invent hex values, fonts, or a second design system.
  3. Fill it. Replace every sample string. Keep the blocks. Each PPT theme already has photos/background.jpg, photos/left.jpg, photos/right.jpg. The engine places them. A file the user joined (logo, icon, screenshot) replaces that slot. Delete a block only if it has no content, then rebalance.
  4. Polish on that template. presentation-designer / professional-writer / QA. Theme motion tokens (--nv-duration, --nv-ease, .nv-anim-fade / rise / stagger) are the animation on PPT/Word.
  5. Three.js / framer-motion / Lenis only on a web page, and only if the user asked for that wow or the product is 3D. Never put them on a slide or a Word page. A WebGL slide is a screenshot. That ignores the template.

Ignoring the selected template is a failed deliverable.

Overview

Two ways to control the look of generated documents:

  1. Built-in themes - the user picks a theme by name; apply its exact spec below.
  2. User templates - the user provides a .pptx / .docx / .xlsx file; open it and build inside it so the result inherits its masters and styles.

Never mix themes. Pick one and apply it to every slide/page consistently.

When the user already selected a PPT in Templates de documents, that attachment is the theme. Fill it with today's presentation bar (arc, stagecraft, critique, notes, QA). Do not replace Aurora Glass / Architect / Startup with magazine/swiss/corporate. Those three are only the fallback when nothing is attached.

Each PPT theme is a design system: design-system.json (tokens), theme.css (--nv-* variables), sample slide_XX.html (lookbook, do not rewrite), and 35 master layouts in templates/ppt/_engine. New decks are generated from those masters. Read _engine/README.md before writing HTML.

Motion on documents is the theme motion block (duration, easing, fade/rise). Do not drop Three.js, framer-motion, GSAP or Lottie into a PPT/DOCX/XLSX template. Those belong on a marketing site (ui-ux-pro-max + Motion; three only when the product is actually 3D). A WebGL slide exports as a picture.

Language, locale and direction (mandatory)

Visual template selection never selects the content language. Before any PPTX, DOCX, PDF, XLSX or CSV generation, require the user to explicitly choose the output language. Do not infer it from the interface, prompt, template, party names or location; ask and stop if it is missing.

  • Replace and translate every sample string, including headers, footers, chart labels, table headings, notes and metadata. Keep the selected language from source HTML/data through every export.
  • Use locale-correct dates, decimal/grouping separators, currencies and typographic conventions consistently.
  • For Arabic and other RTL languages, set the final HTML lang and dir, support html[dir="rtl"], prefer CSS logical properties, mirror layouts where useful, retain logical reading order, and use fonts covering both Latin and Arabic scripts. Apply equivalent bidi/RTL settings in Office outputs.
  • CSV exports are UTF-8. Select and announce the locale-appropriate delimiter and document it with the output.

Typography & icon rules (mandatory, all documents)

  • Never use em or en dashes (U+2014 / U+2013) in generated content. Use commas, colons, periods or parentheses instead. Audit every text before delivery.
  • Never use emoji or generic AI-style icons (📊 ✅ 💡 🚀 😊 …) in slides, documents or sheets. Use clean typographic elements instead: numbers (01, 02, 03), plain monochrome glyphs (✓ ✗ + −), or simple geometric shapes (bars, dots, squares) consistent with the design.

Dynamic language contract (mandatory)

  • Every built-in HTML template uses lang="und" intentionally. Its visible text is sample content, never final copy. Replace every text node, including small labels, charts, legends, tables, headers and footers, with content in the language explicitly selected by the user.
  • Set the completed HTML/document language and writing direction. For Arabic and other RTL languages, localize the layout as well as the words: use bidi-aware editable text, logical reading order, mirrored alignment where appropriate and fonts with full glyph coverage.
  • Raster images and CSS backgrounds must be language-neutral. Before reuse, verify that they contain no words, numbers tied to a locale, captions or UI screenshots with source-language text. Replace any text-bearing image or rebuild its labels as editable text in the selected language.
  • Never export while source-language sample text remains. Perform a final visual and textual scan before delivery.

Editable and complete (mandatory, all documents)

  • Deliverables are working files, not pictures of files. Text is text, tables are tables, charts are charts. A PPTX made of full-slide screenshots, a DOCX wrapping a rendered page or an XLSX holding an image of a table is a failed deliverable, however good it looks.
  • HTML templates are a design source, not the output format. Fill the HTML with the real content, then convert it with the bundled converter for the format: html2pptx.py for decks, html2docx.py for Word, html2xlsx.py for spreadsheets. The runtime context gives the exact command, interpreter included. Only PDF is rendered from the HTML directly. Refine the converted file with python-pptx, python-docx or openpyxl; never rebuild a design by hand from scratch.
  • Every block of a template gets real content, or it is removed and the layout rebalanced. No sample text, no placeholder figures, no empty cards, no orphan image frames.
  • Scan the finished file before delivering: leftover sample copy, untranslated labels, empty blocks, em dashes, emoji.

Built-in theme catalog

ThemePalette (bg / text / accent 1 / accent 2)HeadingsBodyCharacter
executive#FFFFFF / #1A2333 / #1F3A5F / #C9A227Georgia boldCalibriSober, bank-grade; thin gold rules under titles
minimal#FFFFFF / #111111 / #111111 / #9CA3AFHelvetica/Arial light, largeHelvetica/ArialExtreme whitespace, no decoration, one idea per slide
tech#0F172A / #E2E8F0 / #3B82F6 / #22D3EESegoe UI/Arial boldSegoe UI/ArialDark mode, thin blue accents, monospace for figures
bold#FFFFFF / #000000 / #FFD400 / #000000Arial Black, oversizedArialStatement typography, yellow highlight blocks
warm#FAF3E0 / #3F2A1E / #C1553D / #8A6F5CGeorgiaCalibriCream paper feel, terracotta touches, friendly
nature#F7F7F2 / #1E3325 / #1E4D2B / #9CAF88Calibri boldCalibriGreen tones, generous margins, organic
elegant#FCFAF9 / #2B2B2B / #2B2B2B / #D9A5A5Didot/Georgia italic titlesCalibri lightEditorial, blush accents, hairline dividers
corporate#FFFFFF / #1F2937 / #0B5394 / #6B7280Arial boldArialClassic business blue, safe for any audience

Applying a theme

  • PPTX (python-pptx): set slide background fill, title/body fonts and RGBColor per the palette; title 32-40pt, body 16-20pt; consistent margins (≥0.5in); accent 1 for titles/dividers, accent 2 sparingly (highlights, chart series).
  • DOCX (python-docx): define Heading 1-3 and Normal styles once with the palette and fonts, then use styles only - never inline-format paragraph by paragraph.
  • XLSX (openpyxl): header rows filled with accent 1 + white bold text; alternating row tint derived from the background; freeze panes on headers.
  • PDF (reportlab): mirror the same palette and font hierarchy.
  • Charts and shapes use accent colors only; grayscale for everything else.

User-provided templates

When the user supplies a template file (in the workspace, attached, or at a path they give):

  1. Open it, don't recreate it: office_template.py inspect <file> lists a PPTX's layouts with their placeholders and boxes, theme fonts and colours, and a DOCX's styles, sections, header, footer, tables and {{placeholders}}.
  2. Reuse its layouts/styles: office_template.py build brand.pptx --slides deck.json -o out.pptx adds slides on the template's own layouts (title, subtitle, bullets with levels, picture, table, notes); office_template.py fill <file> --data values.json -o out replaces {{key}} everywhere (body, tables, headers, footers, notes, groups), one paragraph per list item, {{image:key}} pictures and {{rows.field}} repeated table rows, keeping the run formatting. Do not inject a different palette on top.
  3. Fall back to Presentation('template.pptx'), Document('template.docx'), load_workbook('template.xlsx') only for what those commands do not cover.
  4. Save as a new file - never overwrite the user's template. Then doc_check.py the result and preview_document.py it.

Suggested convention: keep reusable templates in templates/ inside the workspace; list them for the user when they ask "what templates do I have". Creating and versioning a branded template library is template-manager's job - defer to it for that.

Downloading templates

Only fetch a template from the web when the user gives an explicit URL or asks for it. Prefer openly licensed sources, note the license in your reply, and save the file under templates/ before adapting it.

Official PPT catalog (14)

The picker shows only these folders. Missing folders are hidden. Retired names still resolve to a living theme.

IdJob
startupPitch produit, leve de fonds
aurora_glassLancement SaaS, keynote verre
neon_impactReveal nuit, gaming
premium_blackLuxe sombre, mode
editorial_luxeRecit magazine, marque
textbookFormation, pedagogie
reponse_appel_offreAO public, memoire
competitor_analysis_blueWar room, concurrentiel
architectImmobilier, spatial
premium_greenESG, climat
numbers_cleanDonnees, finance
black_and_white_cleanSuisse, board sobre
minimalist_2Une idee, page claire
portfolioAgence, book creatif

Recommended HTML templates by document type

When the user did not attach a template, pick one of these (first match that exists in the library) instead of inventing a design:

RequestPrefer (PPT HTML library names)
Magazine / story (ask_user style a)editorial_luxe
Swiss / data (ask_user style b)black_and_white_clean, numbers_clean
Corporate / board (ask_user style c)textbook, startup, premium_black
Project / investor pitch decktextbook, black_and_white_clean, startup, premium_black
Brand deck / narrativeeditorial_luxe, minimalist_2, black_and_white_clean
Product launch / SaaS keynoteaurora_glass, startup, neon_impact
Training / internal reporttextbook, numbers_clean, minimalist_2
Competitive / analysiscompetitor_analysis_blue, numbers_clean

Never fall back to a freestyle Inter + gradient deck. Template HTML beats a hand-made design every time.

Rules

  • Theme named in the request → apply its exact hex values, not an approximation.
  • Template file provided → template wins over any theme.
  • Neither → pick a recommended HTML template from the table above (PPT) or the theme that fits the audience, and say which one you used.
  • Legal templates keep governing law and dispute forum configurable. Validate parties, definitions, dates, duties, cross-references, annexes and signatures for contract-wide consistency.
  • For every contract DOCX or PDF, preserve the completed HTML source and include a clear warning that qualified local counsel must review it before signature.

Signals

GitHub stars
22
Forks
4
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
document-templates
Source
github.com/navinspire-ia/navin