Skip to content

feat: add plugin system for installing extensions from GitHub repos#11975

Draft
roomote-v0[bot] wants to merge 1 commit intomainfrom
feature/plugin-system-11974
Draft

feat: add plugin system for installing extensions from GitHub repos#11975
roomote-v0[bot] wants to merge 1 commit intomainfrom
feature/plugin-system-11974

Conversation

@roomote-v0
Copy link
Contributor

@roomote-v0 roomote-v0 bot commented Mar 21, 2026

Related GitHub Issue

Closes: #11974

Description

This PR attempts to address Issue #11974 by introducing an MVP plugin system that acts as a distribution and installation mechanism on top of existing Roo Code extension points. Feedback and guidance are welcome.

Key implementation details:

  • Plugin manifest schema (packages/types/src/plugin.ts): Zod-validated plugin.json format that defines what a plugin bundles (commands, modes, MCP servers, skills)
  • GitHubSource (src/services/plugin/GitHubSource.ts): Fetches plugin manifests and files from GitHub repos via raw content API. Supports owner/repo and owner/repo@ref formats
  • PluginInstaller (src/services/plugin/PluginInstaller.ts): Handles installing/removing each extension point type into the correct locations (.roo/commands/, .roomodes, mcp_settings.json, .roo/skills/)
  • PluginManager (src/services/plugin/PluginManager.ts): Orchestrates install/remove/list with tracking via plugins.json
  • Built-in /plugin command (src/services/command/built-in-commands.ts): Provides agent instructions for plugin management (install, remove, list)

Design decisions:

  • Plugins are GitHub repos with a plugin.json manifest at the root
  • Installation tracking uses plugins.json (project or global scope)
  • Each extension point type is installed to its standard location
  • No new dependencies added - uses existing fetch, yaml, zod

Test Procedure

  • 25 new unit tests covering GitHubSource (18 tests) and PluginManager (7 tests)
  • All existing command tests (27) continue to pass
  • All lint checks pass across 14 packages
  • All type checks pass across 14 packages

Run tests:

cd src && npx vitest run services/plugin/__tests__/GitHubSource.spec.ts
cd src && npx vitest run services/plugin/__tests__/PluginManager.spec.ts

Pre-Submission Checklist

  • Issue Linked: This PR is linked to an approved GitHub Issue (see "Related GitHub Issue" above).
  • Scope: My changes are focused on the linked issue (one major feature/fix per PR).
  • Self-Review: I have performed a thorough self-review of my code.
  • Testing: New and/or updated tests have been added to cover my changes (if applicable).
  • Documentation Impact: I have considered if my changes require documentation updates (see "Documentation Updates" section below).
  • Contribution Guidelines: I have read and agree to the Contributor Guidelines.

Documentation Updates

Plugin manifest format documentation and usage examples should be added as part of follow-up work once the design is reviewed and approved.

Interactively review PR in Roo Code Cloud

Implements a plugin system that acts as a distribution and installation
mechanism on top of existing Roo Code extension points (slash commands,
custom modes, MCP servers, and skills).

New components:
- Plugin manifest schema (plugin.json) with Zod validation
- GitHubSource: fetch plugin manifests and files from GitHub repos
- PluginInstaller: install/remove commands, modes, MCP configs, skills
- PluginManager: orchestrate install/remove/list with tracking
- /plugin built-in command for agent-driven plugin management
- 25 new tests covering all components

Addresses #11974
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ENHANCEMENT] Add /plugin command to install ClaudeCode plugins

1 participant