GitHub repository portfolio management and presentation toolkit
Project description
gh-toolkit
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
Spaceto select multiple repos,Ctrl+Ato select all - Bulk Actions - Press
ato 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 repositoriesread:org- Read organization membershipwrite: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
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- Built with typer and rich
- LLM integration powered by Anthropic Claude
- Modern Python tooling with uv
โญ Star this repository if gh-toolkit helps you manage your GitHub portfolio!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37a7d325610b6847543bddbd03db9529ea781537b8254dd045f4ad4281752fa8
|
|
| MD5 |
56d328c0101785a8010d0962524806a7
|
|
| BLAKE2b-256 |
b23198272d30d2adaca19cdca1f52ae42928b9468940b38f703d4c1ca471935d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f36fcb55506be2724d3bdc15bb753584db044f6102cd12b0516b12567e52139
|
|
| MD5 |
14b1fee4124681d7bc981b6c4aad994b
|
|
| BLAKE2b-256 |
42168c6fe68803bfe0068295f737681c2fddefc9dfcf8fec8fefbdb22ed84bae
|