From d170cdd1750cd26a8eea1ccb9bb6d6d342e5bdd8 Mon Sep 17 00:00:00 2001 From: Chris Yau Date: Wed, 25 Mar 2026 21:33:45 +0800 Subject: [PATCH] fix: remove redundant skill copy from sync-ecc-to-codex.sh Codex CLI reads skills natively from ~/.agents/skills/ (installed by ECC installer / npx skills). The sync script was redundantly copying the same skills from .agents/skills/ to ~/.codex/skills/. Changes: - Remove skill copy loop, variables, and path validation from sync script - Update sanity checker to validate ~/.agents/skills/ instead of ~/.codex/skills/, downgrade missing skills from FAIL to WARN - Update test assertions to verify skill sync removal Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude Co-Authored-By: Happy --- scripts/codex/check-codex-global-state.sh | 8 ++++---- scripts/sync-ecc-to-codex.sh | 19 +++---------------- tests/scripts/sync-ecc-to-codex.test.js | 5 +++-- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/scripts/codex/check-codex-global-state.sh b/scripts/codex/check-codex-global-state.sh index f0c2242c..e0b031e1 100644 --- a/scripts/codex/check-codex-global-state.sh +++ b/scripts/codex/check-codex-global-state.sh @@ -11,7 +11,7 @@ CODEX_HOME="${CODEX_HOME:-$HOME/.codex}" CONFIG_FILE="$CODEX_HOME/config.toml" AGENTS_FILE="$CODEX_HOME/AGENTS.md" PROMPTS_DIR="$CODEX_HOME/prompts" -SKILLS_DIR="$CODEX_HOME/skills" +SKILLS_DIR="${AGENTS_HOME:-$HOME/.agents}/skills" HOOKS_DIR_EXPECT="${ECC_GLOBAL_HOOKS_DIR:-$CODEX_HOME/git-hooks}" failures=0 @@ -144,12 +144,12 @@ if [[ -d "$SKILLS_DIR" ]]; then done if [[ "$missing_skills" -eq 0 ]]; then - ok "All 16 ECC Codex skills are present" + ok "All 16 ECC skills are present in $SKILLS_DIR" else - fail "$missing_skills required skills are missing" + warn "$missing_skills ECC skills missing from $SKILLS_DIR (install via ECC installer or npx skills)" fi else - fail "Skills directory missing ($SKILLS_DIR)" + warn "Skills directory missing ($SKILLS_DIR) — install via ECC installer or npx skills" fi if [[ -f "$PROMPTS_DIR/ecc-prompts-manifest.txt" ]]; then diff --git a/scripts/sync-ecc-to-codex.sh b/scripts/sync-ecc-to-codex.sh index 393ae4de..2ca89d0e 100644 --- a/scripts/sync-ecc-to-codex.sh +++ b/scripts/sync-ecc-to-codex.sh @@ -4,7 +4,6 @@ set -euo pipefail # Sync Everything Claude Code (ECC) assets into a local Codex CLI setup. # - Backs up ~/.codex config and AGENTS.md # - Merges ECC AGENTS.md into existing AGENTS.md (marker-based, preserves user content) -# - Syncs Codex-ready skills from .agents/skills # - Generates prompt files from commands/*.md # - Generates Codex QA wrappers and optional language rule-pack prompts # - Installs global git safety hooks (pre-commit and pre-push) @@ -28,8 +27,6 @@ CONFIG_FILE="$CODEX_HOME/config.toml" AGENTS_FILE="$CODEX_HOME/AGENTS.md" AGENTS_ROOT_SRC="$REPO_ROOT/AGENTS.md" AGENTS_CODEX_SUPP_SRC="$REPO_ROOT/.codex/AGENTS.md" -SKILLS_SRC="$REPO_ROOT/.agents/skills" -SKILLS_DEST="$CODEX_HOME/skills" PROMPTS_SRC="$REPO_ROOT/commands" PROMPTS_DEST="$CODEX_HOME/prompts" HOOKS_INSTALLER="$REPO_ROOT/scripts/codex/install-global-git-hooks.sh" @@ -133,7 +130,6 @@ MCP_MERGE_SCRIPT="$REPO_ROOT/scripts/codex/merge-mcp-config.js" require_path "$REPO_ROOT/AGENTS.md" "ECC AGENTS.md" require_path "$AGENTS_CODEX_SUPP_SRC" "ECC Codex AGENTS supplement" -require_path "$SKILLS_SRC" "ECC skills directory" require_path "$PROMPTS_SRC" "ECC commands directory" require_path "$HOOKS_INSTALLER" "ECC global git hooks installer" require_path "$SANITY_CHECKER" "ECC global sanity checker" @@ -235,17 +231,9 @@ else fi fi -log "Syncing ECC Codex skills" -run_or_echo mkdir -p "$SKILLS_DEST" -skills_count=0 -for skill_dir in "$SKILLS_SRC"/*; do - [[ -d "$skill_dir" ]] || continue - skill_name="$(basename "$skill_dir")" - dest="$SKILLS_DEST/$skill_name" - run_or_echo rm -rf "$dest" - run_or_echo cp -R "$skill_dir" "$dest" - skills_count=$((skills_count + 1)) -done +# Skills are NOT synced here — Codex CLI reads directly from +# ~/.agents/skills/ (installed by ECC installer / npx skills). +# Copying into ~/.codex/skills/ was unnecessary. log "Generating prompt files from ECC commands" run_or_echo mkdir -p "$PROMPTS_DEST" @@ -486,7 +474,6 @@ fi log "Sync complete" log "Backup saved at: $BACKUP_DIR" -log "Skills synced: $skills_count" log "Prompts generated: $((prompt_count + extension_count)) (commands: $prompt_count, extensions: $extension_count)" if [[ "$MODE" == "apply" ]]; then diff --git a/tests/scripts/sync-ecc-to-codex.test.js b/tests/scripts/sync-ecc-to-codex.test.js index e5b9cfe2..3a9281b2 100644 --- a/tests/scripts/sync-ecc-to-codex.test.js +++ b/tests/scripts/sync-ecc-to-codex.test.js @@ -69,8 +69,9 @@ function runTests() { if (test('filesystem-changing calls use argv-form run_or_echo invocations', () => { assert.ok(source.includes('run_or_echo mkdir -p "$BACKUP_DIR"'), 'mkdir should use argv form'); - assert.ok(source.includes('run_or_echo rm -rf "$dest"'), 'rm should use argv form'); - assert.ok(source.includes('run_or_echo cp -R "$skill_dir" "$dest"'), 'recursive copy should use argv form'); + // Skills sync rm/cp calls were removed — Codex reads from ~/.agents/skills/ natively + assert.ok(!source.includes('run_or_echo rm -rf "$dest"'), 'skill sync rm should be removed'); + assert.ok(!source.includes('run_or_echo cp -R "$skill_dir" "$dest"'), 'skill sync cp should be removed'); })) passed++; else failed++; console.log(`\nResults: Passed: ${passed}, Failed: ${failed}`);