Publish Claude Code conversation threads as static HTML pages hosted on GitHub Gists, with shareable gistpreview links. Use when the user asks to share, publish, or delete a Claude Code thread.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-thread-publisher:claude-thread-publisherThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Publish Claude Code conversation threads as beautiful static HTML pages hosted on GitHub Gists, with shareable permalinks via gistpreview.github.io.
Publish Claude Code conversation threads as beautiful static HTML pages hosted on GitHub Gists, with shareable permalinks via gistpreview.github.io.
Use this skill when the user asks to:
When the user wants to publish the current thread:
Check for GitHub Token:
~/.claude/thread-publisher/config.jsongist scopeLocate Current Session:
session_locator.py to find the current Claude Code session JSONL fileGenerate Content:
render_thread.py to convert JSONL to:
index.html)thread.json)metadata.json)Publish to Gist:
publish_to_gist.py to create/update GitHub Gist with the three filesProvide Result:
https://gistpreview.github.io/?abcdef1234...)When the user wants to delete a published thread:
Locate Current Thread:
session_locator.py + render_thread.py to compute the current thread's hash~/.claude/thread-publisher/index.json)Verify and Delete:
delete_gist.py to delete the corresponding GitHub GistHandle Missing Threads:
When the user wants to update an existing published thread:
Detect Changes:
Update Strategy:
Provide Updated Link:
python ${CLAUDE_PLUGIN_ROOT}/skills/claude-thread-publisher/scripts/session_locator.py --mode current
Returns JSON with session file path and project information.
python ${CLAUDE_PLUGIN_ROOT}/skills/claude-thread-publisher/scripts/render_thread.py \
--input /path/to/session.jsonl \
--output-html /tmp/thread.html \
--output-json /tmp/thread.json \
--metadata /tmp/metadata.json \
--project-path /current/project \
--session-file /path/to/session.jsonl
python ${CLAUDE_PLUGIN_ROOT}/skills/claude-thread-publisher/scripts/publish_to_gist.py \
--html /tmp/thread.html \
--thread-json /tmp/thread.json \
--metadata /tmp/metadata.json \
--project-path /current/project \
--session-file /path/to/session.jsonl
python ${CLAUDE_PLUGIN_ROOT}/skills/claude-thread-publisher/scripts/delete_gist.py \
--thread-hash <hash> # or --session-file /path/to/session.jsonl
gist scope onlyclaude-thread-publisher/
├── SKILL.md # This file
├── examples.md # Example prompts
├── scripts/
│ ├── session_locator.py # Find current Claude Code session
│ ├── render_thread.py # Convert JSONL to HTML/JSON
│ ├── publish_to_gist.py # Create/update GitHub Gists
│ └── delete_gist.py # Delete Gists and manage cleanup
└── templates/ # (reserved for future HTML templates)
The skill stores configuration in ~/.claude/thread-publisher/:
config.json: GitHub token and preferencesindex.json: Mapping of thread hashes to Gist IDs{
"github_token": "ghp_xxxxxxxxxxxxxxxxxxxx",
"gists_private_by_default": true
}
{
"threads": {
"a1b2c3d4e5f6...": {
"gist_id": "abcdef1234567890...",
"gist_url": "https://gist.github.com/abcdef1234567890...",
"last_published_at": "2024-01-01T12:00:00Z",
"project_path": "/home/user/my-project",
"session_file": "/home/user/.claude/projects/abc/sessions/def.jsonl",
"title": "Implement user authentication feature"
}
}
}
gist scope (minimal permission)"No session file found"
~/.claude/projects/ exists and contains relevant project"GitHub token required"
gist scope"Gist creation failed"
"Thread hash mismatch"
"Publish this Claude Code conversation as a shareable link."
"Update the published link for this thread with the new messages."
"Delete the public link you created for this conversation."
"Show me all the threads I've published."
requests library for HTTP requestsjson, pathlib, datetime, argparse, hashlibnpx claudepluginhub nibzard/skills --plugin claude-thread-publisherFinds, analyzes, and shares AI coding sessions (Claude Code, Cursor, Codex) using vibe-replay. Generates replay artifacts, session summaries, and attaches context to PRs.
Convert Claude Code sessions into shareable blog posts or case studies by extracting decisions, process, and outcomes from git history, file changes, and conversation. Use after completing work chunks for dev blogs or marketing.
Searches Claude Code session history using full-text search on summaries, commits, projects, and branches. Use for queries like 'find where I discussed X' or 'search for Y'.