/SKILL.md
Create presentations using the slides.johnsonlee.io framework (Reveal.js + Markdown). Trigger when user mentions "create slides", "presentation", "make a deck", "slide deck", "做个 slides", "做个演讲", "写个 PPT", "做个分享". Also applies when the user provides a topic or outline and wants a complete slide deck.
npx skillsauth add ai-awesome/skill-create-slides create-slidesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create presentations based on the slides.johnsonlee.io framework. It is a lightweight Reveal.js wrapper that uses Markdown for slide content.
index.html and directory structurePresentations are static HTML sites that reference the framework via CDN:
<head>
<link rel="stylesheet" href="https://slides.johnsonlee.io/slides.css">
</head>
<body>
<script src="https://slides.johnsonlee.io/slides.js"></script>
<script>
Slides.init({
title: 'Presentation Title',
chapters: ['cover', 'chapter-1', 'chapter-2'],
langs: { en: 'EN', zh: '中文' }
});
</script>
</body>
| Property | Type | Required | Description |
|----------|------|----------|-------------|
| title | string | Yes | Page title, used in the <title> tag |
| chapters | string[] | Yes | Markdown file names (without .md extension) |
| langs | { code: label } | No | Language mapping, e.g. { en: 'EN', zh: '中文' } |
| reveal | object | No | Override Reveal.js initialization options |
project-root/
index.html # Main page containing the Slides.init() config
src/
en/ # English content
cover.md
chapter-1.md
chapter-2.md
zh/ # Chinese content (if bilingual)
cover.md
chapter-1.md
chapter-2.md
assets/ # Language-independent image assets
diagram.svg
--- (with a blank line before and after): Horizontal separator within a chapter, creates a new slide---- (with a blank line before and after): Vertical separator, creates a sub-slide## Slide 1 Title
Content here
----
## Slide 1.1 (vertical sub-slide)
More content
----
## Slide 1.2
Even more content
Use HTML comments at the beginning of a slide to control layout:
<!-- .slide: class="center" -->
## Centered Title
*Subtitle text*
The framework automatically detects slide content and applies the best layout -- no manual configuration needed:
<!-- .slide: class="center" -->ceil(N/8) columnsThe cover is typically centered and contains the title, subtitle, and author info:
<!-- .slide: class="center" -->
# Presentation Title
### Subtitle or Description
Author Name | Year
The first slide of each chapter is typically a centered chapter title:
<!-- .slide: class="center" -->
## Chapter N: Chapter Title
*Brief description or question*
---- separator) to group related content together>) to highlight key takeaways.text class)Inline and block math expressions are supported:
Inline math: $E = mc^2$
Block math:
$$
L = -\sum_{i} p(x_i) \log q(x_i)
$$
assets/ directory: src/{lang}/images/, with each language's Markdown referencing its own pathSkip this step if the repository already exists.
# Create a repo (public, for GitHub Pages)
gh repo create {owner}/{repo-name} --public --clone
cd {repo-name}
Generate index.html based on user requirements, including:
<meta> tags (charset, viewport, description, author)<link> referencing slides.css<script> referencing slides.js and calling Slides.init()Reference template (bilingual presentation):
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Presentation Title</title>
<meta name="description" content="A brief description of the presentation.">
<meta name="author" content="Johnson Lee">
<meta property="og:type" content="website">
<meta property="og:title" content="Presentation Title">
<meta property="og:description" content="A brief description.">
<link rel="stylesheet" href="https://slides.johnsonlee.io/slides.css">
</head>
<body>
<script src="https://slides.johnsonlee.io/slides.js"></script>
<script>
Slides.init({
title: 'Presentation Title',
chapters: ['cover', 'chapter-1', 'chapter-2', 'references'],
langs: { en: 'EN', zh: '中文' }
});
</script>
</body>
</html>
mkdir -p src/en src/zh
Write Markdown files chapter by chapter.
# Push code
git add -A && git commit -m "init: slides project" && git push -u origin main
# Enable GitHub Pages (main branch, root directory)
gh api repos/{owner}/{repo-name}/pages --method POST --field source='{"branch":"main","path":"/"}'
After deploying, ask the user whether they want to use a custom domain. If yes, ask for the domain name, then:
CNAME file:echo "{custom-domain}" > CNAME
og:url to index.html:<meta property="og:url" content="https://{custom-domain}/">
Ask the user which style fits their audience. Four built-in styles are available:
Narrative: Situation → Problem → Solution → Impact → Ask
Narrative: Context → Approach → Findings → Lessons Learned → Open Questions
Narrative: Hook → "Why should I care?" → Build understanding step by step → "Now you get it" → Takeaway
Narrative: Wonder → Explore → Discover → Practice → Reflect
The chapter structure varies by presentation style:
No chapter summaries needed -- the executive summary at the front serves that purpose. No "Think About It" slides -- end with a concrete ask or decision point.
Chapter summaries are optional -- use them only for long or dense chapters. End chapters with open questions or decision points to spark discussion.
Each chapter should end with a brief summary slide recapping key ideas:
## Chapter N Summary
| Topic | Key Idea |
|-------|----------|
| Concept A | One-sentence explanation |
| Concept B | One-sentence explanation |
Each chapter must end with both a summary table and a "Think About It" slide:
## Chapter N Summary
| Topic | Key Idea |
|-------|----------|
| Concept A | One-sentence explanation |
| Concept B | One-sentence explanation |
----
## Think About It
- Question that connects to the content?
- Question that encourages deeper thinking?
- Question that relates to real life?
- Question that bridges to the next chapter?
If the user says "turn this into slides" after discussing a topic, the process is:
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.