Academic research plugins and skills for both Claude Code and Codex. Claude marketplace support stays intact. Codex support now includes repo-scoped plugin manifests and a local marketplace for private or team distribution.
| Plugin | Description |
|---|---|
project-setup |
Create a new research project with the expected repo/share structure |
zotero-connector |
Read papers from Zotero and summarize them in Markdown |
pdf2markdown-converter |
Convert PDFs to Markdown with Mistral OCR and image extraction |
work-journal |
Write formal work journals or quick Markdown reports for completed analysis |
draft-reviewer |
Run structured academic draft review across writing, math, and citations |
worktree-data-sync |
Compare and sync non-git data between existing worktrees |
review-doc-commit |
Review changes, update docs, and prepare topical git commits |
This repo already includes a Codex marketplace at .agents/plugins/marketplace.json. That is the object Codex discovers. The individual installable packages are the plugin folders under plugins/, each with its own .codex-plugin/plugin.json.
Per the official Codex docs, local plugins are discovered through either:
- a repo marketplace at
$REPO_ROOT/.agents/plugins/marketplace.json - a personal marketplace at
~/.agents/plugins/marketplace.json
Codex installs local plugins into ~/.codex/plugins/cache/<marketplace>/<plugin>/local/, and stores enable/disable state in ~/.codex/config.toml.
Official references:
- https://developers.openai.com/codex/plugins/build#how-codex-uses-marketplaces
- https://developers.openai.com/codex/plugins/build#marketplace-metadata
- https://developers.openai.com/codex/plugins/build#install-a-local-plugin-manually
This is the simplest path if you want to use the current checkout as the marketplace.
- Clone this repository locally.
- Open the repo root in Codex.
- Restart Codex so it reloads
.agents/plugins/marketplace.json. - Open the plugin directory in Codex with
/pluginsor the Plugins panel. - Choose the marketplace
AgentContract Local Plugins. - Install the plugin you want.
Notes:
- The marketplace name is
agent-contract-local; the user-facing title isAgentContract Local Plugins. - The
source.pathentries in the marketplace are resolved relative to the repo root, not relative to.agents/plugins/. - If you change a plugin manifest or skill and the update does not appear, restart Codex. If the install still looks stale, disable and reinstall the plugin from the plugin directory.
Bundled skills are available after plugin install. Workflows that depend on standalone reviewer or worker roles still require the advanced installer in CODEX_INSTALL.md.
Use this when you want the current repo to appear as a marketplace across repositories instead of only when Codex is opened inside this checkout.
- Keep a stable local checkout of this repo somewhere under your home directory.
- Create
~/.agents/plugins/marketplace.json. - Point each plugin entry's
source.pathat that checkout using a./-prefixed path relative to your home directory. - Restart Codex and install from that personal marketplace.
Example for a single plugin:
{
"name": "agent-contract-personal",
"interface": {
"displayName": "AgentContract Personal"
},
"plugins": [
{
"name": "project-setup",
"source": {
"source": "local",
"path": "./path/to/AgentContract/plugins/project-setup"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Research"
}
]
}Important:
- Replace
./path/to/AgentContract/...with a path relative to your home directory if you store the marketplace at~/.agents/plugins/marketplace.json. - Do not copy this repo's existing marketplace file directly into
~/.agents/plugins/marketplace.jsonwithout rewriting thesource.pathvalues. The shipped repo marketplace assumes the marketplace root is the repo root. - Once the single-plugin version works, expand
plugins[]to mirror the full list from.agents/plugins/marketplace.json.
If you want another user to add this marketplace on their own machine, the reliable flow is:
- Have them clone this repository somewhere under their home directory, for example
~/code/AgentContractor~/Dropbox/package_dev/EconResearchPlugins. - Have them create or update
~/.agents/plugins/marketplace.jsonon their machine. - In that personal marketplace file, point each plugin entry at their own local checkout using a
./-prefixed path relative to their home directory. - Restart Codex.
- Open
/plugins, choose the personal marketplace, and install the desired plugin.
Two common examples:
- If they cloned to
~/code/AgentContract, use paths like./code/AgentContract/plugins/project-setup. - If they cloned to
~/Dropbox/package_dev/EconResearchPlugins, use paths like./Dropbox/package_dev/EconResearchPlugins/plugins/project-setup.
What to send another user:
- The repository URL or checkout instructions.
- A note telling them where to clone it on their machine.
- A personal marketplace JSON snippet whose
source.pathvalues match that clone location.
What not to send another user unchanged:
- Your own
~/.agents/plugins/marketplace.json. - This repo's
.agents/plugins/marketplace.json.
Those files are only correct for the machine and marketplace root they were written for.
python3 scripts/validate_plugin_manifests.pyUse CODEX_INSTALL.md only when you need standalone agent roles installed into .codex/agents or you want the older copy/symlink skill installer flow.
- If the marketplace does not appear at all, verify that Codex was restarted after adding or editing the marketplace JSON.
- If the marketplace appears but a plugin does not, validate the repo with
python3 scripts/validate_plugin_manifests.py. - If a personal marketplace cannot find the plugin, the
source.pathis probably being interpreted relative to the wrong root. - If a plugin installs but behaves like an older version, reinstall after restarting so Codex refreshes the local cached copy.
- Claude Code CLI
uvfor skill scripts with PEP 723 inline dependencies- API keys per plugin where required
# Add marketplace
/plugin marketplace add FuZhiyu/AgentContract
# Install individual plugins
/plugin install zotero-connector@FuZhiyu-AgentContract
/plugin install pdf2markdown-converter@FuZhiyu-AgentContract
/plugin install work-journal@FuZhiyu-AgentContractproject-setup is currently repo-local/direct install only on the Claude side.
/plugin install ./plugins/zotero-connector
/plugin install ./plugins/project-setup/plugin marketplace update FuZhiyu-AgentContractSeveral plugins read shared config from .claude/agent-contract.yaml (project) or ~/.config/agent-contract/config.yaml (global):
paper-reader:
mistral_api_key: "sk-..."
zotero_api_key: "..."
zotero_library_type: "user"
zotero_library_id: "12345"Some plugins also support environment-variable alternatives. Check the plugin-specific README where needed.
zotero-connector: requires Zotero credentials and integrates withpdf2markdown-converter.zotero-connector: Codex v1 assumes Zotero tools are already available in the session, or that the user can supply an attachment key/local PDF path.pdf2markdown-converter: requires a Mistral API key.work-journal: shipswork-journalandreport-in-markdown; standalone review roles remain on the advanced installer path for Codex.draft-reviewer: ships the review skill in the Codex plugin and keeps standalone reviewer agents on the advanced installer path.review-doc-commit: Codex plugin ships the main skill; standalone agents stay installer-managed.