Skip to content

[Ready for review] Add contributors page with data collection pipeline#17

Open
Hangzhi wants to merge 2 commits intoharbor-framework:mainfrom
Hangzhi:contributor-page
Open

[Ready for review] Add contributors page with data collection pipeline#17
Hangzhi wants to merge 2 commits intoharbor-framework:mainfrom
Hangzhi:contributor-page

Conversation

@Hangzhi
Copy link

@Hangzhi Hangzhi commented Feb 16, 2026

Summary

  • Add /contributors page as a top-level route (parallel to /registry) with three sections: Harbor Contributors, Harbor Adapter Contributors, and Acknowledgments
  • Add utils/contributors/ pipeline to collect and aggregate contributor data from laude-institute/harbor via GitHub API
  • Add ctbcli CLI tool to manage the data refresh workflow

How it works

Data pipeline (utils/contributors/)

Three Python scripts collect and merge data:

  1. collect_pr_data.py — fetches all merged PRs from laude-institute/harbor, classifies each as adapter, task, engineering, or other, writes raw_pr_data.json
  2. collect_user_data.py — fetches GitHub profiles for each unique PR author, writes raw_github_users_data.json
  3. generate_contributions.py — merges PR data with user data (verified data takes precedence over raw GitHub data), aggregates per contributor, and writes harbor_contribution.json

Verified data (verified_github_users_data.json)

Manually curated file that overrides raw GitHub profile data. Supports role (displayed on card), rank (sort priority for Harbor section), and adapter_rank (sort priority for Adapter section). Contributors in verified data with no PRs (e.g. advisors) are included automatically.

Ranking

  • Harbor Contributors: rank (desc) → non-adapter PR count (desc) → last name (asc)
  • Adapter Contributors: adapter_rank (desc) → adapter PR count (desc) → last name (asc)

CLI (ctbcli)

./utils/contributors/ctbcli refresh           # Full refresh from GitHub API
./utils/contributors/ctbcli refresh-prdata    # Re-collect PR data only
./utils/contributors/ctbcli refresh-userdata  # Re-collect user profiles only
./utils/contributors/ctbcli generate          # Regenerate from existing data when verified github users data is updated (no API calls)

Contributor card

Shows contributor name as title, with GitHub handle and role as subtitle. Falls back to @handle when no name is available.

harbor_contributor_page.mp4

- Add three Python scripts to collect merged PR data, author info,
  and generate ranked contribution aggregates from laude-institute/harbor
- Create /contributors page with Harbor Contributors, Adapter Contributors,
  and Acknowledgments sections using the same tile grid pattern as /registry
- Add Contributors nav tab in the shared layout
@netlify
Copy link

netlify bot commented Feb 16, 2026

👷 Deploy request for harborframework pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 4eaaeba

@Hangzhi Hangzhi changed the title Add contributors page [WIP]Add contributors page Feb 16, 2026
@Hangzhi Hangzhi force-pushed the contributor-page branch 2 times, most recently from 526e39f to 4eaaeba Compare February 16, 2026 08:37
- Move scripts to utils/contributors/src/ and data to utils/contributors/data/
- Remove redundant public/harbor_contribution.json copy
- Add ctbcli with refresh, refresh-prdata, refresh-userdata, generate commands
- Add verified_github_users_data.json as source of truth for curated info
- Rank Harbor Contributors by rank then non-adapter PR count
- Rank Adapter Contributors by adapter_rank then adapter PR count
- Show name, GitHub handle, and role on contributor cards
- Include verified users with no PRs (e.g. advisors) in output
- Refresh data: 332 merged PRs, 126 contributors
- Add README documenting the pipeline
@Hangzhi Hangzhi force-pushed the contributor-page branch from 4eaaeba to 3c257ab Compare March 9, 2026 00:04
@Hangzhi Hangzhi changed the title [WIP]Add contributors page [Ready for review] Add contributors page with data collection pipeline Mar 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant