daily-claude-log
Automatically extract and summarize your Claude Code sessions into daily reports. Zero dependencies beyond Python 3.9+ stdlib.
What it does
- Collects structured data from Claude Code session transcripts (JSONL files) -- files touched, tools used, commits, MRs/PRs, Jira tickets, user questions, assistant responses
- Stores everything in a local SQLite database, split by local date (sessions spanning midnight are correctly attributed to each day)
- Generates daily summaries using Claude (Haiku) via a Claude Code skill
- Outputs reports as
reports/<date>/full.mdandreports/<date>/digest.md
The collection is pure Python (no LLM calls). Only the summary generation uses an LLM, and the prompt is pre-compressed to ~2-8KB so Haiku handles it cheaply (~15-20k tokens per day).
Install
From PyPI
pip install daily-claude-log
From source (development)
git clone https://github.com/andre-motta/daily-claude-log.git
cd daily-claude-log
pip install -e .
Claude Code hooks and skills
After installing the package, run the installer to set up the SessionEnd hook and Claude Code skills:
git clone https://github.com/andre-motta/daily-claude-log.git
cd daily-claude-log
bash install.sh
The installer will:
- Install the package via pip (editable mode)
- Add a
SessionEndhook to Claude Code (auto-collects when sessions end) - Install
/daily-summaryand/collect-sessionskills
Environment variables
| Variable | Description | Default |
|---|---|---|
DCL_DATA_DIR |
Where the SQLite DB and reports are stored. Can be a private git repo. | ~/.daily-claude-log |
DCL_CLAUDE_DIR |
Where Claude Code stores its data (transcripts, etc). | ~/.claude |
Add these to your shell profile (~/.bashrc, ~/.zshrc, or equivalent):
export DCL_DATA_DIR=~/path/to/your/private/log/repo
Usage
CLI
# Show today's sessions
daily-claude-log status
# Backfill last 30 days of sessions
daily-claude-log backfill --days 30
# List all dates with data
daily-claude-log list-dates
# Generate summary prompt (for manual LLM use)
daily-claude-log prompt --date 2026-08-04
# Store a generated summary
daily-claude-log store-summary 2026-08-04 /tmp/summary.md
# Export session data as JSON
daily-claude-log export --date 2026-08-04
# Print version
daily-claude-log version
Claude Code skills
Inside Claude Code:
/daily-summary-- Collect today's sessions, generate an AI summary (uses Haiku), and store the report. Optionally commits to your data repo./daily-summary 2026-08-01-- Generate summary for a specific date./collect-session-- Manually trigger collection of the current session.
Automatic collection
After installation, a SessionEnd hook runs automatically when you exit Claude Code, collecting the session into the database. No action needed.
Data model
Sessions are stored in SQLite with a composite primary key (session_id, date). A single Claude Code session that spans multiple days (via claude -r / resume) is split into separate rows per date, each containing only the activity from that day.
Each row tracks:
- Session ID, project, title, timestamps
- Active duration (computed from message gaps, handles
--resumecorrectly) - Files touched, tools used (with counts)
- Commits, MR/PR links, Jira tickets
- User message snippets, assistant response snippets
Reports are stored as:
$DCL_DATA_DIR/
recap.db # SQLite database
reports/
2026-08-04/
full.md # Full daily report
digest.md # One-paragraph digest
2026-08-03/
...
Committing to git
If $DCL_DATA_DIR is a git repo, the /daily-summary skill will offer to commit and push after generating a report. The SQLite DB is small (typically <1MB) and works fine in git.
Uninstalling
# Remove hooks and skills
cd daily-claude-log
bash uninstall.sh
# Remove the package
pip uninstall daily-claude-log
Your data in $DCL_DATA_DIR is preserved.
License
Apache-2.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file daily_claude_log-0.3.0.tar.gz.
File metadata
- Download URL: daily_claude_log-0.3.0.tar.gz
- Upload date:
- Size: 17.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fd2a7cbc8d9528eeec62eca1f18deb74cc5d9737cfed5446f4f9ac4d9b30ff1
|
|
| MD5 |
7fd6b985308cd1e08300531a5ae81434
|
|
| BLAKE2b-256 |
aaa58a8e0e858553215da25d6e373f3ce710b100c6570fe68fb85faf25e6a9bd
|
Provenance
The following attestation bundles were made for daily_claude_log-0.3.0.tar.gz:
Publisher:
publish.yml on andre-motta/daily-claude-log
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daily_claude_log-0.3.0.tar.gz -
Subject digest:
7fd2a7cbc8d9528eeec62eca1f18deb74cc5d9737cfed5446f4f9ac4d9b30ff1 - Sigstore transparency entry: 2370365925
- Sigstore integration time:
-
Permalink:
andre-motta/daily-claude-log@27a72cb6a46516ed098921b4dd6d3dfdbfbe405a -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/andre-motta
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@27a72cb6a46516ed098921b4dd6d3dfdbfbe405a -
Trigger Event:
push
-
Statement type:
File details
Details for the file daily_claude_log-0.3.0-py3-none-any.whl.
File metadata
- Download URL: daily_claude_log-0.3.0-py3-none-any.whl
- Upload date:
- Size: 15.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c70cd05fc911a19f46ca951c8468b197f7196ee7a28b41fb62f388ae9d93ada7
|
|
| MD5 |
6dc92ed464654d1998ddb9e8fc908ac4
|
|
| BLAKE2b-256 |
254bd111455c789c7ff70d98c847c8e52bf13320f0dbc0bfce25385396ba60e4
|
Provenance
The following attestation bundles were made for daily_claude_log-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on andre-motta/daily-claude-log
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
daily_claude_log-0.3.0-py3-none-any.whl -
Subject digest:
c70cd05fc911a19f46ca951c8468b197f7196ee7a28b41fb62f388ae9d93ada7 - Sigstore transparency entry: 2370366059
- Sigstore integration time:
-
Permalink:
andre-motta/daily-claude-log@27a72cb6a46516ed098921b4dd6d3dfdbfbe405a -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/andre-motta
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@27a72cb6a46516ed098921b4dd6d3dfdbfbe405a -
Trigger Event:
push
-
Statement type: