summarize-activity
Generates concise summaries of GitHub activity for a repository.
Install
mkdir -p .claude/skills/summarize-activity && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/1024" && unzip -o skill.zip -d .claude/skills/summarize-activity && rm skill.zipInstalls to .claude/skills/summarize-activity
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Summarize recent GitHub activity — discussions, PRs, issues, events, traffic — into an actionable report so you can stay on top of the project without reading everything.Key capabilities
- →Fetch GitHub discussions, PRs, and issues
- →Aggregate repository traffic and star data
- →Filter activity by timeframe
- →Generate actionable summary reports
- →Identify items requiring attention
How it works
It executes parallel GitHub API queries to gather activity data, filters items by the specified timeframe, and compiles a concise report highlighting urgent tasks and recent changes.
Inputs & outputs
When to use summarize-activity
- →Summarizing recent GitHub PR activity
- →Getting a digest of issues and discussions
- →Tracking project health metrics
- →Monitoring repository engagement
About this skill
/summarize-activity - GitHub activity digest
You generate a concise, actionable summary of recent Alpine.js GitHub activity for Caleb.
IMPORTANT: Every numbered step below is mandatory. Do not skip steps, do not substitute your own approach. Run the exact commands listed. If a command fails, retry it — do not silently move on. Complete each step fully before starting the next.
Step 1: Parse timeframe
Parse $ARGUMENTS into a cutoff timestamp. Supported formats:
24h,48h,72h— hours (default:24hif no argument)7d,14d,30d— days1w,2w— weeks (1w = 7d)
Compute the ISO 8601 cutoff timestamp:
# Example for 24h:
date -u -v-24H '+%Y-%m-%dT%H:%M:%SZ'
# Example for 7d:
date -u -v-7d '+%Y-%m-%dT%H:%M:%SZ'
Store the cutoff timestamp and the human-readable timeframe label (e.g., "last 24 hours", "last 7 days") for use in later steps.
Step 2: Fetch activity in parallel
Run ALL FIVE of these commands in parallel using the Bash tool. If any fail, retry them. Do not proceed to Step 3 until you have output from all five.
Owner/repo: alpinejs/alpine
2a. Discussions (GraphQL)
gh api graphql -f query='
{
repository(owner: "alpinejs", name: "alpine") {
discussions(first: 50, orderBy: {field: UPDATED_AT, direction: DESC}) {
nodes {
title
url
author { login }
category { name }
comments { totalCount }
body
answer { author { login } body createdAt }
createdAt
updatedAt
}
}
}
}'
2b. Pull Requests
gh pr list --repo alpinejs/alpine --state all --limit 50 --json number,title,url,author,state,labels,createdAt,updatedAt,additions,deletions,headRefName,baseRefName,reviewDecision,comments
2c. Issues
gh issue list --repo alpinejs/alpine --state all --limit 50 --json number,title,url,author,state,labels,createdAt,updatedAt,comments
2d. Events
gh api repos/alpinejs/alpine/events --paginate --jq '.[] | {type, actor: .actor.login, created_at: .created_at, payload_action: .payload.action, ref: .payload.ref, ref_type: .payload.ref_type}' | head -100
2e. Traffic & stars
gh api repos/alpinejs/alpine/traffic/views 2>/dev/null; echo "---SEPARATOR---"; gh api repos/alpinejs/alpine/traffic/clones 2>/dev/null; echo "---SEPARATOR---"; gh api repos/alpinejs/alpine --jq '{stargazers_count, forks_count, open_issues_count, watchers_count}'
Note: Traffic endpoints require push access. If they return 403, skip traffic data and note it in the report.
Step 3: Fetch comment threads for active items
For discussions that have comments updated within the timeframe, fetch full comment bodies via GraphQL. Batch up to 10 discussions per query:
gh api graphql -f query='
{
repository(owner: "alpinejs", name: "alpine") {
discussion(number: {NUMBER}) {
comments(last: 10) {
nodes {
author { login }
body
createdAt
updatedAt
}
}
}
}
}'
For the most active PRs and issues (those with comments updated in timeframe), fetch recent comments:
gh api repos/alpinejs/alpine/issues/{number}/comments --jq '.[] | select(.updated_at > "{CUTOFF}") | {user: .user.login, body: .body, created_at: .created_at}'
Only fetch threads that are clearly within the timeframe. Don't fetch everything — be selective.
Step 4: Filter by timeframe
Discard anything with updatedAt / updated_at before the cutoff timestamp. Keep items where:
- The item was created within the timeframe
- The item received new comments within the timeframe
- The item changed state (opened, closed, merged) within the timeframe
Step 5: Analyze and write report
Output a markdown report with these sections. Be concise — this is a digest, not a novel.
Report format:
# Alpine.js Activity — {timeframe label}
_{start date} to {end date}_
## TL;DR
{2-3 sentences. What's the pulse? Any fires? Anything exciting? Give Caleb the vibe in 10 seconds.}
## Needs Your Attention
{Actionable items only. Each with a recommended next step: reply, merge, close, investigate, etc.}
- **[Title](url)** by @author — {why it needs attention}. **Action:** {specific recommendation}
{If nothing needs attention, say "Nothing urgent right now."}
## Hot Discussions
{Discussions with the most activity or notable sentiment. Include key quotes if illuminating.}
- **[Title](url)** ({category}) — {N} comments — {brief summary, sentiment note}
{If no notable discussions, say "Quiet on the discussion front."}
## PR Activity
### Opened
- **[#N Title](url)** by @author — {one-line summary} {+additions/-deletions}
### Merged
- **[#N Title](url)** by @author — {one-line summary}
### Closed (not merged)
- **[#N Title](url)** by @author — {one-line summary, why closed if clear}
{Omit empty subsections.}
## Issue Activity
### Opened
- **[#N Title](url)** by @author — {one-line summary}
### Closed
- **[#N Title](url)** — {one-line summary}
{Omit empty subsections.}
## Repo Pulse
| Metric | Value |
|--------|-------|
| Stars | {total} |
| Views (14d) | {count} |
| Clones (14d) | {count} |
| Open issues | {count} |
| PRs opened | {count in timeframe} |
| PRs merged | {count in timeframe} |
| PRs closed | {count in timeframe} |
{If traffic data is unavailable (403), omit those rows and note "Traffic data requires push access."}
Important rules
- Every item must include a
[title](url)link so Caleb can click through. - Include @author for attribution.
- Keep summaries to ONE line per item. This is a digest.
- The "Needs Your Attention" section is the most important. Be opinionated about what deserves Caleb's time.
- If a discussion or issue has heated sentiment, note it (e.g., "heated", "confused users", "strong demand").
- Omit empty sections entirely — don't show "No activity" headers.
- For PRs, mention if CI is failing when relevant.
- Don't editorialize beyond what's helpful for triage. Be practical, not chatty.
When not to use it
- →When the repository is private and lacks necessary permissions
- →For non-GitHub repositories
Prerequisites
Limitations
- →Traffic data requires push access
- →Limited to GitHub repositories
How it compares
It automates the synthesis of multiple GitHub data sources into a prioritized digest, saving time compared to manual review.
Compared to similar skills
summarize-activity side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| summarize-activity (this skill) | 6 | 6mo | Review | Beginner |
| github-manage | 6 | 9mo | Review | Beginner |
| cto-engineering-metrics | 5 | 10mo | No flags | Advanced |
| jira | 11 | 6mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
github-manage
matteocervelli
Manage operations concerning GitHub on behalf of user
cto-engineering-metrics
rinaldofesta
Expert methodology for defining, tracking, and interpreting engineering performance metrics including DORA, team health, productivity, and executive reporting.
jira
davila7
Use when the user mentions Jira issues (e.g., "PROJ-123"), asks about tickets, wants to create/view/update issues, check sprint status, or manage their Jira workflow. Triggers on keywords like "jira", "issue", "ticket", "sprint", "backlog", or issue key patterns.
github-issues
github
Create, update, and manage GitHub issues using MCP tools. Use this skill when users want to create bug reports, feature requests, or task issues, update existing issues, add labels/assignees/milestones, or manage issue workflows. Triggers on requests like "create an issue", "file a bug", "request a feature", "update issue X", or any GitHub issue management task.
triaging-issues
pytorch
Triages GitHub issues by routing to oncall teams, applying labels, and closing questions. Use when processing new PyTorch issues or when asked to triage an issue.
conductor-status
sickn33
Display project status, active tracks, and next actions