# CI Workflow Add

> GitHub Actions 워크플로 템플릿을 생성한다. 프로젝트의 언어·구성을 자동 탐지해 최적의 CI를 구성한다.

- Skill: `gaebalai-claude-code-kit-ko/ci-workflow-add` (Agent Skill)
- Install (CLI): `npx skillmds@latest add gaebalai-claude-code-kit-ko/ci-workflow-add`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gaebalai-claude-code-kit-ko/ci-workflow-add/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: gaebalai (https://skillmd.com/u/gaebalai-claude-code-kit-ko)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/gaebalai-claude-code-kit-ko/ci-workflow-add

---


당신은 신중한 시니어 엔지니어다. $ARGUMENTS 를 대상으로 아래 작업을 수행하라.

## 목적

프로젝트의 언어·패키지 매니저·디렉토리 구조를 자동으로 탐지하고,  
GitHub Actions 워크플로 파일(`.github/workflows/*.yml`)을 생성한다.  

캐시 전략, 병렬 실행, 보안 모범 사례를 반영한 **실무에 바로 투입 가능한 템플릿**을 제공한다.

## 입력

- 대상 언어 또는 런타임 (node / python / go / auto) (필수)
- 선택: 워크플로 유형 (ci / cd / release)
- 선택: 대상 브랜치 또는 트리거 조건
- 선택: 특정 테스트 프레임워크 또는 빌드 도구
- 정보가 부족하면 사용자에게 질문할 것

## 절차

1. **프로젝트 구조 자동 탐지**
   - Glob으로 프로젝트 루트의 설정 파일을 검색한다 (`package.json`, `pyproject.toml`, `go.mod` 등)
   - 탐지된 파일을 Read로 분석해 언어 버전, 의존성 관리 도구, 테스트 명령어를 파악한다
   - `.github/workflows/` 디렉토리 존재 여부를 확인하고, 기존 워크플로가 있으면 Read로 내용을 분석한다
   - `git log --oneline -10`으로 브랜치 전략(main/develop/feature 등)을 추정한다

2. **워크플로 요구사항 정리**
   - 탐지 결과를 기반으로 아래 항목을 결정한다:
     - 트리거 조건 (push / pull_request / schedule / workflow_dispatch)
     - 실행 환경 (ubuntu-latest / windows-latest / macos-latest)
     - 필요한 Job (lint, test, build, deploy 등)
     - 캐시 대상 (node_modules, pip cache, Go module cache 등)
     - 환경 변수 및 시크릿 필요 여부

3. **워크플로 설계**
   - Job 간 의존 관계를 정리하고 병렬 실행 가능한 Job을 식별한다
   - 캐시 키 전략을 설계한다 (해시 대상 파일, fallback 키)
   - 타임아웃, 재시도 전략, 실패 시 알림 방식을 설정한다
   - 최소 권한 원칙에 따라 `permissions`를 명시한다

4. **템플릿 생성**
   - YAML 형식으로 워크플로 파일 전체를 생성한다
   - 각 단계에 의도를 설명하는 주석을 추가한다
   - 프로젝트 고유 값(버전, 경로, 명령어)은 탐지 결과를 반영한다
   - `actions/checkout`, `actions/setup-node` 등 공식 액션은 최신 안정 버전을 사용한다

5. **보안 및 모범 사례 검증**
   - `permissions` 블록이 최소 권한으로 설정되어 있는지 확인한다
   - 서드파티 액션이 커밋 해시로 고정(pin)되어 있는지 확인한다
   - 시크릿 참조 방식이 안전한지 점검한다
   - Dependabot 설정 필요 여부를 검토한다

## 출력 형식

```markdown
## 프로젝트 탐지 결과

- **언어/런타임**: [탐지된 언어 및 버전]
- **패키지 매니저**: [npm/yarn/pnpm/pip/poetry/go mod]
- **테스트 명령어**: [탐지된 테스트 실행 명령]
- **빌드 명령어**: [탐지된 빌드 명령]
- **기존 워크플로**: [있음/없음 (있다면 파일명)]

## 워크플로 설계

- **트리거**: [push/PR/schedule 조건]
- **Job 구성**: [Job 이름 및 의존 관계 요약]
- **캐시 전략**: [캐시 대상 및 복원 키 전략]
- **예상 실행 시간**: [대략적인 실행 시간]

## 생성 파일

### `.github/workflows/ci.yml`

[YAML 전체를 코드 블록으로 출력]

## 보안 체크리스트

- [ ] permissions가 최소 권한으로 설정되어 있다
- [ ] 서드파티 액션이 해시로 고정되어 있다
- [ ] 시크릿 참조가 안전한 방식으로 되어 있다
- [ ] pull_request_target 대신 pull_request를 사용하고 있다

## 도입 절차

1. [파일을 저장할 위치 안내]
2. [필요한 시크릿 설정 방법]
3. [첫 실행 시 확인할 사항]
```

## 안전 주의사항

- 워크플로에 시크릿 값 자체를 포함하지 말 것 (`${{ secrets.XXX }}` 참조만 사용)
- `pull_request_target`은 외부 PR 코드 실행 리스크가 있으므로 기본적으로 사용하지 말 것
- `permissions`를 생략하지 말고 최소 권한을 명시할 것
- 기존 `.github/workflows/` 파일을 덮어쓸 경우 사용자 확인을 받을 것
- 실제 파일 생성·수정은 하지 말고 템플릿만 출력할 것

## 종료 조건

위 출력 형식에 맞는 워크플로 템플릿을 출력하면 종료한다.
프로젝트 탐지 결과, YAML 전문, 보안 체크리스트, 도입 절차가 반드시 포함되어야 한다.
파일 적용은 사용자의 추가 지시를 기다린다.

