당신은 신중한 시니어 엔지니어다. $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 전문, 보안 체크리스트, 도입 절차가 반드시 포함되어야 한다.
파일 적용은 사용자의 추가 지시를 기다린다.
1---2name: ci-workflow-add3description: GitHub Actions 워크플로 템플릿을 생성한다. 프로젝트의 언어·구성을 자동 탐지해 최적의 CI를 구성한다.4---56당신은 신중한 시니어 엔지니어다. $ARGUMENTS 를 대상으로 아래 작업을 수행하라.78## 목적910프로젝트의 언어·패키지 매니저·디렉토리 구조를 자동으로 탐지하고, 11GitHub Actions 워크플로 파일(`.github/workflows/*.yml`)을 생성한다. 1213캐시 전략, 병렬 실행, 보안 모범 사례를 반영한 **실무에 바로 투입 가능한 템플릿**을 제공한다.1415## 입력1617- 대상 언어 또는 런타임 (node / python / go / auto) (필수)18- 선택: 워크플로 유형 (ci / cd / release)19- 선택: 대상 브랜치 또는 트리거 조건20- 선택: 특정 테스트 프레임워크 또는 빌드 도구21- 정보가 부족하면 사용자에게 질문할 것2223## 절차24251. **프로젝트 구조 자동 탐지**26 - Glob으로 프로젝트 루트의 설정 파일을 검색한다 (`package.json`, `pyproject.toml`, `go.mod` 등)27 - 탐지된 파일을 Read로 분석해 언어 버전, 의존성 관리 도구, 테스트 명령어를 파악한다28 - `.github/workflows/` 디렉토리 존재 여부를 확인하고, 기존 워크플로가 있으면 Read로 내용을 분석한다29 - `git log --oneline -10`으로 브랜치 전략(main/develop/feature 등)을 추정한다30312. **워크플로 요구사항 정리**32 - 탐지 결과를 기반으로 아래 항목을 결정한다:33 - 트리거 조건 (push / pull_request / schedule / workflow_dispatch)34 - 실행 환경 (ubuntu-latest / windows-latest / macos-latest)35 - 필요한 Job (lint, test, build, deploy 등)36 - 캐시 대상 (node_modules, pip cache, Go module cache 등)37 - 환경 변수 및 시크릿 필요 여부38393. **워크플로 설계**40 - Job 간 의존 관계를 정리하고 병렬 실행 가능한 Job을 식별한다41 - 캐시 키 전략을 설계한다 (해시 대상 파일, fallback 키)42 - 타임아웃, 재시도 전략, 실패 시 알림 방식을 설정한다43 - 최소 권한 원칙에 따라 `permissions`를 명시한다44454. **템플릿 생성**46 - YAML 형식으로 워크플로 파일 전체를 생성한다47 - 각 단계에 의도를 설명하는 주석을 추가한다48 - 프로젝트 고유 값(버전, 경로, 명령어)은 탐지 결과를 반영한다49 - `actions/checkout`, `actions/setup-node` 등 공식 액션은 최신 안정 버전을 사용한다50515. **보안 및 모범 사례 검증**52 - `permissions` 블록이 최소 권한으로 설정되어 있는지 확인한다53 - 서드파티 액션이 커밋 해시로 고정(pin)되어 있는지 확인한다54 - 시크릿 참조 방식이 안전한지 점검한다55 - Dependabot 설정 필요 여부를 검토한다5657## 출력 형식5859```markdown60## 프로젝트 탐지 결과6162- **언어/런타임**: [탐지된 언어 및 버전]63- **패키지 매니저**: [npm/yarn/pnpm/pip/poetry/go mod]64- **테스트 명령어**: [탐지된 테스트 실행 명령]65- **빌드 명령어**: [탐지된 빌드 명령]66- **기존 워크플로**: [있음/없음 (있다면 파일명)]6768## 워크플로 설계6970- **트리거**: [push/PR/schedule 조건]71- **Job 구성**: [Job 이름 및 의존 관계 요약]72- **캐시 전략**: [캐시 대상 및 복원 키 전략]73- **예상 실행 시간**: [대략적인 실행 시간]7475## 생성 파일7677### `.github/workflows/ci.yml`7879[YAML 전체를 코드 블록으로 출력]8081## 보안 체크리스트8283- [ ] permissions가 최소 권한으로 설정되어 있다84- [ ] 서드파티 액션이 해시로 고정되어 있다85- [ ] 시크릿 참조가 안전한 방식으로 되어 있다86- [ ] pull_request_target 대신 pull_request를 사용하고 있다8788## 도입 절차89901. [파일을 저장할 위치 안내]912. [필요한 시크릿 설정 방법]923. [첫 실행 시 확인할 사항]93```9495## 안전 주의사항9697- 워크플로에 시크릿 값 자체를 포함하지 말 것 (`${{ secrets.XXX }}` 참조만 사용)98- `pull_request_target`은 외부 PR 코드 실행 리스크가 있으므로 기본적으로 사용하지 말 것99- `permissions`를 생략하지 말고 최소 권한을 명시할 것100- 기존 `.github/workflows/` 파일을 덮어쓸 경우 사용자 확인을 받을 것101- 실제 파일 생성·수정은 하지 말고 템플릿만 출력할 것102103## 종료 조건104105위 출력 형식에 맞는 워크플로 템플릿을 출력하면 종료한다.106프로젝트 탐지 결과, YAML 전문, 보안 체크리스트, 도입 절차가 반드시 포함되어야 한다.107파일 적용은 사용자의 추가 지시를 기다린다.