6.8 KiB
6.8 KiB
Skills 구현 태스크 (Step 1)
목표
Agent(OpenClaw/Nanobot)가 직접 호출할 수 있는 Skill들을 구현한다. 파이프라인 오케스트레이션 코드는 구현하지 않는다. 순서 제어는 Agent가 담당한다.
범위: 각 Skill이 독립적으로 호출 가능한 상태. Skill 간 호출 순서 코드는 제외.
태스크 목록
🔴 높음 (핵심 기능)
T1. Helm Diff Engine 구현 (helm_diff Skill)
- dip-catalog 경로 지원:
chart_path입력으로manifests/helm/<chart>/<version>/직접 사용 - 신규 버전 감지 시
manifests/helm/<chart>/<new>/디렉토리 생성 (기존 유지) - 최신 차트 pull + 압축 해제 후 신규 버전 디렉토리에 반영
- (repo 구조)
helm pull로 두 버전 다운로드 - (dip-catalog) 로컬 디렉토리 복사로
chart_old/chart_new구성 - values.yaml flat key 비교 (added / removed / changed / type_changed)
custom-values.yaml기본 적용 (values_override 기본값)helm template렌더링 후 리소스 단위 비교- CRD schema 비교 (schema / required / version / webhook)
- dependency (Chart.yaml) 비교
- Structured Diff JSON 스키마 확정 및 출력
완료 기준: 임의의 두 chart 버전에 대해 Structured Diff JSON이 정상 생성됨
T2. Breaking Change Rule Engine 구현 (breaking_change_check Skill)
- Breaking 정의:
custom-values.yaml을 수정해야 하는 상황 (카탈로그 맥락) - Values key 삭제 감지 — custom-values.yaml에 해당 key 있을 때만 breaking, 없으면 warning
- Values type 변경 감지 — 동일 기준 (custom-values.yaml에 있을 때만 breaking)
- Service port / type 변경 감지 — ⚠️ warning (custom-values.yaml 수정 불필요)
- resource 삭제 감지 — ⚠️ warning (custom-values.yaml 수정 불필요)
- Dependency major version 변경 — custom-values.yaml에 해당 subchart prefix key 있을 때만 breaking
- CRD required field 추가 / field 삭제 / storage version 변경 감지
- severity 분류 (critical / high / medium / warning)
완료 기준: custom-values.yaml 기준으로 올바르게 breaking/warning 분류, False Positive 최소화
T3. LLM Summarizer 구현 (generate_upgrade_doc Skill)
- Structured Diff JSON + Breaking 결과를 LLM API에 전달
- docs_context 반영: README/BUILD/CUSTOM 요약을 참고 컨텍스트로 포함
- Prompt 구현 (설계 문서 기반)
- 토큰 예산 관리 (50,000 token 상한, 초과 시 중요도 기반 필터링)
- Markdown 출력 검증 (형식 일치 여부)
완료 기준: 생성된 Markdown이 설계 문서의 Output Format을 준수하고, 없는 내용을 만들어내지 않음
- breaking=true → LLM 상세 가이드 (USE_CLAUDE_CLI=1 필요)
- breaking=false → 템플릿 기반 간단 요약
- 항상 실행 (breaking 여부와 무관)
T3-1. CUSTOM-README.md 업그레이드 주의사항 추가
- generate_upgrade_doc 결과를
CUSTOM-README.md의# Upgrade History섹션에 추가 update_docs_fileSkill 호출:docs_file="manifests/helm/<chart>/<to_version>/CUSTOM-README.md"
T4. Skill 인터페이스 구현
helm_diffSkill 구현 및 노출breaking_change_checkSkill 구현 및 노출generate_upgrade_docSkill 구현 및 노출update_docs_fileSkill 구현 및 노출create_prSkill 구현 및 노출deploy_validateSkill 구현 및 노출- 인터페이스 버전
1.0확정
완료 기준: 각 Skill이 독립적으로 호출 가능하고 입출력 스키마가 문서와 일치
🟡 중간 (안정성)
T5. 에러 처리 및 Fallback
helm pull실패 시 재시도 (3회) + 알림helm template렌더링 실패 시 partial diff 생성- chart 미존재 시 스킵 + 로그
- 네트워크 타임아웃 (60s) 처리
- 각 Skill의 오류 시 에러 응답 포맷 일관화
T6. Chart Version Detector 구현
- dip-catalog 디렉토리 스캔 (
manifests/helm/<chart>/하위 버전 변화 감지) - git diff 기반 신규 버전 탐지
- ArtifactHub API 연동
- Helm repo
index.yaml스캔 - GitHub Release Webhook 수신
- Cron 스케줄 설정
T7. Docs Updater 구현 (update_docs_file Skill)
CUSTOM-README.md에# Upgrade History섹션 추가 (기존 내용 유지)- 대상 경로:
manifests/helm/<chart>/<to_version>/CUSTOM-README.md - 중복 버전 처리 (overwrite 옵션)
BUILD-README.md는chart_updater가 carry-over + 버전 번호 치환으로 관리 (update_docs_file 대상 아님)
T8. Git PR Bot 구현 (create_pr Skill)
- branch 생성 (
helm-upgrade/{chart}/{version}) - commit (chart version 업데이트 + docs 수정)
- PR 생성 (제목, labels, machine-readable metadata 블록 포함)
T9. Deploy Validator 구현 (deploy_validate Skill)
helm upgrade --dry-run실행- test namespace에
helm upgrade배포 - Pod Running + Ready 상태 확인 (타임아웃: 5분)
- 비정상 K8s events 수집
- 실패 시 Pod 로그 수집
- namespace teardown
🟢 낮음 (개선)
T10. 사용자 정의 values 오버라이드 지원
values_override파일 경로 또는 inline YAML 지원- Diff 생성 시 오버라이드 values 적용
- dip-catalog 기본값:
custom-values.yaml존재 시 자동 적용
구현 진행 현황
- 현황 표는 docs/status.md에서 관리
우선순위 요약
T4 (Skill 인터페이스 스키마 확정) ← 가장 먼저 (다른 모든 태스크의 계약)
↓
T1 (Helm Diff) + T2 (Rule Engine) ← 병렬 구현 가능
↓
T3 (LLM Summarizer) → T3-1 (CUSTOM-README.md 업그레이드 주의사항 추가)
↓
T7 (Docs Updater) + T8 (PR Bot) + T9 (Deploy Validator) ← 병렬 구현 가능
↓
T5 (에러 처리) + T6 (Version Detector) + T10 (values 오버라이드)
완료 기준 (Step 1 전체)
- 각 Skill이 독립적으로 호출 가능
- airflow chart 임의 두 버전에 대해 각 Skill 단독 동작 확인
- Breaking Change가 있는 버전과 없는 버전 모두 올바르게 처리
- 생성된 PR에 machine-readable metadata 블록 포함
- 에러 발생 시 해당 Skill만 실패하고 에러 응답 반환 (전체 중단 없음)
- Skill 인터페이스 버전
1.0확정