# 병합 및 배포 (land-and-deploy)

> /ship이 만든 GitHub PR을 이어받아 CI와 준비 상태를 확인하고, 승인 후 병합해 배포를 지켜보며 운영을 검증·보고합니다.

- 카테고리: [배포·릴리스](https://www.myskills.tools/ko/categories/deploy-release/)
- 출처: 커뮤니티 · Garry Tan
- 저장소: https://github.com/garrytan/gstack/tree/main/land-and-deploy (commit a77fae2 · v1.0.0)
- SKILL.md: https://github.com/garrytan/gstack/blob/main/land-and-deploy/SKILL.md
- 설치 명령: `npx skills add garrytan/gstack --skill land-and-deploy`
- 라이선스: MIT
- 호환 도구: Claude Code, Codex, Cursor, Copilot
- 권한: read-repo ✓, write-files ✓, shell ✓, network ✓
- 상태: 스캔 통과
- 규칙 스캔으로 모든 위험을 찾을 수는 없습니다. 설치 전에 이 스킬의 SKILL.md를 읽고 권한을 확인하세요.
- ⚠ PR을 병합하고 브랜치를 삭제하며, 롤백 시 기준 브랜치에 revert를 푸시합니다. gh 인증이 필요하고 GitHub만 지원합니다.

## 핵심 규칙

강제 푸시, CI 우회, 확인된 병합의 재실행, 누락된 증거 숨기기를 절대 하지 않습니다.

## 실행 단계

1. **사전 점검** — gh 인증을 확인하고 PR과 기준 브랜치를 찾으며, 로컬이 PR HEAD와 같고 깨끗한지 확인합니다. 처음 실행이면 드라이런을 합니다.
2. **CI·준비 확인** — HEAD의 모든 CI, 충돌, VERSION 불일치를 확인하고 필요하면 CI를 기다린 뒤 병합 전 준비 게이트를 거칩니다.
3. **병합과 배포 대기** — 승인 후 병합하고 배포 방식을 파악해 GitHub Actions나 Fly.io, Heroku 등에서 해당 리비전이 배포됐는지 확인합니다.
4. **카나리 검증** — 운영 URL의 상태를 확인하고, 문제가 있으면 사용자의 명시적 선택에 따라 revert 커밋으로 되돌립니다.
5. **배포 보고** — 증거에 따라 '배포 및 검증 완료', '병합됨(미검증)' 등의 판정을 내리고 .gstack/deploy-reports/에 저장한 뒤 후속 작업을 제안합니다.

## 권한 설명 (SKILL.md 기준)

| 기능 | 필요 여부 | 설명 |
|---|---|---|
| 파일 쓰기 | 일부 필요 | .gstack/ 아래 배포 보고서와 임시 파일, gstack 상태 디렉터리의 확인 기록과 로그를 씁니다. 병합 전에 코드를 고치지 않습니다. |
| 명령 실행 | 필요 | git, gh, jq, gstack 보조 스크립트, fly·heroku 등 상태 확인 명령을 실행하며 병합, revert, 푸시도 수행합니다. |
| 네트워크 송신 | 일부 필요 | GitHub(gh, git fetch/push), 배포 플랫폼 상태 조회, 검증할 운영 URL에 접근하며 gstack 원격 측정도 기록합니다. |

## SKILL.md 프런트매터(YAML)

```yaml
---
name: land-and-deploy
preamble-tier: 4
version: 1.0.0
description: Land and deploy workflow. (gstack)
allowed-tools:
  - Bash
  - Read
  - Write
  - Glob
  - AskUserQuestion
triggers:
  - merge and deploy
  - land the pr
  - ship to production
---
```

홈: https://www.myskills.tools/ko/ · URL: https://www.myskills.tools/ko/skills/land-and-deploy/
