--- name: catalog-update-pipeline description: Helm 차트 신규 버전 감지 → diff → breaking change 판정 → 업그레이드 문서 생성 파이프라인(agent/update_catalog)을 실행할 때 사용한다. "차트 새 버전 확인해줘", "업그레이드 문서 생성", "run_flow.sh 돌려줘", "helm diff 내줘", "breaking change 확인" 같은 요청이 해당한다. 개별 Skill(chart_version_detector, helm_diff, breaking_change_check 등) 단독 실행에도 적용된다. --- # 카탈로그 업데이트 파이프라인 실행 `agent/update_catalog/`의 결정론적 Python Skill 7개를 `run_flow.sh`가 순서대로 체이닝한다. 각 Skill은 stdout으로 JSON을 내고 다음 Skill의 입력이 된다. ``` chart_version_detector → chart_updater → helm_diff → breaking_change_check → generate_upgrade_doc → update_docs_file → create_pr ``` ## 실행 전 반드시 확인할 것 **`CATALOG_ROOT`를 오버라이드하지 않으면 엉뚱한 경로를 본다.** 기본값이 `/Users/songwonbin/openclaw-workspace/dip-catalog`로 하드코딩돼 있다(개인 로컬 경로). ```sh CATALOG_ROOT=/path/to/dip-catalog CHART=airflow \ bash agent/update_catalog/scripts/run_flow.sh ``` | 환경변수 | 의미 | 기본값 | |---|---|---| | `CATALOG_ROOT` | dip-catalog 절대 경로 | **하드코딩된 개인 경로 — 반드시 오버라이드** | | `CHART` | 대상 차트명 | `airflow` | | `OUT_DIR` | 중간 JSON 산출물 | `$(pwd)/update_catalog` (차트별 하위 디렉토리로 격리) | | `DEFAULT_BRANCH` | 분기 기준 브랜치 | `main` | | `USE_CLAUDE_CLI=1` | `breaking=true` 시 LLM 상세 가이드 생성 | 미설정 시 템플릿 기반 | ## 알려진 미완 상태 **`create_pr`(6단계)은 `run_flow.sh`에서 통째로 주석 처리돼 있다** — 파이프라인이 끝까지 돌아도 **브랜치·커밋·PR이 생성되지 않는다.** 문서 생성까지가 실제 동작 범위다. PR이 필요하면 결과물을 보고 직접 만들거나, 주석을 해제하기 전에 `create_pr` Skill의 동작을 먼저 검증한다(CLAUDE.md 기준 "실제 GitHub 연동 테스트 미완료"). `deploy_validate`는 SKILL.md만 있고 구현이 없다(Phase 2 예정). ## 개별 Skill 단독 실행 파이프라인 전체가 아니라 한 단계만 필요할 때가 많다. 입출력 스키마는 `agent/update_catalog/skills//SKILL.md`에 있다. ```sh python3 agent/update_catalog/skills/helm_diff/scripts/run.py \ --chart airflow --repo bitnami \ --chart-path /path/to/dip-catalog/manifests/helm/airflow/1.15.0 \ --from-version 1.15.0 --to-version 1.16.0 ``` ## 지켜야 할 설계 원칙 CLAUDE.md "설계 원칙"이 이 파이프라인을 직접 구속한다. 특히: - **helm 실행은 Python Skill이 전담한다** — LLM이 helm CLI를 직접 돌려 diff를 만들지 않는다. - **LLM 입력은 Structured JSON만** — raw helm output이나 자유 텍스트를 넘기지 않는다. - **Breaking change는 Rule Engine이 먼저 판단한다**(`custom-values.yaml`의 실제 사용 키 기준). LLM은 `breaking=true`일 때 Markdown 설명 생성만 담당한다. ## 참고 - CLAUDE.md "자동화 Skills 작업" — 파이프라인 개요·환경변수 - `agent/update_catalog/docs/design/` — 컴포넌트별 상세 설계(00~05) - `agent/update_catalog/docs/status.md` — 구현 현황