Skip to content

feat: publish Agent Plugins packages for Codex and Copilot to glean-plugins - #37

Draft
steve-calvert-glean wants to merge 2 commits into
feat/pluginpack-0.12from
feat/glean-plugins-output
Draft

steve-calvert-glean wants to merge 2 commits into
feat/pluginpack-0.12from
feat/glean-plugins-output

Conversation

@steve-calvert-glean

@steve-calvert-glean steve-calvert-glean commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #35. Merge that first.

Problem

Codex reads the open Agent Plugins format, and so does GitHub Copilot. Our only Agent Plugins output is the codex target. It publishes to codex-plugins with a Codex-only marketplace, so Copilot users have nothing to install.

Change

This adds an agent-plugins target that builds each plugin once as an Agent Plugins package. It also writes a marketplace for Codex and one for Copilot. On release it publishes to the new gleanwork/glean-plugins repo.

  • The packages match the codex target's: the same plugin.json (with Codex's card under extensions["com.openai"]), mcp.json and skills. The Codex interface and marketplace entry values are now shared constants, so the two targets can't drift apart.
  • Copilot also gets the ten custom agents, as com.github.copilot/agents/NAME.agent.md.
  • overrides/agent-plugins/ holds READMEs with install steps for both clients, plus the Codex override's MCP config and assets.
  • validate, the changelog check, publish.yml, README.md and RELEASE.md all cover the new target.

The claude, cursor and codex outputs don't change.

glean-plugins/
├── .agents/plugins/marketplace.json   # Codex
├── .github/plugin/marketplace.json    # Copilot
└── plugins/
    ├── glean/            # plugin.json, mcp.json, mcp/, skills/, com.github.copilot/agents/
    └── glean-dev-docs/   # plugin.json, skills/

Testing

  • npm test passes with @gleanwork/pluginpack 0.12.0, and all four targets validate.
  • A manual publish.yml run from this branch passed every job and opened gleanwork/glean-plugins#1.
  • The new npm run e2e:install passes all 15 checks against that sync branch (--source gleanwork/glean-plugins --ref pluginpack/sync-agent-plugins) and against a local build. In Codex 0.160.1 and Copilot CLI 1.0.100, both plugins install, the 19 glean skills and Copilot's 10 agents are present, and the Glean MCP server answers initialize and tools/list from each client's resolved config.

Still to test before release: a signed-in Copilot session (agents, Glean sign-in, tool calls), VS Code and Cursor.

Open questions

  • skill-creation-guide uses the shared version. That version spawns the work-pattern-analyzer and skill-generator agents. Copilot has them, but Codex doesn't. The Codex-only version hands off to $skill-creator instead, which Copilot lacks. The likely fix is a version that uses the agents when they exist and does the work itself otherwise.
  • glean-dev-docs still needs a manual mcp add in each client, as it does for Codex today.

…lugins

Add an agent-plugins target that builds each plugin once as an Agent
Plugins package, with a marketplace for Codex and one for GitHub Copilot,
and publish it to gleanwork/glean-plugins on release.

- The packages match the codex target's: the same plugin.json (Codex's
  card under extensions["com.openai"]), mcp.json and skills. The Codex
  interface and entry values are now shared constants, so the two
  targets can't drift.
- Copilot also gets the ten custom agents, as
  com.github.copilot/agents/NAME.agent.md.
- overrides/agent-plugins/ holds READMEs with install steps for both
  clients, plus the Codex override's MCP config and assets.
  skill-creation-guide uses the shared version.
- validate, the changelog check, publish.yml, README and RELEASE.md
  cover the new target.

Requires pluginpack with agent-plugins clients support.
Add npm run e2e:install. It installs both plugins from a local build or a
GitHub marketplace ref in Codex and GitHub Copilot CLI, each with a
throwaway home. It then checks the skills, the Copilot agents, and that
the Glean MCP server answers initialize and tools/list from each client's
resolved config. RELEASE.md now runs it against the glean-plugins sync
branch before a release.
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.

1 participant