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
Metadata
Release files for daily-claude-log 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| daily_claude_log-0.3.0.tar.gz | 17.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| daily_claude_log-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.3 kB
Release files / daily_claude_log-0.3.0.tar.gz
| Download URL | daily_claude_log-0.3.0.tar.gz |
|---|---|
| Size | 17.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7fd2a7cbc8d9528eeec62eca1f18deb74cc5d9737cfed5446f4f9ac4d9b30ff1
|
|
BLAKE2b-256 checksum How to use checksums |
aaa58a8e0e858553215da25d6e373f3ce710b100c6570fe68fb85faf25e6a9bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.
Transparency logRelease files / daily_claude_log-0.3.0-py3-none-any.whl
| Download URL | daily_claude_log-0.3.0-py3-none-any.whl |
|---|---|
| Size | 15.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c70cd05fc911a19f46ca951c8468b197f7196ee7a28b41fb62f388ae9d93ada7
|
|
BLAKE2b-256 checksum How to use checksums |
254bd111455c789c7ff70d98c847c8e52bf13320f0dbc0bfce25385396ba60e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 7, 2026.
Transparency log