A CLI for building presentations from Markdown/MDX. Instant dev server, multiple themes, keyboard navigation, and PDF export.
npm install -g @skeptrunedev/sherp-cliSherp comes with four built-in themes to get you started:
| Terminal Green-on-black hacker aesthetic ![]() |
Paper Sepia/cream academic style ![]() |
| Corporate Professional navy/blue tones ![]() |
Default Minimal, no custom styles ![]() |
Select a theme during project creation:
sherp init my-presentation --theme terminalOr choose interactively when running sherp init.
This is a monorepo containing two packages:
- @skeptrunedev/sherp-cli - The CLI tool for creating and managing presentations
- @skeptrunedev/sherp-astro - The Astro-based presentation engine
- π Write in Markdown/MDX - Focus on content, not code
- π― Zero config - Works out of the box
- β¨οΈ Keyboard navigation - Arrow keys, spacebar, and shortcuts
- π± Mobile responsive - 16:9 aspect ratio that scales perfectly
- πͺ Overview mode - Press 'O' to see all slides
- π§ Fully customizable - Add your own CSS, JS, and React components
- π Fast dev experience - Instant hot reload
- π¨ Built-in themes - Choose from multiple pre-built themes
npm install -g @skeptrunedev/sherp-clisherp init my-presentation
cd my-presentation
sherp devThat's it! Your presentation is now running at http://localhost:4321
my-presentation/
βββ presentations/ # Your MDX presentation files
β βββ example.mdx
βββ styles/ # Custom CSS (optional)
β βββ custom.css
βββ scripts/ # Custom JavaScript (optional)
β βββ custom.js
βββ components/ # Custom React components (optional)
βββ sherp.config.json # Configuration
Create MDX files in the presentations/ folder:
---
title: 'My Awesome Talk'
author: 'Your Name'
paginate: true
---
# Welcome! π
This is my first slide
---
## Features
- Easy to write
- Beautiful output
- Keyboard navigation
---
# Questions?
Thanks for watching!Slides are separated by --- (horizontal rules).
Edit sherp.config.json to customize your presentation:
{
"title": "My Presentation",
"author": "Your Name",
"presentations": "./presentations",
"customStyles": "./styles/custom.css",
"customScripts": "./scripts/custom.js",
"components": "./components"
}| Command | Description |
|---|---|
sherp init <name> |
Create a new presentation project |
sherp dev |
Start development server |
sherp build |
Build for production |
sherp preview |
Preview production build |
- Arrow keys / Space - Navigate slides
- Home / End - First / Last slide
- O - Overview mode
- F - Fullscreen (in browser)
Add custom CSS in styles/custom.css:
/* Custom heading color */
.slide h1 {
color: #ff6b6b;
}
/* Custom background for slide 1 */
.slide[data-slide='1'] {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}Add custom JavaScript in scripts/custom.js:
document.addEventListener('DOMContentLoaded', () => {
console.log('Presentation loaded!');
// Add custom interactions
});Create React/JSX components in components/ and use them in your MDX:
// components/CustomButton.jsx
export default function CustomButton({ children }) {
return <button className="custom-btn">{children}</button>;
}import CustomButton from './components/CustomButton.jsx';
# My Slide
<CustomButton>Click me!</CustomButton>Build your presentation:
sherp buildDeploy the dist/ folder to:
- Netlify - Drag and drop
- Vercel -
vercel --prod - GitHub Pages - Push to
gh-pagesbranch - Any static hosting service
This project uses npm workspaces. To develop locally:
# Install all dependencies
npm install
# Work on the CLI package
cd packages/cli
# Work on the Astro package
cd packages/astroContributions welcome! Visit github.com/skeptrunedev/sherp
MIT



