diff --git a/.gitignore b/.gitignore index c3bcec779..e0d7569fe 100644 --- a/.gitignore +++ b/.gitignore @@ -71,6 +71,7 @@ integrations/gemini-cli/skills/ integrations/gemini-cli/gemini-extension.json integrations/opencode/agents/ integrations/cursor/rules/ +integrations/codex/AGENTS.md integrations/aider/CONVENTIONS.md integrations/windsurf/.windsurfrules integrations/openclaw/* diff --git a/README.md b/README.md index c9832d1a3..d9a24201b 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Each agent file contains: Browse the agents below and copy/adapt the ones you need! -### Option 3: Use with Other Tools (Cursor, Aider, Windsurf, Gemini CLI, OpenCode) +### Option 3: Use with Other Tools (Cursor, Codex, Aider, Windsurf, Gemini CLI, OpenCode) ```bash # Step 1 -- generate integration files for all supported tools @@ -486,6 +486,7 @@ The Agency works natively with Claude Code, and ships conversion + install scrip - **[Gemini CLI](https://github.com/google-gemini/gemini-cli)** — extension + `SKILL.md` files → `~/.gemini/extensions/agency-agents/` - **[OpenCode](https://opencode.ai)** — `.md` agent files → `.opencode/agents/` - **[Cursor](https://cursor.sh)** — `.mdc` rule files → `.cursor/rules/` +- **Codex** — single `AGENTS.md` → `./AGENTS.md` - **[Aider](https://aider.chat)** — single `CONVENTIONS.md` → `./CONVENTIONS.md` - **[Windsurf](https://codeium.com/windsurf)** — single `.windsurfrules` → `./.windsurfrules` - **[OpenClaw](https://github.com/openclaw/openclaw)** — `SOUL.md` + `AGENTS.md` + `IDENTITY.md` per agent @@ -521,11 +522,12 @@ The installer scans your system for installed tools, shows a checkbox UI, and le [ ] 5) [ ] OpenCode (opencode.ai) [ ] 6) [ ] OpenClaw (~/.openclaw) [x] 7) [*] Cursor (.cursor/rules) - [ ] 8) [ ] Aider (CONVENTIONS.md) - [ ] 9) [ ] Windsurf (.windsurfrules) - [ ] 10) [ ] Qwen Code (~/.qwen/agents) + [ ] 8) [ ] Codex (AGENTS.md) + [ ] 9) [ ] Aider (CONVENTIONS.md) + [ ] 10) [ ] Windsurf (.windsurfrules) + [ ] 11) [ ] Qwen Code (~/.qwen/agents) - [1-10] toggle [a] all [n] none [d] detected + [1-11] toggle [a] all [n] none [d] detected [Enter] install [q] quit ``` @@ -653,6 +655,24 @@ Use the @security-engineer rules to review this code. See [integrations/cursor/README.md](integrations/cursor/README.md) for details. +
+Codex + +All agents are compiled into a single `AGENTS.md` file that Codex can read from your project root. + +```bash +cd /your/project +/path/to/agency-agents/scripts/install.sh --tool codex +``` + +Then reference agents in your Codex session: +``` +Use the Frontend Developer agent to refactor this component. +``` + +See [integrations/codex/README.md](integrations/codex/README.md) for details. +
+
Aider @@ -742,7 +762,7 @@ When you add new agents or edit existing ones, regenerate all integration files: - [ ] Interactive agent selector web tool - [x] Multi-agent workflow examples -- see [examples/](examples/) -- [x] Multi-tool integration scripts (Claude Code, GitHub Copilot, Antigravity, Gemini CLI, OpenCode, OpenClaw, Cursor, Aider, Windsurf, Qwen Code) +- [x] Multi-tool integration scripts (Claude Code, GitHub Copilot, Antigravity, Gemini CLI, OpenCode, OpenClaw, Cursor, Codex, Aider, Windsurf, Qwen Code) - [ ] Video tutorials on agent design - [ ] Community agent marketplace - [ ] Agent "personality quiz" for project matching diff --git a/integrations/README.md b/integrations/README.md index 6c31db44c..cdef8a486 100644 --- a/integrations/README.md +++ b/integrations/README.md @@ -12,6 +12,7 @@ supported agentic coding tools. - **[OpenCode](#opencode)** — `.md` agent files in `opencode/` - **[OpenClaw](#openclaw)** — `SOUL.md` + `AGENTS.md` + `IDENTITY.md` workspaces - **[Cursor](#cursor)** — `.mdc` rule files in `cursor/` +- **[Codex](#codex)** — `AGENTS.md` in `codex/` - **[Aider](#aider)** — `CONVENTIONS.md` in `aider/` - **[Windsurf](#windsurf)** — `.windsurfrules` in `windsurf/` @@ -32,8 +33,8 @@ supported agentic coding tools. ./scripts/install.sh --tool gemini-cli ``` -For project-scoped tools such as OpenCode, Cursor, Aider, and Windsurf, run -the installer from your target project root as shown in the tool-specific +For project-scoped tools such as OpenCode, Cursor, Codex, Aider, and Windsurf, +run the installer from your target project root as shown in the tool-specific sections below. ## Regenerating Integration Files @@ -149,6 +150,19 @@ See [cursor/README.md](cursor/README.md) for details. --- +## Codex + +All agents are consolidated into a single `AGENTS.md` file for your project +root. + +```bash +cd /your/project && /path/to/agency-agents/scripts/install.sh --tool codex +``` + +See [codex/README.md](codex/README.md) for details. + +--- + ## Aider All agents are consolidated into a single `CONVENTIONS.md` file that Aider diff --git a/integrations/codex/README.md b/integrations/codex/README.md new file mode 100644 index 000000000..383e418e6 --- /dev/null +++ b/integrations/codex/README.md @@ -0,0 +1,30 @@ +# Codex Integration + +All Agency agents are consolidated into a single `AGENTS.md` file. +Codex can read this file when it is present in your project root. + +## Install + +```bash +# Run from your project root +cd /your/project +/path/to/agency-agents/scripts/install.sh --tool codex +``` + +## Activate an Agent + +In your Codex session, reference the agent by name: + +``` +Use the Frontend Developer agent to refactor this component. +``` + +``` +Apply the Reality Checker agent to verify this is production-ready. +``` + +## Regenerate + +```bash +./scripts/convert.sh --tool codex +``` diff --git a/scripts/convert.sh b/scripts/convert.sh index 1aae50158..a828ad2bc 100755 --- a/scripts/convert.sh +++ b/scripts/convert.sh @@ -14,6 +14,7 @@ # gemini-cli — Gemini CLI extension (skills/ + gemini-extension.json) # opencode — OpenCode agent files (.opencode/agent/*.md) # cursor — Cursor rule files (.cursor/rules/*.mdc) +# codex — Single AGENTS.md for Codex # aider — Single CONVENTIONS.md for Aider # windsurf — Single .windsurfrules for Windsurf # openclaw — OpenClaw SOUL.md files (openclaw_workspace//SOUL.md) @@ -348,13 +349,27 @@ HEREDOC fi } -# Aider and Windsurf are single-file formats — accumulate into temp files -# then write at the end. +# Codex, Aider, and Windsurf are single-file formats — accumulate into temp +# files then write at the end. +CODEX_TMP="$(mktemp)" AIDER_TMP="$(mktemp)" WINDSURF_TMP="$(mktemp)" -trap 'rm -f "$AIDER_TMP" "$WINDSURF_TMP"' EXIT +trap 'rm -f "$CODEX_TMP" "$AIDER_TMP" "$WINDSURF_TMP"' EXIT + +# Write Codex/Aider/Windsurf headers once +cat > "$CODEX_TMP" <<'HEREDOC' +# The Agency — AI Agents for Codex +# +# This file provides Codex with the full roster of specialized AI agents from +# The Agency (https://github.com/msitarzewski/agency-agents). +# +# To activate an agent, reference it by name in your Codex prompt, e.g.: +# "Use the Frontend Developer agent to review this component." +# +# Generated by scripts/convert.sh — do not edit manually. + +HEREDOC -# Write Aider/Windsurf headers once cat > "$AIDER_TMP" <<'HEREDOC' # The Agency — AI Agent Conventions # @@ -378,6 +393,26 @@ cat > "$WINDSURF_TMP" <<'HEREDOC' HEREDOC +accumulate_codex() { + local file="$1" + local name description body + + name="$(get_field "name" "$file")" + description="$(get_field "description" "$file")" + body="$(get_body "$file")" + + cat >> "$CODEX_TMP" < ${description} + +${body} +HEREDOC +} + accumulate_aider() { local file="$1" local name description body @@ -444,6 +479,7 @@ run_conversions() { opencode) convert_opencode "$file" ;; cursor) convert_cursor "$file" ;; openclaw) convert_openclaw "$file" ;; + codex) accumulate_codex "$file" ;; qwen) convert_qwen "$file" ;; aider) accumulate_aider "$file" ;; windsurf) accumulate_windsurf "$file" ;; @@ -457,6 +493,10 @@ run_conversions() { } write_single_file_outputs() { + # Codex + mkdir -p "$OUT_DIR/codex" + cp "$CODEX_TMP" "$OUT_DIR/codex/AGENTS.md" + # Aider mkdir -p "$OUT_DIR/aider" cp "$AIDER_TMP" "$OUT_DIR/aider/CONVENTIONS.md" @@ -480,7 +520,7 @@ main() { esac done - local valid_tools=("antigravity" "gemini-cli" "opencode" "cursor" "aider" "windsurf" "openclaw" "qwen" "all") + local valid_tools=("antigravity" "gemini-cli" "opencode" "cursor" "codex" "aider" "windsurf" "openclaw" "qwen" "all") local valid=false for t in "${valid_tools[@]}"; do [[ "$t" == "$tool" ]] && valid=true && break; done if ! $valid; then @@ -496,7 +536,7 @@ main() { local tools_to_run=() if [[ "$tool" == "all" ]]; then - tools_to_run=("antigravity" "gemini-cli" "opencode" "cursor" "aider" "windsurf" "openclaw" "qwen") + tools_to_run=("antigravity" "gemini-cli" "opencode" "cursor" "codex" "aider" "windsurf" "openclaw" "qwen") else tools_to_run=("$tool") fi @@ -524,8 +564,9 @@ HEREDOC done # Write single-file outputs after accumulation - if [[ "$tool" == "all" || "$tool" == "aider" || "$tool" == "windsurf" ]]; then + if [[ "$tool" == "all" || "$tool" == "codex" || "$tool" == "aider" || "$tool" == "windsurf" ]]; then write_single_file_outputs + info "Wrote integrations/codex/AGENTS.md" info "Wrote integrations/aider/CONVENTIONS.md" info "Wrote integrations/windsurf/.windsurfrules" fi diff --git a/scripts/install.sh b/scripts/install.sh index c20ae26ee..6e6bd95a6 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -16,6 +16,7 @@ # gemini-cli -- Install extension to ~/.gemini/extensions/agency-agents/ # opencode -- Copy agents to .opencode/agent/ in current directory # cursor -- Copy rules to .cursor/rules/ in current directory +# codex -- Copy AGENTS.md to current directory # aider -- Copy CONVENTIONS.md to current directory # windsurf -- Copy .windsurfrules to current directory # openclaw -- Copy workspaces to ~/.openclaw/agency-agents/ @@ -85,7 +86,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" INTEGRATIONS="$REPO_ROOT/integrations" -ALL_TOOLS=(claude-code copilot antigravity gemini-cli opencode openclaw cursor aider windsurf qwen) +ALL_TOOLS=(claude-code copilot antigravity gemini-cli opencode openclaw cursor codex aider windsurf qwen) # --------------------------------------------------------------------------- # Usage @@ -114,6 +115,7 @@ detect_antigravity() { [[ -d "${HOME}/.gemini/antigravity/skills" ]]; } detect_gemini_cli() { command -v gemini >/dev/null 2>&1 || [[ -d "${HOME}/.gemini" ]]; } detect_cursor() { command -v cursor >/dev/null 2>&1 || [[ -d "${HOME}/.cursor" ]]; } detect_opencode() { command -v opencode >/dev/null 2>&1 || [[ -d "${HOME}/.config/opencode" ]]; } +detect_codex() { command -v codex >/dev/null 2>&1; } detect_aider() { command -v aider >/dev/null 2>&1; } detect_openclaw() { command -v openclaw >/dev/null 2>&1 || [[ -d "${HOME}/.openclaw" ]]; } detect_windsurf() { command -v windsurf >/dev/null 2>&1 || [[ -d "${HOME}/.codeium" ]]; } @@ -128,6 +130,7 @@ is_detected() { opencode) detect_opencode ;; openclaw) detect_openclaw ;; cursor) detect_cursor ;; + codex) detect_codex ;; aider) detect_aider ;; windsurf) detect_windsurf ;; qwen) detect_qwen ;; @@ -145,6 +148,7 @@ tool_label() { opencode) printf "%-14s %s" "OpenCode" "(opencode.ai)" ;; openclaw) printf "%-14s %s" "OpenClaw" "(~/.openclaw)" ;; cursor) printf "%-14s %s" "Cursor" "(.cursor/rules)" ;; + codex) printf "%-14s %s" "Codex" "(AGENTS.md)" ;; aider) printf "%-14s %s" "Aider" "(CONVENTIONS.md)" ;; windsurf) printf "%-14s %s" "Windsurf" "(.windsurfrules)" ;; qwen) printf "%-14s %s" "Qwen Code" "(~/.qwen/agents)" ;; @@ -395,6 +399,19 @@ install_cursor() { warn "Cursor: project-scoped. Run from your project root to install there." } +install_codex() { + local src="$INTEGRATIONS/codex/AGENTS.md" + local dest="${PWD}/AGENTS.md" + [[ -f "$src" ]] || { err "integrations/codex/AGENTS.md missing. Run convert.sh first."; return 1; } + if [[ -f "$dest" ]]; then + warn "Codex: AGENTS.md already exists at $dest (remove to reinstall)." + return 0 + fi + cp "$src" "$dest" + ok "Codex: installed -> $dest" + warn "Codex: project-scoped. Run from your project root to install there." +} + install_aider() { local src="$INTEGRATIONS/aider/CONVENTIONS.md" local dest="${PWD}/CONVENTIONS.md" @@ -450,6 +467,7 @@ install_tool() { opencode) install_opencode ;; openclaw) install_openclaw ;; cursor) install_cursor ;; + codex) install_codex ;; aider) install_aider ;; windsurf) install_windsurf ;; qwen) install_qwen ;;