AI Tools Compared

Recognizing contributors is essential for open source projects. A contributor hall of fame showcases the people who have invested time and effort into making your project successful. Instead of manually updating these pages, you can use AI to analyze your git history and automatically generate attribution data.

This guide walks you through extracting contributor data from git and using AI to structure and present it as a polished hall of fame page.

Extracting Contributor Data from Git

The first step involves gathering raw contributor statistics from your repository. Git provides several commands that extract commit authorship information useful for building a contributor database.

Basic Contributor Statistics

Run this command to get a list of contributors sorted by commit count:

git shortlog -sne --all

This outputs each contributor’s email and the number of commits they’ve made. For more detailed data including commit dates and message summaries, use:

git log --all --format='%an|%ae|%ad|%s' --date=short | sort

The output includes author name, email, date, and commit message. You’ll want to parse this data into a structured format for AI processing.

Generating JSON Data for AI Processing

Create a script to export your git data into JSON:

git log --all --pretty=format:'{"author":"%an","email":"%ae","date":"%ad","message":"%s"}' --date=short | jq -s .

This produces a JSON array containing every commit in your repository. Save this output to a file for AI analysis.

Using AI to Analyze and Structure Contributor Data

With your git data exported, the next step involves using AI to process and enrich this information. You can prompt AI tools to transform raw commit data into meaningful contributor profiles.

Crafting the Right Prompt

When working with AI to generate contributor profiles, provide clear context about what you want extracted:

Analyze this git commit history and create contributor profiles that include:
1. Total commits per contributor
2. First and most recent contribution dates
3. Primary areas of contribution (based on file paths in commits)
4. Contribution patterns (e.g., consistent contributor vs occasional)

Return the results as a JSON array with contributor objects.

Processing Large Repositories

For repositories with extensive histories, consider preprocessing the data before feeding it to AI. Group commits by contributor and calculate summary statistics:

import json
from collections import defaultdict
from datetime import datetime

with open('commits.json', 'r') as f:
    commits = json.load(f)

contributors = defaultdict(lambda: {'commits': [], 'files': set()})

for commit in commits:
    email = commit['email']
    contributors[email]['commits'].append(commit)
    # Extract file changes from commit message patterns
    # (requires additional git log data)

contributor_stats = []
for email, data in contributors.items():
    commit_dates = [c['date'] for c in data['commits']]
    contributor_stats.append({
        'email': email,
        'name': data['commits'][0]['author'],
        'total_commits': len(data['commits']),
        'first_commit': min(commit_dates),
        'last_commit': max(commit_dates),
    })

print(json.dumps(contributor_stats, indent=2))

This preprocessing reduces the amount of data AI needs to process and produces more consistent results.

Generating the Hall of Fame Page

Once AI has processed your contributor data, you can generate the actual hall of fame page. The approach depends on your static site generator or web framework.

Jekyll Implementation

If you use Jekyll, create a data file from your AI-generated results:

# _data/contributors.yml
- name: Jane Developer
  email: jane@example.com
  commits: 147
  first_contribution: 2023-01-15
  last_contribution: 2026-03-10
  avatar: https://github.com/janedev.png
  highlights:
    - "Core framework architecture"
    - "Performance optimizations"

Then create a layout that displays this data:

<div class="contributor-grid">
  {% for contributor in site.data.contributors %}
  <div class="contributor-card">
    <img src="{{ contributor.avatar }}" alt="{{ contributor.name }}">
    <h3>{{ contributor.name }}</h3>
    <p class="commit-count">{{ contributor.commits }} commits</p>
    <p class="contribution-period">
      {{ contributor.first_contribution }} — {{ contributor.last_contribution }}
    </p>
    <ul class="highlights">
      {% for highlight in contributor.highlights %}
      <li>{{ highlight }}</li>
      {% endfor %}
    </ul>
  </div>
  {% endfor %}
</div>

Adding AI-Generated Descriptions

AI excels at generating personalized descriptions for each contributor. After processing commit data, ask AI to create short bios based on contribution patterns:

For each contributor below, write a 2-3 sentence description
highlighting their key contributions to the project:

[Contributor data here]

Focus on:
- Types of files they modified
- Patterns in their commit messages
- Their impact on the project

Integrate these AI-generated descriptions into your contributor cards for a more personal touch.

Automating Updates

To keep your hall of fame current without manual intervention, set up automated data refreshes. A GitHub Actions workflow can regenerate contributor data on a schedule:

name: Update Contributors
on:
  schedule:
    - cron: '0 0 1 * *'  # Monthly updates
  push:
    paths:
      - '**/*'

jobs:
  update-contributors:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Generate contributor data
        run: |
          git shortlog -sne --all > contributors.txt
      - name: AI analysis
        run: |
          # Process with AI and update data files
      - name: Commit updates
        run: |
          git config user.name 'GitHub Actions'
          git config user.email 'actions@github.com'
          git add .
          git commit -m "Update contributor data" || exit 0

This automation ensures your hall of fame reflects current contributor activity without manual maintenance.

Best Practices for AI-Generated Contributor Pages

When using AI to generate hall of fame content, keep these considerations in mind:

Verify accuracy - AI may occasionally misattribute commits or misread dates. Review generated data before publishing.

Handle name collisions - Multiple contributors might use similar names or emails. Add logic to detect and resolve duplicates.

Respect privacy - Some contributors prefer not to be listed publicly. Add an opt-out mechanism or exclusion list to your generation process.

Include context - Raw commit counts don’t tell the whole story. Use AI to identify non-code contributions like documentation, issue triage, and community support.

Built by theluckystrike — More at zovo.one