GitHub에 올리기 전에 검문을 하자.
## 임무
- 이 프로젝트에서 API 키, 비밀번호, 개인 정보(사용자 질문, 로그, 데이터 파일)가
들어 있는 파일을 전부 찾아줘
- 그런 파일들이 GitHub에 올라가지 않도록 .gitignore를 만들어줘
- node_modules처럼 올릴 필요 없는 폴더도 제외해줘
## 보고
- 무엇을 제외했고, 왜 제외했는지 표로 보여줘
※ .env(API 키)·data(사용자 질문)·logs(접속 기록)·node_modules가 반입 금지 목록에 오르는 것이 정상입니다. 7.8을 건너뛰었다면 ".env 없음"으로 나와도 정상. Claude Code가 빠뜨릴 수 있으므로 업로드 후 GitHub의 실제 파일 목록을 사람이 다시 확인합니다.
실수로 비밀이 이미 올라갔을 때
.env가 올라갔어. 기록에서 제거하고 .gitignore를 고쳐줘.
※ 파일 제거만으로는 부족합니다 — 과거 기록에 남아 있을 수 있으므로, Anthropic Console에서 노출된 키를 삭제·재발급하고 .env를 새 키로 교체하세요(다른 서비스 키도 동일). 자물쇠가 노출됐으면 자물쇠를 바꾸는 겁니다.
9.3.2 올리기 — "GitHub에 올려줘" 비공개 저장소 업로드
업로드 프롬프트 (XXXXXXXX는 본인의 GitHub Username)
이 프로젝트를 GitHub에 비공개(private) 저장소로 올려줘.
## 조건
- GitHub 계정: XXXXXXXX
- 저장소 이름: qa-board
- 나는 GitHub 계정만 있고, 이 컴퓨터에서 GitHub을 처음 사용해
- 필요한 도구 설치나 인증이 있으면 단계별로 안내해줘
## 완성 후
- 내가 브라우저에서 확인할 수 있는 저장소 주소를 알려줘
GitHub 인증 — 기기 등록 (새 터미널에서, 맨 앞 ! 는 빼고 입력)
cd qa-board
gh auth login --hostname github.com --git-protocol https --web
? Authenticate Git with your GitHub credentials? → Yes
! First copy your one-time code: XXXX-XXXX → 코드 복사
Press Enter … → 브라우저: Continue → 코드 입력 → Authorize github
"Congratulations, you're all set!" 확인
※ 맨 앞의 !는 Claude Code 입력창에서 터미널 명령을 실행할 때 쓰는 기호 — 터미널에서는 gh부터 입력합니다. 브라우저에 다른 GitHub 계정이 로그인돼 있으면 그 계정으로 인증되니, 로그아웃 후 진행하거나 시크릿 창에서 진행하세요.
인증 완료 보고 (Claude Code 대화창으로 복귀)
gh auth login 완료했어
업로드 후 — 사람의 확인 4종
확인 1: 저장소에 코드 파일들이 보이는가? (server.js, public 폴더 등)
확인 2: .env 파일이 보이지 않는가? (안 보이는 게 정상.
보인다면 즉시 키 재발급 + "기록에서 제거하고 .gitignore를 고쳐줘")
확인 3: data, logs 폴더가 보이지 않는가? (안 보이는 게 정상)
확인 4: 저장소 이름 옆에 'Private' 회색 표시가 있는가?
※ 확인 2와 3이 이 장의 심장 — 무엇이 올라갔는지보다 "무엇이 올라가지 않았는지"를 확인하는 것이 고삐를 아는 사람의 업로드입니다.
9.4 세이브 포인트와 시간 여행 — 망가뜨리고 되돌리기 커밋 · 푸시 · 롤백
세이브 — 안정 버전 커밋·푸시
지금 상태를 "안정 버전 : 게시판 전체 기능 완성"이라는 메시지로 커밋하고, GitHub에 푸시해줘.
파괴 테스트 — 일부러 망가뜨리기
테스트를 하려고 해. 메인 화면 제목을 "고장난 게시판"으로 바꾸고, 질문 목록이 화면에 안 보이게 만들어줘. 그리고 "테스트: 일부러 망가뜨림"이라는 메시지로 GitHub에 업로드해줘.
고장 확인 (새 터미널, qa-board 폴더에서)
npx pm2 start ecosystem.config.js # 실행 후 브라우저에서 접속
# → "고장난 게시판" 화면 확인
시간 여행 — 안정 버전으로 되돌리기
방금 작업을 전부 취소하고, GitHub의 "안정 버전 : 게시판 전체 기능 완성" 시점으로 코드를 되돌려줘.
※ 되돌리기 전, 현재 작업 중인 내용이 사라지지 않도록 먼저 따로 보관하게 하는 것이 안전합니다. 되돌린 뒤 확인 — ① 망가진 화면을 직접 봤는가 ② 게시판이 정상 작동하는가(질문 등록까지). 세이브 타이밍: 큰 수정 시작 전 + 잘 작동하는 상태가 될 때마다.
9.5 자동화 — 수정하면 자동으로 올라가게 규칙 + /저장
방법 ① CLAUDE.md에 자동 커밋·푸시 규칙 추가
CLAUDE.md에 다음 규칙을 추가해줘.
"하나의 작업이 끝나면 먼저 정상 작동하는지 확인한다.
.env, 사용자 데이터와 로그 같은 비밀 파일이 포함되지 않았는지도 검사한다.
두 검사를 모두 통과하면 작업 내용을 알아볼 수 있는 이름으로 세이브하고 GitHub에 올린다.
검사에서 문제가 발견되면 GitHub에 올리지 말고 사용자에게 알려준다."
※ CLAUDE.md는 지침이므로 언제나 빠짐없이 실행된다는 보장은 없습니다 — 작업이 끝나면 실제로 GitHub에 올라갔는지 직접 확인하세요.
방법 ② /저장 커스텀 명령어 만들기
/저장 이라는 커스텀 명령어를 만들어줘. 실행하면 현재 변경 사항을 요약한 메시지로 커밋하고 푸시하는 명령어야.
사용 예 (대화창)
/저장
/저장 좋아요 정렬 수정 ← 뒤에 내용을 붙이면 커밋 메시지에 반영
※ 생성된 명령어에는 안전장치가 포함됩니다 — 변경 없으면 중단, 민감 파일 포함 여부 확인, 푸시 실패 시 강제 푸시 금지. 이 자동화의 진짜 가치는 10장 자동 배포에서 드러납니다.
9.6 공개 저장소로 남과 공유하기 — harness-kit public · my-plugins
공개 업로드 프롬프트 (my-plugins 폴더에서, XXXXXXXX는 본인 계정)
my-plugins 폴더를 GitHub에 공개(public) 저장소로 올려줘.
## 조건
- GitHub 계정: XXXXXXXX
- 저장소 이름: my-plugins
- 올리기 전에 비밀이나 개인 정보가 없는지 먼저 검문해줘
- 다른 사람이 harness-kit 플러그인을 설치하는 방법을
README 파일로 만들어서 함께 올려줘
공개 후 — 사람의 확인 2종
확인 1: 로그아웃 상태의 브라우저(시크릿 창)에서도 저장소가 보이는가?
(= 진짜 공개되었는가)
확인 2: README의 설치 안내가 8.5에서 실제로 했던 절차와 일치하는가?
※ 공개 저장소일수록 검문은 더 중요합니다. 비밀이 없는 다른 프로젝트도 같은 방식으로 Public 업로드가 가능합니다.