Community코딩 & 개발github.com

Gentleman-Programming/release

gentle-pi 릴리스를 GitHub과 npm을 통해 준비, 게시, 검증합니다. 트리거: 릴리스, 게시, npm 게시, GitHub 릴리스, 버전 업.

release란 무엇인가요?

이 스킬은 `gentle-pi` 패키지의 릴리스를 준비하고, GitHub Actions를 통해 npm에 게시하며, 결과를 검증하는 전체 프로세스를 자동화합니다. 로컬 머신에서의 npm 게시를 금지하고, 모든 게시는 GitHub Actions 워크플로우를 통해 이루어져야 하며, 이는 보안과 검증을 강화합니다. 릴리스 절차는 깨끗한 작업 트리에서 시작하여, 의도된 변경 사항만 커밋하고, 정확한 버전 태그를 생성한 후, GitHub 릴리스를 생성하고 마지막으로 워크플로우를 실행하여 npm에 게시합니다. 실패 시에는 기존 태그를 재사용하지 않고 새로운 릴리스 커밋과 태그를 생성해야 하며, 로컬에서의 재시도는 금지됩니다. 이 스킬은 Claude Code, Cursor, Codex와 같은 AI 에이전트와 함께 사용하도록 설계되었으며, 릴리스 프로세스의 일관성과 안전성을 보장합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Gentleman-Programming/gentle-shell/tree/main/skills/release

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

사용 시기

이 스킬은 gentle-pi 릴리스를 준비, 게시 또는 검증할 때 사용합니다.

엄격한 규칙

  • 로컬 머신에서 gentle-pi를 npm에 게시하지 마십시오.
  • npm 게시는 반드시 GitHub Actions 워크플로우 .github/workflows/publish.yml을 통해 이루어져야 하며, 증명, 환경 보호, 레지스트리 자격 증명이 GitHub에 의해 제어됩니다.
  • 보호된 기본 main 브랜치에서 신뢰할 수 있는 워크플로우 정의를 디스패치하고, 릴리스 태그에서는 절대 디스패치하지 마십시오. 유일한 호출 입력은 정확한 주석 버전 태그입니다.
  • 릴리스 커밋에는 깨끗한 작업 트리를 사용하십시오. 관련 없는 로컬 파일이나 임시 아티팩트를 패키징하지 마십시오.
  • 검토 결과는 정보 제공용입니다. 릴리스 전달은 일반 저장소 정책을 따르며 RDD에 의해 차단, 승인 또는 재작성되어서는 안 됩니다.
  • 릴리스 태그 대상을 로컬 HEAD에서 추론하지 마십시오. 새로 가져온 origin/main 커밋과 저장소의 일반 릴리스 안전장치를 사용하십시오.
  • 패키지 검증을 절대 건너뛰지 마십시오. 게시 워크플로우에서 다시 검증을 수행하지만, 태깅 전에 로컬 검증도 통과해야 합니다.

릴리스 절차

  1. 상태 확인

    git status --short
    git fetch origin main --tags
    git log --oneline --decorate --max-count=5 origin/main
    
  2. 릴리스 커밋 준비

    • 의도된 변경 사항만 적용합니다.
    • package.json의 버전을 다음 semver 버전으로 올립니다.
    • 종속성 해석이 실제로 변경되지 않았다면 lockfile 변경 사항은 제외합니다.
  3. 로컬에서 검증

    pnpm test
    node scripts/verify-package-files.mjs
    npm pack --dry-run
    

    npm pack --dry-run은 게시 경로에 진입하지 않고 패키지 내용과 라이프사이클 스크립트를 검증합니다.

  4. 커밋 및 푸시

    git add <의도된-파일들>
    git commit -m "<type(scope): release-ready change>"
    git push origin HEAD:main
    git fetch origin main --tags
    
  5. 정확한 버전 태그 생성 및 검증

    version="$(node -p "require('./package.json').version")"
    tag="v${version}"
    release_sha="$(git rev-parse 'origin/main^{commit}')"
    
    test "$(git rev-parse 'HEAD^{commit}')" = "${release_sha}"
    test -z "$(git ls-remote --tags origin "refs/tags/${tag}")"
    
    git tag -a "${tag}" "${release_sha}" -m "gentle-pi ${tag}"
    test "$(git rev-parse "${tag}^{commit}")" = "${release_sha}"
    
    git fetch origin main
    test "$(git rev-parse 'origin/main^{commit}')" = "${release_sha}"
    git push origin "refs/tags/${tag}"
    
    git fetch --no-tags origin "refs/tags/${tag}"
    test "$(git rev-parse 'FETCH_HEAD^{commit}')" = "${release_sha}"
    
    gh release create "${tag}" \
      --repo Gentleman-Programming/gentle-pi \
      --verify-tag \
      --title "gentle-pi ${tag}" \
      --notes "<릴리스 노트>"
    

    기존 버전을 다시 태깅하거나 덮어쓰지 마십시오. 태그 대상은 새로 가져온 불변의 origin/main 커밋에서 비롯되며, 주변 로컬 브랜치에서 가져오지 않습니다.

  6. GitHub Actions를 통해 npm에 게시

    version="$(node -p "require('./package.json').version")"
    tag="v${version}"
    gh workflow run publish.yml \
      --repo Gentleman-Programming/gentle-pi \
      --ref main \
      -f tag="${tag}"
    

    워크플로우 정의는 항상 보호된 기본 main에서 제공됩니다. 하나의 정확한 vSemVer 태그만 허용하며, 원격 주석 태그와 현재 원격 main을 가져와서, 분리된 태그 커밋, 디스패치/main 워크플로우 커밋, 체크아웃, 그리고 package.json 버전이 일치하는지 확인합니다. npm 게시 직전에 원격 태그와 main을 다시 조회하고, dist-tag를 내부적으로 파생하며, 신뢰할 수 있는 OIDC와 증명을 사용합니다.

    실행을 모니터링하고 실패하면 릴리스를 실패로 처리합니다:

    gh run list --repo Gentleman-Programming/gentle-pi --workflow publish.yml --limit 3
    gh run watch <run-id> --repo Gentleman-Programming/gentle-pi --exit-status
    
  7. npm 확인

    npm view gentle-pi@<version> version --registry=https://registry.npmjs.org/
    npm dist-tag ls gentle-pi --registry=https://registry.npmjs.org/
    

실패 처리

  • 게시 실패는 일반 저장소 정책을 통해 처리됩니다. 검토 라인을 다시 열거나 변경하지 않습니다.

  • 로컬에서 npm publish를 시도하거나 재시도하지 마십시오. 동일한 태그가 여전히 현재 원격 main을 대상으로 하고 실패가 게시 전용인 경우에만 신뢰할 수 있는 main에서 다시 디스패치하십시오.

  • 원격 main이 진행된 경우, 기존 태그를 이동하거나 다시 생성하지 마십시오. 새 릴리스 커밋/버전을 준비하고 새 주석 버전 태그를 생성하십시오.

  • 워크플로우가 실패하면 다음 명령으로 로그를 확인하십시오:

    gh run view <run-id> --repo Gentleman-Programming/gentle-pi --log
    
  • 성공적인 워크플로우 후 npm 확인이 일시적으로 지연된 경우, 게시 실패로 가정하기 전에 정확한 버전을 먼저 확인하십시오 (npm view gentle-pi@<version> version).

출력 계약

다음을 보고합니다:

  • main에 푸시된 커밋 SHA.
  • 정확한 버전 태그와 그 분리된 커밋 SHA.
  • GitHub 릴리스 URL.
  • 게시 워크플로우 실행 URL 및 결과.
  • npm 정확한 버전과 워크플로우에서 파생된 dist-tag (latest, beta, 또는 next).
  • 남은 후속 조치 또는 경고 사항.

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

관련 스킬