Skip to content
Back to skills

Github Org Team Activity

ASecurity

Look up GitHub activity for people in a GitHub org by display name or handle. Summarizes PRs opened/merged/reviewed, repos touched, and provides a narrative of what each person worked on over a specified timeframe. Use when asked what teammates have been working on, for sprint reviews, team status reports, or manager 1:1 prep.

  • 8 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 20, 2026
developmentpythonbashdebugginggitapi

Works with

  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add tstapler/dotfiles --skill github-org-team-activity --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Github Org Team Activity?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Github Org Team Activity
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tstapler-github-org-team-activity/badge)](https://www.skillsdirectory.com/skills/tstapler-github-org-team-activity)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: github-org-team-activity
description: Look up GitHub activity for people in a GitHub org by display name or handle. Summarizes PRs opened/merged/reviewed, repos touched, and provides a narrative of what each person worked on over a specified timeframe. Use when asked what teammates have been working on, for sprint reviews, team status reports, or manager 1:1 prep.
---

# GitHub Org Team Activity

Summarize what one or more people have been working on in a GitHub org. Supports lookup by display name (e.g. "Jane Smith") or GitHub handle (e.g. "jsmith-org").

## Step 0: Determine the Org and Current User

Always start by discovering context from the local `gh` config:

```bash
# Who is authenticated
gh api /user --jq '{login, name}'

# What orgs they belong to
gh api /user/orgs --jq '.[].login'
```

**Org selection:**
- **1 org** → use it
- **Multiple orgs** → ask the user which one
- **0 orgs** → ask for the org name explicitly

Never assume or hardcode an org.

## Step 1: Resolve Names → GitHub Handles

Run the member resolution script:

```bash
python3 ~/.claude/skills/github-org-team-activity/scripts/resolve_members.py \
  --org {org} \
  --names "Jane Smith" "Alex Johnson"
```

If names are already handles, skip to Step 2.

**Manual fallback** when script resolution fails:
```bash
# 1. Search GitHub by name
gh api "search/users?q={FirstName}+{LastName}+in:name" --jq '.items[] | {login, name}'

# 2. Check each candidate is in the org (204 = yes, 404 = no)
gh api /orgs/{org}/members/{login} -i 2>&1 | grep "HTTP/"

# 3. Try common company naming patterns if search fails
#    {last}-{suffix}, {first}{last}At{Company}, {first}-{last}-{suffix}
```

## Step 2: Fetch Activity for Each Handle

Buffer all output to `/tmp` to avoid context bloat:

```bash
# PRs authored
gh search prs \
  --owner {org} \
  --author {login} \
  --created ">=2026-03-01" \
  --limit 100 \
  --json title,repository,state,createdAt,closedAt,url \
  > /tmp/prs-{login}.json

# PRs where they were requested as reviewer
gh search prs \
  --owner {org} \
  --review-requested {login} \
  --created ">=2026-03-01" \
  --limit 50 \
  --json title,repository,state,createdAt,url \
  > /tmp/reviews-{login}.json
```

Or use the activity script for multiple people (output path is printed to stdout):

```bash
# Default output: /tmp/{org}-{since}-activity.json
python3 ~/.claude/skills/github-org-team-activity/scripts/activity_report.py \
  --org {org} \
  --logins jsmith-org alexjohnson \
  --since 2026-03-01

# Pipe directly into formatter
python3 ~/.claude/skills/github-org-team-activity/scripts/activity_report.py \
  --org {org} --logins jsmith-org --since 2026-03-01 | \
  xargs python3 ~/.claude/skills/github-org-team-activity/scripts/format_report.py
```

## Step 3: Format the Report

Always generate output from the saved JSON using the formatter script — never inline the formatting:

```bash
python3 ~/.claude/skills/github-org-team-activity/scripts/format_report.py /tmp/activity-report.json

# Limit repos shown per person
python3 ~/.claude/skills/github-org-team-activity/scripts/format_report.py /tmp/activity-report.json --top-repos 5
```

**Output format — always opens with a timeframe header, then one block per person:**
```
## Activity Report: {org} · {since} → {until}

---

### {Display Name} (@{login})

**Commits:** {N} · **PRs:** {N opened} ({N merged}, {N open}) · **Reviews given:** {N}
**PR impact:** +{additions} / -{deletions} lines, {files} files

**What they worked on:**
- [repo-a] Description of theme — N PRs, +X/-Y lines
- [repo-b] Description of theme — N PRs, +X/-Y lines

**Commits by repo:** repo-a (N), repo-b (N)
```

## Key Notes

- **Date filter**: `--created ">=YYYY-MM-DD"` on `gh search prs`
- **State filter**: `--state merged|open|closed`
- **Reviewed PRs**: `--review-requested` finds PRs where the person was requested as reviewer. For actually completed reviews, use GraphQL (see reference.md)
- **Commits**: Not searchable via `gh search`; use `gh api /repos/{owner}/{repo}/commits?author={login}` per-repo if needed
- **Large orgs**: Always use cached member list at `/tmp/{org}-members-{date}.json` — avoids 900+ API calls per run

## Timeframe Reference

| When asked...          | `--created` value                         |
|------------------------|-------------------------------------------|
| "this week"            | `>=YYYY-MM-DD` (Monday's date)            |
| "last 30 days"         | `>=$(date -v-30d +%Y-%m-%d)`             |
| "this quarter"         | `>=YYYY-01-01` / `>=YYYY-04-01` etc.      |
| "last sprint" (2 wk)  | `>=$(date -v-14d +%Y-%m-%d)`             |
| no timeframe specified | Ask the user                              |

> For PR-level detail on a specific contributor, apply the `github-pr` skill.

## Token Budget
- SKILL.md: ~700 tokens
- scripts/: loaded on demand only

---

## Related Skills

| Skill | When to apply |
|-------|--------------|
| `github-pr` | Drill into a specific PR surfaced in the activity report |
| `github-actions-debugging` | Investigate CI failures on a team member's PR |

Files in this skill

  • SKILL.md5 KB
  • scripts/activity_report.py9.2 KB
  • scripts/format_report.py3.6 KB
  • scripts/resolve_members.py4.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…