Skip to main content

daily-claude-log

Automatically extract and summarize your Claude Code sessions into daily reports. Zero dependencies beyond Python 3.9+ stdlib.

What it does

  1. Collects structured data from Claude Code session transcripts (JSONL files) -- files touched, tools used, commits, MRs/PRs, Jira tickets, user questions, assistant responses
  2. Stores everything in a local SQLite database, split by local date (sessions spanning midnight are correctly attributed to each day)
  3. Generates daily summaries using Claude (Haiku) via a Claude Code skill
  4. Outputs reports as reports/<date>/full.md and reports/<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 SessionEnd hook to Claude Code (auto-collects when sessions end)
  • Install /daily-summary and /collect-session skills

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 --resume correctly)
  • 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

daily_claude_log-0.0.0.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

daily_claude_log-0.0.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file daily_claude_log-0.0.0.tar.gz.

File metadata

  • Download URL: daily_claude_log-0.0.0.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for daily_claude_log-0.0.0.tar.gz
Algorithm Hash digest
SHA256 eebc34bf6188ef2f30561f5737ce1ecc2721cecc2b142788592a98c5e8c48ec8
MD5 61ea2b72fe8b309350d88247f2bc0a69
BLAKE2b-256 ead6fca76f551a640ba24981009dfca270e8e5c1f39facc625857e13e7347b30

See more details on using hashes here.

Provenance

The following attestation bundles were made for daily_claude_log-0.0.0.tar.gz:

Publisher: publish.yml on andre-motta/daily-claude-log

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file daily_claude_log-0.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for daily_claude_log-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 78fa86b62f49199a581b0541806f709f234b22763a0fccf00f7bde8d8c3832b9
MD5 8489cbff752931bd0fec9921cb0b5dd3
BLAKE2b-256 3b909ec4011bb1d4f264afc4ed23a39ec1f717f1444cd99e1115684480b7e1b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for daily_claude_log-0.0.0-py3-none-any.whl:

Publisher: publish.yml on andre-motta/daily-claude-log

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page