Create beautiful editorial reports as magazine-style HTML documents rendered inline in chat. Pretext-powered hero typography with text wrapping around decorations, multi-column body, pull quotes, stat callouts, and figures. Uses the widget aesthetic system. Triggers include "create a report", "write a report", "format as a report", "magazine layout", "editorial report", "formatted analysis", "beautiful document", "publish-quality report", "research report", "analysis brief".
Published by rebyteai
Runs in the cloud
No local installation
Dependencies pre-installed
Ready to run instantly
Secure VM environment
Isolated per task
Works on any device
Desktop, tablet, or phone
Create long-form reports as magazine-style HTML. Pretext-powered hero typography, multi-column body, pull quotes, data callouts. Rendered as a scrollable widget in chat.
How it works: The entire report is a single HTML file output as a widget code block. The hero section uses the Pretext library for magazine-style text wrapping around decorative elements. The body uses CSS columns and grid for layout. The frontend renders the widget inline in chat.
Deploy is optional. Only deploy to rebyte.pro when the user explicitly asks for a shareable URL. See references/deploy.md.
IMPORTANT: This skill is designed for non-technical users.
npm run dev: Don't start dev servers and show the output. Export/build instead.IMPORTANT: All API requests require authentication. Get your auth token and API URL by running:
AUTH_TOKEN=$(/home/user/.local/bin/rebyte-auth)
API_URL=$(python3 -c "import json; print(json.load(open('/home/user/.rebyte.ai/auth.json'))['sandbox']['relay_url'])")
Include the token in all API requests as a Bearer token, and use $API_URL as the base for all API endpoints.
Directory structure:
SKILL_DIR: The directory containing this SKILL.md/code/ (where report projects are created)Pick ONE aesthetic. Set data-aesthetic="name" on <html>. The frontend resolves to actual colors — never hardcode hex colors.
| Aesthetic | Feel | Best for |
|---|---|---|
editorial |
Serif, generous whitespace, earth tones + gold | Research reports, analyses |
paper-ink |
Warm cream, terracotta/sage | Briefs, creative reports |
warm |
Peach/cream, friendly | General purpose |
blueprint |
Technical drawing, slate/blue palette | Technical reports |
nord |
Cool arctic blues, minimalist | Clean, minimal reports |
data-dense |
Tight spacing, maximum information | Data-heavy reports |
Recommended: editorial or paper-ink produce the most distinctive magazine-style results.
Pick ONE font pair. Set data-font="name" on <html>.
| Name | Body font | Code font | Voice |
|---|---|---|---|
instrument-serif |
Instrument Serif | JetBrains Mono | Literary, editorial |
crimson-pro |
Crimson Pro | Noto Sans Mono | Classic serif |
playfair |
Playfair Display | Roboto Mono | Elegant, high-contrast |
fraunces |
Fraunces | Source Code Pro | Warm, ornamental |
dm-sans |
DM Sans | Fira Code | Clean, modern |
ibm-plex |
IBM Plex Sans | IBM Plex Mono | Technical, precise |
libre-franklin |
Libre Franklin | Inconsolata | Neutral, versatile |
Recommended pairings:
instrument-serif, crimson-pro, playfair, frauncescrimson-pro, fraunces, libre-franklincrimson-pro, instrument-serifibm-plex, dm-sansNEVER use Inter, Roboto, or Arial.
Always use these. NEVER hardcode colors.
| Variable | Purpose |
|---|---|
--widget-bg-primary |
Page background |
--widget-bg-secondary |
Card / callout background |
--widget-bg-tertiary |
Code blocks, sidebar background |
--widget-text-primary |
Headings, body text |
--widget-text-secondary |
Secondary text |
--widget-text-muted |
Captions, labels, bylines |
--widget-accent |
Decorations, borders, dividers |
--widget-accent-fg |
Accent text color |
--widget-accent-text |
Text on accent bg |
--widget-border |
Borders |
--widget-border-radius |
Border radius (12px) |
--widget-shadow-sm / --widget-shadow-md |
Shadows |
--widget-font-sans |
Body font |
--widget-font-mono |
Code, data values, labels |
--widget-chart-1 … --widget-chart-8 |
Chart colors |
The entire report is one widget code block containing all sections inside <article class="report">.
```widget
<html data-aesthetic="editorial" data-font="instrument-serif">
<head>...</head>
<body tabindex="0">
<article class="report">
<header class="report-hero" data-hero-style="wrap-circle">...</header>
<div class="report-body">
<section class="report-section">...</section>
...
</div>
</article>
<script>/* report engine from references/report-engine.md */</script>
</body>
</html>
```
Do NOT save as files. Output the widget directly in your response.
Size limit: Under 5 MB.
One scrollable HTML document with semantic sections. See references/css-patterns.md for the complete CSS. See references/report-template.md for the base template. See references/report-engine.md for the Pretext engine JS.
<!DOCTYPE html>
<html lang="en" data-aesthetic="editorial" data-font="instrument-serif">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://fonts.googleapis.com/css2?family=...&display=swap" rel="stylesheet">
<style>
:root { /* Fallback CSS vars matching chosen aesthetic */ }
/* All CSS from references/css-patterns.md */
</style>
</head>
<body tabindex="0">
<article class="report">
<header class="report-hero" data-hero-style="wrap-circle">
<div class="hero-label">CATEGORY LABEL</div>
<h1>Report <em>Title</em> Here</h1>
<div class="byline">
<span class="author">Author Name</span>
<span class="separator">·</span>
<span class="date">March 2026</span>
</div>
<div class="hero-decoration"></div>
<p class="hero-text">Opening paragraph text that flows around the decoration...</p>
</header>
<div class="report-body">
<section class="report-section">
<h2>Section <em>Heading</em></h2>
<p>Body text in CSS columns...</p>
</section>
</div>
</article>
<script>/* Report engine from references/report-engine.md — copy verbatim */</script>
</body>
</html>
CRITICAL rules:
<link> for Google Fonts (needed for standalone rendering):root matching your chosen aesthetictabindex="0" on <body> for keyboard focus in iframereferences/report-engine.mdoverflow: hidden on bodySet data-hero-style on <header class="report-hero"> to control the Pretext-powered hero layout:
| Style | Effect | Hero elements |
|---|---|---|
wrap-circle |
Text wraps around a decorative accent circle | .hero-decoration (auto-styled as circle) |
wrap-image |
Text wraps around an image | <img class="hero-image" src="..."> |
drop-cap |
Oversized first letter, text flows around it | .hero-text (first letter auto-enlarged) |
none |
No Pretext, standard centered layout | Just h1, .byline |
The report engine JS handles all Pretext calls automatically based on data-hero-style. You only write the semantic HTML.
Fallback: If Pretext fails to load (CDN unavailable), the hero text renders with normal CSS flow. The report is always readable.
Use these inside <div class="report-body">:
| Class | When | Key elements |
|---|---|---|
report-section |
Standard body section (2-column) | h2, p elements |
report-section single-column |
Full-width body section | h2, p elements |
report-pullquote |
Magazine pull quote | blockquote, .attribution |
report-callout |
Highlighted insight box | .callout-label, .callout-text |
report-stat-row |
Key metrics display | .stat-item > .stat-value + .stat-label |
report-figure |
Image or chart with caption | img or canvas, figcaption |
report-columns-3 |
Explicit 3-column section | Child <div> elements |
report-sidebar |
Inset sidebar card | .sidebar-title, content |
report-footnotes |
References / citations | ol > li |
report-divider |
Visual section break | Empty element, auto-styled |
Standard section (2-column body):
<section class="report-section">
<h2>Market <em>Analysis</em></h2>
<p>First paragraph of body text flows into two CSS columns automatically...</p>
<p>Second paragraph continues in the column flow...</p>
</section>
Pull quote (floats inside a section):
<aside class="report-pullquote">
<blockquote>The most significant shift in a decade.</blockquote>
<div class="attribution">— Industry Report, 2026</div>
</aside>
Callout box:
<div class="report-callout">
<div class="callout-label">Key Finding</div>
<div class="callout-text">Revenue grew 47% year-over-year, driven primarily by expansion in Southeast Asian markets.</div>
</div>
Stat row:
<div class="report-stat-row">
<div class="stat-item">
<div class="stat-value">$4.2B</div>
<div class="stat-label">Market Size</div>
</div>
<div class="stat-item">
<div class="stat-value">47%</div>
<div class="stat-label">YoY Growth</div>
</div>
<div class="stat-item">
<div class="stat-value">12</div>
<div class="stat-label">Markets</div>
</div>
</div>
Figure with caption:
<figure class="report-figure">
<canvas id="chart1" width="800" height="400"></canvas>
<figcaption>Figure 1: Revenue growth by quarter, 2024–2026</figcaption>
</figure>
Sidebar:
<aside class="report-sidebar">
<div class="sidebar-title">Methodology</div>
<p>Data sourced from public filings and proprietary surveys of 500+ enterprises.</p>
</aside>
Footnotes:
<footer class="report-footnotes">
<h3>References</h3>
<ol>
<li>World Bank, "Global Economic Prospects," 2026.</li>
<li>McKinsey & Company, "State of AI," 2025.</li>
</ol>
</footer>
Hero title h1: 48px weight 400 line-height 1.15
Section h2: 32px weight 400 line-height 1.25
Subsection h3: 24px weight 400 line-height 1.3
Body text: 18px weight 400 line-height 1.75
Hero text: 20px weight 400 line-height 1.7
Pull quote: 24px weight 400 italic
Stat value: 42px monospace accent color
Label / byline: 13px monospace uppercase letter-spacing 0.12em
Caption: 14px muted color
Footnotes: 14px muted color
| Library | CDN URL | Use for |
|---|---|---|
| Pretext | https://cdn.jsdelivr.net/npm/@chenglou/pretext@0.0.3/dist/layout.js |
Hero text layout (loaded by engine) |
| Chart.js 4 | https://cdn.jsdelivr.net/npm/chart.js@4.4.1 |
Charts |
| D3 v7 | https://cdn.jsdelivr.net/npm/d3@7 |
Custom visualizations |
Note: Pretext is loaded automatically by the report engine. Only add Chart.js or D3 <script> tags when the report includes charts.
<em> in headings for italic accent wordsvar(--widget-font-mono)single-column class when content is short or includes wide elements.hero-text (Pretext-powered), not in the bodyvar(--widget-*) — no hardcoded hexdata-aesthetic and data-font set on <html>:root match chosen aestheticdata-hero-style set on .report-herooverflow: hidden on body)<link> includedoverflow: hidden on body or articledata-slides="true" (that's for the slide skill)See references/deploy.md. Save the widget HTML as index.html and run rebyte deploy. Do NOT attempt deployment unless the user explicitly requests a shareable URL.
| File | Description |
|---|---|
references/report-template.md |
Base HTML template for reports |
references/report-engine.md |
Pretext-powered hero rendering engine (copy verbatim) |
references/css-patterns.md |
CSS for all section types |
references/deploy.md |
How to deploy as a standalone URL |
Everyone else asks you to install skills locally. On Rebyte, just click Run. Works from any device — even your phone. No CLI, no terminal, no configuration.
Claude Code
Gemini CLI
Codex
Cursor, Windsurf, Amp
Process, create, convert, and analyze documents — PDFs, Word docs, spreadsheets, and more. Use when user wants to extract data from PDFs, create Word documents, merge or split PDFs, convert between formats, analyze spreadsheet data, or process uploaded files. Triggers include "extract from PDF", "create Word document", "merge PDFs", "convert document", "analyze spreadsheet", "OCR this scan", "extract tables", "create template", "process invoice".
Use this skill whenever the user wants to do anything with PDF files. This includes creating professional PDF documents (reports, articles, white papers) with themed styling and CJK support, reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, filling PDF forms, encrypting/decrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file, asks to produce one, wants a "professionally formatted" document, or says "转PDF" or "生成报告", use this skill.
Generate, edit, and read PowerPoint (.pptx) files. Create from scratch with PptxGenJS, edit existing PPTX via XML workflows, or extract text with markitdown. Triggers: PPT, PPTX, PowerPoint.
Open, create, read, analyze, edit, or validate Excel/spreadsheet files (.xlsx, .xlsm, .csv, .tsv). Use when the user asks to create, build, modify, analyze, read, validate, or format any Excel spreadsheet, financial model, pivot table, or tabular data file. Triggers on 'spreadsheet', 'Excel', '.xlsx', '.csv', 'pivot table', 'financial model', 'formula', or any request to produce tabular data in Excel format.
rebyte.ai — The only platform where you can run AI agent skills directly in the cloud
No downloads. No configuration. Just sign in and start using AI skills immediately.
Use this skill in Agent Computer — your shared cloud desktop with all skills pre-installed. Join Moltbook to connect with other teams.