[FEATURE] Generate Cross-project daily report from session history
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
Claude Code stores rich session transcripts in ~/.claude/projects/ — JSONL files with timestamps, user prompts, tool calls, and file changes — but there's no built-in way to aggregate this data across projects into a daily work summary.
Developers working across multiple projects throughout the day have no easy way to answer "what did I accomplish today?" without manually reviewing each session. This is a common need for standup prep, personal productivity tracking, and work logging.
Existing commands don't cover this:
/exporthandles a single session only/insightsshows monthly usage patterns, not daily content summaries/statsprovides numerical data without context about what was actually done
Proposed Solution
A built-in command (e.g., /daily-report) that:
- Scans
~/.claude/projects/for sessions active on the target date - Extracts key activities per project: summaries, files changed, decisions made
- Generates a structured Markdown report
Example usage:
# In Claude Code
> /daily-report
> /daily-report 2025-06-15
# Headless
claude -p "/daily-report" --output-format text > ~/daily-reports/$(date +%Y-%m-%d).md
Example output:
Example output
# Daily Report — 2025-06-15
## 🏆 Today's Highlights
- Dashboard loading time reduced from 3.2s to 0.8s by eliminating N+1 queries
- Designed and got team approval on the notification system API spec
## 📋 Tasks by Project
### team-dashboard — 3 sessions, 24 prompts
- [x] Investigate and fix slow dashboard loading (N+1 query in user list endpoint)
- [x] Review PR #248 — notification preference migration
- [-] Add real-time updates via WebSocket (remaining: reconnection logic)
### personal-blog — 1 session, 8 prompts
- [x] RSS feed generation with full-text content
- [-] Dark mode toggle (remaining: system preference detection)
- [ ] OGP image auto-generation (blocked: need to choose a library)
## 💡 Learnings
- PostgreSQL's `EXISTS` subquery outperforms `JOIN + DISTINCT` for "has any" checks — reduced the query from 1.2s to 40ms
- When designing notification APIs, separating delivery channel (email/push/in-app) from notification type keeps the schema flexible
## ⏭️ Next Actions
- Implement WebSocket reconnection with exponential backoff (team-dashboard)
- Choose between @vercel/og and satori for OGP image generation (personal-blog)
- Prepare demo for Wednesday's team sync
Alternative Solutions
| Approach | Limitation |
|---|---|
| /export per session | Single session only; manual aggregation across projects |
| /insights | Monthly usage patterns, not daily content summaries |
| /stats | Numerical statistics without content context |
| External tools (ccusage, claude-code-log) | Cost/token-focused visualization; no content summarization |
| Custom plugin (session-tools) | Works well, but a built-in command would have direct access to session indexes and better performance |
Priority
Medium - Would be very helpful
Feature Category
CLI commands and flags
Use Case Example
- I work across 3-4 projects daily using Claude Code (main product, side project, internal tools)
- At 6pm, I run
/daily-reportto generate a summary of the day - The report shows me: what I completed, what's still in progress, and what to pick up tomorrow
- I use this for the next morning's planning and as a checkpoint for semi-annual performance reviews
- In headless mode, this can be automated via cron to generate reports without manual intervention
- I'm also exploring using Cowork Scheduled Tasks to run this automatically every day — a built-in command would integrate naturally with that workflow
Additional Context
Reference implementation: I've built this as a plugin at session-tools. Install via:
claude plugin install github:Suto-Michimasa/cc-session-tools
claude plugin enable session-tools
The plugin reads .jsonl session files, extracts user prompts and tool calls, and generates a report following a customizable Markdown template. It supports configurable output directory, language, and custom templates.
This demonstrates the feature is feasible with existing session data. A built-in command would provide better performance (direct access to session indexes) and a smoother UX.
All required data already exists locally — no new data collection or API access is needed:
~/.claude/projects/{project}/{session-uuid}.jsonl— full transcripts~/.claude/projects/{project}/sessions-index.json— session metadata (where available)
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗