From 328ef2b4fed9fa90bd93d15b589c5c216bfc8064 Mon Sep 17 00:00:00 2001 From: Marshall Krassenstein Date: Thu, 30 Apr 2026 13:32:52 -0400 Subject: [PATCH 1/2] fix(codex): stop clobbering Gemini's .agents/skills directory PR #150 added a step in setup_codex.py that wipes ~/.agents/skills/ via shutil.rmtree then re-populates it from .claude/skills. Gemini also discovers skills under .agents/, so this nukes Gemini's skills on every codex setup run. Drop step 5 entirely and remove the now-unused .agents/ entry from .gitignore. Gemini's existing skill discovery path is left alone; codex falls back to its other lookup mechanisms. Co-authored-by: Isaac --- .gitignore | 3 --- setup_codex.py | 17 +---------------- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 4089448..28304d0 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,3 @@ uv.lock # Codex CLI generated/cached files (only the bundled model catalog is tracked) .codex/* !.codex/databricks-models.json - -# Codex skills are generated at runtime by setup_codex.py from .claude/skills/ -.agents/ diff --git a/setup_codex.py b/setup_codex.py index d546708..1b98595 100644 --- a/setup_codex.py +++ b/setup_codex.py @@ -120,22 +120,7 @@ env_path.chmod(0o600) print(f"Codex CLI env configured: {env_path}") -# 5. Copy Claude skills into ~/.agents/skills/ where Codex discovers them. -# Codex searches `$HOME/.agents/skills/` plus `.agents/skills/` walking up -# from cwd; both resolve to the same path on the deployed app since -# HOME == repo root, and the user-level lookup also covers local dev. -claude_skills_dir = home / ".claude" / "skills" -codex_skills_dir = home / ".agents" / "skills" -if claude_skills_dir.exists(): - codex_skills_dir.parent.mkdir(exist_ok=True) - if codex_skills_dir.exists(): - shutil.rmtree(codex_skills_dir) - shutil.copytree(claude_skills_dir, codex_skills_dir) - print(f"Skills copied: {claude_skills_dir} -> {codex_skills_dir}") -else: - print(f"No Claude skills found at {claude_skills_dir}, skipping copy") - -# 6. Adapt CLAUDE.md to AGENTS.md for Codex +# 5. Adapt CLAUDE.md to AGENTS.md for Codex # Look for CLAUDE.md in common locations claude_md_locations = [ Path(__file__).parent / "CLAUDE.md", # Same directory as setup script From 856856b0bf487d263557d24be97138c3794893d0 Mon Sep 17 00:00:00 2001 From: Marshall Krassenstein Date: Thu, 30 Apr 2026 13:34:35 -0400 Subject: [PATCH 2/2] fix(gemini): drop redundant .gemini/skills copy Gemini CLI already discovers skills from .agents/, which setup_codex.py populates from .claude/skills. Copying them again into .gemini/skills created a second source of truth that drifted on every codex setup run and showed up as Gemini's skills being clobbered. Remove step 5 from setup_gemini.py and drop the now-unused shutil import. Skill discovery for Gemini continues to work via the shared .agents/ path. Co-authored-by: Isaac --- setup_gemini.py | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/setup_gemini.py b/setup_gemini.py index 635b366..f85bed0 100644 --- a/setup_gemini.py +++ b/setup_gemini.py @@ -12,7 +12,6 @@ """ import os import json -import shutil import subprocess from pathlib import Path @@ -127,18 +126,7 @@ settings_path.write_text(json.dumps(settings, indent=2)) print(f"Gemini CLI settings configured: {settings_path}") -# 5. Copy Claude skills into .gemini/skills for shared reference -claude_skills_dir = home / ".claude" / "skills" -gemini_skills_dir = gemini_dir / "skills" -if claude_skills_dir.exists(): - if gemini_skills_dir.exists(): - shutil.rmtree(gemini_skills_dir) - shutil.copytree(claude_skills_dir, gemini_skills_dir) - print(f"Skills copied: {claude_skills_dir} -> {gemini_skills_dir}") -else: - print(f"No Claude skills found at {claude_skills_dir}, skipping copy") - -# 6. Adapt CLAUDE.md to GEMINI.md for Gemini CLI +# 5. Adapt CLAUDE.md to GEMINI.md for Gemini CLI # Look for CLAUDE.md in common locations claude_md_locations = [ Path(__file__).parent / "CLAUDE.md", # Same directory as setup script