Communitygithub.com

Holix 릴리스 («сделай релиз»)

자기 학습형 AI 에이전트 Holix가 메모리와 기술을 활용하여 성공적인 작업에서 학습하고 재사용 가능한 스킬을 생성합니다. 릴리스 파이프라인을 처음부터 끝까지 실행합니다.

Holix 릴리스 («сделай релиз»)란 무엇인가요?

이 스킬은 AI 에이전트(Claude Code, Cursor 등)가 `javded-itres/Holix` 저장소의 릴리스 프로세스를 완전 자동화하도록 설계되었습니다. 사용자가 'сделай релиз' 또는 이와 동등한 명령을 내리면, 에이전트는 PR 생성, CI 통과, 병합, 태깅, GitHub 릴리스 및 PyPI 게시까지 전 과정을 단계별로 실행합니다. 주요 특징으로는 버전 범프(patch/minor/major), `pyproject.toml`과 `cli/__init__.py`의 일관성 확인, `docs/CHANGELOG.md` 업데이트, GitHub Actions 상태 모니터링, 그리고 실패 시 자동 수정 및 재시도 등이 포함됩니다. 이 스킬은 GitHub CLI (`gh`)와 Git 워크플로를 기반으로 동작하며, 사용자가 수동으로 개입할 필요 없이 안정적이고 반복 가능한 릴리스를 보장합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add javded-itres/Holix

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

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

문서

Holix 릴리스 («сделай релиз»)은(는) 무엇을 하나요?

사용자가 сделай релиз (또는 이와 동등한 표현)을 말하면, 이 파이프라인을 처음부터 끝까지 실행하십시오. PR 이후에 멈추지 마십시오. CI를 건너뛰지 마십시오. 병합 전에 태그하지 마십시오.

표준 패키지 규칙: RULES.md §8. 이 스킬은 운영 루프입니다.

전제 조건

  • 저장소: javded-itres/Holix. 기본 브랜치: main.
  • 인증: gh auth status가 로그인되어 있어야 합니다.
  • 먼저 가져오기: git fetch origin --tags.
  • 다음 버전 = 최신 GitHub 릴리스 + patch (1.0.7 → 1.0.8), 사용자가 minor/major를 요청하지 않은 경우.
  • 태깅 전에 버전 일치 확인:
    • pyproject.toml [project].version
    • cli/__init__.py __version__
    • 최신 gh release list / git tag
  • 프로덕션에 rsync/scp/hotfix를 사용하지 마십시오. main에 태그하는 것만으로 충분합니다: GHA GitHub Release + Publish to PyPI가 vX.Y.Z에서 실행됩니다.
  • 푸시 전에 ./scripts/lint.sh (또는 --fix)를 실행하십시오.

1) 변경 사항이 포함된 PR

코드 + 버전 범프 + 변경 로그를 동일한 PR에 포함시켜 병합을 한 번만 수행한 다음 태그를 추가하십시오.

  1. 이 작업을 이미 다루는 열린 PR이 있으면 재사용하고, 누락된 경우 거기에 범프를 추가하십시오.
  2. 그렇지 않으면 최신 origin/main에서 브랜치를 생성하십시오: release/X.Y.Z (예: release/1.0.8).
  3. 사용자의 커밋되지 않았거나 병합되지 않은 작업을 커밋하십시오 (비밀, node_modules/, 로컬 .env 제외).
  4. scripts/versioning.py를 사용하여 버전을 범프하십시오 (또는 두 파일을 직접 편집):
    • pyproject.toml
    • cli/__init__.py
  5. docs/CHANGELOG.md 업데이트:
    • ## Unreleased 노트를 ## X.Y.Z — YYYY-MM-DD로 이동
    • 새로운 빈 ## Unreleased 남기기
    • 실제 diff에서 Added/Fixed/Tests 작성
  6. 푸시하고 PR 열기 → main:
gh pr create --base main --title "Holix X.Y.Z" --body "$(cat <<'EOF'
## Summary
Release Holix X.Y.Z.

## Checklist
- [ ] Version matches in pyproject.toml and cli/__init__.py
- [ ] docs/CHANGELOG.md has section X.Y.Z
- [ ] CI green (ruff + pytest matrix)

After merge: tag `vX.Y.Z` (creates GitHub Release + PyPI).
EOF
)"

2) GitHub 테스트가 통과할 때까지 대기

로컬 pytest뿐만 아니라 PR의 GitHub Actions를 확인하십시오.

gh pr checks <n> --watch
# 또는
gh run watch <run-id>

실패 시:

  1. gh run view <id> --log-failed (또는 작업 로그).
  2. 코드 / 테스트 / ruff를 수정하십시오.
  3. 로컬: ./scripts/lint.sh를 실행한 다음 대상 pytest를 실행하십시오.
  4. 커밋, 푸시, 다시 대기.

모든 필수 검사가 통과할 때까지 반복하십시오. 빨간 CI를 병합하지 마십시오. 실패에 제품 결정이 필요한 경우 중단하고 질문하십시오 — 무시하지 마십시오.

3) main에 병합

사용자는 이 명령의 일부로 이미 병합을 승인했습니다.

gh pr merge <n> --merge --delete-branch

사용자가 요청한 경우에만 --squash를 사용하십시오. PR이 MERGED될 때까지 기다리십시오. 그런 다음 git checkout main && git pull origin main.

main에 이제 버전 X.Y.Z가 있는지 확인하십시오.

4) 다음 번호가 지정된 GitHub 릴리스

태그는 반드시 pyproject.toml과 일치해야 합니다. 태그 워크플로가 처리할 수 있으면 수동으로 GitHub 릴리스를 생성하지 마십시오.

git checkout main
git pull origin main
python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])"
git tag vX.Y.Z
git push origin vX.Y.Z

확인:

gh run list --branch vX.Y.Z --limit 5
gh release view vX.Y.Z

태그 워크플로가 CHANGELOG에 ## X.Y.Z 섹션이 없어 실패하면 후속 PR에서 수정하고, 말한 후에만 --force-with-lease로 태그를 삭제/재푸시하십시오. 게시된 태그를 다시 작성하는 것보다 새 패치를 선호하십시오.

보고

완료되면 다음으로 응답하십시오:

  • PR URL 및 병합 SHA
  • 버전 X.Y.Z / 태그 vX.Y.Z
  • 릴리스 URL
  • CI + PyPI 워크플로 상태

관련 스킬