From teams
Summarize GitHub contributions across an organization's repositories. Collects commit messages, files changed, and lines changed (no diffs) grouped by contributor for a configurable time period. Use when: generating team activity reports, weekly standups, contribution summaries, or developer productivity reviews. Triggers on: 'contribution report', 'github summary', 'team contributions', 'weekly contributions', 'who did what', 'activity report'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/teams:github-contributionsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate contribution summaries across all active repositories in a GitHub organization, grouped by contributor.
Generate contribution summaries across all active repositories in a GitHub organization, grouped by contributor.
Requested by @USER in #CHANNEL., all commits in that PR are attributed to the mentioned user instead of the PR author| Parameter | Default | Description |
|---|---|---|
ORG | (required) | GitHub organization name |
TIME_PERIOD | 7 | Number of days to look back |
GITHUB_TOKEN | (from env) | GitHub personal access token (uses gh auth if not set) |
--output / -o | (stdout) | Write JSON to a file instead of stdout |
--quiet / -q | false | Suppress progress messages on stderr |
When the user asks for a contribution report:
python3 <skill_dir>/scripts/collect_contributions.py --org <ORG> --days <TIME_PERIOD> -o /tmp/contributions.json
-o is omitted). Parse and format the report.# Using gh CLI token — write to file to keep output clean
export GITHUB_TOKEN=$(gh auth token)
python3 scripts/collect_contributions.py --org difflabai --days 7 -o /tmp/contributions.json
# Or pipe to stdout (progress goes to stderr)
python3 scripts/collect_contributions.py --org difflabai --days 7 -q
If a PR description contains the pattern:
Requested by @USERNAME in #CHANNEL.
All commits in that PR are attributed to @USERNAME instead of the PR's author. This is useful when an automated tool or bot creates PRs on behalf of a team member.
Structure the report as follows:
# Team Contributions Report
**Organization:** {org}
**Period:** {start_date} → {end_date}
## Repository Activity
### {repo_name}
- [PR #{number}]({url}): {title} — @{author}
- [PR #{number}]({url}): {title} — @{author} *(attributed to @{attributed_to})*
---
## {Contributor Name} (@{username})
**Summary:** {total_commits} commits across {repo_count} repositories | +{lines_added} / -{lines_removed}
### {repo_name}
- **Commits:** {count}
- **Files changed:** {count}
- **Lines:** +{added} / -{removed}
#### [PR #{number}]({url}): {title}
- **Lines:** +{added} / -{removed}
- **Commits:**
- {commit_message_1}
- {commit_message_2}
#### Direct commits (no PR)
- {commit_message_1}
- {commit_message_2}
---
## Organization Totals
| Contributor | Commits | Repos | Lines Added | Lines Removed |
|-------------|---------|-------|-------------|---------------|
| @{user1} | {n} | {n} | +{n} | -{n} |
| ... | | | | |
| **Total** | **{n}** |**{n}**| **+{n}** | **-{n}** |
scripts/collect_contributions.pyMain collection script. Queries the GitHub API for:
Requested by @USER in #CHANNEL.)Outputs structured JSON to stdout for agent consumption.
scripts/format_report.pyOptional formatting script. Takes the JSON output from collect_contributions.py and produces a markdown report.
python3 scripts/collect_contributions.py --org difflabai --days 7 | python3 scripts/format_report.py
--include-merges to include)[bot], plus known bots like dependabot, copilot, renovate)GITHUB_TOKEN is not set, attempts to use gh auth token--days window for large orgsGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub difflabai/marketplace --plugin teams