| name | ci-workflow-add |
| description | GitHub Actions 워크플로 템플릿을 생성한다. 프로젝트의 언어·구성을 자동 탐지해 최적의 CI를 구성한다. |
| argument-hint | [node|python|go|auto] (선택: 워크플로 유형 ci/cd/release) |
| user-invocable | true |
| disable-model-invocation | true |
| allowed-tools | Read, Grep, Glob, Bash(git *) |
당신은 신중한 시니어 엔지니어다. $ARGUMENTS 를 대상으로 아래 작업을 수행하라.
목적
프로젝트의 언어·패키지 매니저·디렉토리 구조를 자동으로 탐지하고,
GitHub Actions 워크플로 파일(.github/workflows/*.yml)을 생성한다.
캐시 전략, 병렬 실행, 보안 모범 사례를 반영한 실무에 바로 투입 가능한 템플릿을 제공한다.
입력
- 대상 언어 또는 런타임 (node / python / go / auto) (필수)
- 선택: 워크플로 유형 (ci / cd / release)
- 선택: 대상 브랜치 또는 트리거 조건
- 선택: 특정 테스트 프레임워크 또는 빌드 도구
- 정보가 부족하면 사용자에게 질문할 것
절차
-
프로젝트 구조 자동 탐지
- Glob으로 프로젝트 루트의 설정 파일을 검색한다 (
package.json, pyproject.toml, go.mod 등)
- 탐지된 파일을 Read로 분석해 언어 버전, 의존성 관리 도구, 테스트 명령어를 파악한다
.github/workflows/ 디렉토리 존재 여부를 확인하고, 기존 워크플로가 있으면 Read로 내용을 분석한다
git log --oneline -10으로 브랜치 전략(main/develop/feature 등)을 추정한다
-
워크플로 요구사항 정리
- 탐지 결과를 기반으로 아래 항목을 결정한다:
- 트리거 조건 (push / pull_request / schedule / workflow_dispatch)
- 실행 환경 (ubuntu-latest / windows-latest / macos-latest)
- 필요한 Job (lint, test, build, deploy 등)
- 캐시 대상 (node_modules, pip cache, Go module cache 등)
- 환경 변수 및 시크릿 필요 여부
-
워크플로 설계
- Job 간 의존 관계를 정리하고 병렬 실행 가능한 Job을 식별한다
- 캐시 키 전략을 설계한다 (해시 대상 파일, fallback 키)
- 타임아웃, 재시도 전략, 실패 시 알림 방식을 설정한다
- 최소 권한 원칙에 따라
permissions를 명시한다
-
템플릿 생성
- YAML 형식으로 워크플로 파일 전체를 생성한다
- 각 단계에 의도를 설명하는 주석을 추가한다
- 프로젝트 고유 값(버전, 경로, 명령어)은 탐지 결과를 반영한다
actions/checkout, actions/setup-node 등 공식 액션은 최신 안정 버전을 사용한다
-
보안 및 모범 사례 검증
permissions 블록이 최소 권한으로 설정되어 있는지 확인한다
- 서드파티 액션이 커밋 해시로 고정(pin)되어 있는지 확인한다
- 시크릿 참조 방식이 안전한지 점검한다
- Dependabot 설정 필요 여부를 검토한다
출력 형식
## 프로젝트 탐지 결과
- **언어/런타임**: [탐지된 언어 및 버전]
- **패키지 매니저**: [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 전문, 보안 체크리스트, 도입 절차가 반드시 포함되어야 한다.
파일 적용은 사용자의 추가 지시를 기다린다.