| name | kai-html-presentation |
| description | Client-ready HTML presentation builder for Kai audit and report folders. Converts weekly audits, monthly audits, marketing reports, scorecards, findings, data-source notes, and action plans into a polished single-file HTML deck with sourced metrics, executive slides, speaker notes, and delivery-ready styling. Use when "HTML presentation", "HTML deck", "client-ready audit deck", "turn this audit into slides", "present the weekly audit", "present the monthly audit", or any request to deliver Kai reports as HTML slides. |
/kai-html-presentation — Client-Ready Audit Deck
Kai root note: knowledge/, harness/, and scripts/ paths in this skill live in the Kai install, not the user's project. Resolve them against the first ancestor directory of this SKILL.md that contains a knowledge/ folder (the Kai plugin root, ~/.claude/kai, or the kai-cmo-harness repo). MARKETING.md, memory/, and any output files live in the current project. If a referenced scripts/ command is not available in this install, say so, skip it, and continue with the file-based guidance — never fabricate its output.
Objective
A single-file HTML deck a client can be walked through, built entirely from an audit or report folder that already contains sourced findings and data gaps. Every number on a slide carries a source footer; missing data appears as a Data Gaps slide rather than as a blank.
This skill is for delivery, not analysis. It adds presentation, never findings.
Done when
Work type audit-report — floor E3/C4/O1 (harness/eco-floors.yaml). The deck is the client-facing form of an audit and inherits its floor.
- E3 — a named human approved the exact deck file, and every quantitative claim on a slide resolves to a claim that already exists in the source artifacts with a source.
- C4 — the Kai Data Provenance Rule holds:
audit_provenance_lint.py passes on the source folder, the data mode is on the title slide, every number has a source footer, and _data-gaps.md is represented as a slide.
- O1 — the actions slide names, per action, the metric it targets. A deck whose recommendations move nothing nameable is not finished.
Constraints
Context
| Need | Load |
|---|
| Deck skeleton and styling | assets/audit-deck-template.html (in this skill's directory) |
| Source ledgers and collected numbers | _data-sources.md, _data-gaps.md, audit-data.json / kai-data.json in the source folder |
| Provenance modes, source tiers, gap handling | harness/references/audit-data-provenance.md |
| Dashboard spec or data contract instead of slides | /kai-data-dashboard |
Required slide order — weekly audit: title and audit scope · executive snapshot · weekly scorecard · what changed this week · red and yellow flags · channel findings · conversion and lead capture · paid/content/SEO highlights when applicable · this week's actions · data sources and gaps.
Required slide order — monthly audit: title and audit scope · executive summary · 30-day scorecard · KPI trend summary · channel decisions · conversion and lead capture · search and AEO health · paid media and budget decision when applicable · lifecycle, retention, or reputation findings when applicable · strategic learning · next-month plan · data sources and gaps.
Output: <source-folder>/html-presentation/index.html, and optionally <source-folder>/html-presentation/notes.md for presenter notes that should not appear on client slides. Report the deck path in the final response.
Escalate when
- The source folder has no
_data-sources.md / _data-gaps.md, or its findings are unsourced — the deck would launder unsourced claims into a client-facing artifact.
- The provenance lint fails and the fix would require inventing or re-deriving a number.
- The client wants a number, trend, or comparison the source folder does not contain.
- The source folder is
internal_demo but the deck is headed to a real client.
- The ask is analysis rather than delivery — route to the audit skill that owns the finding.