GAIA Technical Presentation
Turn one source document into a credible technical slide presentation for an engineering audience — architecture, methodology, contracts, and metrics — as a single self-contained HTML file that exports cleanly to PDF, one slide per printed page.
This skill produces the technical tier only. For a leadership / decision-maker version of
the same source, use the gaia-executive-presentation skill.
Invocation
gaia-technical-presentation <source-path>
- Input: a path to a repo file (
.md,.mdx,.json,.html,.txt) — the primary form. Pasted text is accepted as a fallback when no file exists. - Output:
presentations/<source-path-slug>.technical.htmlat the repo root, where the slug is the source path with/replaced by-(sohub/agents/chat/python/README.md→presentations/hub-agents-chat-python-README.technical.html). Deterministic; re-runs overwrite in place — never hand-edit the output. - Never write next to the source. Decks are local scratch, and many sources live in
directories that ship (
hub/agents/*/python/,src/). The rootpresentations/dir is gitignored; apresentations/dir dropped next to a package is not, and would land in the published artifact. The path slug keeps two same-named sources (twoREADME.mds) apart.
Shared design system
The look, fonts, slide patterns, and print profile live in the shared assets directory and are inlined verbatim into the output (do not duplicate or hand-edit them per run):
.claude/skills/gaia-presentation-assets/assets/fonts.css— base64 brand fonts (offline).claude/skills/gaia-presentation-assets/assets/deck.css— design system +@media print.claude/skills/gaia-presentation-assets/assets/deck-viewer.js— screen-only viewer.claude/skills/gaia-presentation-assets/assets/slide-blocks.html— slide patterns to compose from
Pipeline (follow in order, every run)
- Read the source document in full, and re-read the user's request so you know the goal the presentation must serve.
- Build a real-artifact inventory. List every concrete artifact that actually exists in
the source: metrics, tables, charts, code/contract snippets, screenshots, version
strings, dated milestones — each with its source location (
file:lineor section). This inventory is the ONLY content source for slide facts. - Ask the user upfront for any known evaluation/benchmark results the source does not contain (accuracy, latency, throughput, cost). One concise prompt; proceed with whatever they give.
- Select the technical slides (rules below), drawing values only from the inventory or the user's answers. Any quantitative point with neither becomes a loud, labeled placeholder — never an invented value.
- Emit the presentation: inline
fonts.css,deck.css, anddeck-viewer.jsfrom the shared assets directory into one HTML file, compose slides fromslide-blocks.html, populate from the inventory. Write to the output path. - Self-check against the checklist, then report the placeholder list to the user
(every
⚠ PLACEHOLDERwith what value it needs).
Credibility contract (non-negotiable)
Resolve every slide value in this order: cite-from-source → else ask the user → else insert a loud, labeled placeholder. The one forbidden act is silent fabrication: an invented number presented as if it came from the source. Placeholders are fine because they are visually unmistakable as not-yet-real and are reported back. Where the source supports no real artifact for a slide and the slide is not load-bearing, omit it rather than pad with generic prose.
Technical tier — what belongs here
- Engineering audience: architecture, methodology, the request/response contract, metrics with their method.
- Code blocks and inline-SVG diagrams are allowed and encouraged where they carry real source content.
- Typically 8–14 slides — enough to preserve precision and depth.
- This is not the executive tier: keep the depth; do not strip methodology to chase brevity.
(A leadership-facing cut is the
gaia-executive-presentationskill's job.)
Self-contained + print (enforced by the shared assets — do not weaken)
- Inline everything. No
http(s)://, no CDN, no external file refs. deck.csscarries the@media printprofile:@page { size: landscape; margin:0 }, one slide per page (break-after: page; break-inside: avoid),height:auto; min-height:100vhin print, all chrome hidden. Do not edit these rules per-presentation.- The viewer JS is screen-only; it is disabled under
@media print.
Worked example
reference/example-technical.html — generated from the GAIA email agent hub package
(hub/agents/email/python/): 12 slides covering architecture, the request/response contract,
the packaging table, the token-usage schema, and code blocks. Its benchmark slide
intentionally shows labeled ⚠ PLACEHOLDER values because no eval results existed in the
source at generation time — a demonstration of the credibility contract.
Checklist before reporting done
- Does the presentation satisfy the user's goal? Re-read the user's request: do the slides cover what they asked to present, at engineering depth, so the audience leaves with what the user intended? If not, revise before reporting done.
- One self-contained HTML file; no external refs (
grep -c 'https\?://'is 0). - Every quantitative value is sourced, user-supplied, or a labeled placeholder — no fabricated numbers.
- Placeholder list reported to the user.
- (If a browser is available) printed-page count == slide count, nothing clipped.


