Apothem — Codex plugin
This directory is the Codex plugin distribution surface for Apothem, installed through Codex's native marketplace:
codex plugin marketplace add ahmed-g-gad/apothem --sparse .agents/plugins --sparse plugins/apothem
codex plugin add apothem@apothem
The two --sparse paths fetch only the marketplace listing and the plugin,
not the whole repository; a full clone can run past Codex's 30-second clone
limit on a slow disk, such as a Windows drive under WSL.
It is a hand-authored bootstrap, not authoritative source. What lives here:
| Path | Holds |
|---|---|
plugin.json | The Codex plugin manifest, at the location Codex documents for a new package: a root plugin.json that declares the Agent Plugins 1.0.0 schema and carries the name, version, description, author, homepage, repository, license, and keywords. It names no skills path, because Codex discovers skills/ from the plugin root. Its version is held in lockstep with apothem.__version__ by tests/unit/test_manifest_version_sync.py. |
.codex-plugin/plugin.json | The compatibility fallback, for Codex builds that read only this older manifest location. Codex documents it as still supported, with the root manifest canonical for identity; the fallback supplies only OpenAI-specific settings, and only when the root manifest has no extensions.com.openai object. It keeps the skills path the older layout needs. Its version is held in lockstep with the root manifest by the same test. |
skills/apothem/SKILL.md | The Apothem entry skill Codex loads. |
README.md | This file. |
The marketplace entry that points Codex at this directory is
.agents/plugins/marketplace.json.
Manifest rules
tests/unit/test_codex_plugin_manifest.py checks each rule below.
- The root
plugin.jsonMUST stay inside the schema's property set ($schema,name,version,description,author,homepage,repository,license,keywords,extensions). The schema setsadditionalProperties: false, so askillskey there is invalid. - The root
plugin.jsonMUST NOT gain anextensions.com.openaiobject while the fallback stays: that object replaces the whole fallback overlay, and the two are not merged. Retire the fallback and this rule together. - Neither manifest MAY declare custom agents. Codex documents no agents
component for plugins, and the upstream request to add one is still open.
Apothem agents reach Codex as
~/.codex/agents/*.tomlthroughapothem install --harness codex. - The marketplace entry MUST carry a
policyblock. Codex tells authors to always includepolicy.installation(AVAILABLE,INSTALLED_BY_DEFAULT, orNOT_AVAILABLE) andpolicy.authentication(ON_INSTALLorON_USE) on each entry. The entry sets the defaults Codex documents for a new entry,AVAILABLEandON_INSTALL. - This bundle ships a skill and nothing else. Codex plugins can also carry an
mcp.json, hooks, and assets; a plugin that carries lifecycle hooks is not eligible for the public plugin directory, and installing it does not trust its hooks.
Do not edit behavior here. Everything Apothem ships is authored once under
src/apothem/ and converted to each tool's native surface
at install / materialize time — see the Repository Layout section of the
contributor guide. To change what a shipped skill does,
edit its source under src/apothem/skills/. The apothem entry skill has no
source there: skills/apothem/SKILL.md is hand-authored and is edited directly
in this directory.