conversation-to-html
Convert a Claude Code or Codex CLI session into a beautiful, shareable single HTML file for presentations and workshops.
Skill by ohnotnow
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ohnotnow-conversation-to-html
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: presentations, frontend, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/conversation-to-html
What's inside
- Skill name
conversation-to-html- Description
- Convert a Claude Code or Codex CLI session into a beautiful, shareable single HTML file for presentations and workshops. Supports both Claude Code and OpenAI Codex CLI session logs. Use when the user wants to showcase, export, present, or share a coding agent conversation as HTML. Also triggers on: 'conversation to html', 'export session', 'share this conversation', 'make a transcript', 'session to html', 'presentation from session', 'showcase conversation', 'codex session', or any request to turn a Claude Code or Codex session into a shareable format. Should be used proactively when the user mentions workshops, demos, or sharing coding agent conversations.
- License
- MIT
- Instructions
- 133 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (2)
- SKILL.md
- extract_chat_markdown.py · scripts/
SKILL.md (first lines)
# Conversation to HTML
Convert Claude Code or Codex CLI sessions into polished, branded HTML transcripts for sharing and presentations.
## Workflow
### 1. Find the session
The user may provide:
- **Nothing** (default): find the latest *completed* session for the current project
- **A session ID**: use that specific session
- **A file path**: use that JSONL file directly
#### Default: discover the latest session
Claude Code stores sessions at `~/.claude/projects/{encoded-path}/`. The encoded path replaces `/` with `-` in the absolute CWD path.
To find sessions, run:
```bash
python3 ~/.claude/skills/conversation-to-html/scripts/extract_chat_markdown.py \
--list-sessions
```
This lists all sessions for the current project, sorted by most recent first. The current in-progress session is included — it's fine to convert it.
If the user wants a specific session, use `--session-id UUID` with `--discover`.
### 2. Confirm with the user
Briefly tell the user:
- Which session was found (show the slug, date, and message count)
- Ask for a title (suggest one based on the project name or session content)
### 3. Generate the HTML
When `--title` is provided and no explicit `-o` is given, the script automatically generates a filename from the title as a filesystem-safe slug with today's date appended (e.g. `--title "Chat About Lovely Cats"` produces `chat-about-lovely-cats-2026-03-25.html`). You do not need to pass `-o` unless the user wants a specific path.
```bash
python3 ~/.claude/skills/conversation-to-html/scripts/extract_chat_markdown.py \
--discover \
--format html \
--timestamps \
--title "Your Title Here"
```
Or with a specific session:
```bash
python3 ~/.claude/skills/conversation-to-html/scripts/extract_chat_markdown.py \
--discover \
--session-id "SESSION_UUID" \
--format html \
--timestamps \
--title "Your Title Here"
```
Or with a direct file path:
```bash
python3 ~/.claude/skills/conversation-to-html/scripts/extract_chat_markdown.py \
/path/to/session.jsonl \
--format html \
--timestamps \
--title "Your Title Here"
```
### 4. Verify the output
```bash
head -n 40 conversation.html
```
Check:
- Title is correct
- No system prompts, CLAUDE.md content, or tool calls leaked through
- Messages are in the right order
- User and assistant roles are correct
### 5. Tell the user
Report where the file was written and its message count. Suggest they open it in a browser to preview.
## Output features
The generated HTML includes:
- Hero section with session metadata (date, duration, model, message count)
- Chat-bubble layout (user messages right-aligned in blue, assistant left-aligned in white)
- Avatar icons (person for user, star for assistant)
- Syntax-highlighted code blocks via Prism.js (requires internet for CDN; degrades gracefully offline)
- Floating message navigation panel (bottom-right button)
- Smooth reveal animations (capped at message 20 to avoid long delays)
- Responsive layout for mobile and desktop
- Print-friendly styling with page-break protection
- Noto Sans typography from Google Fonts
## Codex CLI sessions
For Codex sessions, add `--source codex` to all commands. Codex stores sessions at `~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl` (not organised by project).
```bash
# List Codex sessions
python3 ~/.claude/skills/conversation-to-html/scripts/extract_chat_markdown.py \
--source codex --list-sessions
# Generate HTML from latest Codex session
python3 ~/.claude/skills/conversation-to-html/scripts/extract_chat_markdown.py \
--source codex \
--discover \
--format html \
--timestamps \
--title "Codex Session"
```
You can also pass a specific Codex JSONL file directly (with `--source codex` to use the correct parser):
```bash
python3 ~/.claude/skills/conversation-to-html/scripts/extract_chat_markdown.py \
--source codex \From ohnotnow/agentic-stuff, MIT.
More from ohnotnow/agentic-stuff
- 0.592score
i-impeccable
ohnotnow
Create distinctive, production-grade frontend interfaces with high design quality.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
house-style
ohnotnow
Teach a personal editor agent the user's own editing taste by reading the diff between an AI-drafted document and the user's hand-edit of it, encoding the…
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
audience-credibility
ohnotnow
Defensive credibility check for deliverables (reports, dashboards, demos, presentations, web pages, marketing copy) aimed at a real human audience —…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
feature-workflow
ohnotnow
Streamlined workflow for implementing features with ait issue tracking.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
flux-ui
ohnotnow
Flux UI v2 component reference and design-taste guide for Laravel/Livewire.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
ait-crafting
ohnotnow
Turn a settled feature discussion or plan document into consultant-ready ait issues — an initiative/epic vision document plus implementation specs a fresh…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
grounded-recommendation
ohnotnow
Structured process for technical recommendations and implementation advice.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
cruft-or-keep
ohnotnow
Conversational 'second pair of eyes' that finds reachable-but-dormant code in long-lived codebases — jobs, mailables, listeners, routes, commands that are…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
highlight-screenshot
ohnotnow
Take a screenshot of a page in a locally running app with a red ring and a short label round one element, so a developer can see exactly which button, link or…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
github-create
ohnotnow
Create a new GitHub repository from the current local project, push code, and handle finishing touches (README, LICENSE, description).
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
ant
ohnotnow
Local-first notebook for *why* — design decisions, alternatives rejected, pivots taken, the conversational nuance that gets lost when an issue closes.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
ait-recap
ohnotnow
Generate a friendly markdown recap of recent `ait` activity for the current project, or scan a directory of projects.
SkillAFreshness: A★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Mar 25, 2026 (7 months ago)
- Last release
- Oct 19, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ohnotnow/agentic-stuff
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ohnotnow
- 0.592score
i-impeccable
ohnotnow
Create distinctive, production-grade frontend interfaces with high design quality.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
house-style
ohnotnow
Teach a personal editor agent the user's own editing taste by reading the diff between an AI-drafted document and the user's hand-edit of it, encoding the…
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
audience-credibility
ohnotnow
Defensive credibility check for deliverables (reports, dashboards, demos, presentations, web pages, marketing copy) aimed at a real human audience —…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
flux-ui
ohnotnow
Flux UI v2 component reference and design-taste guide for Laravel/Livewire.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
feature-workflow
ohnotnow
Streamlined workflow for implementing features with ait issue tracking.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
ant
ohnotnow
Local-first notebook for *why* — design decisions, alternatives rejected, pivots taken, the conversational nuance that gets lost when an issue closes.
SkillAFreshness: A★ 1Claude Code +9
Cite this page
conversation-to-html skill. Agent Mart. https://agentmart.dev/skills/ohnotnow-conversation-to-html (last updated 2026-10-24)