onboarding
onboarding: Claude Code 환경 셋업
핵심: 처음 사용하는 사람이 Claude Code를 편하게 쓸 수 있도록 역할 확인 → 기본 정보 → CLAUDE.md 생성 → 세션/프로젝트 개념 → 출력 스타일 → 유용한 팁까지 안내한다.
실행 흐름 요약
상태 확인 → Step 1 직군 확인 → Step 2 기본 정보 수집 → Step 3 CLAUDE.md 생성
→ Step 4 세션/대화 개념 → Step 5 프로젝트 개념 → Step 6 output-style (비개발자만)
→ Step 7 유용한 팁 → 완료 + connector 안내
링크 출력 규칙: 모든 URL은 코드 블록 밖에서 마크다운 링크 형식 [텍스트](URL) 으로 표시한다. 코드 블록 안에 URL을 절대 넣지 않는다. 링크 닫는 괄호 ) 뒤에 반드시 공백을 한 칸 넣는다. 예: [페이지](URL) 에서 (O) / [페이지](URL)에서 (X)
기술 용어 변환 (비개발자 대상)
비개발자에게 설명할 때 아래 변환 테이블을 따른다. 개발자에게는 기술 용어를 그대로 사용한다.
| 기술 용어 | 비개발자에게 보이는 표현 |
|---|---|
| 세션 (session) | 대화방 (채팅방) |
| cwd (현재 작업 디렉토리) | 현재 폴더 |
| 터미널 | 명령어 입력 창 |
| CLAUDE.md | Claude 메모장 (Claude가 매번 읽는 메모) |
| 프로젝트 | 폴더 (서랍) |
| output-style | 출력 스타일 (Claude가 대답하는 방식) |
| 컨텍스트 | 대화 맥락 |
| 플러그인 | 확장 기능 |
| MCP 서버 | 연결된 도구 |
상태 확인 및 분기
스킬이 시작되면 Read 도구로 ~/.claude/skills/smilegate-ai-tools/state.json 파일을 읽는다.
아래 2가지 케이스로 분기한다:
케이스 A: 파일 없음 또는 onboarding 키 없음 → 신규
처음 방문한 사용자다. Step 1부터 전체 흐름을 진행한다.
환영 인사를 출력한다:
안녕하세요! Claude Code 환경 셋업을 도와드릴게요.
몇 가지 질문에 답해주시면, 맞춤 설정을 해드릴게요.
케이스 B: onboarding.status = "completed" → 재방문
이미 온보딩을 완료한 사용자다.
케이스 B 진입 시, connector.status를 확인하여 추가 안내를 출력한다:
connector.status === "partial": "일부 도구만 연결된 상태예요 ({connected_services} 연결됨, {failed_services} 미연결)./connector로 추가 연결할 수 있어요."connector.status === "error": "도구 연결에 문제가 있었어요./connector로 다시 시도해보세요."connector.status === "completed"또는 키 없음: 추가 안내 없이 기존 옵션 메뉴 표시.
AskUserQuestion으로 원하는 항목을 선택받는다:
- question: "이전에 온보딩을 완료하셨네요! 어떤 걸 도와드릴까요?"
- options:
- {label: "세션/대화 다시 보기", description: "세션과 대화방 개념을 다시 설명해드려요"}
- {label: "프로젝트 다시 보기", description: "프로젝트(폴더) 개념을 다시 설명해드려요"}
- {label: "팁 다시 보기", description: "유용한 팁과 명령어를 다시 보여드려요"}
- {label: "CLAUDE.md 다시 만들기", description: "Claude 메모장을 새로 만들어드려요"}
- {label: "필요없어요", description: "온보딩을 종료합니다"}
선택에 따라 해당 Step만 출력하고 종료한다 (이후 Step은 진행하지 않는다):
- "세션/대화 다시 보기" → Step 4만 출력 후 종료
- "프로젝트 다시 보기" → Step 5만 출력 후 종료
- "팁 다시 보기" → Step 7만 출력 후 종료
- "CLAUDE.md 다시 만들기" → state.json에서
user_info와role을 불러와 Step 3의 생성 로직을 실행한다 (Step 2 정보 수집은 건너뛴다). CLAUDE.md가 이미 있으면 Step 3의 "이미 있는 경우" 분기를 동일하게 따른다. - "필요없어요" → 종료
Step 1: 직군 확인
사용자의 직군을 확인하여 개발자/비개발자를 분류한다.
AskUserQuestion으로 직군을 입력받는다:
- question: "어떤 직군이세요? (예: 기획, 마케팅, 백엔드 개발, QA 등)"
- options:
- {label: "기획", description: "게임 기획, 서비스 기획 등"}
- {label: "마케팅/운영", description: "마케팅, 사업, 운영 등"}
- {label: "개발", description: "서버, 클라이언트, 웹, 데이터 등"}
- {label: "디자인/아트", description: "UI, UX, 2D, 3D 등"}
사용자가 옵션을 선택하거나 Other로 직군을 입력하면, Claude가 내부적으로 개발자/비개발자를 분류한다. 의미 없는 입력(빈 값, 한 글자 등)이면 다시 질문한다.
개발자로 분류하는 키워드: 개발, 엔지니어, DevOps, SRE, QA, 테스트, 프론트엔드, 백엔드, 풀스택, 데이터 엔지니어, DBA, 인프라, 플랫폼, 보안, 시스템, 프로그래머
그 외 모든 직군은 비개발자로 분류한다: 기획, 마케팅, 디자인, PM, PO, 운영, 사업, 인사, 재무, CS, 데이터 분석 등
분류 결과를 사용자에게 직접 말하지 않는다. 내부적으로만 사용하여 이후 설명의 톤과 깊이를 조절한다.
Step 2: 기본 정보 수집
2회에 걸쳐 기본 정보를 수집한다.
2-1) 이름과 아이디
AskUserQuestion으로 입력받는다:
- question: "이름과 아이디(사번)를 알려주세요."
- options:
- {label: "직접 입력하기", description: "예: 홍길동 / gildong (아이디 없으면 생략 가능)"}
2-2) 소속과 업무
AskUserQuestion으로 입력받는다:
- question: "소속과 주로 하시는 업무를 알려주세요."
- options:
- {label: "직접 입력하기", description: "예: 데이터서비스개발팀 / 게임 기획"}
수집 정보 확인
수집한 정보를 요약하여 보여준다:
입력하신 정보를 정리했어요.
• 이름: {이름}
• 아이디: {아이디}
• 소속: {소속}
• 주요 업무: {업무}
AskUserQuestion으로 확인한다:
- question: "이 정보가 맞나요?"
- options:
- {label: "맞아요", description: "다음 단계로 진행할게요"}
- {label: "수정할래요", description: "수정할 부분을 알려주세요"}
"수정할래요" 선택 시: "어떤 부분을 수정하시겠어요?"라고 물은 뒤 해당 필드만 재입력받고 다시 확인한다. 아이디, 업무 등 선택 필드가 비어있으면 빈 문자열로 저장한다.
Step 3: CLAUDE.md 생성
조건 확인
현재 작업 디렉토리(cwd)에 CLAUDE.md 파일이 있는지 확인한다.
CLAUDE.md가 이미 있는 경우:
AskUserQuestion으로 선택받는다:
- question: "이 폴더에 CLAUDE.md가 이미 있어요. 사용자 정보를 추가할까요?"
- options:
- {label: "추가할게요", description: "기존 내용은 유지하고, 사용자 정보 섹션을 추가해요"}
- {label: "건너뛰기", description: "CLAUDE.md를 수정하지 않고 다음으로 넘어갈게요"}
"추가할게요" 선택 시:
- 기존 CLAUDE.md를 Read 도구로 읽는다.
## 사용자 정보섹션이 이미 있으면 해당 섹션의 내용만 교체한다.## 응답 스타일섹션이 이미 있으면 해당 섹션의 내용만 교체한다.- 두 섹션이 없으면 파일 끝에 추가한다.
- 기존 내용(다른 섹션)은 절대 삭제하지 않는다. "건너뛰기" 선택 시: Step 4로 이동한다.
CLAUDE.md가 없는 경우: 바로 생성한다.
생성 내용
비개발자용 CLAUDE.md:
# 프로젝트 규칙
## 사용자 정보
- 이름: {이름}
- 아이디: {아이디}
- 소속: {소속}
- 주요 업무: {업무}
## 응답 스타일
- 항상 한국어로 대답해줘
- 개발적인 표현은 아주 쉽게 비유를 들어서 설명해줘
- 단계별로 차근차근 안내해줘
개발자용 CLAUDE.md:
# 프로젝트 규칙
## 사용자 정보
- 이름: {이름}
- 아이디: {아이디}
- 소속: {소속}
- 주요 업무: {업무}
## 응답 스타일
- 항상 한국어로 대답해줘
위 내용 외에 불필요한 지시사항을 추가하지 않는다.
생성 후 안내
비개발자에게:
CLAUDE.md를 만들었어요!
이 파일은 Claude가 "내가 누구인지, 어떻게 말해줬으면 하는지" 기억하는 메모장이에요.
이 폴더에서 Claude를 시작하면 매번 이 메모를 자동으로 읽어요.
나중에 원하는 규칙이 생기면 이 파일에 추가하면 돼요.
개발자에게:
CLAUDE.md를 생성했습니다.
프로젝트 루트의 CLAUDE.md는 세션 시작 시 자동으로 로드됩니다.
필요한 규칙이 있으면 이 파일에 추가하세요.
Step 4: 세션/대화 개념
핵심 개념: 한 세션 = 한 대화방(채팅방)
비개발자용 설명
💬 세션 = 대화방
카카오톡 채팅방을 떠올려보세요.
• 새 대화 시작 = 새 채팅방을 여는 것
→ 명령어 입력 창에서 claude 를 입력하면 새 대화방이 열려요
• 대화방 여러 개 = 동시에 여러 주제로 대화
→ 명령어 입력 창을 여러 개 열면 각각 다른 대화방이에요 (서로 독립적)
• 대화방 나가기 = 대화 끝내기
→ Ctrl+D 를 누르면 현재 대화가 끝나요
• 이전 대화 이어가기 = 전에 하던 채팅 다시 열기
→ claude --resume 또는 대화 중에 /resume 을 입력하면
이전 대화를 이어갈 수 있어요
개발자용 설명
세션
• 세션은 독립적인 대화 컨텍스트입니다
• 여러 터미널에서 별도 세션을 동시에 실행할 수 있습니다
• 세션 종료: Ctrl+D
• 이전 세션 이어가기: claude --resume 또는 /resume
• 새 세션: claude
Step 5: 프로젝트 개념
비개발자용 설명
📁 프로젝트 = 서랍장
서랍장을 떠올려보세요.
• 폴더 = 서랍 하나
→ 각 서랍에는 관련 파일들이 들어있어요
• Claude는 현재 열린 서랍만 봐요
→ 명령어 입력 창에서 어떤 폴더를 열고 claude 를 실행하면,
Claude는 그 폴더 안의 파일만 볼 수 있어요
• CLAUDE.md = 서랍에 붙인 메모
→ 아까 만든 메모장 기억하시죠?
폴더마다 다른 메모를 붙일 수 있어요.
Claude는 대화를 시작할 때 이 메모를 매번 읽어요.
개발자용 설명
프로젝트
• cwd가 프로젝트 단위입니다
• 프로젝트 루트의 CLAUDE.md는 매 세션 시작 시 자동 로드됩니다
• 프로젝트마다 별도의 CLAUDE.md를 두어 프로젝트별 규칙을 설정할 수 있습니다
스코프(프로젝트 레벨/유저 레벨) 설명은 생략한다.
Step 6: output-style 설정 (비개발자만)
개발자는 이 Step을 건너뛴다. Step 5 이후 바로 Step 7로 이동한다.
비개발자에게 출력 스타일 설정을 안내한다:
🎓 출력 스타일 설정
Claude가 대답하는 방식을 바꿀 수 있어요.
더 자세하고 친절한 설명을 원하시면, 출력 스타일을 변경해보세요!
👉 /output-style 을 입력하고 Explanatory 를 선택하세요!
선택하면 Claude가 설명을 더 풍부하게 해줘요.
/output-style은 이 대화 안에서 바로 입력하면 된다. 설정을 바꾼 뒤 아래 질문에 답하면 다음 Step으로 자연스럽게 이어진다.
AskUserQuestion으로 확인한다:
- question: "출력 스타일을 설정하셨나요?"
- options:
- {label: "설정했어요", description: "다음 단계로 넘어갈게요"}
- {label: "나중에 할게요", description: "나중에 /output-style 로 언제든 설정할 수 있어요"}
- {label: "이미 되어있어요", description: "다음 단계로 넘어갈게요"}
Step 7: 유용한 팁
비개발자와 개발자 공통으로 안내하되, 비개발자에게는 비유를 추가한다.
비개발자용
💡 알아두면 편한 팁
1. 이전 대화 이어가기
→ claude --resume 또는 대화 중에 /resume
이전에 하던 대화를 다시 열 수 있어요 (채팅방 다시 열기!)
2. 파일 참조하기
→ @파일이름
대화 중에 @를 붙여 파일 이름을 쓰면,
Claude가 그 파일 내용을 읽어서 참고해요
3. 이미지 분석하기
→ 이미지 파일을 명령어 입력 창에 드래그앤드롭
스크린샷이나 사진을 끌어다 놓으면 Claude가 분석해줘요
4. 빠른 명령어
→ /help : 도움말 보기
→ /clear : 대화 내용 정리하기
→ /compact : 대화 요약하기 (대화가 길어졌을 때)
5. 동시에 여러 대화
→ 명령어 입력 창을 여러 개 열면 각각 다른 대화를 할 수 있어요
(카카오톡 채팅방 여러 개 동시에 열어놓는 것처럼!)
개발자용
💡 유용한 팁
1. 이전 세션 이어가기: claude --resume 또는 /resume
2. 파일 참조: @파일이름 (대화 중 파일 컨텍스트 추가)
3. 이미지 분석: 터미널에 이미지 드래그앤드롭
4. 빠른 명령어: /help, /clear, /compact
5. 멀티 세션: 여러 터미널에서 동시 실행 가능
완료 + 다음 단계
state.json 업데이트
Step 7까지 완료되면 ~/.claude/skills/smilegate-ai-tools/state.json 파일을 업데이트한다. 파일이나 디렉토리가 없으면 새로 생성한다.
파일이 이미 존재하면 기존 내용을 보존하고 onboarding 키만 업데이트한다.
{
"onboarding": {
"status": "completed",
"role": "{developer 또는 non-developer}",
"job_title": "{입력받은 직군}",
"user_info": {
"name": "{이름}",
"id": "{아이디}",
"team": "{소속}",
"work": "{업무}"
},
"claude_md_created": true,
"completed_at": "{현재 ISO 8601 시각}"
}
}
claude_md_created: CLAUDE.md를 생성했으면true, 건너뛰었으면false
skill-creator 플러그인 설치
state.json 업데이트 후, skill-creator 플러그인 설치를 시도하고 결과를 내부적으로 기억한다.
claude plugin list 2>&1 | grep -q "skill-creator"
- 이미 설치됨 (exit 0) →
skill_creator_status = "already_installed". 설치 명령 실행하지 않는다. - 미설치 (exit 1) → 아래 명령 실행:
claude plugin install skill-creator@claude-plugins-official 2>&1- 성공 →
skill_creator_status = "newly_installed" - 실패 →
skill_creator_status = "failed". 조용히 무시하고 진행.
- 성공 →
설치 후 플러그인이 활성화되려면 Claude Code 재시작이 필요하다. 단, connector 이후 재시작 안내가 이미 있으므로 별도 재시작을 요구하지 않는다.
완료 메시지 및 다음 단계 안내
비개발자용:
🎉 환경 셋업이 완료되었어요!
지금까지 한 일:
• Claude 메모장(CLAUDE.md) 만들기
• 대화방(세션), 폴더(프로젝트) 개념 익히기
• 출력 스타일 설정
• 유용한 팁 확인
{skill_creator_status == "newly_installed" 인 경우만: • 스킬 만들기 도구 설치}
다음으로 업무 도구를 연결해볼까요?
Slack, Jira, Confluence 같은 도구를 Claude에 연결하면
업무 자동화가 가능해져요.
개발자용:
🎉 환경 셋업 완료!
설치된 것들: CLAUDE.md{skill_creator_status == "newly_installed" 인 경우만: , skill-creator 플러그인}
다음으로 업무 도구를 연결하시겠습니까?
Slack, Jira, Confluence 등을 Claude Code에 연결하면
업무 자동화가 가능합니다.
AskUserQuestion으로 선택받는다:
- question: "업무 도구를 연결할까요?"
- options:
- {label: "좋아요, 연결할래요", description: "/connector 로 도구 연결을 시작합니다"}
- {label: "나중에 할게요", description: "나중에 /connector 로 언제든 연결할 수 있어요"}
"좋아요, 연결할래요" 선택 시:
좋아요! 도구 연결을 시작할게요.
아래 명령어를 그대로 입력해주세요:
> /connector
"나중에 할게요" 선택 시:
알겠어요! 나중에 도구를 연결하고 싶으면
/connector 라고 말하면 돼요.
그럼 Claude Code를 즐겁게 사용하세요! 🎉