一键导入
eod
Generate a concise end-of-day summary from GitHub activity in the last 24 hours - commits, issues, and PRs
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate a concise end-of-day summary from GitHub activity in the last 24 hours - commits, issues, and PRs
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | eod |
| description | Generate a concise end-of-day summary from GitHub activity in the last 24 hours - commits, issues, and PRs |
This skill orchestrates two specialized agents to generate a concise summary of your GitHub activity for the current day.
github-analyzer-agent agentsummarizer-agent agentThe result is a conversational, scannable update perfect for sharing with teammates.
Ask Claude naturally: "Generate my end-of-day summary"
Or invoke directly with the Skill tool: shipmate:eod
This skill can be configured via shipmate.yaml in either:
~/.claude/shipmate.yaml (global)<project>/.claude/shipmate.yaml (project-specific, overrides global)See config.example.yaml for configuration options.
BEFORE DOING ANYTHING ELSE, you MUST use the TodoWrite tool to create a task list with these EXACT step names:
Mark the first todo as in_progress immediately after creating the list.
Why: This provides visibility to the user and ensures consistent progress tracking across all skill runs.
CRITICAL: You MUST complete this step before proceeding. Do NOT jump to Step 3.
Run these commands to detect organizations and get the username:
gh api user/orgs --jq '.[].login'
gh api user --jq '.login'
Store both the list of organizations and the username.
CRITICAL: You MUST ask the user which scope they want. Do NOT assume or skip this step.
Use the AskUserQuestion tool with this EXACT question:
Question: "Which GitHub activity would you like to include in your end-of-day summary?"
Options (create one option for each scenario):
IMPORTANT:
Store the user's selection for use in Step 3.
A. Read configuration from shipmate.yaml:
Check for configuration in these locations (project-specific overrides global):
<project>/.claude/shipmate.yaml~/.claude/shipmate.yamlExtract these values from the claude_sessions section:
enabled (default: true)time_window_hours (default: 24)correlation_window_hours (default: 2)min_duration_minutes (default: 2)Extract these values from the integrations section:
notion.enabled (default: false)notion.daily_log_url (required if notion.enabled is true)Set HAS_INTEGRATIONS flag:
true if any integration is enabled (e.g., notion.enabled is true)false if no integrations are enabledB. Detect script paths for agents:
Run these commands separately to find the shipmate plugin directory and set script paths:
find ~/.claude/plugins -name "shipmate" -type d 2>/dev/null | head -1
If the command returns a path (plugin is installed):
GITHUB_SCRIPT to {plugin_dir}/scripts/fetch-github-activity.shCLAUDE_SCRIPT to {plugin_dir}/scripts/parse-claude-sessions.jsIf the command returns nothing (running locally):
GITHUB_SCRIPT to ./scripts/fetch-github-activity.shCLAUDE_SCRIPT to ./scripts/parse-claude-sessions.jsStore these paths and flags for use in later steps.
Mark todo #2 as completed, todos #3 and #4 as in_progress.
IMPORTANT: Run both agents in PARALLEL using a single message with TWO Task tool calls.
Agent 1 - GitHub Analyzer:
Use the Task tool to invoke the shipmate:github-analyzer-agent agent (subagent_type="shipmate:github-analyzer-agent"):
Please extract GitHub activity data for the last 24 hours with the following scope: [user's selection from Step 2]
Use the bundled script at this path: {GITHUB_SCRIPT from Step 2.5}
Run it as:
{GITHUB_SCRIPT} [scope] {username} [{org_name}]
Where:
- scope: "personal", "org", or "all" based on user selection
- username: {username from Step 1}
- org_name: {org_name from Step 1} (only if scope is "org")
The script returns consolidated JSON with commits, issues, and PRs.
Agent 2 - Claude Analyzer (Conditional):
Check if Claude sessions integration is enabled from the configuration read in Step 2.5.
If claude_sessions.enabled is true:
Use the Task tool to invoke the shipmate:claude-analyzer-agent agent (subagent_type="shipmate:claude-analyzer-agent", model="haiku") IN THE SAME MESSAGE as Agent 1:
Extract Claude Code sessions from the last {time_window_hours} hours with minimum duration {min_duration_minutes} minutes.
Use the bundled script at this path: {CLAUDE_SCRIPT from Step 2.5}
Run it as:
node {CLAUDE_SCRIPT} {time_window_hours} {min_duration_minutes}
The script returns JSON with session metadata including:
- session_id, project_path
- start_time, end_time, duration_minutes
- message_count, summary
- tool_usage (file_edits, bash_commands, reads)
- metadata (time_window_hours, min_duration_minutes, total_sessions)
If claude_sessions.enabled is false:
Skip the Claude analyzer agent. Set CLAUDE_SESSIONS to empty result:
{
"sessions": [],
"metadata": {
"time_window_hours": 24,
"min_duration_minutes": 2,
"total_sessions": 0
}
}
IMPORTANT:
GITHUB_ACTIVITIES variableCLAUDE_SESSIONS variableOnce both agents return data (or Claude sessions disabled), mark todos #3 and #4 as completed.
Mark todo #5 as in_progress.
Review the data from Step 3 and identify distinct themes/topics based on:
For each theme, create a clear, descriptive label like:
IMPORTANT: Identify ALL distinct themes, not just major ones. Include both substantial investigations and smaller tasks.
Before marking todo #5 as completed, check if correlation is needed.
If CLAUDE_SESSIONS.metadata.total_sessions is 0:
ENRICHED_ACTIVITIES to GITHUB_ACTIVITIES (pass through unchanged)ORPHANED_SESSIONS to empty arrayIf CLAUDE_SESSIONS.metadata.total_sessions > 0:
Use the Task tool to invoke the shipmate:correlation-agent agent (subagent_type="shipmate:correlation-agent", model="haiku"):
Correlate Claude Code sessions with GitHub activities using time proximity and path matching.
Input:
- GitHub Activities: {JSON from Step 3}
- Claude Sessions: {JSON from Step 3}
- Correlation Window: {correlation_window_hours from config}
Match sessions to activities by:
1. Path matching (normalized repo names)
2. Time proximity (±{correlation_window_hours} hours)
Return enriched activities with related_sessions and identify orphaned sessions (investigation work without commits).
IMPORTANT:
related_sessions arraysENRICHED_ACTIVITIES and ORPHANED_SESSIONS for use in Step 6Once the agent returns data (or correlation was skipped), mark todo #5 as completed.
Mark todo #6 as in_progress.
Use the AskUserQuestion tool with multiSelect enabled:
Question: "Which topics should be highlighted as main accomplishments? (Select 2-4. Everything else will be grouped as 'Housekeeping')"
Options: Create one option for each theme identified in Step 4, ordered by estimated importance/time spent (most significant first)
Example:
- "Investigated AWS infrastructure" - "Documented IAM setup, S3 buckets, VPC config, and admin access"
- "Investigated Railway deployments" - "Found two projects, identified active vs inactive deployments"
- "Set up secret detection" - "Added pre-commit hooks with gitleaks to prevent credential leaks"
- "Added markdown linting" - "Configured markdownlint-cli2 with auto-fix"
Store the user's selections (2-4 topics).
Once the user has made their selections, mark todo #6 as completed.
Mark todo #7 as in_progress.
Use the Task tool to invoke the shipmate:summarizer-agent agent (subagent_type="shipmate:summarizer-agent"):
Please create a team standup summary from this GitHub activity data:
[Paste the enriched GitHub activities from Step 4.5, including any related_sessions]
Orphaned Claude sessions (investigation work without commits):
[Paste orphaned sessions from Step 4.5, if any]
The user has selected these topics to highlight as main accomplishments:
[List the topics selected in Step 5]
Generate a conversational summary following the format with:
- Selected topics as separate bullets with detailed findings and insights
- All other activities grouped as "Housekeeping"
- Plain URLs to documentation artifacts
- Past tense, casual tone
- Weave in session insights naturally where related_sessions exist (see agent instructions for guidance)
IMPORTANT:
Once the agent returns the summary, mark todo #7 as completed.
Mark todo #8 as in_progress.
Display the summary returned by the summarizer agent.
Optional Polish: If the elements-of-style:writing-clearly-and-concisely skill is available, you may optionally use it to polish the summary further, but the summarizer agent already applies these principles.
Once the summary is displayed, mark todo #8 as completed.
Mark todo #9 as in_progress.
Check the HAS_INTEGRATIONS flag set in Step 2.5.
If HAS_INTEGRATIONS is false:
If HAS_INTEGRATIONS is true:
Proceed to Step 9 to post to enabled integrations.
If Notion integration is enabled in config:
integrations.notion.daily_log_url## {Date}
### What I accomplished today
- **{Topic 1}** - {Description from summary}
- [{Link text}]({{URL}})
- **{Topic 2}** - {Description from summary}
- [{Link text}]({{URL}})
- **{Topic 3}** - {Description from summary}
- [{Link text}]({{URL}})
- **Housekeeping** - {Description from summary}
IMPORTANT Formatting Rules:
[Auth0 Documentation]({{URL}}) or [PR #123]({{URL}})mcp__notion__notion-update-page tool with appropriate command (replace_content or insert_content_after)Once posted to Notion (or if Notion is not enabled), mark todo #8 as completed.
Example of final Notion format:
## November 4, 2025
### What I accomplished today
- **Investigated Auth0 setup** - Dug through the whole Auth0 configuration to see what we're actually using. Found we have one production tenant with three main applications. Turns out we're using Google and Microsoft for social logins, have MFA set up but not enforced, and have a bunch of roles configured. Documented all the apps, APIs, connections, rules, hooks, and who has admin access.
- [Auth0 Documentation]({{https://github.com/example-org/docs/blob/main/infrastructure/auth0.md}})
- [Issue #7: Auth0 Configuration Inventory]({{https://github.com/example-org/docs/issues/7}})
- **Investigated AWS infrastructure** - Went through the AWS account to figure out what we have. Found IAM users and roles, data in S3 buckets, VPC configuration, and mapped out who has admin access. Got it all documented so we can plan the migration.
- [AWS Documentation]({{https://github.com/example-org/docs/blob/main/infrastructure/aws.md}})
- **Investigated deployment process** - Figured out how we actually ship code to production. Frontend deploys manually, backend auto-deploys from GitHub.
- [Deployment Process Documentation]({{https://github.com/example-org/docs/blob/main/infrastructure/deployment-process.md}})
- [Issue #5]({{https://github.com/example-org/docs/issues/5}})
- **Housekeeping** - Set up pre-commit hooks with gitleaks to prevent secrets from leaking into the repo, added markdownlint for documentation quality.
gh) expertiseSeparation of Concerns:
Optimized Models:
Maintainability:
If the github-analyzer-agent fails:
gh auth statusgh CLI is installed (requires 2.23.0+)If the summarizer-agent produces unexpected format:
To customize:
agents/github-analyzer-agent.md for different data sourcesagents/summarizer-agent.md for different summary formatsintegrations/ directoryUser: /shipmate:eod
Skill: [Detects orgs: example-org]
Skill: [Asks user: "Personal, example-org, or all?"]
User: "example-org"
Skill: [Invokes github-analyzer-agent]
Analyzer: [Runs 5 parallel gh queries, returns JSON]
Skill: [Analyzes data, identifies themes]
Skill: [Presents themes to user with multiSelect question]
Themes identified:
- Investigated AWS infrastructure
- Investigated Railway deployments
- Investigated Auth0 setup
- Investigated deployment process
- Set up secret detection
- Added markdown linting
- Documentation improvements
User: [Selects: AWS, Railway, Auth0, Deployment process]
Skill: [Invokes summarizer-agent with data + selected topics]
Summarizer: [Creates summary with 4 main bullets + Housekeeping group]
Skill: [Presents summary to user]
Skill: [Checks config for enabled integrations]
Skill: [If Notion enabled, posts to Notion Daily Log]
Skill: "Posted to Notion Daily Log!" (if applicable)
This skill uses:
agents/github-analyzer-agent.md - Data extraction agentagents/summarizer-agent.md - Summary writing agentskills/shipmate:end-of-day-summary/SKILL.md - This orchestration skillcommands/shipmate:eod.md - Slash command shortcutintegrations/notion/ - Optional Notion integrationVersion: 1.1.5
Last Updated: 2025-11-05