Claude Code
Claude Code uses a plugin system with .claude-plugin/plugin.json manifests. Distribution via GitHub-hosted marketplace repos. All management through in-session /plugin slash commands.
INSTALL
From GitHub
Add the Subquadratic marketplace, then install the plugin.
Commands
/plugin marketplace add subquadratic-ai/subq-utility-plugin
/plugin install subq-utility@subquadratic
/reload-plugins
claude --plugin-dir ./subq-utility-plugin
skills/*/SKILL.md, hooks/hooks.json, .mcp.json, agents/, bin/
.claude-plugin/plugin.json
Codex CLI
Codex uses a plugin system with .codex-plugin/plugin.json manifests. Browse and install via the /plugins TUI, or add manually to config.toml.
INSTALL
Config
Add the plugin to your Codex configuration file.
~/.codex/config.toml
[plugins.subq-utility]
path = "https://github.com/subquadratic-ai/subq-utility-plugin"
/plugins inside Codex CLI to browse and install
skills/*/SKILL.md with name/description frontmatter
hooks.json at plugin root — SessionStart, Stop, UserPromptSubmit
.codex-plugin/plugin.json
Gemini CLI
Gemini CLI uses “extensions” with a gemini-extension.json manifest. Install from GitHub via shell command. Tools exposed through MCP servers.
INSTALL
From GitHub
Install the extension directly from the repository.
Commands
gemini extensions install https://github.com/subquadratic-ai/subq-utility-plugin
gemini extensions install https://github.com/subquadratic-ai/subq-utility-plugin --auto-update
gemini extensions link .
~/.gemini/extensions/
BeforeAgent, AfterAgent, BeforeTool, AfterTool, OnUserInput
gemini-extension.json
--ref v1.2.0 flag on install
Compatibility Matrix
Side-by-side comparison of how each provider handles plugins, hooks, skills, and distribution.
.claude-plugin/plugin.json.codex-plugin/plugin.jsongemini-extension.jsonskills/*/SKILL.mdskills/*/SKILL.mdhooks/hooks.jsonhooks.json (root)settings.json/plugin install/plugins TUIgemini extensions installopenai/plugins repo--plugin-dirconfig.tomlextensions linkPrerequisites
The plugin is a pure declaration shell—all hook logic lives in the SubQ CLI. You need the CLI installed and (optionally) the local server running.
subq must be on PATH. SessionStart hook includes a command -v subq fallback.
{}.
SUBQ_CODE_PATH env var to use a non-PATH CLI location.