r-workflow-plugins keeps plugin content portable and adds small metadata adapters for each agent runtime.
Shared content lives in:
plugins/<plugin-name>/skills/<skill-name>/SKILL.mdplugins/<plugin-name>/skills/<skill-name>/references/
Agent-specific metadata lives in:
.agents/plugins/marketplace.jsonfor Codex..claude-plugin/marketplace.jsonfor Claude Code.plugins/<plugin-name>/.codex-plugin/plugin.jsonfor Codex.plugins/<plugin-name>/.claude-plugin/plugin.jsonfor Claude Code.plugins/<plugin-name>/skills/<skill-name>/agents/openai.yamlfor OpenAI-facing skill UI metadata.- Possible future
gemini-extension.jsonfiles for Gemini CLI, once a supported distribution shape is chosen.
Do not add adapter folders for other agents until there is a real, documented plugin or marketplace format to support.
Codex can add this public marketplace from the CLI:
codex plugin marketplace add brianmsm/r-workflow-pluginsCodex reads the repo marketplace at:
.agents/plugins/marketplace.json
The current Codex marketplace exposes:
./plugins/quarto-publishing
For local development, clone or open this repository in Codex, use the repo-scoped marketplace at .agents/plugins/marketplace.json, and install or enable the quarto-publishing plugin from that local marketplace.
The Codex plugin manifest is:
plugins/quarto-publishing/.codex-plugin/plugin.json
Codex users can install or enable plugins from the Codex app, the Codex VS Code extension, or from Codex with /plugins.
Codex skills can be invoked by name when needed:
$quarto-render-troubleshooting
Claude Code reads the repo marketplace at:
.claude-plugin/marketplace.json
Claude plugin manifests live inside each plugin:
plugins/quarto-publishing/.claude-plugin/plugin.json
Claude Code namespaces plugin skills as:
/quarto-publishing:<skill-name>
For example:
/quarto-publishing:quarto-render-troubleshooting
Local testing can use:
claude --plugin-dir ./plugins/quarto-publishingMarketplace installation can use:
claude plugin marketplace add brianmsm/r-workflow-plugins
claude plugin install quarto-publishing@r-workflow-pluginsClaude Code resolves plugin versions in this order:
versionin the plugin's.claude-plugin/plugin.jsonversionin the plugin entry inside.claude-plugin/marketplace.json- the Git commit SHA of the plugin source
For r-workflow-plugins, keep the marketplace as a catalog and keep plugin release versions inside each plugin manifest. Do not duplicate plugin version fields in .claude-plugin/marketplace.json.
Current policy:
.claude-plugin/marketplace.json: no per-pluginversionfield.plugins/<plugin-name>/.claude-plugin/plugin.json: plugin-levelversionfield.homepage: point to the plugin subdirectory so users can jump directly to plugin-specific documentation.$schema: optional editor tooling only; omit it unless validation/autocomplete becomes useful.
During scaffold or pre-release development, a plugin may use 0.0.0 or omit version temporarily if commit-SHA-based update behavior is preferred. For controlled plugin releases, keep version in the plugin manifest and bump it only when preparing an actual plugin release.
Gemini CLI support is experimental and local-only for now.
Gemini CLI extensions currently expect the extension root to contain:
gemini-extension.json
In this monorepo, each plugin lives under:
plugins/<plugin-name>/
That means remote installation from a GitHub subdirectory is not currently a reliable supported path for this repository.
Do not recommend this as a working installation command:
gemini extensions install https://github.com/brianmsm/r-workflow-plugins/tree/main/plugins/quarto-publishingThat URL points to a GitHub web page for a subdirectory, not to a standalone extension root. Gemini CLI currently documents gemini extensions install <source> for a Git repository URL or a local path, but it does not document a --subdir, --path, or git-subdir style option for installing an extension rooted inside a monorepo. Gemini CLI would need to treat plugins/quarto-publishing/ as the extension root, while current extension installation is oriented around the source root.
Relevant upstream issues:
google-gemini/gemini-cli#25676: Support installing extensions from a Git repository subdirectorygoogle-gemini/gemini-cli#7808: Allow specifying a ref and path for Git-installed extensions
This is the preferred local workaround during development:
git clone https://github.com/brianmsm/r-workflow-plugins
cd r-workflow-plugins
gemini extensions link plugins/quarto-publishingThis treats plugins/quarto-publishing as the local extension root during development. Changes made in the checked-out plugin directory remain visible through the linked extension.
To install a local copy instead of linking the development directory:
git clone https://github.com/brianmsm/r-workflow-plugins
cd r-workflow-plugins
gemini extensions install ./plugins/quarto-publishingThis installs from the local plugin directory rather than from a GitHub subdirectory URL.
The most portable part of the plugin is the skill content under:
plugins/quarto-publishing/skills/
As a lower-level fallback, a user can manually copy relevant skill folders into a Gemini-recognized skills or extension structure. This is mainly useful when adapting skills from Codex or Claude Code workflows before a native Gemini distribution path is finalized.
Do not present Gemini CLI as fully supported yet. Use wording such as experimental, local workaround, not currently the primary supported remote installation path, and pending upstream support for Git subdirectory extension installation.