오픈소스 파이프라인 스킬
어떤 프로젝트든 안전하게 오픈소스화하는 3단계 파이프라인: 포크(시크릿 제거) → 정제(깨끗한지 확인) → 패키징(CLAUDE.md + setup.sh + README).
활성화 시점
- 사용자가 "이 프로젝트를 오픈소스로 공개" 또는 "이것을 공개하라"고 말할 때
- 사용자가 비공개 저장소를 공개 배포용으로 준비하려 할 때
- 사용자가 GitHub에 푸시하기 전에 시크릿을 제거해야 할 때
- 사용자가
/opensource fork,/opensource verify, 또는/opensource package를 호출할 때
명령어
| 명령어 | 동작 |
|---|---|
/opensource fork PROJECT | 전체 파이프라인: 포크 + 정제 + 패키징 |
/opensource verify PROJECT | 기존 저장소에 대해 정제기 실행 |
/opensource package PROJECT | CLAUDE.md + setup.sh + README 생성 |
/opensource list | 모든 준비 중인 프로젝트 표시 |
/opensource status PROJECT | 준비 중인 프로젝트의 보고서 표시 |
프로토콜
/opensource fork PROJECT
전체 파이프라인 — 주요 워크플로우.
1단계: 매개변수 수집
프로젝트 경로를 확인합니다. PROJECT에 /가 포함되어 있으면 경로(절대 또는 상대)로 처리합니다. 그렇지 않으면 현재 작업 디렉토리, $HOME/PROJECT 순서로 확인한 후 사용자에게 묻습니다.
SOURCE_PATH="<확인된 절대 경로>"
STAGING_PATH="$HOME/opensource-staging/${PROJECT_NAME}"
사용자에게 묻습니다:
- "어떤 프로젝트인가요?" (찾을 수 없는 경우)
- "라이선스? (MIT / Apache-2.0 / GPL-3.0 / BSD-3-Clause)"
- "GitHub 조직 또는 사용자 이름?" (기본값:
gh api user -q .login으로 감지) - "GitHub 저장소 이름?" (기본값: 프로젝트 이름)
- "README에 대한 설명?" (프로젝트를 분석하여 제안)
2단계: 스테이징 디렉토리 생성
mkdir -p $HOME/opensource-staging/
3단계: 포커 에이전트 실행
opensource-forker 에이전트를 생성합니다:
Agent(
description="{PROJECT}를 오픈소스용으로 포크",
subagent_type="opensource-forker",
prompt="""
프로젝트를 오픈소스 배포용으로 포크합니다.
소스: {SOURCE_PATH}
대상: {STAGING_PATH}
라이선스: {chosen_license}
전체 포킹 프로토콜을 따르세요:
1. 파일 복사 (.git, node_modules, __pycache__, .venv 제외)
2. 모든 시크릿과 자격 증명 제거
3. 내부 참조를 플레이스홀더로 대체
4. .env.example 생성
5. Git 히스토리 정리
6. {STAGING_PATH}/FORK_REPORT.md에 FORK_REPORT.md 생성
"""
)
완료될 때까지 기다립니다. {STAGING_PATH}/FORK_REPORT.md를 읽습니다.
4단계: 정제기 에이전트 실행
opensource-sanitizer 에이전트를 생성합니다:
Agent(
description="{PROJECT} 정제 확인",
subagent_type="opensource-sanitizer",
prompt="""
오픈소스 포크의 정제를 확인합니다.
프로젝트: {STAGING_PATH}
소스(참조용): {SOURCE_PATH}
모든 검사 카테고리를 실행하세요:
1. 시크릿 검사 (치명적)
2. 개인정보(PII) 검사 (치명적)
3. 내부 참조 검사 (치명적)
4. 위험 파일 검사 (치명적)
5. 설정 완전성 검사 (경고)
6. Git 히스토리 감사
{STAGING_PATH} 안에 PASS/FAIL 판정과 함께 SANITIZATION_REPORT.md를 생성하세요.
"""
)
완료될 때까지 기다립니다. {STAGING_PATH}/SANITIZATION_REPORT.md를 읽습니다.
FAIL인 경우: 발견 사항을 사용자에게 보여줍니다. "이것들을 수정하고 다시 검사할까요, 아니면 중단할까요?"라고 묻습니다.
- 수정 선택: 수정을 적용하고 정제기를 다시 실행합니다 (최대 3회 재시도 — 3회 FAIL 후에는 모든 발견 사항을 제시하고 사용자에게 수동 수정을 요청합니다)
- 중단 선택: 스테이징 디렉토리를 정리합니다
PASS 또는 PASS WITH WARNINGS인 경우: 5단계로 계속 진행합니다.
5단계: 패키저 에이전트 실행
opensource-packager 에이전트를 생성합니다:
Agent(
description="{PROJECT}를 오픈소스용으로 패키징",
subagent_type="opensource-packager",
prompt="""
프로젝트의 오픈소스 패키징을 생성합니다.
프로젝트: {STAGING_PATH}
라이선스: {chosen_license}
프로젝트 이름: {PROJECT_NAME}
설명: {description}
GitHub 저장소: {github_repo}
생성:
1. CLAUDE.md (명령어, 아키텍처, 주요 파일)
2. setup.sh (원클릭 부트스트랩, 실행 가능하도록)
3. README.md (또는 기존 파일 개선)
4. LICENSE
5. CONTRIBUTING.md
6. .github/ISSUE_TEMPLATE/ (bug_report.md, feature_request.md)
"""
)
6단계: 최종 검토
사용자에게 표시합니다:
오픈소스 포크 준비 완료: {PROJECT_NAME}
위치: {STAGING_PATH}
라이선스: {license}
생성된 파일:
- CLAUDE.md
- setup.sh (실행 가능)
- README.md
- LICENSE
- CONTRIBUTING.md
- .env.example ({N}개 변수)
정제 결과: {sanitization_verdict}
다음 단계:
1. 검토: cd {STAGING_PATH}
2. 저장소 생성: gh repo create {github_org}/{github_repo} --public
3. 푸시: git remote add origin ... && git push -u origin main
GitHub 생성을 진행할까요? (yes/no/review first)
7단계: GitHub 퍼블리시 (사용자 승인 시)
cd "{STAGING_PATH}"
gh repo create "{github_org}/{github_repo}" --public --source=. --push --description "{description}"
/opensource verify PROJECT
정제기를 독립적으로 실행합니다. 경로 확인: PROJECT에 /가 포함되어 있으면 경로로 처리합니다. 그렇지 않으면 $HOME/opensource-staging/PROJECT, $HOME/PROJECT, 현재 디렉토리 순서로 확인합니다.
Agent(
subagent_type="opensource-sanitizer",
prompt="{resolved_path}의 정제를 확인합니다. 6개 검사 카테고리 모두를 실행하고 SANITIZATION_REPORT.md를 생성하세요."
)
/opensource package PROJECT
패키저를 독립적으로 실행합니다. "라이선스?"와 "설명?"을 묻고 다음을 실행합니다:
Agent(
subagent_type="opensource-packager",
prompt="{resolved_path}를 패키징합니다..."
)
/opensource list
ls -d $HOME/opensource-staging/*/
각 프로젝트를 파이프라인 진행 상황(FORK_REPORT.md, SANITIZATION_REPORT.md, CLAUDE.md 존재 여부)과 함께 표시합니다.
/opensource status PROJECT
cat $HOME/opensource-staging/${PROJECT}/SANITIZATION_REPORT.md
cat $HOME/opensource-staging/${PROJECT}/FORK_REPORT.md
스테이징 레이아웃
$HOME/opensource-staging/
my-project/
FORK_REPORT.md # 포커 에이전트에서 생성
SANITIZATION_REPORT.md # 정제기 에이전트에서 생성
CLAUDE.md # 패키저 에이전트에서 생성
setup.sh # 패키저 에이전트에서 생성
README.md # 패키저 에이전트에서 생성
.env.example # 포커 에이전트에서 생성
... # 정제된 프로젝트 파일
안티 패턴
- 절대 사용자 승인 없이 GitHub에 푸시하지 않음
- 절대 정제기를 건너뛰지 않음 — 정제기는 안전 게이트입니다
- 절대 정제기 FAIL 후 모든 치명적 발견 사항을 수정하지 않고 진행하지 않음
- 절대
.env,*.pem, 또는credentials.json을 스테이징 디렉토리에 남겨두지 않음
모범 사례
- 새 릴리스에는 항상 전체 파이프라인(포크 → 정제 → 패키징)을 실행하세요
- 스테이징 디렉토리는 명시적으로 정리될 때까지 유지됩니다 — 검토에 활용하세요
- 게시 전에 수동 수정 후에는 반드시 정제기를 다시 실행하세요
- 시크릿을 삭제하지 말고 매개변수화하여 프로젝트 기능을 유지하세요
관련 스킬
정제기에서 사용하는 시크릿 탐지 패턴은 security-review를 참조하세요.