An open API service indexing awesome lists of open source software.

https://github.com/eckardt/cchistory

Like the shell history command but for your Claude Code sessions.
https://github.com/eckardt/cchistory

bash claude claude-code cli shell shell-history terminal

Last synced: 25 days ago
JSON representation

Like the shell history command but for your Claude Code sessions.

Awesome Lists containing this project

README

          

# cchistory

[![npm version](https://badge.fury.io/js/cchistory.svg)](https://badge.fury.io/js/cchistory)

Like the shell `history` command but for your Claude Code sessions.



## Why cchistory?

When Claude Code runs shell commands, they don't appear in your shell history. This makes it hard to:
- Re-run useful commands from past sessions
- Build on previous work
- Learn from command patterns Claude uses
- Copy command sequences for documentation

```bash
$ cchistory | tail -5
46 git status
47 git pull origin main
48 git log --oneline -5
49 docker-compose up -d
50 curl -I localhost:8080/health
```

## 📦 Installation

### npm (recommended)
```bash
npm install -g cchistory
```

### npx (try without installing)
```bash
npx cchistory --help
```

### From source
```bash
git clone https://github.com/eckardt/cchistory
cd cchistory
npm install
npm run build
npm link
```

## Usage

```bash
cchistory # Current project history
cchistory --global # All projects
cchistory --list-projects # See all available projects
cchistory | grep docker # Find Docker commands
cchistory | tail -5 # Last 5 commands
cchistory my-app | tail -10 # Last 10 from specific project
cchistory ~/code/my-app # Project by full path
```

## ✨ Features

- 🔍 Extract all Bash commands Claude executed across projects
- 🗂️ Filter by specific project or search globally
- 📊 Standard Unix tool compatibility (`grep`, `awk`, `sort`)
- ⚡ Fast streaming parser for large conversation logs
- 🚀 Zero-config - works with existing Claude Code setup

## How It Works

Claude Code stores conversation history in `~/.claude/projects/`. This tool:

1. Finds your Claude projects
2. Streams through conversation logs
3. Extracts shell commands Claude executed
4. Formats them like traditional shell history

## 📋 Example Output

```bash
$ cchistory --global | head -10
1 [web-scraper ] npm install puppeteer
2 [web-scraper ] mkdir src tests
3 [api-project ] docker-compose up -d
4 [api-project ] curl -X POST localhost:3000/api/test
5 [frontend ] npm run dev
6 [frontend ] git add .
7 [backend ] npm test
8 [backend ] git commit -m "fix: validation"
9 [deployment ] kubectl apply -f deployment.yaml
10 [deployment ] kubectl get pods
```

## Advanced Usage

```bash
# Find all npm commands across projects
cchistory --global | grep npm

# Get last 20 Docker commands
cchistory --global | grep docker | tail -20

# Count commands by type
cchistory --global | sed 's/.*] //' | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
```

## Command Sources

Extracts commands from:
- **Bash tool usage**: Commands Claude executes via the Bash tool
- **User "!" commands**: Commands you run with `! command` in Claude

## Requirements

- Node.js 20+
- Claude Code with conversation history in `~/.claude/projects/`

**Note**: Claude Code automatically cleans up conversation transcripts based on the `cleanupPeriodDays` setting (default: 30 days). Commands older than this period won't appear in cchistory output. You can adjust this retention period in [Claude Code's settings](https://docs.anthropic.com/en/docs/claude-code/settings) if needed.

## Options

```
cchistory [project-name] # Show history for specific project (by name or path)
cchistory --global # Show history from all projects
cchistory --list-projects # List all available Claude projects
cchistory --help # Show usage info
```

## Output Format

Each line shows:
```
[sequence] [project-name] command
```

- **sequence**: Command number (oldest first)
- **project-name**: Which Claude project ran the command
- **command**: The actual shell command

Multi-line commands use zsh history format with `\\n` for newlines.

## Unix Philosophy

`cchistory` does one thing well: extract shell commands. Use it with standard Unix tools:

- `grep` for filtering
- `head`/`tail` for limiting output
- `awk` for field processing
- `sort`/`uniq` for analysis
- Pipe to files for documentation