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

๐Ÿš€ 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.10.2.tar.gz (114.4 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.10.2-py3-none-any.whl (64.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gh_toolkit-0.10.2.tar.gz
  • Upload date:
  • Size: 114.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for gh_toolkit-0.10.2.tar.gz
Algorithm Hash digest
SHA256 8f5f9855991b21af8837e35c42d72dbf731d21a0b363a85e4233701a177e5a09
MD5 e07c54257103134f4858dba723669418
BLAKE2b-256 6b29e29f49ba33ae58dd724a9ab1d78c70e140eb5ab0baf86b6aaf0f1d09d04d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: gh_toolkit-0.10.2-py3-none-any.whl
  • Upload date:
  • Size: 64.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for gh_toolkit-0.10.2-py3-none-any.whl
Algorithm Hash digest
SHA256 335ab35cb0cd469498f42f7fc1f53865e1f3409864238c2cd2e57c450892e78b
MD5 740c73d652f90840441e5446882e826e
BLAKE2b-256 04afb318415de5794193757ab851e37c0489d79a3baaad33feda85a8d8e3ecfb

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