Skip to main content

GitHub repository portfolio management and presentation toolkit

Project description

gh-toolkit

PyPI version Python 3.12+

GitHub repository portfolio management and presentation toolkit with LLM-powered categorization and beautiful site generation

A comprehensive command-line tool for managing GitHub repository portfolios at scale. Perfect for academics, educators, and developers who need to organize, categorize, and showcase their GitHub repositories professionally.

โœจ Features

  • ๐Ÿ“‹ Repository Management - List, filter, and extract comprehensive repository data
  • ๐Ÿค– LLM-Powered Categorization - Intelligent repository classification using Claude AI
  • ๐Ÿท๏ธ Automated Topic Tagging - Smart topic suggestions with fallback rules
  • ๐Ÿฉบ Repository Health Checking - Comprehensive quality audits with best practices compliance
  • ๐ŸŽจ Portfolio Site Generation - Beautiful, responsive HTML portfolios with 4 themes
  • ๐Ÿ“„ Landing Page Generation - Convert README.md to stunning HTML or Jekyll pages
  • ๐Ÿ“ง Invitation Management - Bulk accept/leave repository collaborations
  • ๐ŸŽฏ Academic Workflow - Perfect alternative to GitHub Classroom
  • โšก Modern CLI - Built with typer and rich for beautiful terminal experience

gh-toolkit vs GitHub CLI (gh)

gh-toolkit complements the official GitHub CLI (gh) rather than replacing it.

Use gh for Use gh-toolkit for
Pull requests & issues Portfolio site generation
GitHub Actions workflows Bulk repository operations
Releases & gists AI-powered categorization
Codespaces & projects Repository health auditing
Single-repo operations Cross-org portfolio management
Raw API access Academic/educator workflows

They work great together:

# Daily work with gh
gh pr create --fill && gh run watch

# Portfolio presentation with gh-toolkit
gh-toolkit repo extract my-repos.txt --output data.json
gh-toolkit site generate data.json --theme resume

See docs/gh-cli-comparison.md for a detailed feature comparison.

๐Ÿš€ Quick Start

Installation

pip install gh-toolkit

Basic Usage

# List repositories
gh-toolkit repo list username

# Extract repository data with LLM categorization
gh-toolkit repo extract repos.txt --anthropic-key=sk-...

# Generate beautiful portfolio site
gh-toolkit site generate repos_data.json --theme educational

# Convert README to landing page
gh-toolkit page generate README.md --output index.html

# Check repository health and best practices
gh-toolkit repo health username/repo --rules academic

# Add topic tags to repositories
gh-toolkit repo tag username/* --dry-run

# Manage invitations (perfect for educators)
gh-toolkit invite accept --dry-run

๐Ÿ“– Commands

Repository Commands

# List repositories with filters
gh-toolkit repo list michael-borck --public --language Python

# Extract comprehensive data
gh-toolkit repo extract repos.txt \
  --anthropic-key=sk-... \
  --output portfolio_data.json

# Add intelligent topic tags
gh-toolkit repo tag user/repo --force --anthropic-key=sk-...

# Check repository health and compliance
gh-toolkit repo health user/repo --rules professional --min-score 80

Site Generation

# Generate portfolio with different themes
gh-toolkit site generate repos.json --theme educational
gh-toolkit site generate repos.json --theme resume  
gh-toolkit site generate repos.json --theme research
gh-toolkit site generate repos.json --theme portfolio

# Custom title and metadata
gh-toolkit site generate repos.json \
  --title "My Projects" \
  --description "My awesome software" \
  --metadata custom.yaml

Page Generation

# Generate standalone HTML landing page
gh-toolkit page generate README.md

# Generate Jekyll-compatible markdown
gh-toolkit page generate README.md --jekyll --output index.md

# Custom title and description
gh-toolkit page generate README.md --jekyll \
  --title "My Project" \
  --description "Amazing software project"

Invitation Management

# Accept all pending invitations
gh-toolkit invite accept --dry-run

# Leave repositories you're collaborating on
gh-toolkit invite leave --confirm

๐ŸŽจ Portfolio Themes

Educational Theme

Perfect for educators and academic portfolios

  • Purple gradient design
  • Emphasizes learning resources and tools
  • Category order: Desktop โ†’ Web โ†’ Python โ†’ Learning Resources

Resume Theme

Professional showcase for career portfolios

  • Blue corporate design
  • Highlights technical expertise
  • Category order: Web โ†’ Desktop โ†’ Python โ†’ Infrastructure

Research Theme

Academic research and scientific computing

  • Green academic design
  • Focuses on publications and analysis
  • Category order: Learning โ†’ Analysis โ†’ Python โ†’ Web

Portfolio Theme

General project showcase

  • Indigo modern design
  • Balanced category presentation
  • Category order: Web โ†’ Desktop โ†’ Python โ†’ Infrastructure

๐Ÿค– LLM Integration

gh-toolkit integrates with Anthropic's Claude for intelligent repository analysis:

  • Smart Categorization - Analyzes README, description, languages, and topics
  • Confidence Scoring - Shows certainty of AI classifications
  • Graceful Fallback - Uses rule-based classification when LLM unavailable
  • Topic Generation - Suggests relevant GitHub topics based on content
export ANTHROPIC_API_KEY=sk-ant-...
gh-toolkit repo extract repos.txt  # Uses LLM automatically

๐Ÿ“š Academic Use Case

Perfect alternative to GitHub Classroom:

# Students accept repository invitations
gh-toolkit invite accept

# Extract all student repositories  
gh-toolkit repo extract student_repos.txt --anthropic-key=sk-...

# Generate class portfolio site
gh-toolkit site generate student_data.json \
  --theme educational \
  --title "CS 101 Student Projects" \
  --output class_portfolio.html

๐Ÿ› ๏ธ Development

Setup

git clone https://github.com/michael-borck/gh-toolkit.git
cd gh-toolkit
uv sync --group dev

Testing

# Run all tests
./scripts/test.sh

# Generate coverage report
./scripts/coverage.sh

# Run specific test suites
uv run pytest tests/unit/ -v
uv run pytest tests/integration/ -v

Architecture

src/gh_toolkit/
โ”œโ”€โ”€ cli.py                 # Main CLI entry point
โ”œโ”€โ”€ commands/              # Command implementations
โ”‚   โ”œโ”€โ”€ repo.py           # Repository management
โ”‚   โ”œโ”€โ”€ site.py           # Site generation  
โ”‚   โ”œโ”€โ”€ tag.py            # Topic tagging
โ”‚   โ””โ”€โ”€ invite.py         # Invitation management
โ””โ”€โ”€ core/                  # Core functionality
    โ”œโ”€โ”€ github_client.py   # GitHub API client
    โ”œโ”€โ”€ repo_extractor.py  # Data extraction
    โ”œโ”€โ”€ site_generator.py  # HTML generation
    โ””โ”€โ”€ topic_tagger.py    # LLM tagging

๐Ÿ”ง Configuration

Environment Variables

export GITHUB_TOKEN=ghp_...          # GitHub personal access token
export ANTHROPIC_API_KEY=sk-ant-...  # Anthropic API key (optional)

GitHub Token Scopes

  • repo - Access repositories
  • read:org - Read organization membership
  • write:org - Accept organization invitations

๐Ÿ“Š Example Workflow

# 1. Extract repository data
gh-toolkit repo extract my_repos.txt \
  --anthropic-key=$ANTHROPIC_API_KEY \
  --output extracted_data.json

# 2. Add topic tags
gh-toolkit repo tag my_repos.txt \
  --anthropic-key=$ANTHROPIC_API_KEY \
  --force

# 3. Generate portfolio site
gh-toolkit site generate extracted_data.json \
  --theme portfolio \
  --title "My Software Portfolio" \
  --output index.html

# 4. Deploy to GitHub Pages
# Upload index.html to your GitHub Pages repository

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments


โญ Star this repository if gh-toolkit helps you manage your GitHub portfolio!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gh_toolkit-0.15.0.tar.gz (161.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gh_toolkit-0.15.0-py3-none-any.whl (104.2 kB view details)

Uploaded Python 3

File details

Details for the file gh_toolkit-0.15.0.tar.gz.

File metadata

  • Download URL: gh_toolkit-0.15.0.tar.gz
  • Upload date:
  • Size: 161.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for gh_toolkit-0.15.0.tar.gz
Algorithm Hash digest
SHA256 3fc61159992ca0ae85f76e78e3ca4f40e95bc6cfccd340e30eb0590ecf597aeb
MD5 5d2d01e0d91d89960006ded90802b25f
BLAKE2b-256 85e997a085b34c74fb748f96d539d909a5e35fbcf6ce296faed8e7d89ed3a944

See more details on using hashes here.

File details

Details for the file gh_toolkit-0.15.0-py3-none-any.whl.

File metadata

  • Download URL: gh_toolkit-0.15.0-py3-none-any.whl
  • Upload date:
  • Size: 104.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for gh_toolkit-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 255145262ac096d46c51432c2a87644a3f6d65f9cb69e104114048f8a9371baa
MD5 82b1d5c159ed03151cb0db5af11593f2
BLAKE2b-256 b1c3ef78e9c08dffb2909170627f3bc120f8d1ac713a898c5fd52e627b651266

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page