신규 미러 전용
<dest>/<repo-name> 이나 GHES repo 가 이미 있으면 무조건 중단한다. 기존 미러 갱신은 git-pull-skills.sh 를 쓴다.
packaging
산출물 — github.com 에만 있던 기존 <domain>-skills repo 의 GHES 미러 한 벌.
GHES 위의 private repo, 로컬 클론(origin=GHES over SSH, upstream=github.com over HTTPS),
그리고 그 GHES repo 로 push 된 기본 브랜치까지.
상황에 따라 다섯 개의 스킬(과 갱신 스크립트) 중 하나를 고른다.
| 상황 | 쓸 스킬 |
|---|---|
외부 repo 가 github.com 에는 있는데 GHES 에는 없다 (git-clone-skills.sh 가 실패한다) |
mirror-repo |
| 이미 미러된 repo 를 최신으로 당긴다 | git-pull-skills.sh (스킬 아님) |
| repo 가 아직 없다. 흩어진 스킬을 묶어 새로 만든다 | scaffold-repo |
| repo 는 있는데 이름이 컨벤션에 안 맞는다 | rename-repo |
| 미러한 repo 의 구조가 표준에서 벗어났는지 알고 싶다 | structure-check |
| 그 구조를 실제로 고친다 | structure-refactor |
git-pull-skills.sh 의 몫이다.
<repo-name> 만 필수이고, 나머지는 모두 기본값이 있다.
/packaging:mirror-repo <repo-name> [--owner <owner>] [--ghes-owner <owner>]
[--dest <path>] [--host <host>] [--ghes-host <host>] [--dry-run]
/packaging:mirror-repo help
| 인자 / 플래그 | 의미 | 기본값 |
|---|---|---|
<repo-name> |
<domain>-skills 형식 repo 이름 (필수). -skills 접미어가 없으면 자동으로 붙이고 알려 준다. claude-plugin- prefix 는 pre-#1410 옛 규칙이라 거부한다 |
— |
--owner <owner> |
upstream owner | dEitY719 |
--ghes-owner <owner> |
미러를 만들 GHES owner | 활성 GHES 로그인 (gh api --hostname <ghes-host> user) |
--dest <path> |
클론할 부모 디렉터리 | ~/para/project/skills/ |
--host <host> |
upstream 호스트 | github.com |
--ghes-host <host> |
GHES 호스트 | dotfiles SSOT _gh_resolve_host |
--dry-run |
계획만 출력, 클론 / repo 생성 / push 없음 | off |
lib/mirror_repo.sh 에는 사용자 플래그가 아닌 --yes 가 하나 더 있다. 사용자가 repo 생성과 push 둘 다 승낙했을 때만 스킬이 붙여 넘긴다.
단계를 눌러 펼치면 상세가 보인다. 하드 중단 지점은 4곳이다 — 0단계 인증 실패,
1단계 검증 실패, 4단계 gh repo create 실패, push 거부.
upstream 호스트는 --host (기본 github.com), GHES 호스트는 --ghes-host, 없으면 dotfiles SSOT _gh_resolve_host. 양쪽 모두 gh auth status 를 통과해야 하고, GHES owner 는 --ghes-owner 가 없으면 활성 GHES 로그인으로 정한다.
GHES 호스트를 못 찾거나 upstream 호스트와 같으면 중단. 인증 실패도 하드 중단 지점이다.
-skills 접미어 보정, claude-plugin- prefix 거부, 소문자-하이픈 강제.
<dest>/<repo-name> 이 이미 있거나, upstream repo 가 없거나, GHES repo 가 이미 있으면 중단.
[PLAN] 블록 출력
항상
[PLAN] 블록은 항상 출력된다. --dry-run 이면 여기서 정지 — 클론도, repo 생성도, push 도 없다.
git clone https://<host>/<owner>/<repo-name>.git <dest>/<repo-name> — HTTPS 로 클론한다.
사용자 확인을 받고 GHES 에서 gh repo create <ghes-owner>/<repo-name> --private.
gh repo create 실패는 하드 중단 지점이다. 여기서 거절하면 로컬 클론만 남는다.
origin -> git@<ghes-host>:<ghes-owner>/<repo-name>.git (SSH)
upstream -> https://<host>/<owner>/<repo-name>.git (HTTPS)
사용자 확인을 받고 git push -u origin <branch>. <branch> 는 클론된 기본 브랜치다.
push 거부는 하드 중단 지점이다. 여기서 거절하면 GHES repo 는 비어 있는 채로 남는다.
[OK] 리포트
git remote -v 와 GHES 쪽 gh repo view 로 다시 확인한 뒤 [OK] 리포트를 출력한다.
여섯 가지 제약을 그대로 지킨다.
<dest>/<repo-name> 이나 GHES repo 가 이미 있으면 무조건 중단한다. 기존 미러 갱신은 git-pull-skills.sh 를 쓴다.
--ghes-host 도 없고 _gh_resolve_host 도 못 읽으면 중단, GHES 호스트가 upstream 호스트와 같아도(공용 PC 에서 github.com 이 나오는 경우) 중단한다. GHES 호스트나 사용자를 하드코딩하지 않는다.
4단계(repo 생성)와 6단계(push)는 외부에 영향을 주므로 각각 확인을 받는다. [y/N] 에서 EOF 는 거절로 친다. git push --force 는 절대 쓰지 않는다.
클론도, repo 생성도, push 도 없다. [PLAN] 블록만 출력한다.
0단계 인증 실패, 1단계 검증 실패, 4단계 gh repo create 실패, push 거부.
매니페스트에 추가할지는 사용자 선택이다.