-
Notifications
You must be signed in to change notification settings - Fork 1
research: Codex built-ins + skills-vs-plugins distinction + factory integration plan (Otto-103) #290
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
research: Codex built-ins + skills-vs-plugins distinction + factory integration plan (Otto-103) #290
Changes from all commits
298a18a
d9091f0
ccff609
5041be5
b7e617b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,368 @@ | ||||||||||||||||||||||||||
| # Codex built-in skills + skills-vs-plugins distinction — factory integration plan | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Scope:** research + integration plan. Clarifies the | ||||||||||||||||||||||||||
| skill-vs-plugin distinction in both Claude Code and Codex | ||||||||||||||||||||||||||
| ecosystems, documents the five Codex built-in skills the | ||||||||||||||||||||||||||
| maintainer flagged (Image Gen / OpenAI Docs / Plugin Creator / | ||||||||||||||||||||||||||
| Skill Creator / Skill Installer), and proposes a concrete | ||||||||||||||||||||||||||
| factory integration path. Research-grade; not an | ||||||||||||||||||||||||||
| implementation commit. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Attribution:** research synthesized from the maintainer's | ||||||||||||||||||||||||||
| Otto-103 directive (five Codex built-ins + "figure out the | ||||||||||||||||||||||||||
| differences between skills and plugins and updates our factory | ||||||||||||||||||||||||||
| appropriately"), `openai/skills` repository, `developers.openai.com/codex/plugins` | ||||||||||||||||||||||||||
| and `/codex/plugins/build`, The New Stack 2026-03-26 coverage, | ||||||||||||||||||||||||||
| Claude Code plugin cache inspection at | ||||||||||||||||||||||||||
| `~/.claude/plugins/cache/**`, and the prior Codex Phase-1 | ||||||||||||||||||||||||||
| research (PR #231). | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Operational status:** research-grade. Does not commit | ||||||||||||||||||||||||||
| Zeta to a specific `.codex-plugin/plugin.json` location or | ||||||||||||||||||||||||||
| marketplace listing; proposes candidate paths with trade- | ||||||||||||||||||||||||||
| offs. Downstream implementation is an Otto-104+ decision. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Non-fusion disclaimer:** Claude Code and Codex independently | ||||||||||||||||||||||||||
| converged on plugin-containing-skills architecture. Shared | ||||||||||||||||||||||||||
| vocabulary (`plugin.json`, `SKILL.md`) is NOT evidence of | ||||||||||||||||||||||||||
| merged design process — both systems draw on the same prior | ||||||||||||||||||||||||||
| art (VS Code extensions; Atom packages; browser extensions) | ||||||||||||||||||||||||||
| plus the same operational need (bundle multiple capabilities | ||||||||||||||||||||||||||
| for one install). Per SD-9, convergence on plugin-vs-skill | ||||||||||||||||||||||||||
| distinction is expected parallel evolution, not unity. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## The distinction — one sentence each | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - **Skill** = single capability unit. One `SKILL.md` + | ||||||||||||||||||||||||||
| optional `references/` / `agents/` directories. | ||||||||||||||||||||||||||
| Procedural instructions for an agent to follow in a | ||||||||||||||||||||||||||
| specific situation. | ||||||||||||||||||||||||||
| - **Plugin** = distribution / installation unit. A JSON | ||||||||||||||||||||||||||
| manifest (`.claude-plugin/plugin.json` for Claude Code; | ||||||||||||||||||||||||||
| `.codex-plugin/plugin.json` for Codex) + a bundle that | ||||||||||||||||||||||||||
| can contain **one or more skills** + commands + MCP | ||||||||||||||||||||||||||
| servers + app integrations. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Plugins are containers; skills are contents.** A plugin | ||||||||||||||||||||||||||
| that ships with just one skill is valid; a plugin shipping | ||||||||||||||||||||||||||
| ten skills plus three MCP servers plus a commands | ||||||||||||||||||||||||||
| directory is also valid. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Structural comparison | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### Claude Code (inspected at `~/.claude/plugins/cache/claude-plugins-official/commit-commands/unknown/`) | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||
| <plugin-name>/ | ||||||||||||||||||||||||||
| ├── .claude-plugin/ | ||||||||||||||||||||||||||
| │ └── plugin.json # {name, description, author} | ||||||||||||||||||||||||||
| ├── commands/ # slash commands | ||||||||||||||||||||||||||
| ├── skills/ # SKILL.md bundles | ||||||||||||||||||||||||||
| ├── agents/ # persona files | ||||||||||||||||||||||||||
| ├── README.md | ||||||||||||||||||||||||||
| └── LICENSE | ||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Plugin manifest is intentionally minimal — 3 fields | ||||||||||||||||||||||||||
| observed (name / description / author). Enablement is via | ||||||||||||||||||||||||||
| `~/.claude/settings.json` `enabledPlugins` map. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### Codex (per [developers.openai.com/codex/plugins/build](https://developers.openai.com/codex/plugins/build)) | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||
| <plugin-name>/ | ||||||||||||||||||||||||||
| ├── .codex-plugin/ | ||||||||||||||||||||||||||
| │ └── plugin.json # kebab-case name, semver, description; optional skills/mcpServers/apps/interface | ||||||||||||||||||||||||||
| ├── skills/ # SKILL.md bundles (optional) | ||||||||||||||||||||||||||
| │ └── <skill>/ | ||||||||||||||||||||||||||
| │ └── SKILL.md | ||||||||||||||||||||||||||
| ├── .app.json # app integrations (optional) | ||||||||||||||||||||||||||
| ├── .mcp.json # MCP servers (optional) | ||||||||||||||||||||||||||
| └── assets/ # icons, screenshots (optional) | ||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Codex manifest is more ceremonious than Claude's — carries | ||||||||||||||||||||||||||
| semver, `interface` object with display metadata | ||||||||||||||||||||||||||
| (displayName / shortDescription / longDescription / | ||||||||||||||||||||||||||
| developerName / category / capabilities / website URLs / | ||||||||||||||||||||||||||
| defaultPrompt / brandColor / logo / screenshots). Designed | ||||||||||||||||||||||||||
| for marketplace listing. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### Key asymmetries | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| | Dimension | Claude Code | Codex | | ||||||||||||||||||||||||||
| |---|---|---| | ||||||||||||||||||||||||||
| | Manifest dir | `.claude-plugin/` | `.codex-plugin/` | | ||||||||||||||||||||||||||
| | Manifest fields | Minimal (name/description/author) | Rich (semver + interface block + URLs + category) | | ||||||||||||||||||||||||||
| | Can bundle commands | Yes (`commands/`) | Not observed in manifest schema | | ||||||||||||||||||||||||||
| | Can bundle MCP | Not in manifest schema | Yes (`.mcp.json`) | | ||||||||||||||||||||||||||
| | Can bundle apps | Not explicit | Yes (`.app.json`) | | ||||||||||||||||||||||||||
| | Marketplace | `enabledPlugins` in settings.json | `codex plugin marketplace` CLI + app browser | | ||||||||||||||||||||||||||
| | Manifest format | JSON | JSON | | ||||||||||||||||||||||||||
| | Skill format | `SKILL.md` + optional `references/` | `SKILL.md` + optional `references/` + optional `agents/*.yaml` | | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Neither is a superset of the other. Codex's richer | ||||||||||||||||||||||||||
| marketplace-shaped manifest suggests it aims for public | ||||||||||||||||||||||||||
| distribution; Claude's minimal manifest fits a more | ||||||||||||||||||||||||||
| config-like enable/disable model. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## The five Codex built-in skills the maintainer flagged | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Per the maintainer's 2026-04-24 directive — five built-ins | ||||||||||||||||||||||||||
| enabled by default in Codex: | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### 1. Image Gen | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Purpose:** generate or edit images for websites / games / | ||||||||||||||||||||||||||
| other. | ||||||||||||||||||||||||||
| **Type:** app-integration-backed skill (likely wraps OpenAI's | ||||||||||||||||||||||||||
| image endpoints); hits the `.app.json` + API-key surface. | ||||||||||||||||||||||||||
| **Factory impact:** low. Image generation is not a core | ||||||||||||||||||||||||||
| factory capability; Zeta is a DBSP library + factory-process | ||||||||||||||||||||||||||
| experiment. If Codex-in-Codex generates a screenshot for a | ||||||||||||||||||||||||||
| doc, useful; not substrate-shaping. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### 2. OpenAI Docs | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Purpose:** reference official OpenAI docs, including | ||||||||||||||||||||||||||
| upgrade guidance. | ||||||||||||||||||||||||||
| **Type:** read-only reference skill; likely fetches from | ||||||||||||||||||||||||||
| docs domain. | ||||||||||||||||||||||||||
| **Factory impact:** medium. The AGENTS.md handbook Zeta | ||||||||||||||||||||||||||
| uses already covers factory-internal discipline; OpenAI | ||||||||||||||||||||||||||
| Docs complements when a Codex session needs to look up | ||||||||||||||||||||||||||
| SDK / API / feature documentation. Should be treated as | ||||||||||||||||||||||||||
| *external reference tool*, not *substrate replacement*. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### 3. Plugin Creator | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Purpose:** scaffold plugins and marketplace entries. | ||||||||||||||||||||||||||
| **Type:** scaffolding skill; produces `.codex-plugin/plugin.json` | ||||||||||||||||||||||||||
| plus optional marketplace listing. | ||||||||||||||||||||||||||
| **Factory impact:** HIGH. This is the skill that would | ||||||||||||||||||||||||||
| create a "Zeta for Codex" plugin if we wanted one. The | ||||||||||||||||||||||||||
| architecture question it surfaces: does Zeta ship ITS OWN | ||||||||||||||||||||||||||
| Codex plugin? If yes, Plugin Creator is the tool that | ||||||||||||||||||||||||||
| builds it. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### 4. Skill Creator | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Purpose:** create or update a skill. | ||||||||||||||||||||||||||
| **Type:** scaffolding skill; produces `SKILL.md` + | ||||||||||||||||||||||||||
| `references/` + `agents/`. | ||||||||||||||||||||||||||
| **Factory impact:** HIGH. Claude Code has a parallel | ||||||||||||||||||||||||||
| `skill-creator` (enabled in Zeta's `enabledPlugins`); Codex's | ||||||||||||||||||||||||||
| built-in is its sibling. When a Codex session authors a new | ||||||||||||||||||||||||||
| skill for `.codex/skills/`, Skill Creator is the tool. | ||||||||||||||||||||||||||
| Cross-harness boundary: Otto uses Claude Code's | ||||||||||||||||||||||||||
| `skill-creator` for `.claude/skills/` work; a Codex session | ||||||||||||||||||||||||||
| uses Codex's Skill Creator for `.codex/skills/` work. Per | ||||||||||||||||||||||||||
| Otto-79 cross-edit-no discipline, neither edits the other's. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### 5. Skill Installer | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| **Purpose:** install curated skills from `openai/skills` or | ||||||||||||||||||||||||||
| other repos. | ||||||||||||||||||||||||||
| **Type:** package-manager-style skill; fetches + installs | ||||||||||||||||||||||||||
| from remote skill repositories. | ||||||||||||||||||||||||||
| **Factory impact:** medium. `openai/skills` is the OpenAI- | ||||||||||||||||||||||||||
| curated skill marketplace (tiers: `.system` / `.curated` / | ||||||||||||||||||||||||||
| `.experimental`). If Zeta wants to consume community-curated | ||||||||||||||||||||||||||
| Codex skills (e.g., `gh-address-comments`), Skill Installer | ||||||||||||||||||||||||||
| is the mechanism. Policy question: does Zeta install | ||||||||||||||||||||||||||
| community skills into `.codex/skills/` or keep `.codex/` | ||||||||||||||||||||||||||
| first-party-only? Likely answer: first-party-only for | ||||||||||||||||||||||||||
| checked-in substrate; per-contributor for local-only use. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Factory integration — proposed plan | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### Phase 0 — Research + Plan (this doc, Otto-103) | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Establish the distinction + catalogue built-ins + surface | ||||||||||||||||||||||||||
| decisions. Not implementation. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### Phase 1 — Update `.codex/README.md` with built-ins awareness (S, Otto-104 candidate) | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Extend the existing `.codex/README.md` (landed Otto-102 | ||||||||||||||||||||||||||
| PR #288) with a "Codex built-in skills" section naming | ||||||||||||||||||||||||||
| the five + their relationship to Zeta's substrate. | ||||||||||||||||||||||||||
|
Comment on lines
+188
to
+192
|
||||||||||||||||||||||||||
| ### Phase 1 — Update `.codex/README.md` with built-ins awareness (S, Otto-104 candidate) | |
| Extend the existing `.codex/README.md` (landed Otto-102 | |
| PR #288) with a "Codex built-in skills" section naming | |
| the five + their relationship to Zeta's substrate. | |
| ### Phase 1 — Add Codex built-ins guidance at the eventual entrypoint (S, Otto-104 candidate) | |
| If Zeta adopts a checked-in `.codex/` substrate, add a | |
| `.codex/README.md` entrypoint with a "Codex built-in | |
| skills" section naming the five + their relationship to | |
| Zeta's substrate. Otherwise place the same guidance in | |
| the eventual Codex entrypoint file that serves this role. |
Copilot
AI
Apr 24, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P1: This cites “GOVERNANCE.md §33”, but GOVERNANCE.md in the current repo only goes through rule 32 and contains no §33. Please update this to reference the correct source of the archive-header requirement (or land §33 in GOVERNANCE.md first) so the cross-reference is accurate.
| Archive-header format applied per GOVERNANCE.md §33. | |
| Archive-header format applied. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Codex column currently says command bundling is “Not observed in manifest schema,” but the primary plugin source disagrees: I checked
openai/pluginsREADME (main, around line 224), which documentscommands/as an optional companion surface for Codex plugins. Keeping this row as-is can mislead follow-up implementation work (especially Option B/C planning) into excluding supported command bundles from plugin design.Useful? React with 👍 / 👎.