copilot-plugin-manager
v1.0.0
Published
A rich terminal UI for managing GitHub Copilot CLI plugins. Browse marketplaces, install/uninstall plugins, enable/disable, update, and configure — all from a beautiful TUI.
Readme
CPM — Copilot Plugin Manager
A rich terminal UI for managing GitHub Copilot CLI plugins. Browse marketplaces, install/uninstall plugins, enable/disable, update, and configure — all from a beautiful TUI.
Built with Ink (React for CLIs) and TypeScript.
Features
- 📦 Dashboard — overview of installed plugins, quick actions
- 🔍 Marketplace Browser — browse and search registered marketplaces, install plugins
- 📋 Installed Plugins — manage installed plugins with search, enable/disable, uninstall, update
- 📄 Plugin Details — view full plugin metadata
- ⚙️ Settings — manage marketplace registrations (add/remove)
- 🎨 GitHub Dark Theme — cohesive dark color scheme inspired by GitHub
- ⌨️ Keyboard-Driven — vim-style navigation (j/k), tab switching, search (/)
Prerequisites
- Node.js 18+
- GitHub CLI (
gh) installed and authenticated - GitHub Copilot CLI installed and configured (
copilotbinary in PATH)
Install
One command:
npm install -g copilot-plugin-managerOr with auto-setup of prerequisites (gh, copilot):
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/basaba/copilot-marketplace-tui/main/install.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/basaba/copilot-marketplace-tui/main/install.ps1 | iexThen run:
cpmDevelopment
npm install
npm run build # Compile TypeScript
npm start # Run (real copilot CLI integration)
npm start -- --demo # Run with demo dataKeybindings
| Key | Action |
|-----|--------|
| tab / shift+tab | Switch between screens |
| ↑/k / ↓/j | Navigate lists |
| ←/→ | Switch marketplace tabs |
| enter | Select / view detail |
| / | Search / filter |
| esc | Exit search / go back |
| i | Install plugin |
| e / d | Enable / disable plugin |
| u | Update plugin |
| x | Uninstall / remove |
| q | Quit |
Architecture
src/
├── index.tsx # CLI entry point
├── App.tsx # Root component, navigation, state
├── types.ts # TypeScript type definitions
├── theme.ts # GitHub dark theme colors
├── components/
│ ├── TabBar.tsx # Top-level screen navigation
│ ├── SearchBar.tsx # Search/filter input
│ ├── Table.tsx # Navigable data table
│ └── StatusBar.tsx # Bottom help/status line
├── views/
│ ├── Dashboard.tsx # Home screen with stats + quick actions
│ ├── Installed.tsx # Installed plugins list
│ ├── Marketplace.tsx # Marketplace browser with sub-tabs
│ ├── Detail.tsx # Plugin detail view
│ └── Settings.tsx # Marketplace management
└── services/
├── copilot.ts # CLI wrapper (shells out to `copilot plugin ...`)
└── demo.ts # Demo data generatorHow It Works
CPM wraps the existing copilot plugin CLI commands:
copilot plugin list— list installed pluginscopilot plugin install/uninstall— install/remove pluginscopilot plugin enable/disable— toggle pluginscopilot plugin update— update pluginscopilot plugin marketplace list/browse/add/remove— manage marketplaces
Demo Mode
Force demo mode with --demo to see sample data without needing the copilot CLI.
Built With
- Ink — React for CLIs
- React — UI component model
- TypeScript — Type safety
License
MIT
