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.3.0.tar.gz (17.1 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.3.0-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

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

Hashes for daily_claude_log-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7fd2a7cbc8d9528eeec62eca1f18deb74cc5d9737cfed5446f4f9ac4d9b30ff1
MD5 7fd6b985308cd1e08300531a5ae81434
BLAKE2b-256 aaa58a8e0e858553215da25d6e373f3ce710b100c6570fe68fb85faf25e6a9bd

See more details on using hashes here.

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

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.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for daily_claude_log-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c70cd05fc911a19f46ca951c8468b197f7196ee7a28b41fb62f388ae9d93ada7
MD5 6dc92ed464654d1998ddb9e8fc908ac4
BLAKE2b-256 254bd111455c789c7ff70d98c847c8e52bf13320f0dbc0bfce25385396ba60e4

See more details on using hashes here.

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

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