Files
unlimitedcoding/claude/install_codex_plugin.sh
delta-cloud-208e 5138141d5d feat(claude): add idempotent installer for openai/codex-plugin-cc
One-liner script that:
- Verifies/installs Node.js >= 18, git, codex CLI
- Adds 'openai-codex' marketplace (github.com/openai/codex-plugin-cc)
- Installs/updates 'codex@openai-codex' plugin
- Verifies result via 'claude plugin list'

Re-runs are safe — auto-detects what is already installed and only fills
gaps or pulls newer plugin versions.

Three platforms covered: Linux (apt/dnf/yum), macOS (brew),
Windows (winget) via .sh and .ps1 wrappers + CMD entry-point.

Plugin commands inside Claude Code:
  /codex:review, /codex:adversarial-review, /codex:rescue,
  /codex:status, /codex:result, /codex:cancel

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-23 20:02:36 +00:00

122 lines
4.4 KiB
Bash

#!/usr/bin/env bash
# Install OpenAI Codex Plugin for Claude Code
# Idempotent — safe to re-run; auto-installs missing prereqs.
#
# Usage:
# curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
# https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/claude/install_codex_plugin.sh \
# -o /tmp/install_codex_plugin.sh && sudo bash /tmp/install_codex_plugin.sh
set -euo pipefail
PLUGIN_NAME="codex"
MARKETPLACE_NAME="openai-codex"
MARKETPLACE_URL="https://github.com/openai/codex-plugin-cc"
CODEX_NPM="@openai/codex"
GREEN="\033[92m"; YELLOW="\033[93m"; RED="\033[91m"; CYAN="\033[96m"; BOLD="\033[1m"; RESET="\033[0m"
log() { echo -e "${GREEN}[+]${RESET} $*"; }
warn() { echo -e "${YELLOW}[~]${RESET} $*"; }
err() { echo -e "${RED}[!]${RESET} $*" >&2; }
info() { echo -e "${CYAN}[i]${RESET} $*"; }
OS="$(uname -s)"
IS_MACOS=false
[ "$OS" = "Darwin" ] && IS_MACOS=true
echo -e "${BOLD}"
echo " +------------------------------------------+"
echo " | Codex Plugin for Claude Code installer |"
echo " +------------------------------------------+"
echo -e "${RESET}"
# ---- 1. Prereqs ----
install_pkg() {
if command -v apt-get >/dev/null 2>&1; then apt-get update -qq && apt-get install -y -qq "$@"
elif command -v dnf >/dev/null 2>&1; then dnf install -y -q "$@"
elif command -v yum >/dev/null 2>&1; then yum install -y -q "$@"
elif command -v brew >/dev/null 2>&1; then brew install "$@"
else err "No package manager found. Install $* manually."; return 1
fi
}
if ! command -v node >/dev/null 2>&1; then
info "Node.js not found, installing..."
if $IS_MACOS; then brew install node
elif command -v apt-get >/dev/null 2>&1; then curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && apt-get install -y nodejs
else install_pkg nodejs npm
fi
fi
NODE_MAJOR=$(node -v | sed 's/v//' | cut -d. -f1)
if [ "$NODE_MAJOR" -lt 18 ]; then
err "Node.js >= 18 required (found v$NODE_MAJOR). Upgrade manually."
exit 1
fi
log "Node.js $(node -v)"
if ! command -v claude >/dev/null 2>&1; then
err "Claude Code CLI not found. Install it first:"
err " npm config set @anthropic-ai:registry https://npm.sensey24.ru/"
err " npm install -g @anthropic-ai/claude-code"
exit 1
fi
log "Claude Code $(claude --version 2>&1 | head -1)"
if ! command -v git >/dev/null 2>&1; then
info "git not found, installing..."
install_pkg git
fi
log "git $(git --version | awk '{print $3}')"
# ---- 2. Codex CLI ----
if ! command -v codex >/dev/null 2>&1; then
info "Codex CLI not found, installing..."
npm install -g "$CODEX_NPM" 2>&1 | tail -3
fi
CODEX_VER=$(codex --version 2>&1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || echo "unknown")
log "Codex CLI v$CODEX_VER"
# ---- 3. Marketplace ----
if claude plugin marketplace list 2>&1 | grep -q "$MARKETPLACE_NAME"; then
log "Marketplace '$MARKETPLACE_NAME' already configured"
else
info "Adding marketplace: $MARKETPLACE_URL"
claude plugin marketplace add "$MARKETPLACE_URL" 2>&1 | tail -3
log "Marketplace added"
fi
# ---- 4. Plugin install / update ----
if claude plugin list 2>&1 | grep -q "${PLUGIN_NAME}@${MARKETPLACE_NAME}"; then
info "Plugin already installed — checking for updates..."
claude plugin update "${PLUGIN_NAME}@${MARKETPLACE_NAME}" 2>&1 | tail -3 || warn "Update skipped (already latest)"
else
info "Installing plugin: ${PLUGIN_NAME}@${MARKETPLACE_NAME}"
claude plugin install "${PLUGIN_NAME}@${MARKETPLACE_NAME}" 2>&1 | tail -5
fi
# ---- 5. Verify ----
echo ""
PLUGIN_INFO=$(claude plugin list 2>&1 | grep -A2 "${PLUGIN_NAME}@${MARKETPLACE_NAME}" || true)
if [ -n "$PLUGIN_INFO" ]; then
echo -e "${GREEN}${BOLD}=== Codex plugin installed! ===${RESET}"
echo "$PLUGIN_INFO"
echo ""
echo "Available commands inside Claude Code:"
echo " /codex:review — standard code review"
echo " /codex:adversarial-review — design + assumption review"
echo " /codex:rescue — delegate task to Codex for fix"
echo " /codex:status — check background jobs"
echo " /codex:result — fetch job results"
echo " /codex:cancel — cancel a running job"
echo ""
echo -e "${YELLOW}Auth required:${RESET} run 'codex login' (or set OPENAI_API_KEY)"
echo " Plugin uses your existing Codex CLI auth — same as 'codex exec'."
else
err "Plugin install verification failed. Run: claude plugin list"
exit 1
fi