Create branded reveal.js slide presentations with OpenHands styling. Generates self-contained HTML decks with warm beige/amber/dark-brown palette, flowcharts, diagram components, and PDF export.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Create branded reveal.js slide presentations with OpenHands styling. Generates self-contained HTML decks with warm beige/amber/dark-brown palette, flowcharts, diagram components, and PDF export.
triggers
["create slides","make a presentation","slide deck","presentation","slides"]
OpenHands Slides
Create polished reveal.js slide decks with OpenHands branding. Produces a single self-contained HTML file that can be served locally, opened in a browser, or exported to PDF.
Quick Start
Create index.html using the template below
Serve it: python3 -m http.server 12000
Customize slides using the component library
Branding & Palette
Use exactly these CSS variables — do not introduce extra colors:
Variable
Hex
Usage
--oh-bg
#F9F0D9
Warm beige slide background
--oh-dark
#22150D
Headings, primary boxes
--oh-brown
#3D2B1F
Secondary boxes, body text
--oh-amber
#FFAB40
Highlights, badges, accents
--oh-amber-light
#FFD59E
Label text on dark backgrounds
--oh-gray
#595959
Muted text, arrows, subtitles
--oh-light
#EEEEEE
Light cards, secondary backgrounds
Logo: Use the OpenHands color logo (openhands_logo_color_forwhite.png) — yellow hands on transparent background, designed for light backgrounds. Do not apply CSS filters. The logo should be placed:
Title slide: top-left at height: 44px
Content slides: bottom-left footer at height: 22px; opacity: 0.35
End slide: centered at height: 52px
If no logo file is available, omit the <img> tags rather than using a placeholder.
Full HTML Template
Copy this template and modify the slide sections. It includes the complete CSS theme and all reusable component classes.
<divclass="criteria-grid"><divclass="criteria-card"style="background:var(--oh-light);"><divclass="icon">📊</div><div><divclass="label">Title</div><divclass="desc">Description text</div></div></div><!-- repeat for each card --></div>
This produces one page per slide with backgrounds and emojis intact.
Downloadable Zip
Bundle the presentation for sharing:
import zipfile, os
with zipfile.ZipFile('presentation.zip', 'w', zipfile.ZIP_DEFLATED) as zf:
zf.write('index.html')
zf.write('presentation.pdf')
for f in os.listdir('assets'):
zf.write(os.path.join('assets', f))
Design Guidelines
Minimal palette: Stay within the 4 core colors (dark, brown, amber, beige) plus gray and light neutrals. Do not add new accent colors.
Left-aligned text: Body content is left-aligned; only end slides and diagram elements are centered.
Consistent slide structure: Every content slide gets data-background-color="#F9F0D9" and class="content-slide".
Footer on every content slide: Add the logo footer to all slides except title and end.
No transitions: Use transition: 'none' for a clean, professional feel.
Font: Inter only — loaded from Google Fonts CDN.
--oh-amber
#FFAB40
--oh-amber-light
#FFD59E
--oh-light
#EEEEEE
.reveal
font-family
'Inter'
font-size
28px
color
var
.reveal
.slides
text-align
.reveal
.slides
section
padding
40px
60px
box-sizing
height
100%
.reveal
h1
.reveal
h2
.reveal
h3
font-family
'Inter'
font-weight
700
color
var
text-transform
letter-spacing
0.02em
.reveal
h1
font-size
2.4em
line-height
1.1
.reveal
h2
font-size
1.6em
margin-bottom
0.6em
.reveal
h3
font-size
1.2em
color
var
font-weight
600
.reveal
p
line-height
1.6
color
var
/* ── Title slide ── */
.title-slide
display
!important
flex-direction
justify-content
align-items
.title-slide
.logo
height
44px
margin-bottom
40px
.title-slide
h1
margin-bottom
16px
max-width
80%
.title-slide
.subtitle
font-size
1.1em
color
var
font-weight
400
max-width
70%
line-height
1.5
.title-slide
.meta
margin-top
40px
font-size
0.75em
color
var
font-weight
500
/* ── Content slide ── */
.content-slide
display
!important
flex-direction
justify-content
padding-top
50px
!important
.content-slide
.slide-header
display
align-items
gap
14px
margin-bottom
10px
.content-slide
.slide-header
.step-badge
background
var
color
var
border-radius
8px
padding
4px
12px
font-size
0.65em
font-weight
700
text-transform
letter-spacing
0.05em
white-space
/* ── Pipeline (horizontal numbered steps) ── */
.pipeline
display
align-items
justify-content
gap
0
margin
30px
0
flex-wrap
.pipeline
.step
background
var
color
#fff
border-radius
12px
padding
16px
18px
text-align
font-size
0.65em
font-weight
600
line-height
1.3
min-width
120px
max-width
140px
.pipeline
.step
.num
display
background
var
color
var
border-radius
50%
width
24px
height
24px
line-height
24px
font-size
0.85em
font-weight
700
margin-bottom
6px
.pipeline
.arrow
font-size
1.4em
color
var
margin
0
4px
flex-shrink
0
/* ── Flowchart (vertical flow with colored boxes) ── */