{"id":50518190,"url":"https://github.com/fusengine/codex","last_synced_at":"2026-06-03T01:32:02.729Z","repository":{"id":358136039,"uuid":"1240169742","full_name":"fusengine/codex","owner":"fusengine","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-01T18:25:13.000Z","size":3801,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T19:23:11.884Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fusengine.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-15T20:56:05.000Z","updated_at":"2026-06-01T18:25:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/fusengine/codex","commit_stats":null,"previous_names":["fusengine/codex"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/fusengine/codex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fusengine%2Fcodex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fusengine%2Fcodex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fusengine%2Fcodex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fusengine%2Fcodex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fusengine","download_url":"https://codeload.github.com/fusengine/codex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fusengine%2Fcodex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33844686,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-03T01:32:01.929Z","updated_at":"2026-06-03T01:32:02.719Z","avatar_url":"https://github.com/fusengine.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fusengine Codex Plugins\n\n![version](https://img.shields.io/badge/version-1.2.0-blue?style=flat-square)\n![plugins](https://img.shields.io/badge/plugins-19-brightgreen?style=flat-square)\n![runtime](https://img.shields.io/badge/runtime-Bun-black?style=flat-square)\n![License: MIT](https://img.shields.io/badge/License-MIT-yellow?style=flat-square)\n\n\u003e **Codex CLI plugin marketplace.** 19 expert plugins for APEX workflow,\n\u003e SOLID/DRY enforcement, framework specialists, and MCP integrations. The\n\u003e implementation follows the official Codex CLI documentation at\n\u003e `developers.openai.com/codex`.\n\n## Installation\n\n```bash\ncodex plugin marketplace add https://github.com/fusengine/codex.git\n~/.codex/.tmp/marketplaces/fusengine-codex/setup.sh\n```\n\nWindows PowerShell:\n\n```powershell\ncodex plugin marketplace add https://github.com/fusengine/codex.git\n~/.codex/.tmp/marketplaces/fusengine-codex/setup.ps1\n```\n\nThat is all. The script runs from the temporary Codex marketplace checkout,\ninstalls dependencies, registers the marketplace, enables hooks, copies\n`AGENTS.md`, enables the 19 plugins, prompts for Codex configuration (model,\nreasoning effort, personality, approval policy, sandbox mode) and MCP API keys,\ninstalls a shell autoloader (`~/.config/fish/conf.d/codex-env.fish`,\n`~/.zshrc`, `~/.bashrc`, or the PowerShell profile), and resolves plugin\n`${VAR}` placeholders into static values in `~/.codex/config.toml`.\n\n**Prerequisites:** [Bun](https://bun.sh) and\n[Codex CLI](https://developers.openai.com/codex/cli) 0.130+.\n\n### Codex Config\n\nThe setup prompts for top-level `~/.codex/config.toml` keys. `(skip)` preserves\nthe existing value.\n\n| Key | Values | Docs |\n|---|---|---|\n| `model` | gpt-5.5, gpt-5.4 | [config-sample](https://developers.openai.com/codex/config-sample) |\n| `model_reasoning_effort` | minimal, low, medium, high, xhigh | same |\n| `personality` | none, friendly, pragmatic | same |\n| `approval_policy` | untrusted, on-request (recommended — model decides when to ask), never | `on-failure` dropped (deprecated by Codex) |\n| `sandbox_mode` | read-only, workspace-write, danger-full-access | same |\n| `agents.max_threads` | 6 (default), 8, 12, 16 | concurrent sub-agent cap — raise to avoid `agent thread limit reached` |\n| `suppress_unstable_features_warning` | auto-set `true` to silence the `plugin_hooks` under-development warning | same |\n\n### MCP API Keys\n\nThe setup prompts key by key. Empty input skips a key. Signup URLs are shown as\nplaceholders. Values are stored in `~/.codex/.env` with `chmod 600` and are\nloaded by the shell autoloader.\n\n| Variable | MCP server | Signup |\n|---|---|---|\n| `CONTEXT7_API_KEY` | context7 documentation lookup | https://context7.com |\n| `EXA_API_KEY` | exa web search and research | https://exa.ai |\n| `MAGIC_API_KEY` | 21st.dev magic UI generation | https://21st.dev |\n| `GEMINI_DESIGN_API_KEY` | gemini-design AI frontend | https://aistudio.google.com/apikey |\n| `GITHUB_TOKEN` | GitHub MCP | https://github.com/settings/tokens |\n\nYou can pre-export keys before running `setup.sh`; existing environment values\nare detected and the prompt is skipped.\n\n### What `setup.sh` Does\n\n1. `bun install` - installer dependencies\n2. `codex plugin marketplace add https://github.com/fusengine/codex.git` (or\n   direct `~/.codex/config.toml` patch when Codex CLI is unavailable)\n3. Enables `[features] hooks=true, plugin_hooks=true` in `~/.codex/config.toml`\n4. Copies `AGENTS.md` to `~/.codex/AGENTS.md` with overwrite prompt\n5. Enables the 19 plugins (`[plugins.\"NAME@fusengine-codex\"] enabled = true`)\n6. Prompts for Codex config and auto-sets `suppress_unstable_features_warning`\n7. Prompts for API keys and writes `~/.codex/.env` with `chmod 600`\n8. Installs the shell autoloader\n9. Resolves `${VAR}` placeholders from plugin `.mcp.json` files into static\n   `[mcp_servers.X]` blocks in `~/.codex/config.toml`\n10. Prints the final MCP report and missing environment variables\n\n\u003e **Why resolve variables during setup?** Codex CLI 0.130.x does not interpolate\n\u003e `${VAR}` in plugin `.mcp.json` files\n\u003e ([openai/codex#19582](https://github.com/openai/codex/issues/19582)). The\n\u003e configurator resolves values during installation so Codex receives static\n\u003e config entries.\n\n## Plugin Inventory\n\nThe marketplace `name` matches the folder name (kebab-case, no prefix). Codex\ndocs require the outer folder name and `plugin.json` name to be the same\nnormalized plugin name.\n\n| Folder | Manifest name | Version | Description |\n|---|---|---|---|\n| `ai-pilot` | `ai-pilot` | 1.2.24 | APEX workflow, sniper, research-expert, explore-codebase, websearch |\n| `astro-expert` | `astro-expert` | 1.0.6 | Astro 6: Islands, Content Layer, Actions, Server Islands |\n| `cartographer` | `cartographer` | 1.0.6 | Auto-generated plugin and project maps |\n| `changelog-watcher` | `changelog-watcher` | 1.0.7 | Codex CLI changelog watcher and breaking-change detection |\n| `codex-rules` | `codex-rules` | 1.0.7 | Global APEX / SOLID / DRY rules injection |\n| `commit-pro` | `commit-pro` | 1.2.16 | Conventional commits, security check, version bump, tag, push |\n| `core-guards` | `core-guards` | 1.1.26 | Pre-tool-use safety, SOLID enforcement hooks, statusline |\n| `design-expert` | `design-expert` | 2.1.23 | UI designer 7-phase pipeline, OKLCH tokens, Gemini Design MCP |\n| `laravel-expert` | `laravel-expert` | 1.2.0 | Laravel 12, Eloquent, Livewire, Reverb, Stripe |\n| `memory-neural` | `memory-neural` | 1.0.0 | Persistent neural memory with Graphiti and Qdrant |\n| `nextjs-expert` | `nextjs-expert` | 1.1.16 | Next.js 16, RSC, Server Actions, Prisma 7, Better Auth |\n| `prompt-engineer` | `prompt-engineer` | 1.1.6 | Prompt and agent design, A/B testing, guardrails |\n| `react-expert` | `react-expert` | 1.0.13 | React 19, TanStack Router, Zustand, Testing Library |\n| `security-expert` | `security-expert` | 1.0.11 | OWASP Top 10, CVE research, dependency audit, security headers |\n| `seo` | `seo` | 1.0.2 | SEO / SEA / GEO 2026, AI Overviews, structured data |\n| `shadcn-expert` | `shadcn-expert` | 1.0.10 | shadcn/ui, Radix, Base UI, theming, registries |\n| `solid` | `solid` | 1.0.10 | Multi-language SOLID orchestrator |\n| `swift-apple-expert` | `swift-apple-expert` | 1.1.12 | Swift 6.2 and SwiftUI for all Apple platforms |\n| `tailwindcss` | `tailwindcss` | 1.1.3 | Tailwind v4.1, Oxide engine, OKLCH, container queries |\n\n## Codex CLI Conventions\n\n| Concept | Implementation | Docs |\n|---|---|---|\n| Plugin manifest | `.codex-plugin/plugin.json` | `developers.openai.com/codex/plugins/build` |\n| Plugin name = folder name | enforced via `fix-conformance.ts` | same |\n| Marketplace registry | `.agents/plugins/marketplace.json` (`source: {source:\"local\", path}`) | same |\n| Skill | `skills/\u003cname\u003e/SKILL.md` with strict `name` and `description` frontmatter | `developers.openai.com/codex/skills` |\n| Subagent | `agents/\u003cname\u003e.toml` with `sandbox_mode` and `developer_instructions` | `developers.openai.com/codex/subagents` |\n| Hooks | `hooks/hooks.json` with 6 stable events | `developers.openai.com/codex/hooks` |\n| Hook env vars | `${PLUGIN_ROOT}`, `${PLUGIN_DATA}` | same |\n| MCP servers | `.mcp.json` direct map, no wrapper, no `type` field | PR #18780 |\n| AGENTS.md | Auto-loaded from `~/.codex/AGENTS.md` plus Git root to CWD walk | `developers.openai.com/codex/guides/agents-md` |\n\n### 6 Codex Hook Events\n\n- `SessionStart` - session boot (`startup`, `resume`, `clear`)\n- `UserPromptSubmit` - user prompt submission\n- `PreToolUse` - before tool execution (matcher = regex on tool name)\n- `PostToolUse` - after tool execution\n- `PermissionRequest` - when approval is required\n- `Stop` - end of turn\n\nDo not register `PreCompact` for plugin hooks until Codex stabilizes it.\n\n### 22 Bundled MCP Servers\n\n**Originals (12):** `exa`, `sequential-thinking`, `context7`, `gemini-design`,\n`shadcn`, `magic`, `memory`, `next-devtools`, `graphiti`, `qdrant`,\n`XcodeBuildMCP`, `apple-docs`.\n\n**Added in v1.2.0 (+12):** `astro-docs`, `filesystem`, `playwright`,\n`postgres`, `github`, `supabase`, `slack`, `sentry`, `stripe`, `notion`,\n`brave-search`, `replicate`. They are installable through the interactive\n`mcp-select` prompt during setup.\n\n## Layout\n\n```text\ncodex-plugins/\n├── AGENTS.md                          # global Codex rules\n├── setup.sh                           # install entry point\n├── package.json                       # Bun, type: module\n├── tsconfig.json                      # Bun strict\n├── .agents/plugins/marketplace.json   # 19-plugin registry\n├── plugins/                           # 19 plugins\n│   └── \u003cplugin\u003e/\n│       ├── .codex-plugin/plugin.json\n│       ├── skills/\u003cname\u003e/SKILL.md\n│       ├── agents/\u003cname\u003e.toml\n│       ├── hooks/hooks.json\n│       ├── .mcp.json                  # when MCP servers exist\n│       ├── scripts/                   # Bun TS + Bun-to-Python wrappers\n│       │   └── _legacy_py/            # archived Python originals\n│       └── .cartographer/             # generated maps\n└── scripts/                           # Bun tooling\n    ├── migrate.ts                     # claude-plugins to codex-plugins\n    ├── install-codex.ts               # installer entry\n    ├── convert-py-to-bun.ts           # regex-based .py to .ts converter\n    ├── fix-conformance.ts             # align manifests/models/marketplace\n    ├── fix-real-issues.ts             # fix interfaces/matchers after audit\n    ├── fix-legacy-py-paths.ts         # patch ~/.claude to ~/.codex in _legacy_py\n    ├── final-conformance.ts           # SKILL.md cleanup and wrappers\n    ├── migrate-mcp.ts                 # mcp.json.bak to .mcp.json\n    └── lib/\n        └── install/                   # runner, marketplace, features, agents-md, enable-plugins, mcp\n```\n\n## Known Limitations (Codex CLI 0.130.x)\n\n| Limit | Status |\n|---|---|\n| `codex plugin add NAME@MARKETPLACE` | Not available in 0.130.0; fallback patches `config.toml` directly |\n| Command-backed statusline (`[\"bun\", \"/path\"]`) | Removed from runtime since PR #10546; feature request open (issue #20244). Statusline code is preserved in `core-guards/statusline/` for future support |\n| 134 hook scripts | Bun wrappers call `python3` and preserve Python originals. Native Bun rewrite is pending |\n\n## Known Gaps (claude-plugins to codex-plugins parity)\n\nAll gaps identified in the v1.1.x parity diff are closed in v1.2.0:\n\n- [x] Codex file backups before modification (`fs-helpers.ts` + `backup.ts`)\n- [x] `setup-plugins.ts`: centralized per-plugin install orchestration\n- [x] Expanded MCP catalog: +12 servers (`mcp-catalog.ts`, 24 total)\n- [x] Dedicated shell environment installers (conf.d / rc append / PowerShell profile)\n- [x] Built `dist/` statusline (custom statusline not supported by Codex 0.130; tracked in issue #17827)\n- [~] `_shared/`: duplicate `apex_constants.ts` identified versus `apex-constants.ts`; four other snake_case files are confirmed unique. Manual cleanup remains.\n- [x] `commit-pro`: assets restored from claude-plugins (`commands/`, `CHANGELOG.md`, `LICENSE`, `README.md`). Hooks were not restored.\n- [x] `perf-env.ts`: binary-verified Codex environment prompt (`RUST_LOG`, `CODEX_TUI_ROUNDED`, `GIT_OPTIONAL_LOCKS`)\n- [x] `plugin-scanner.ts`: post-install diagnostic report (manifest / hooks / MCP / skills / agents per plugin)\n\n\u003e There is no Codex equivalent for Claude Code performance variables\n\u003e (`CLAUDE_CODE_FORK_SUBAGENT`, `CLAUDE_CODE_ATTRIBUTION_HEADER`,\n\u003e `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_AUTOUPDATER`). This was\n\u003e verified with `strings $(which codex)` on 0.130.0; those symbols do not exist\n\u003e in the binary. Codex has no CLI telemetry toggle or autoupdate toggle\n\u003e equivalent; telemetry is server-side and upgrades use `codex --upgrade`.\n\u003e `perf-env.ts` is limited to the three recognized environment variables.\n\n### `plugin-scanner` Output\n\n```text\nPlugin diagnostic (19 plugins scanned):\n  ai-pilot              manifest OK  hooks 4 evt / 12 hdl  mcp 2  skills 6  agents 5\n  astro-expert          manifest OK  hooks 2 evt /  4 hdl  mcp 1  skills 12 agents 1\n  ...\nIssues: 0 missing manifest, 0 malformed hooks.json, 0 malformed .mcp.json.\n```\n\n## Dev Tools\n\n```bash\nbun run migrate                         # regenerate plugins/* from ../claude-plugins/\nbun run scripts/convert-py-to-bun.ts    # batch py to ts conversion\nbun run scripts/fix-conformance.ts      # align manifests/models/marketplace\nbun run scripts/migrate-mcp.ts          # mcp.json.bak to .mcp.json\n```\n\n## License\n\nMIT. See [LICENSE](LICENSE) when available.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffusengine%2Fcodex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffusengine%2Fcodex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffusengine%2Fcodex/lists"}