Skip to content

feat: package the boxel-cli plugin for OpenAI Codex - #5645

Open
jurgenwerk wants to merge 6 commits into
mainfrom
boxel-cli-codex-plugin
Open

feat: package the boxel-cli plugin for OpenAI Codex#5645
jurgenwerk wants to merge 6 commits into
mainfrom
boxel-cli-codex-plugin

Conversation

@jurgenwerk

@jurgenwerk jurgenwerk commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Codex reads the same SKILL.md format Claude Code does, so the existing skills work there unchanged — this packages them. A .codex-plugin/plugin.json sits next to .claude-plugin/plugin.json, both pointing at the same skills/ directory, and a Codex marketplace manifest at .agents/plugins/marketplace.json mirrors the Claude one, so Codex users install the same way.

pnpm build:plugin generates the Codex manifest from the Claude one and the publish workflow versions both, so they can't drift. The manifest carries an interface block so the plugin renders with its name rather than bare.

Verified against Codex 0.146.0 by installing from a local marketplace.

jurgenwerk and others added 3 commits July 30, 2026 13:42
Add a .codex-plugin/plugin.json manifest generated from the Claude Code
manifest by build-plugin.ts, a repo-level Codex marketplace manifest at
.agents/plugins/marketplace.json, and bump both plugin manifests together
in the publish workflow.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…face block

The README claimed the commands under commands/ were Claude Code-only.
Codex does reach them: it converts a plugin's commands to skills at
install time, named source-command-<name>. That conversion drops any
command whose generated skill would exceed 4000 bytes, silently and with
no warning, which leaves out the four largest — boxel-create-card,
boxel-edit-template, boxel-sync-workspace, and distill-learnings.

Restaging them as skills in this package would put the fix in the wrong
layer. commands/ is imported from cardstack/boxel-skills, which owns the
skill-versus-command split; this package copies that decision. They reach
Codex when they are skills upstream, so the README records the gap and
where it belongs instead.

The Codex manifest also gains the interface block — display name, short
and long description, category, site — so the plugin renders with its
name rather than bare next to the curated plugins.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jurgenwerk
jurgenwerk force-pushed the boxel-cli-codex-plugin branch from ad872da to 8468621 Compare August 3, 2026 08:28
jurgenwerk and others added 2 commits August 4, 2026 10:39
The workflow commands are being deleted upstream, so the README and the
syncCodexManifest docstring no longer describe Codex's commands-to-skills
conversion or which commands its size limit excluded. Codex plugins have no
commands slot; skills/ is the whole surface.

Also corrects the manual-install snippet: it symlinked each skill into
~/.agents/skills, and Codex does not follow symlinked skill directories, so
nothing loaded. It copies now.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codex packaging is about skills; the README and the syncCodexManifest
docstring no longer explain what Codex does or doesn't do with a commands
directory.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jurgenwerk
jurgenwerk requested a lite review from Copilot August 4, 2026 09:20
@jurgenwerk
jurgenwerk marked this pull request as ready for review August 4, 2026 09:20

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 80275c343a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .agents/plugins/marketplace.json Outdated
Comment thread packages/boxel-cli/plugin/.codex-plugin/plugin.json

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Packages the existing boxel-cli skill set for OpenAI Codex alongside the existing Claude Code plugin, aiming to keep manifests versioned and metadata-aligned while sharing the same skills/ directory.

Changes:

  • Extend pnpm build:plugin to also sync .codex-plugin/plugin.json from the Claude manifest.
  • Add Codex-facing marketplace manifest at .agents/plugins/marketplace.json and document Codex installation/usage.
  • Update the publish workflow to bump the version in both Claude and Codex plugin manifests.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/boxel-cli/scripts/build-plugin.ts Adds Codex manifest sync to the existing plugin skill synopsis generation script.
packages/boxel-cli/plugin/README.md Updates plugin documentation to cover both Claude Code and OpenAI Codex installation/usage.
packages/boxel-cli/plugin/.codex-plugin/plugin.json Introduces the Codex plugin manifest (generated/synced by build:plugin).
.github/workflows/boxel-cli-publish.yml Versions Claude + Codex manifests together during automated publish.
.agents/plugins/marketplace.json Adds Codex marketplace entry pointing at the existing plugin directory.
Suppressed comments (1)

packages/boxel-cli/scripts/build-plugin.ts:243

  • [Claude Code 🤖] The final status message still talks about “synopsis” even though this script can also update plugin/.codex-plugin/plugin.json, so the output is misleading when the only change is the manifest sync.
  console.log(
    changed === 0
      ? 'Plugin synopsis already up to date.'
      : `Plugin synopsis regenerated (${changed} file${changed === 1 ? '' : 's'} changed).`,
  );

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/boxel-cli/scripts/build-plugin.ts
Comment thread packages/boxel-cli/plugin/README.md Outdated
Fail rather than silently mis-derive the Codex description: the regex
replace was a no-op if the Claude description were reworded, which would
have carried "Claude Code" into the Codex manifest. It now asserts the
prefix and throws with the constant to update.

Fill in the manifest fields the curated Codex plugins all carry —
interface.capabilities, interface.defaultPrompt, and the marketplace
entry's policy and category. Install works without them on 0.146.0, but
they are documented fields and other ingestion paths may validate.

Clarify the invocation naming: Codex namespaces the skills boxel-cli:<name>
and invokes with $, while the /boxel-cli:<name> form in the tables is
Claude Code's. Also drops "synopsis" from the build's final message, which
now covers the manifest sync too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jurgenwerk
jurgenwerk requested a review from a team August 4, 2026 09:51
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.

3 participants