CommunityRedacción y edicióngithub.com

quangtran88/gitpodium

Rank git contributors across all branches/history of your GitHub orgs → one self-contained HTML leaderboard. Churn ≠ contribution.

¿Qué es gitpodium?

gitpodium is a Claude Code agent skill that rank git contributors across all branches/history of your GitHub orgs → one self-contained HTML leaderboard. Churn ≠ contribution.

Compatible conClaude Code~Codex CLI~Cursor
npx skills add quangtran88/gitpodium

Installed? Explore more Redacción y edición skills: steipete/notion, affaan-m/seo, affaan-m/brand-voice · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

gitpodium — interactive contribution audit

You (the agent) run this end to end. The user should never have to type a command. Walk the setup as a short interview, confirm a plan, run the pipeline, deliver the report, and always state the caveat. Ask questions in small batches (use AskUserQuestion in Claude Code); don't interrogate one line at a time.

GP below = the path to this skill's directory. Every step writes artifacts into the user's chosen output dir (GITPODIUM_OUT, default the current directory).


Step 0 — Prerequisites (do this before asking anything else)

  1. gh auth status — if not authenticated, tell the user to run gh auth login (in Claude Code they can type ! gh auth login). Required token scopes: repo (private repos) and read:org (list org repos). Re-check before continuing.
  2. Confirm git, python3, bash, awk exist (standard on macOS/Linux). Stop and report if gh or python3 is missing.

Only proceed once gh auth status is green.

Step 1 — Scope (what to audit)

Ask the user:

  • Which GitHub owners? One or more orgs and/or users (e.g. acme-inc acme-labs). A user's own repos work too. Offer to run gh org list / gh repo list <owner> --limit 5 to help them confirm the right names.
  • Whole owner or a subset? If they only want specific repos, collect an owner/repo list and use a repos file instead of a whole org.
  • Remind: private repos are included only if their gh token can see them.

Map → clone args, or a -f repos.txt file.

Step 2 — Ranking metric

Ask: rank by which metric? (the HTML report always lets viewers switch live; this sets the default view and the headline you report):

ChoiceMeaning
churn (default)added + deleted lines — most common "how much code moved"
commitsnumber of commits — activity/cadence, less gameable by big refactors
added / deletedgrowth vs. cleanup
netadded − deleted
reposbreadth (how many repos touched)

Map → GITPODIUM_METRIC=<choice> (passed to the report build). This ranks the git churn view. The report also ships a Collaboration tab (next paragraph) with its own GitHub metrics — no need to choose between them, both are built.

Also collected: GitHub collaboration (PRs, reviews, issues)

Beyond git history, gitpodium pulls pull requests, code reviews, review comments, and issues from the GitHub API (gitpodium github) into a second Collaboration tab, keyed by GitHub login. This is the work churn is blind to — a heavy reviewer who writes little code finally ranks. Mention it when you pitch the report. Caveats to relay:

  • Needs the gh API and only covers GitHub-hosted repos the token can see; subject to the GraphQL rate limit. Set GITPODIUM_SKIP_GITHUB=1 to skip it (non-GitHub repos, or to save rate limit).
  • Issues may be near-empty if the team uses Jira/Linear — that's expected, not a bug.
  • Bots (GraphQL Bot-type actors, *[bot], extra_bots) are excluded from reviewers too.

Step 3 — Time window

Ask: all-time, or a date range? And for the console summary, bucket by month / quarter / year? The HTML report always contains all history with a live time filter; the window mainly shapes the console leaderboard you narrate.

Map → rank [FROM TO [month|quarter|year]].

Step 4 — Noise filters

Explain the defaults and let them adjust:

  • Bots (dependabot, CI, AI agents) — excluded by default (DROP_BOTS=1).
  • Bulk/vendored dumps (framework imports, generated code) — any single commit over MAXCHURN=10000 lines or MAXFILES=400 files is dropped so it can't crown a fake winner. Offer "raw, no filtering" (MAXCHURN=0 MAXFILES=0 DROP_BOTS=0) if they want it.

Map → env vars DROP_BOTS, MAXCHURN, MAXFILES.

Step 5 — Output

Ask: where should the report go? Default: current directory → ./report.html (a single self-contained file; no server, safe to email/Slack). Set GITPODIUM_OUT.

Step 6 — Confirm the plan, then run

Echo back a one-paragraph plan: owners, metric, window, filters, output. On approval, export the chosen env vars and run — for many repos, run the clone in the background:

export GITPODIUM_OUT="<out-dir>" GITPODIUM_METRIC="<metric>" \
       MAXCHURN=<n> MAXFILES=<n> DROP_BOTS=<0|1>
"$GP/bin/clone-all.sh"  <owners...>          # or: -f repos.txt   (idempotent; re-run updates)
"$GP/bin/build-mailmap.py" "$GITPODIUM_OUT/clones"
"$GP/bin/collect.sh"       "$GITPODIUM_OUT/clones"
"$GP/bin/rollup.sh"
"$GP/bin/collect-github.py" <owners...>      # PRs/reviews/issues -> github.json (gh API; skip w/ GITPODIUM_SKIP_GITHUB=1)
"$GP/bin/build-report.py"                    # -> $GITPODIUM_OUT/report.html (embeds both datasets)

(Equivalent one-shot: "$GP/gitpodium" run <owners...> after exporting the env vars — run includes the GitHub step best-effort, so the git report still builds if the API fails.)

Step 7 — Review identities (offer, don't force)

After build-mailmap.py, it prints how many identities merged and writes mailmap-review.md — low-confidence guesses (one name is a prefix of another) left unmerged. Offer to show it. If the user confirms any merges, write them into a gitpodium.identity.json (force_merge / canonical_override / extra_bots — see examples/gitpodium.identity.json), set GITPODIUM_IDENTITY to it, and re-run build-mailmap.pycollect.shrollup.shbuild-report.py.

Step 8 — Deliver

  • Point the user to report.html (they open it in any browser).
  • Narrate the top few contributors with "$GP/bin/report.sh" (respects the same window/filter env). The transparency line shows how many commits/churn were dropped as bulk/bots — mention it so nothing looks hidden.
  • Point out the Collaboration tab (if github.json was built): the top reviewers and the "churn-blind reviewers" count — people who review a lot but open few PRs, whom the git leaderboard misses entirely. This is the headline reason to look past churn.
  • ALWAYS close with the caveat (non-negotiable):

Churn ≠ contribution. Code review, mentoring, design, and debugging are invisible to git; squash-merged/deleted branches are unrecoverable. The Collaboration tab recovers some of that (reviews, PRs, issues) but not all of it. This is a conversation-starter, not a stack-rank or a performance metric.

Quick reference (flag ↔ interview answer)

Interview answerWiring
Owners / reposclone-all.sh <owner...> or -f repos.txt
Metric (git churn view)GITPODIUM_METRIC=churn|commits|added|deleted|net|repos
Collaboration (PRs/reviews/issues)collect-github.py <owner...>github.json · skip: GITPODIUM_SKIP_GITHUB=1
Window / bucketreport.sh FROM TO [month|quarter|year]
Bots / bulk filtersDROP_BOTS MAXCHURN MAXFILES
Identity mergesGITPODIUM_IDENTITY=gitpodium.identity.json
Output dirGITPODIUM_OUT (clones dir: GITPODIUM_CLONES)

Skills relacionados

steipete/notion

Notion CLI/API for pages, Markdown content, data sources, files, comments, search, Workers, and raw API calls.

community

affaan-m/seo

Audit, plan, and implement SEO improvements across technical SEO, on-page optimization, structured data, Core Web Vitals, and content strategy. Use when the user wants better search visibility, SEO remediation, schema markup, sitemap/robots work, or keyword mapping.

community

affaan-m/brand-voice

Build a source-derived writing style profile from real posts, essays, launch notes, docs, or site copy, then reuse that profile across content, outreach, and social workflows. Use when the user wants voice consistency without generic AI writing tropes.

community

affaan-m/crosspost

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

community

affaan-m/x-api

X/Twitter API integration for posting tweets, threads, reading timelines, search, and analytics. Covers OAuth auth patterns, rate limits, and platform-native content posting. Use when the user wants to interact with X programmatically.

community

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

community