A CLI tool to apply a curated set of GitHub labels to any repository using gh CLI. Following the Clean Labels convention by wgtechlabs.
- 🏷️ 23 Curated Labels: Organized across 5 categories — type, status, community, resolution, and area
- 🚀 One Command Setup: Apply all labels to any repo with
ghlt apply - 🔍 Auto-Detect Repo: Automatically detects the current repository from git remote
- 🔄 Smart Conflict Handling: Skips existing labels by default,
--forceto update - 📋 List Command: View all labels on any repo — name, color, and description at a glance
- 🧹 Wipe Command: Remove all or specific labels with a confirmation prompt
- 🚫 Apply with Exclusions: Skip specific labels or entire categories with
--exclude/--exclude-category - ✅ Pre-Flight Checks: Validates
ghCLI is installed and authenticated before doing anything - 📊 Clear Output: Structured logging powered by @wgtechlabs/log-engine with color-coded levels and emoji
- 🎨 ASCII Banner: Beautiful ANSI Shadow figlet banner with version and author info
- 🤖 AI Label Generator: Generate custom labels using GitHub Copilot — interactive pick, refine, and apply
- 🌐 Dual Runtime: Works with both
npxandbunx
# Using npx
npx github-labels-template apply
# Using bunx
bunx github-labels-template applyThat's it. All 23 labels are applied to the current repo.
# Global install (npm)
npm install -g github-labels-template
# Global install (bun)
bun install -g github-labels-template
# Then use anywhere
ghlt apply- GitHub CLI (
gh) installed and authenticated - GitHub Copilot subscription (required for
generatecommand only)
# Apply to the current repo (auto-detected from git remote)
ghlt apply
# Apply to a specific repo
ghlt apply --repo owner/repo
# Overwrite existing labels with template values
ghlt apply --force
# Apply only a specific label
ghlt apply --label bug
# Apply specific labels (comma-separated)
ghlt apply --label "bug,enhancement"
# Apply all labels from a category
ghlt apply --category type
# Apply labels from multiple categories
ghlt apply --category "type,status"
# Combine: apply all community labels + the "bug" label
ghlt apply --category community --label bug
# Combine with force and repo
ghlt apply --category type --force --repo owner/repo
# Apply all labels except specific ones
ghlt apply --exclude "bug,enhancement"
# Apply all labels except an entire category
ghlt apply --exclude-category type
# Combine: apply all community labels except hacktoberfest
ghlt apply --category community --exclude hacktoberfest
# Include custom labels from labels-custom.json
ghlt apply --custom
# Apply only custom labels from a specific category
ghlt apply --custom --category type# List all labels on the current repo
ghlt list
# List labels on a specific repo
ghlt list --repo owner/repoGenerate custom labels using GitHub Copilot — following the Clean Labels convention. Requires a GitHub Copilot subscription.
# Interactive label generator
ghlt generate
# Pre-select a category
ghlt generate --category type
# Generate and apply to a specific repo
ghlt generate --repo owner/repo
# Use a specific Copilot model (advanced)
ghlt generate --model gpt-4.1
ghlt generate --model claude-sonnet-4The generator will:
- Ask you to pick a category (type, status, community, resolution, area)
- Ask you to describe the label you need
- Generate 3 AI-powered suggestions following the template conventions
- Let you pick one, refine with feedback, or regenerate
- Save to
labels-custom.jsonand optionally apply to a repo
Wipe all existing labels and apply the template in one step (clean slate).
# Migrate: wipe + apply (with confirmation prompt)
ghlt migrate
# Migrate a specific repo
ghlt migrate --repo owner/repo
# Skip confirmation prompt
ghlt migrate --yes
# Include custom labels in the migration
ghlt migrate --custom# Remove all labels (with confirmation prompt)
ghlt wipe
# Remove all labels from a specific repo
ghlt wipe --repo owner/repo
# Skip confirmation prompt
ghlt wipe --yes
# Remove specific labels
ghlt wipe --label "bug,enhancement"
# Remove all labels from a category
ghlt wipe --category type
# Remove labels from multiple categories
ghlt wipe --category "type,status"
# Include custom labels in the selective wipe scope
ghlt wipe --category type --custom# Preview the landing page locally
ghlt preview
# Use a custom port
ghlt preview --port 8080# Clean slate with one command
ghlt migrate --yes
# Update a specific repo to match the template
ghlt apply --repo owner/repo --forceThis project follows the Clean Labels convention by wgtechlabs — a standardized labeling format for GitHub repositories. Every label uses a consistent structure:
name · color · [Category] Description [scope]
Where scope is [issues], [PRs], or [issues, PRs].
Classify what kind of work this is.
Track the current workflow state.
Signals for open source contributors.
Why an issue or PR was closed.
| Name | Color | Description |
|---|---|---|
duplicate |
cfd3d7 |
This issue or pull request already exists |
invalid |
cfd3d7 |
This doesn't seem right |
wontfix |
cfd3d7 |
This will not be worked on |
Broad software layers — universal across any project.
ghlt — GitHub Labels Template CLI
USAGE
ghlt [OPTIONS] apply|wipe|migrate|generate|list|preview
OPTIONS
-v, --version Show version number
COMMANDS
apply Apply labels from the template to a repository
wipe Remove all or specific labels from a repository
migrate Wipe all existing labels and apply the template (clean slate)
generate Generate custom labels using AI (requires GitHub Copilot)
list List all labels in a repository
preview Preview the landing page locally in your browser
OPTIONS (apply)
-r, --repo <owner/repo> Target repository (default: auto-detect)
-f, --force Overwrite existing labels
-l, --label <name> Apply specific label(s) by name (comma-separated)
-c, --category <name> Apply labels from specific category(ies) (comma-separated)
-e, --exclude <name> Exclude specific label(s) by name (comma-separated)
--exclude-category <name> Exclude labels from specific category(ies) (comma-separated)
--custom Include custom labels from labels-custom.json
OPTIONS (list)
-r, --repo <owner/repo> Target repository (default: auto-detect)
OPTIONS (migrate)
-r, --repo <owner/repo> Target repository (default: auto-detect)
-y, --yes Skip confirmation prompt
--custom Include custom labels from labels-custom.json
OPTIONS (generate)
-r, --repo <owner/repo> Target repository for optional apply step
-c, --category <name> Pre-select a category (type, status, community, resolution, area)
-m, --model <model> Copilot model to use (default: your Copilot config)
OPTIONS (wipe)
-r, --repo <owner/repo> Target repository (default: auto-detect)
-y, --yes Skip confirmation prompt
-l, --label <name> Remove specific label(s) by name (comma-separated)
-c, --category <name> Remove labels from specific category(ies) (comma-separated)
--custom Include custom labels when using --label or --category
OPTIONS (preview)
-p, --port <number> Port to serve on (default: 3000)
This project uses the Bun test framework for testing.
# Run all tests
bun testContributions are welcome! This project follows the Clean Commit convention.
This project is licensed under the CC0 1.0 Universal.
Waren Gonzaga


















