@echo off setlocal enabledelayedexpansion rem Install Codex skills from this Playbook snapshot into CODEX_HOME. rem - Source: \codex\skills\\ rem - Dest: %CODEX_HOME%\skills\\ (default CODEX_HOME=%USERPROFILE%\.codex) rem rem Usage: rem install_codex_skills.bat rem install_codex_skills.bat style-cleanup code-review-workflow rem rem Notes: rem - Codex loads skills at startup; restart `codex` after installation. rem - Existing destination skill dirs are backed up with a random suffix. set "SCRIPT_DIR=%~dp0" for %%I in ("%SCRIPT_DIR%..") do set "SRC=%%~fI" set "SKILLS_SRC_ROOT=%SRC%\\codex\\skills" set "CODEX_HOME=%CODEX_HOME%" if "%CODEX_HOME%"=="" set "CODEX_HOME=%USERPROFILE%\\.codex" set "SKILLS_DST_ROOT=%CODEX_HOME%\\skills" if not exist "%SKILLS_SRC_ROOT%" ( echo ERROR: skills source dir not found: "%SKILLS_SRC_ROOT%" exit /b 1 ) if not exist "%SKILLS_DST_ROOT%" mkdir "%SKILLS_DST_ROOT%" set "HAS_ARGS=0" if not "%~1"=="" set "HAS_ARGS=1" if "%HAS_ARGS%"=="1" ( for %%S in (%*) do call :InstallOne "%%~S" goto Done ) for /d %%D in ("%SKILLS_SRC_ROOT%\\*") do ( set "NAME=%%~nD" if not "!NAME!"=="" if not "!NAME:~0,1!"=="." call :InstallOne "!NAME!" ) :Done echo Done. Skills installed to: "%SKILLS_DST_ROOT%" endlocal exit /b 0 :InstallOne set "NAME=%~1" set "SRC_DIR=%SKILLS_SRC_ROOT%\\%NAME%" set "DST_DIR=%SKILLS_DST_ROOT%\\%NAME%" if not exist "%SRC_DIR%" ( echo ERROR: skill not found: %NAME% "%SRC_DIR%" exit /b 1 ) if exist "%DST_DIR%" ( set "RAND=%RANDOM%" pushd "%SKILLS_DST_ROOT%" ren "%NAME%" "%NAME%.bak.!RAND!" popd echo Backed up existing skill: %NAME% -> %NAME%.bak.!RAND! ) xcopy "%SRC_DIR%\\*" "%DST_DIR%\\" /e /i /y >nul if errorlevel 1 ( echo ERROR: failed to copy skill: %NAME% exit /b 1 ) echo Installed: %NAME% exit /b 0