devenv plugin · skill docs

devenv skills

머신과 툴체인을 한 번 세팅하는 작업을 맡는 스킬 3개 — 프로젝트 런타임, 로컬 설정 파일, 원격 접근. 세 층위는 서로 겹치지 않아 하나만 따로 써도 됩니다. 스킬마다 설명서 1건과 사용 예시 1건이 있습니다.

프로젝트 런타임로컬 설정 파일원격 접근
세 개 다 쓰는 스킬이고, read-only 감사기는 여기 없습니다. 대신 미리보기의 위치가 저마다 다릅니다 — mise-migrate 는 dry-run 이 기본이고 --apply 가 있어야 파일을 쓰며, ssh-delegate add 는 --dry-run 을 직접 붙여야 하고, symlink-manager 는 Phase 0 계획을 먼저 알린 뒤 곧바로 실행합니다.

1스킬 3개

mise-migrate

/devenv:mise-migrate [path] [--apply]

pyenv / python -m venv + pip + setuptools 프로젝트를 [tools] · [env] · [tasks.*] 를 담은 mise.toml 로 옮기고, venv 와 의존성의 소유권을 uv 에 넘긴다. Python venv 프로젝트만 다룬다 — 비-Python 이거나 이미 mise.toml 이 있는 디렉터리는 짜맞추지 않고 거부한다.

symlink-manager

/devenv:symlink-manager <file>

설정 파일을 ~/dotfiles/bash/<category>/ 로 옮기고 원래 경로에서 심볼릭 링크로 되돌린다. 원본은 .backup 으로 남고, <app>_init · <app>_edit_* 헬퍼와 help 문서를 갱신한 뒤 커밋까지 간다. 어느 Phase 든 실패하면 다음으로 넘어가지 않고 [FAIL] 로 멈춘다.

ssh-delegate

/devenv:ssh-delegate <sync|add|list|test|revoke|doctor>

한 번 쓰고 마는 ssh-copy-id 대신 ~/.ssh/delegations.yml(0600) 매니페스트가 어떤 키가 어느 호스트에 어느 계정으로 설치됐는지의 단일 기준이 된다. add 는 원격 비밀번호를 한 번 묻기 때문에 실제 터미널이 필요하고, fingerprint MISMATCH 는 우회하지 않고 멈춘다 — 재신뢰는 사람의 결정이다.

2세 개의 층위

세 스킬은 순서대로 이어지는 파이프라인이 아니다. 손대는 층이 서로 달라서 겹칠 일이 없고, 그래서 필요한 하나만 따로 실행하면 된다. 각 층이 어디까지이고 어디부터 아닌지는 이렇게 갈린다.

프로젝트 런타임 — mise-migrate

저장소 <path> 안쪽만 본다. 그 바깥의 파일은 지우지 않고, 홈 디렉터리 설정도 SSH 도 건드리지 않는다. --apply 는 uv sync 까지 돌리므로 uv 가 PATH 에 있어야 한다.

로컬 설정 파일 — symlink-manager

홈 디렉터리와 dotfiles 저장소 사이만 오간다. bash/{claude,app,config,env}/ 레이아웃과 git 을 전제하고, 그 저장소에 커밋하는 것으로 끝난다 — 원격에는 아무것도 보내지 않는다.

원격 접근 — ssh-delegate

여기서만 로컬 밖으로 나간다. 매니페스트와 ssh config 드롭인은 항상 0600 으로 쓰이고, 모든 이벤트는 flock 으로 직렬화된 JSONL 감사 로그에 남는다. 같은 alias 로 add 를 다시 돌려도 항목이 늘지 않는다.