- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환 - Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용 - pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관) - worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md) - D:\Rhino-MCP 경로 참조를 새 위치로 치환 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
158 lines
5.5 KiB
Batchfile
158 lines
5.5 KiB
Batchfile
@echo off
|
|
setlocal
|
|
rem 이 파일은 CP949 로 저장되어 있다. 콘솔이 UTF-8(65001)이면 한글이 깨지므로 949로 고정한다.
|
|
for /f "tokens=2 delims=:" %%C in ('chcp') do set "OLDCP=%%C"
|
|
set "OLDCP=%OLDCP: =%"
|
|
chcp 949 >nul 2>&1
|
|
title 전역 지침 적용 v0.3.01
|
|
|
|
set "SRC=%~dp0"
|
|
if "%SRC:~-1%"=="\" set "SRC=%SRC:~0,-1%"
|
|
|
|
set "DST=%~1"
|
|
if "%DST%"=="" set /p "DST=적용할 프로젝트 폴더 경로를 입력하세요: "
|
|
if "%DST%"=="" goto :NODST
|
|
if not exist "%DST%\" goto :NODST
|
|
|
|
set "DRY="
|
|
set "AUTO="
|
|
if /i "%~2"=="/L" set "DRY=/L"
|
|
if /i "%~3"=="/L" set "DRY=/L"
|
|
if /i "%~2"=="/Y" set "AUTO=1"
|
|
if /i "%~3"=="/Y" set "AUTO=1"
|
|
|
|
if defined AUTO goto :RUN
|
|
echo.
|
|
echo ====================================================
|
|
echo 전역 지침 적용 v0.3.01
|
|
echo ====================================================
|
|
echo 원본 : %SRC%
|
|
echo 대상 : %DST%
|
|
if defined DRY echo 모드 : 미리보기 ^(실제로 쓰지 않음^)
|
|
echo.
|
|
echo [A] 지침 / 어댑터 / 스킬 / HMCMkit 자산 =^> 무조건 덮어씀
|
|
echo [B] OPEN_미해결목록, state.json 등 =^> 이미 있으면 보존
|
|
echo [C] 대상 폴더의 기존 산출물 =^> 건드리지 않음 ^(삭제 없음^)
|
|
echo 적용 전 context-migration, prompt 를 backup 에 보관합니다.
|
|
echo.
|
|
set /p "OK=진행할까요? (Y/N) "
|
|
if /i not "%OK%"=="Y" goto :ABORT
|
|
echo.
|
|
|
|
:RUN
|
|
rem ---------- 폴더 골격 먼저 ----------
|
|
for %%D in ("DOC" "Code" "Code\patch" "Code\verify" "RAG" "prompt" "context-migration" "temp" "backup") do call :MK "%%~D"
|
|
|
|
rem DOC 유형축 골격(01_기획~99_기타)은 자체 규약을 선언한 프로젝트에서는 만들지 않는다. ([F10])
|
|
rem 선언 방법 : 대상 프로젝트에 DOC\CONVENTION.md 를 두고 무엇을 대체하는지 적는다.
|
|
if exist "%DST%\DOC\CONVENTION.md" (
|
|
echo [건너뜀] DOC 유형축 골격 : 자체 규약 선언 확인 ^(DOC\CONVENTION.md^)
|
|
) else (
|
|
for %%D in ("DOC\01_기획" "DOC\02_분석" "DOC\03_설계" "DOC\04_실행" "DOC\05_검증" "DOC\06_보고서" "DOC\99_기타") do call :MK "%%~D"
|
|
)
|
|
|
|
rem ---------- 덮어쓰기 전 백업 ([F13]) ----------
|
|
rem 백업 대상은 프로젝트 고유 자산인 context-migration, prompt 두 폴더뿐이다.
|
|
rem 지침류(.claude, .agents, README)는 정본에서 언제든 재취득 가능하므로 백업하지 않는다.
|
|
if defined DRY goto :SKIPBK
|
|
set "TODAY="
|
|
for /f "usebackq delims=" %%i in (`powershell -nop -c "Get-Date -Format yyyy-MM-dd" 2^>nul`) do set "TODAY=%%i"
|
|
if not defined TODAY set "TODAY=%DATE:~0,10%"
|
|
set "BK=%DST%\backup\%TODAY%_지침적용전"
|
|
set "BKDONE="
|
|
for %%D in ("context-migration" "prompt") do call :BKUP "%%~D"
|
|
if defined BKDONE echo [백업] backup\%TODAY%_지침적용전 ^(context-migration, prompt^)
|
|
:SKIPBK
|
|
|
|
rem ---------- [A] 무조건 덮어쓰기 ----------
|
|
call :RC ".claude"
|
|
call :RC ".agents"
|
|
rem v0.3.00: 구 어댑터 규칙은 tea-* 스킬로 대체되었으므로 대상에서 제거한다 (robocopy 는 지우지 않는다)
|
|
if not defined DRY for %%F in ("coding-agent.md" "orchestration.md") do if exist "%DST%\.agents\rules\%%~F" del /Q "%DST%\.agents\rules\%%~F"
|
|
call :RCH
|
|
|
|
rem 주의: 패키지 root README.md 는 *패키지 자신의 설명서*이므로 대상 프로젝트로 복사하지 않는다.
|
|
rem (v0.2.03 까지 복사되어 9개 프로젝트의 root README 를 덮어쓴 사고가 있었다)
|
|
call :CP1 "DOC\README.md"
|
|
call :CP1 "Code\README.md"
|
|
call :CP1 "RAG\README.md"
|
|
rem 공개판: prompt\README.md 에는 부서별 담당자 표가 있으므로 이미 있으면 보존한다
|
|
call :CPN "prompt\README.md"
|
|
call :CP1 "context-migration\README.md"
|
|
|
|
rem ---------- [B] 없을 때만 ----------
|
|
call :CPN "context-migration\OPEN_미해결목록.md"
|
|
call :CPN "context-migration\디자인지침_경로.md"
|
|
call :CPN ".hmcmkit\state.json"
|
|
call :CPN ".hmcmkit\blueprint.md"
|
|
call :CPN ".hmcmkit\config.json"
|
|
|
|
if defined AUTO goto :END
|
|
echo.
|
|
echo ----------------------------------------------------
|
|
echo 완료. 아래 3가지를 확인하세요.
|
|
echo 1^) %DST%\.claude\taskexecutionagent.md 상단 버전이 v0.3.01 인지
|
|
echo 2^) prompt\README.md 담당자 매핑 표에 본인이 있는지
|
|
echo 3^) 기존 산출물^(DOC, prompt^)이 그대로 남아 있는지
|
|
echo ----------------------------------------------------
|
|
goto :END
|
|
|
|
rem ==================== 서브루틴 ====================
|
|
:MK
|
|
if defined DRY goto :eof
|
|
if not exist "%DST%\%~1\" mkdir "%DST%\%~1" >nul 2>&1
|
|
goto :eof
|
|
|
|
:BKUP
|
|
if not exist "%DST%\%~1\" goto :eof
|
|
robocopy "%DST%\%~1" "%BK%\%~1" /E /IS /IT /R:1 /W:1 /NFL /NDL /NJH /NJS /NP >nul
|
|
set "BKDONE=1"
|
|
goto :eof
|
|
|
|
:RC
|
|
if not exist "%SRC%\%~1\" goto :eof
|
|
robocopy "%SRC%\%~1" "%DST%\%~1" /E /IS /IT %DRY% /R:2 /W:2 /NFL /NDL /NJH /NJS /NP >nul
|
|
if errorlevel 8 (echo [실패] %~1) else (echo [덮어씀] %~1)
|
|
goto :eof
|
|
|
|
:RCH
|
|
if not exist "%SRC%\.hmcmkit\" goto :eof
|
|
robocopy "%SRC%\.hmcmkit" "%DST%\.hmcmkit" /E /IS /IT /XF state.json blueprint.md config.json %DRY% /R:2 /W:2 /NFL /NDL /NJH /NJS /NP >nul
|
|
if errorlevel 8 (echo [실패] .hmcmkit) else (echo [덮어씀] .hmcmkit ^(state/blueprint/config 제외^))
|
|
goto :eof
|
|
|
|
:CP1
|
|
if not exist "%SRC%\%~1" goto :eof
|
|
if defined DRY echo [덮어씀-예정] %~1
|
|
if defined DRY goto :eof
|
|
if exist "%DST%\%~1" attrib -R "%DST%\%~1" >nul 2>&1
|
|
copy /Y "%SRC%\%~1" "%DST%\%~1" >nul
|
|
if errorlevel 1 (echo [실패] %~1) else (echo [덮어씀] %~1)
|
|
goto :eof
|
|
|
|
:CPN
|
|
if not exist "%SRC%\%~1" goto :eof
|
|
if exist "%DST%\%~1" echo [보존] %~1
|
|
if exist "%DST%\%~1" goto :eof
|
|
if defined DRY echo [생성-예정] %~1
|
|
if defined DRY goto :eof
|
|
copy /Y "%SRC%\%~1" "%DST%\%~1" >nul
|
|
echo [생성] %~1
|
|
goto :eof
|
|
|
|
:NODST
|
|
echo.
|
|
echo [오류] 대상 폴더를 찾을 수 없습니다.
|
|
echo 사용법 : 지침적용.bat "D:\새프로젝트"
|
|
echo 미리보기 : 지침적용.bat "D:\새프로젝트" /L
|
|
goto :END
|
|
|
|
:ABORT
|
|
echo 취소했습니다.
|
|
|
|
:END
|
|
echo.
|
|
if not defined AUTO pause
|
|
if defined OLDCP chcp %OLDCP% >nul 2>&1
|
|
endlocal
|