CtrlK
BlogDocsLog inGet started
Tessl Logo

pluginstaller

Add a Codex plugin from a GitHub repo to a repo or personal marketplace using the current Codex plugin layout and marketplace metadata.

60

Quality

70%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/pluginstaller/SKILL.md
SKILL.md
Quality
Evals
Security

Pluginstaller

Use when the user gives a GitHub repo for a Codex plugin and wants it available in Codex.

Follow the current Codex plugin docs. Do not invent alternate install flows.

Inputs

  • GitHub repo URL or owner/repo
  • Install scope: repo or personal
  • If the repo contains more than one plugin root, ask which plugin folder to install.

Workflow

  1. If the user does not specify whether the plugin should be repo-scoped or personal, stop and ask.
  2. Fetch the repo and locate the plugin root by finding .codex-plugin/plugin.json.
  3. Read .codex-plugin/plugin.json and validate the canonical structure:
    • name, version, and description should exist.
    • Bundled paths such as skills, apps, and mcpServers should be relative to the plugin root and start with ./.
    • Only plugin.json should live inside .codex-plugin/.
  4. Prefer the built-in @plugin-creator skill when the task is to scaffold a new local plugin or add an existing local plugin to a marketplace. Use the manual path below when you are wiring up a repo the user already provided.
  5. Copy the entire plugin directory, not just SKILL.md, into a marketplace-visible location. Default to the documented standard locations unless the repo already uses a different valid marketplace-relative path:
    • repo: $CWD/plugins/<plugin-name> and $CWD/.agents/plugins/marketplace.json
    • personal: ~/.codex/plugins/<plugin-name> and ~/.agents/plugins/marketplace.json
  6. Preserve the full bundle at the plugin root, including sibling skills/, .app.json, .mcp.json, assets/, and any other plugin files. Do not move those files under .codex-plugin/.
  7. Create or update the marketplace file with the documented schema:
    • top-level marketplace name
    • optional interface.displayName
    • plugin entry name
    • source.source = "local"
    • source.path relative to the marketplace root:
      • repo: ./plugins/<plugin-name>
      • personal: ./.codex/plugins/<plugin-name>
    • policy.installation
    • policy.authentication
    • category
  8. Use marketplace values that match the docs unless the user says otherwise:
    • policy.installation = "AVAILABLE"
    • policy.authentication = "ON_INSTALL"
    • category from interface.category when present, otherwise Productivity
  9. Merge into any existing marketplace file instead of replacing it.
  10. Restart Codex and verify the plugin appears in /plugins.
  11. Report the runtime behavior accurately:
  • The marketplace entry points to the source plugin directory.
  • Codex installs the plugin into ~/.codex/plugins/cache/<marketplace>/<plugin>/<version>/.
  • For local plugins, the installed cache version is local.
  • Plugin enabled or disabled state is stored in ~/.codex/config.toml.

Rules

  • Prefer the terms repo marketplace and personal marketplace over workspace and global.
  • Do not present copying into plugins/ as the complete install. The marketplace entry is what makes the plugin discoverable in Codex.
  • Do not flatten or rename the plugin bundle.
  • Keep the plugin name stable and consistent across folder, manifest, and marketplace entry.
  • Keep manifest and marketplace paths relative and ./-prefixed where the docs require it.
  • Treat the documented repo and personal plugin directories as defaults, not absolute requirements, as long as the marketplace source.path remains valid and stays inside the marketplace root.
  • If the repo already ships a marketplace file, prefer it as the source of truth for marketplace ordering and metadata, and only add or update the plugin entry that is needed.
  • If the manifest is missing required basics or uses invalid root-relative paths, fix the plugin structure before claiming installation is complete.

Scope guide

Use repo when the plugin should live with one repo or be shared through that repo's marketplace. Use personal when the plugin should be available from the user's own Codex setup across projects.

Repository
am-will/codex-skills
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.