p-daily-report
Daily Report Generator
Setup
Locate this skill's directory (the folder containing this SKILL.md), then run the resolver script from there:
python <skill-dir>/scripts/skillctx-resolve.py resolve p-daily-report
The resolver outputs each binding as key: value (one per line). Substitute each {binding_key} placeholder below with the resolved value.
If any values are missing or the user requests changes, use:
python <skill-dir>/scripts/skillctx-resolve.py set p-daily-report <key> <value>
Generate activity reports from Claude Code conversation history, GitHub activity, and Slack messages.
IMPORTANT output rule: The generated report file must never mention "Claude", "Claude Code", "sessions", "history.jsonl", or any implementation details about how the data was gathered. The report should read as a clean, source-agnostic activity log. This rule applies only to the written output — these skill instructions may freely reference Claude internals.
When to Use
- End of day/week summaries
- Standup prep
- Status updates for stakeholders
- Tracking accomplishments across projects
Options
--days Nor number: Last N days (default: today)--yesterday: Yesterday only--project NAME: Filter by project--summary: Add project summary table
Date Range Reference
Determine {date} and {next_date} from options. Get today's date with date +%Y-%m-%d.
| Option | {date} |
{next_date} |
|---|---|---|
| default (today) | today | tomorrow |
--yesterday |
yesterday | today |
--days N |
N days ago | tomorrow |
Steps
Parallel Initialization
Before gathering data, check tool availability concurrently (parallelize if possible):
# Run all three concurrently
gh api /user --jq '.login' # confirms gh is authenticated; capture as gh_user
gws calendar +agenda --today # confirms gws is available (or note unavailable)
slack_read_user_profile # confirms Slack MCP is connected (or note unavailable)
Use results to skip unavailable data sources in subsequent steps.
Aggregate Claude Activity
Location: {claude_history_path}
If this file doesn't exist or is empty, skip this step and proceed to GitHub activity.
Format: JSONL with fields:
timestamp: Unix milliseconds → convert to local dateproject: Full path → extract last segment as namedisplay: User's messagesessionId: Groups related work
Reading Entries
- Get line count:
wc -l {claude_history_path} - Read a generous buffer:
offset=(lines - 3000)to cover ~2 weeks of activity - Filter entries by timestamp — convert
timestamp(Unix ms) to local date, compare against target date range, discard entries outside the range
Extract GitHub Repos from Project Paths
Project paths using ghq convention contain the owner/repo:
/Users/*/ghq/github.com/{owner}/{repo} → {owner}/{repo}
Extract with pattern: match github.com/ then take the next two path segments.
- Build a map of
owner/repo→ project display name - Non-GitHub project paths (e.g.,
~/notes/project-x) have no repo — keep them for the report as local projects, skip them for GitHub queries
Filter Noise
Remove:
- Slash commands (
/clear,/model, etc.) - Single responses: "yes", "no", "1", "2", "a", "b"
- Empty/duplicate entries
Summarize by Session
Group same-sessionId entries into meaningful summaries:
| Raw Messages | Summary |
|---|---|
| "fix lint", "yes", "run tests" | Working on linting and tests |
| "implement X", "yes", "continue" | Implementing X feature |
| "investigate bug", "this error..." | Debugging issues |
Categorize
Tag with: feat, fix, refactor, docs, test, ci, plan
Steps 2, 3, and 4 are independent data sources. Dispatch all three concurrently (parallelize if possible). Proceed to Output only after all three complete.
Get GitHub Activity (parallelize if possible)
→ See references/agent-gather-github-report.md
If gh is not installed or not authenticated, skip this step and note in the report.
Get Google Calendar (parallelize if possible)
→ See references/agent-gather-calendar-report.md
If gws is not installed, skip this step and omit the Calendar section from the report.
Get Slack Activity (parallelize if possible)
→ See references/agent-gather-slack-report.md
If the Slack MCP server is not connected, skip this step and omit the Slack section from the report.
SYNC: Proceed to Output only after all data gathering steps complete.
Deduplicate: Before formatting, deduplicate across sources — the same PR may appear in both GitHub API results and Slack messages. Use PR URLs as primary keys to merge overlapping records.
Output Format
---
date: YYYY-MM-DD
type: daily-report
---
# Daily Activity Report YYYY-MM-DD
## Calendar
- 14:30 Design review
- 16:00 1:1 with manager
## owner/repo-name
Implemented user authentication and fixed pagination bug. Added logout button
and improved empty state handling.
- PR #12 Add status line styles [merged]
- Review #45 Cleanup implementation [APPROVED]
## notebook
Worked on meeting notes and snippets conversion.
## Slack
- **#eng**: Discussed deployment rollback strategy and shared post-mortem findings
- **#project-x**: Reviewed design mockups and confirmed timeline for v2 launch
## Other Repositories
- Review myorg/repo#5 bump time dep [APPROVED]
- Issue myorg/other-repo#10 Bug report [open]
Per-project format:
- Summary (required): 1-3 sentences synthesized from all sources (Claude history, commit messages, PR descriptions). Written as prose, no tags or prefixes. Captures what you did, not how the data was gathered.
- PRs and reviews (optional): Listed below the summary only when they exist. No subheader — just the items. Format:
- PR #N title [state]or- Review owner/repo#N title [STATE]. - If a project has no PRs or reviews, it's summary-only.
Other rules:
- Non-GitHub projects from Claude history use their directory name as the section header (e.g., "notebook").
- Items from GitHub that don't match any known project go under "Other Repositories".
- Omit any section that has no activity.
- No
[tag]prefixes, no commit hashes, no "N commits pushed".
Output Path
- Create date directory:
mkdir -p {notebook_daily_dir}/YYYY-MM-DD/ - Write report file:
{notebook_daily_dir}/YYYY-MM-DD/report.md- For multi-day reports:
{notebook_daily_dir}/YYYY-MM-DD/report-N-days.md
- For multi-day reports:
- Summarize: After writing, tell the user the file path and give a brief overview of what was captured.
Summary Table (with --summary)
| Project | Days Active | Activities | PRs | Reviews | Top Focus |
| ------- | ----------- | ---------- | --- | ------- | --------- |
| my-proj | 5 | 45 | 3 | 2 | feat, fix |
More from jackchuka/skills
restaurant-search
Search for Japanese restaurants using the `hpp` CLI (HotPepper Gourmet API). Use when the user wants to find a restaurant, plan a dinner, search for izakayas, or book a group meal in Japan. Triggers on requests like "find a restaurant near Shibuya", "search for izakayas in 新宿", "restaurant for 10 people in 浜松町", "dinner spot near Tokyo station".
61software-design
Opinionated guide to software design principles and architectural patterns. Use when reviewing code design, planning feature architecture, asking "is this the right design?", "how should I structure this?", or requesting design philosophy guidance. Triggers on questions about SOLID, DRY, KISS, YAGNI, Clean Architecture, DDD, hexagonal architecture, composition vs inheritance, coupling, cohesion, or any software design trade-off discussion.
11gh-oss-release-prep
>
11dev-code-quality
>
10claude-permissions-audit
>
9gws-meeting-scheduler
Schedule meetings between people using the `gws` CLI (Google Calendar). Use when the user wants to find a meeting time, schedule a meeting, check availability, or book time with someone. Triggers on requests like "schedule a meeting with X", "find time with Y", "book a 1:1", "when can I meet with Z", "set up a sync".
8