Skip to main content

GitHub repository portfolio management and presentation toolkit

Project description

gh-toolkit

categorization cli-tool github llm portfolio-management python repository-management shell repository-health-checking topic-tagging

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
  • ๐Ÿ“ Description Generation - AI-powered repository description creation
  • ๐Ÿท๏ธ Automated Topic Tagging - Smart topic suggestions with custom tag preferences
  • ๐Ÿ”– Topic Badges - Generate shields.io badges from repository topics
  • ๐Ÿฉบ 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
  • ๐Ÿข Organization READMEs - Generate and push org profile READMEs directly to GitHub
  • ๐ŸŽฏ Academic Workflow - Perfect alternative to GitHub Classroom
  • ๐Ÿ–ฅ๏ธ Interactive TUI - Full-featured terminal UI for visual repository management
  • โšก 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

# Generate repository descriptions with AI
gh-toolkit repo describe "user/*" --dry-run
gh-toolkit repo describe user/repo --model claude-sonnet-4-20250514

# Add intelligent topic tags
gh-toolkit repo tag user/repo --force --anthropic-key=sk-...
gh-toolkit repo tag "user/*" --tags "edtech: Educational, tool: CLI tools"

# Generate topic badges for READMEs
gh-toolkit repo badges user/repo
gh-toolkit repo badges "user/*" --apply  # Auto-update READMEs

# 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"

Organization Commands

# Generate README for an organization
gh-toolkit org readme my-org --template detailed

# Push README directly to organization's GitHub profile
gh-toolkit org readme my-org --apply

# Generate with filtering
gh-toolkit org readme my-org --max-repos 20 --min-stars 5 --apply

Portfolio Commands

# Generate cross-organization portfolio
gh-toolkit portfolio generate --discover
gh-toolkit portfolio generate --org org1 --org org2 --html portfolio.html

# Audit repositories for missing metadata
gh-toolkit portfolio audit --discover
gh-toolkit portfolio audit --user --output audit-report.json

Invitation Management

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

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

๐Ÿ–ฅ๏ธ Terminal UI (TUI)

gh-toolkit includes a full-featured terminal user interface for visual repository management.

Installation

# Install with TUI support
pip install gh-toolkit[tui]

Launch

gh-toolkit tui

Features

  • Browse Organizations - Navigate your GitHub organizations visually
  • Search & Filter - Press / to search repos by name or description
  • Multi-Select - Use Space to select multiple repos, Ctrl+A to select all
  • Bulk Actions - Press a to open the action modal for selected repos
  • Context-Aware - Actions apply to selected items or all visible items

Keybindings

Key Action
? Show help
a Open actions menu
/ Search/filter
Space Toggle selection
Ctrl+A Select all
Ctrl+D Deselect all
Enter View/drill down
Esc Back/cancel
s Cycle sort (in org view)
g Generate README (in org view)

Actions Menu

The TUI provides form-based action selection:

  • Generate Descriptions - AI-powered descriptions with model selection
  • Add Topics - Intelligent tagging with preferred tag support
  • Generate Badges - Create shields.io badges with style options
  • Health Check - Audit repository quality
  • Audit - Find missing metadata

All actions support dry-run mode for safe previewing.

๐ŸŽจ 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 (list, extract, describe, badges, health)
โ”‚   โ”œโ”€โ”€ org.py            # Organization commands (readme)
โ”‚   โ”œโ”€โ”€ portfolio.py      # Portfolio commands (generate, audit)
โ”‚   โ”œโ”€โ”€ site.py           # Site generation
โ”‚   โ”œโ”€โ”€ tag.py            # Topic tagging
โ”‚   โ””โ”€โ”€ invite.py         # Invitation management
โ”œโ”€โ”€ tui/                   # Terminal UI (optional)
โ”‚   โ”œโ”€โ”€ app.py            # Main TUI application
โ”‚   โ”œโ”€โ”€ screens/          # TUI screens (home, org, repo, help)
โ”‚   โ””โ”€โ”€ widgets/          # Reusable widgets (action modal, etc.)
โ””โ”€โ”€ core/                  # Core functionality
    โ”œโ”€โ”€ github_client.py   # GitHub API client
    โ”œโ”€โ”€ repo_extractor.py  # Data extraction
    โ”œโ”€โ”€ site_generator.py  # HTML generation
    โ”œโ”€โ”€ readme_generator.py # Organization README 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.19.1.tar.gz (188.3 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.19.1-py3-none-any.whl (130.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gh_toolkit-0.19.1.tar.gz
  • Upload date:
  • Size: 188.3 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.19.1.tar.gz
Algorithm Hash digest
SHA256 37a7d325610b6847543bddbd03db9529ea781537b8254dd045f4ad4281752fa8
MD5 56d328c0101785a8010d0962524806a7
BLAKE2b-256 b23198272d30d2adaca19cdca1f52ae42928b9468940b38f703d4c1ca471935d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: gh_toolkit-0.19.1-py3-none-any.whl
  • Upload date:
  • Size: 130.1 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.19.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2f36fcb55506be2724d3bdc15bb753584db044f6102cd12b0516b12567e52139
MD5 14b1fee4124681d7bc981b6c4aad994b
BLAKE2b-256 42168c6fe68803bfe0068295f737681c2fddefc9dfcf8fec8fefbdb22ed84bae

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