A Claude Code plugin that saves and shares your coding sessions to GitHub repositories in readable markdown format.
- Converts JSONL session logs to clean, readable markdown
- Automatically commits and pushes to any GitHub repository
- Organizes sessions by username in configurable directory structure
- Supports optional session descriptions
- Collapses tool usage details by default for cleaner reading
- Fully configurable via environment variables
- Python 3.6+
- GitHub CLI (
gh) installed and authenticated - A GitHub repository to store sessions (public or private)
One-liner installation:
curl -fsSL https://raw.githubusercontent.com/PostHog/claude-code-share-plugin/main/install.sh | \
bash -s -- --claude-share-repo repo-owner/repo-nameReplace repo-owner/repo-name with your sessions repository.
What gets auto-detected:
- GitHub username (from
ghCLI) - Current session log (from
~/.claude/projects/based on working directory) - Branch (defaults to
main) - Path (defaults to
sessions)
Configuration is saved automatically to ~/.claude/share-plugin-config.json during installation - no environment variables needed!
In Claude Code, run:
/plugin marketplace add PostHog/claude-code-share-plugin
/plugin install share@claude-code-share-plugin
Clone the repository:
gh repo clone PostHog/claude-code-share-plugin ~/claude-plugins/claude-code-share-pluginIn Claude Code:
/plugin marketplace add ~/claude-plugins/claude-code-share-plugin
/plugin install share@claude-code-share-plugin
The Quick Install automatically saves configuration to ~/.claude/share-plugin-config.json.
If you need to change the repository later, you can either:
- Re-run the installer with a new repo
- Edit the config file directly:
cat > ~/.claude/share-plugin-config.json <<EOF { "repo": "new-owner/new-repo" } EOF
- Use environment variable (takes precedence over config file):
export CLAUDE_SHARE_REPO="repo-owner/repo-name"
For automatic plugin installation across your team, add to your project's .claude/settings.json:
{
"extraKnownMarketplaces": {
"claude-code-share-plugin": {
"source": {
"source": "github",
"repo": "PostHog/claude-code-share-plugin"
}
}
},
"enabledPlugins": [
"share@claude-code-share-plugin"
]
}When team members trust the repository, Claude Code will automatically install the marketplace and plugin.
Share the current session with no description:
/share
Share with a descriptive name:
/share fixing authentication bug
This creates a file like: 20251021-142530-fixing-authentication-bug.md
Sessions are organized as:
your-sessions-repo/
└── sessions/
└── username/ # Auto-detected from gh CLI
├── 20251021-142530-fixing-auth.md
├── 20251021-153245-adding-tests.md
└── ...
# Claude Code Session
**Date:** 2025-10-21 14:25:30
---
## User
Can you help me fix the authentication bug?
## Claude
I'll help you investigate the authentication issue. Let me first check the relevant files.
<details>
<summary>Tool: read_any_files</summary>
```json
{
"files": [
{
"path": "/src/auth/login.py"
}
]
}| What | How |
|---|---|
| Configured during install | Repository saved to ~/.claude/share-plugin-config.json |
| Auto-detected | Username (from gh CLI) |
| Auto-detected | Session log (from ~/.claude/projects/ based on working directory) |
| Defaults | Branch: main, Path: sessions |
The plugin needs to know which GitHub repository to use. Run the installer:
curl -fsSL https://raw.githubusercontent.com/PostHog/claude-code-share-plugin/main/install.sh | \
bash -s -- repo-owner/repo-nameOr create the config file manually:
cat > ~/.claude/share-plugin-config.json <<EOF
{
"repo": "repo-owner/repo-name"
}
EOFEnsure:
- The
ghCLI is installed:gh --version - You're authenticated:
gh auth status - You have access to the target repository
- The repository exists
Check that:
- You have write access to the repository
- The branch exists (or create it first)
- Your authentication hasn't expired:
gh auth refresh
To modify the plugin:
- Edit files in this directory
- Uninstall the old version:
/plugin uninstall share - Reinstall:
/plugin install share@claude-code-share-plugin - Test your changes
- Reads the current Claude Code session log (JSONL format)
- Parses each message (user/assistant/tool calls)
- Converts to readable markdown with:
- User messages
- Claude responses
- Tool usage in collapsible
<details>sections
- Clones target repo to
/tmp/claude-share-temp - Creates session file with timestamp and description
- Commits and pushes to GitHub
- Provides direct link to view the session
- Session logs may contain sensitive information from your codebase
- Consider using a private repository for session storage
- Review the generated markdown before sharing links publicly
- The plugin uses
ghCLI which respects your existing GitHub authentication
MIT