agentsclimarketplace

Share claude code chat

Skill blockdancez/PreviewShip/skills/share-claude-code-chat

Deploy frontend builds, HTML, Markdown, and AI coding agent chat transcripts to public PreviewShip URLs.

Install
npx -y skills add blockdancez/PreviewShip --skill share-claude-code-chat

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Export Claude Code JSONL conversations into high-fidelity HTML pages with safe tool timelines, then deploy them to PreviewShip as public share links. Use when users ask to share a Claude Code chat, export Claude Code history, publish a Claude Code conversation, or create a public URL for implementation and review context.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

6.2 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it

Share Claude Code Chat

Requirements

Requires Python 3, Node.js >=18 for Markdown rendering, and the PreviewShip CLI. The workflow is local and offline before deploy: it reads Claude Code session JSONL files from ~/.claude/projects and does not launch, attach to, or control Claude Code.

How It Works

Claude Code stores project conversations under ~/.claude/projects/<project-key>/<session-id>.jsonl. This skill:

  1. Locates a Claude Code JSONL session (scripts/render_chat_html.py --current chooses the newest local session).
  2. Converts Claude Code records into a visible transcript.
  3. Renders a self-contained index.html with user bubbles, assistant Markdown, context cards, and collapsed processing summaries shown before the related assistant answer.
  4. Deploys the HTML with PreviewShip CLI and returns the public URL.

Privacy Rules

Render only visible, shareable chat content. Never publish hidden thinking text, raw tool results, tool stdout/stderr, system records, file-history snapshots, permission records, settings files, API keys, environment variables, or full selected-file contents. The renderer may show a non-verbatim "Claude Code 思考过程已隐藏" processing row, but it must not include the hidden thinking payload.

Claude Code attachment records can contain entire file contents. The renderer may show a file/directory/IDE-selection card, but it must not include the attachment body.

Workflow

1. Resolve the skill directory

SKILL_DIR="<directory containing this SKILL.md>"

Resolve this dynamically; do not hard-code a user-specific path.

2. Render the current Claude Code conversation

mkdir -p /tmp/claude-code-chat-share
python3 "$SKILL_DIR/scripts/render_chat_html.py" --current --output /tmp/claude-code-chat-share/index.html

--current picks the newest main ~/.claude/projects/**/*.jsonl session, skips subagents/agent-*.jsonl, and prints the resolved path to stderr.

If the wrong session is selected, list recent sessions and pass one explicitly:

python3 "$SKILL_DIR/scripts/render_chat_html.py" --list-recent

python3 "$SKILL_DIR/scripts/render_chat_html.py" \
  --input "/Users/<you>/.claude/projects/<project-key>/<session-id>.jsonl" \
  --output /tmp/claude-code-chat-share/index.html

The renderer also accepts a hand-written transcript JSON object with a messages array as a fallback.

3. Verify locally

python3 -m http.server 4174 --directory /tmp/claude-code-chat-share

Check that the page is not blank, message order is correct, Markdown/code blocks render cleanly, and no secrets or raw tool output are present.

4. Ensure PreviewShip CLI is available and authenticated

command -v previewship || command -v npx
previewship whoami || npx -y previewship whoami

If not authenticated, stop and ask the user to log in:

请前往 https://previewship.com 登录,创建 API Key,然后运行:
npx previewship login --key ps_live_YOUR_KEY
(或 export PREVIEWSHIP_API_KEY=ps_live_YOUR_KEY)

5. Choose a deployment name

Use the renderer-generated stable name by default:

PROJECT_NAME="$(python3 "$SKILL_DIR/scripts/render_chat_html.py" --current --print-project-name)"

Override it only when the user explicitly provides a project name. Existing PreviewShip project names are deployment identities; using one updates that project.

6. Deploy and return the URL

previewship deploy /tmp/claude-code-chat-share/index.html -n "$PROJECT_NAME" --json
# or
npx -y previewship deploy /tmp/claude-code-chat-share/index.html -n "$PROJECT_NAME" --json

Return the public previewUrl, the local HTML path, and any fidelity limitations.

What the Renderer Parses

  • type=user with string message.content -> visible user bubble.
  • type=user with tool_result content -> tool result status only, no raw output. Safe status snippets such as Received 19.8KB (200 OK) may be extracted.
  • type=assistant with message.content[].type=text -> visible assistant Markdown.
  • type=assistant with tool_use -> collapsed processing summary, attached to the preceding assistant progress message when present; otherwise shown before the next visible assistant answer.
  • type=assistant with thinking -> hidden thinking summary row only, never the thinking text.
  • type=attachment -> context card with filename/path only; attachment body is ignored.
  • Ignored: system, permission-mode, file-history-snapshot, last-prompt, sidechain records, raw toolUseResult, and hidden settings/context records.

Transcript JSON Shape

{
  "title": "Claude Code Chat",
  "projectName": "claude-code-chat",
  "messages": [
    {
      "role": "user",
      "content": "用户消息",
      "context": [{ "title": "src/App.tsx", "subtitle": "文件", "path": "/abs/path/src/App.tsx" }]
    },
    {
      "role": "assistant",
      "content": "助手 Markdown",
      "tools": [{ "name": "Read", "summary": "src/App.tsx", "status": "completed", "result": "Received 2.1KB (200 OK)" }]
    }
  ]
}

Only include fields that were visible or safe to summarize. Add "visible": false to omit a message from rendering.

Error Handling

  • No Claude Code sessions found: ask the user to provide --input with a JSONL path.
  • Wrong current session: use --list-recent and rerun with --input.
  • Unknown event types: ignore them unless they contain visible message.content[].text.
  • Quota/plan/project-count deploy error: stop and report the error. Do not retry by switching to an unrelated existing project name.

What ships with it: 7 files

82.9 KB alongside SKILL.md, 3 of them executable

.claude-plugin/

agents/

scripts/

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.