Reportify is an Agent Skill and zero-runtime-npm-dependency Node.js toolkit for generating polished, evidence-aware, self-contained HTML reports and meeting-ready paged presentations.
Its goal is not merely to produce a long HTML page. Reportify separates report meaning from layout and presentation mechanics so an agent can generate a consistent report, compile it into safe visual structures, page it at semantic boundaries, and validate every page in a real browser before delivery.
Natural language / source documents / project facts
↓
Agent-authored Typed JSON
↓
Schema + semantic validation
↓
Deterministic layout compiler
↓
HTML renderer
↓
Presentation page compiler
↓
Paged presentation / scroll report
↓
Playwright page-by-page DOM audit + screenshots
↓
Atomic delivery
The model decides what the report says. Reportify decides how it is laid out, paged, and accepted.
Use this for executive briefings, project reviews, decision presentations, research presentations, and other reports intended to be presented page by page:
node bin/reportify-present.mjs \
examples/executive-status.report.json \
output/report.html \
--quality showcasePresentation output includes:
- Previous / Next controls;
- visible
current page / total pagesstate; - Arrow, PageUp/PageDown, Home/End, and Space navigation;
- touch swipe navigation;
- section navigation and cross-page evidence links;
- paged / scroll view switching;
- print-friendly expansion of all pages;
- deterministic splitting of card groups, compact lists, timelines, flows, tables, and source ledgers;
- page-by-page Playwright audits and screenshots.
The page compiler does not slice content at arbitrary pixel offsets. It keeps semantic blocks intact and uses conservative chunk limits so cards, rows, timeline items, flow steps, and table rows are not cut in half.
Balanced card compositions are preferred: four cards become 2×2, five become 3+2, and six become 3×2, avoiding obvious 4+1 orphan layouts.
For archive-style or long-form scrolling reports, the original delivery path remains available:
node bin/reportify.mjs deliver \
examples/executive-status.report.json \
output/report.html \
--quality showcasePresentation output can also switch to scroll mode from the UI or by using ?view=scroll.
Base Reportify checks include:
PAGE_HORIZONTAL_OVERFLOWTEXT_CLIPPEDELEMENT_OVERLAPLOW_VERTICAL_FILLROW_CONTENT_IMBALANCETINY_TEXTEMPTY_SECTIONBROKEN_EVIDENCE_REFUNSUPPORTED_HEADLINE_NUMBERPLACEHOLDER_CONTENT
Presentation mode additionally checks:
PAGE_COUNT_MISMATCH— visible page state differs from compiled page state;PAGE_VERTICAL_OVERFLOW— a desktop presentation page exceeds its safe viewport height;ORPHAN_GRID_ITEM— the last card-grid row contains a single visually isolated item.
In showcase mode, any layout warning blocks final presentation delivery. A failed candidate and its page-by-page audit artifacts are preserved; the previous final output is not overwritten.
- Node.js 20+
- Python 3 + Playwright for page-by-page presentation acceptance
- Chromium, Chrome, or Edge
python -m pip install playwright
python -m playwright install chromiumValidate JSON:
node bin/reportify.mjs validate examples/executive-status.report.json --quality showcaseGenerate the scrolling example:
npm run deliver:exampleGenerate the paged presentation example:
npm run present:exampleRun tests:
npm testTop-level archetypes:
statusdecisionresearch
Section kinds:
summarystatusfindingscomparisontimelinetableflowactionstext
Reportify does not create visual symmetry by stretching ordinary cards, adding filler copy, shrinking body text, or hiding overflow. Ordinary content uses natural height; layout is selected from semantic structure and estimated content weight; page breaks happen at safe content boundaries; and browser acceptance is required before the final artifact is replaced.
npx -y skills add CodeMarker0/Reportify --skill reportify --agent codex --global --copy --yesnpx -y skills add CodeMarker0/Reportify --skill reportify --agent claude-code --global --copy --yesSee SKILL.md, references/authoring-contract.md, references/layout-contract.md, references/delivery-contract.md, and schemas/report.schema.json for the complete contract.