나만의 Claude Code를 조직처럼 쓰는 법

댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
Claude Code는 도구다. 그런데 같은 도구를 써도 사람마다 결과가 전혀 다르다.
차이는 설정에 있다. CLAUDE.md 에 뭘 써놓느냐, hooks를 어떻게 걸어놓느냐, Memory에 뭘 남겨놓느냐에 따라
Claude Code는 완전히 다른 동료 가 된다. 신입사원이 될 수도 있고, 10년 차 팀원이 될 수도 있다.
나는 6개월 동안 개인적으로 Claude Code Max ($200) 결제를 하면서 이 설정을 다듬어왔다.
그 과정에서 잡은 세 가지 축이 있다:
CLAUDE.md → AI가 "누구인지" 정의 (역할, 규칙, 워크플로우)
Hooks → AI가 "자동으로" 하는 행동 (안전장치, 자동화)
Memory → AI가 "기억하는" 것 (피드백, 프로젝트 맥락)
Claude Code는 CLAUDE.md를 계층적으로 읽는다.
~/.claude/CLAUDE.md ← 전역: 모든 프로젝트 공통 규칙
~/para-system/CLAUDE.md ← 프로젝트: PARA 시스템 전용 규칙
~/repos/hrd-api/CLAUDE.md ← 레포: 특정 코드베이스 전용 규칙
전역 설정은 4줄이면 충분하다:
# Claude Code 설정
## 기본 규칙
- 응답 언어: 한국어
- 코드 주석: 영어 허용
- 기술 용어: 원어 그대로 사용
- 간결하고 실용적인 답변
핵심은 프로젝트 레벨 CLAUDE.md에 있다. 여기에 조직도를 심는다.
나는 기획자다. Claude Code는 나의 설계자이자 검토자이자 실행자다. 하지만 이 역할들을 구분하지 않으면 Claude는 물어보지도 않고 코드부터 짠다. 그래서 CLAUDE.md에 조직도를 명시한다.
사용자 (기획자/PM)
│
┌────────────┼────────────┐
│ │ │
[기획자] [설계자] [검토자]
사용자 직접 Claude Claude
│ │ │
개요서 ──→ 설계서 ──→ 검토 완료 → 사용자 확정 → [실행자]
**기획자(나)**가 개요서를 만들면, **설계자(Claude)**가 설계서로 확장하고, **검토자(Claude)**가 디자인·기술·DX 관점에서 검증한 뒤, 내가 확정하면 **실행자(에이전트)**가 코드를 짠다.
각 단계에 어떤 스킬을 쓰는지도 CLAUDE.md에 적어둔다:
| 단계 | 역할 | 스킬 |
|---|---|---|
| 기획 | 사용자 직접 | /knowledge-interviewer, /office-hours |
| 설계 | Claude | /plan-ceo-review, /autoplan |
| 검토 | Claude | /plan-design-review, /plan-eng-review, /plan-devex-review |
| 실행 | 에이전트 Teams | /design-html, /qa, /ship, /review 등 |
이렇게 해두면 "이 기능 만들어줘"라고 해도 Claude가 바로 코드를 짜지 않는다. 조직도에 따라 "먼저 개요서부터 정리할까요?"라고 물어온다.
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1을 켜면 에이전트를 역할별로 분리해서 병렬 투입할 수 있다.
에이전트 정의 파일
각 에이전트는 ~/.claude/agents/ 폴더에 마크다운 파일로 정의한다. 파일 하나가 팀원 한 명이다.
~/.claude/agents/
├── frontend.md ← Next.js, React, TypeScript, Tailwind
├── backend.md ← NestJS, MySQL, Prisma, Redis
├── devops.md ← AWS, Terraform, Docker, CI/CD
├── designer.md ← UI/UX, 디자인 시스템, 접근성
├── business.md ← 사업 전략, EdTech/HRD
├── marketer.md ← SEO, 콘텐츠 마케팅
└── planner.md ← PARA, 태스크 관리
에이전트 정의 파일에는 역할, 기술 스택, 원칙, 출력 스타일을 적는다. 예를 들어 frontend.md:
# Frontend Developer
You are a senior frontend developer specializing in modern web applications.
## Tech Stack
- Framework: Next.js (App Router), React
- Language: TypeScript
- Styling: Tailwind CSS
- State: Zustand, TanStack Query
## Principles
- Component-driven development
- Mobile-first responsive design
- Performance budget: LCP < 2.5s, CLS < 0.1
## Output Style
- Clean, typed TypeScript code
- Comments in English, communication in Korean
이렇게 정의해두면 "frontend 에이전트에게 이 컴포넌트 만들어달라고 해"라고 할 때, 해당 에이전트가 자기 역할/스택/원칙에 맞게 동작한다.
CLAUDE.md에서의 에이전트 배치
에이전트 파일만으로는 부족하다. 언제 누구를 투입할지를 CLAUDE.md에서 관리한다:
| 에이전트 | 역할 | 주요 스킬 |
|---|---|---|
| frontend | 화면 구현 (Next.js, TanStack Query) | /design-html, /qa |
| backend | API/DB (NestJS, MySQL, Prisma) | /api-docs, /investigate |
| devops | 인프라/배포/보안 (AWS, Terraform) | /ship, /cso, /canary |
| designer | UI/UX 디자인, 목업 | /design-pencil, /design-review |
| copywriter | 카피라이팅, UX 문구, SEO | /browse |
| business | 사업 전략, 제안서, ROI | /office-hours |
| technical-writer | 문서 작성/정리 | /document-release |
| qa-tester | 테스트/검증, 성능 | /qa, /qa-only, /benchmark |
| data-analyst | 데이터 분석/검증 | — |
실전: 병렬 투입
하나의 기능을 구현할 때 이런 식으로 동시에 투입할 수 있다:
"이 화면 만들어줘"
→ designer: 와이어프레임 설계
→ frontend: 컴포넌트 구현
→ backend: API 엔드포인트 생성
필요한 에이전트만 골라서 투입한다. 프론트엔드 화면을 만들 때 business 에이전트까지 깨울 필요는 없다.
CLAUDE.md에 라우팅 규칙을 적어두면, 자연어 요청이 자동으로 적절한 스킬로 연결된다:
## Skill routing
- 아이디어, 브레인스토밍 → /office-hours
- 버그, 에러, "왜 안 돼" → /investigate
- 배포, PR 생성 → /ship
- QA, 테스트 → /qa
- 코드 리뷰 → /review
- 디자인 시스템 → /design-consultation
- 아키텍처 검토 → /plan-eng-review
"이거 왜 안 돼?"라고 물으면 Claude가 직접 답하는 대신 /investigate 스킬을 실행한다. 스킬은 체계적인 4단계 디버깅(조사→분석→가설→구현)을 돌리기 때문에 즉답보다 훨씬 정확하다.
Hooks는 특정 이벤트가 발생했을 때 자동으로 실행되는 스크립트다. 내가 설정해둔 Hooks는 4개다.
{
"matcher": "Bash",
"if": "Bash(git push*)",
"hooks": [{
"type": "agent",
"prompt": "git push 전 변경사항 검증...",
"model": "claude-haiku-4-5-20251001"
}]
}
Claude가 git push를 실행하려고 하면, 자동으로 Haiku 모델이 diff를 분석한다. API 응답 필드명이 변경되거나 삭제된 게 있으면 차단한다.
이 Hook을 만든 이유가 있다. 한 번은 Claude가 "정리"한답시고 API 응답 필드명을 임의로 바꿔서 push한 적이 있다. 프론트엔드가 깨졌다. 그 뒤로 push 전에 반드시 검증을 걸어둔다.
검증 기준:
#!/bin/bash
# daily-memory-review.sh
TODAY=$(date +%Y-%m-%d)
MARKER="$HOME/.claude/.daily-checks/daily-check-$TODAY"
# 이미 오늘 체크했으면 스킵
[ -f "$MARKER" ] && exit 0
touch "$MARKER"
하루에 한 번, 첫 세션이 시작될 때:
/github:sync 미실행 알림 — 레포 동기화 권장매일 아침 Claude를 켜면 "오늘 첫 세션입니다. 메모리 4개, feedback 확인하세요. 레포 동기화 아직 안 했습니다."라고 알려준다.
osascript -e 'display notification "Claude Code 작업 완료!" with title "Claude Code" sound name "Glass"'
긴 작업을 시켜놓고 다른 일을 할 때 유용하다. macOS 알림 + 소리로 완료를 알려준다.
# gstack이 설계서를 쓰면 → PARA 폴더로 자동 복사
case "$FILE_PATH" in
*/.gstack/projects/*-design-*.md) ;;
*) exit 0 ;;
esac
cp "$FILE_PATH" "$DEST/설계서.md"
gstack이 .gstack/projects/ 아래에 설계서를 생성하면, 자동으로 PARA의 해당 프로젝트 폴더(1_project/{name}/설계서.md)로 복사한다. gstack과 PARA 사이의 파일 동기화를 자동화한 것이다.
Claude Code의 Memory는 ~/.claude/projects/{프로젝트}/memory/ 에 마크다운 파일로 저장된다. 세션이 끝나도 유지되기 때문에, 다음 대화에서도 이전 맥락을 기억한다.
memory/
├── MEMORY.md ← 인덱스 (자동 로드)
├── feedback_no_arbitrary_changes.md ← "API 필드명 임의 변경 금지"
├── feedback_db_schema_first.md ← "DB 스키마 먼저 확인"
├── feedback_simulator_calc.md ← "시뮬레이터 단순 평균 사용"
└── project_employment_platform.md ← 취업 플랫폼 설계 맥락
| 타입 | 용도 | 예시 |
|---|---|---|
| feedback | 사용자가 교정한 행동 | "API 필드명 임의 변경 금지" |
| project | 진행 중인 프로젝트 맥락 | "취업 플랫폼은 공개/내부 데이터 분리" |
| user | 사용자 역할/선호 | "기획자, NestJS/Next.js 배경" |
| reference | 외부 시스템 위치 | "버그 트래킹은 Linear INGEST 프로젝트" |
feedback 메모리는 Claude가 한 번 틀린 것을 다시 틀리지 않게 하는 장치다.
실제 사례:
feedback: API 응답 필드명 임의 변경 금지
"Why: 이미 배포 중인 API의 응답 구조를 임의로 바꾸면 프론트엔드가 깨진다."
"How to apply: 필드명 변경이 필요해 보일 때 → 코드 수정 전에 사용자에게 확인."
feedback: 목업/API 설계 전 DB 스키마 먼저 확인
"Why: KDT 성과관리에서 임의 카테고리를 넣었는데, 실제 DB에는 다른 값이 있었음."
"How to apply: 샘플 데이터 넣기 전 → DB 테이블 구조 확인."
이 두 개의 feedback은 실제로 사고가 났던 경험에서 나온 것이다. Memory에 저장해두면 Claude가 매 세션마다 이걸 읽고, 같은 실수를 반복하지 않는다.
기획 단계: "머릿속 → 문서"
| 스킬 | 하는 일 | 실제 사용 장면 |
|---|---|---|
/knowledge-interviewer | 질문으로 생각 정리 → 원페이퍼 | "이 아이디어 정리해줘" |
/office-hours | YC 방식 리프레이밍 | "이거 만들 가치 있어?" |
/knowledge-interviewer가 특히 강력하다. 내가 "취업 관리 시스템 만들고 싶어"라고 하면, Claude가 구조화된 질문을 던져서 머릿속에 흩어진 생각을 원페이퍼 개요서로 정리해준다.
knowledge-interviewer 는 직접 만든 스킬인데, 아주 유용하다. 내 머리속을 말끔하게 비워주고있다.
혹시 댓글이 많아지면 skills 내용을 그대로 공유하겠습니다.
설계/검토 단계: "개요서 → 설계서 → 검증"
| 스킬 | 하는 일 | 실제 사용 장면 |
|---|---|---|
/plan-ceo-review | 범위/전략 검토 | "이 기획 방향 맞아?" |
/autoplan | CEO→디자인→기술 자동 파이프라인 | 한 번에 전체 리뷰 |
/plan-eng-review | 기술 아키텍처 검증 | "이 구조로 가도 되나?" |
/plan-design-review | 디자인 관점 검증 | "UX 흐름 괜찮아?" |
/autoplan은 CEO 리뷰 → 디자인 리뷰 → 기술 리뷰를 순차적으로 자동 실행한다. 15~30개 중간 질문에 일일이 답할 필요 없이 한 번에 검토가 끝난다.
실행 단계: "코드 구현"
| 스킬 | 하는 일 | 실제 사용 장면 |
|---|---|---|
/investigate | 체계적 디버깅 (조사→분석→가설→구현) | "500 에러 나는데?" |
/design-html | 프로덕션 HTML/CSS 생성 | "이 디자인 코드로 만들어줘" |
/design-pencil | .pen 파일 디자인 탐색 | 와이어프레임/목업 |
/api-docs | Swagger → API 문서 | 엔드포인트 문서화 |
Pencil: .pen 파일로 디자인하기
Pencil은 .pen 파일 형식의 디자인 도구다. MCP 서버로 연결되어 Claude Code 안에서 직접 디자인을 만들고 수정할 수 있다.
"로그인 화면 목업 만들어줘"
→ /design-pencil 실행
→ .pen 파일 생성 → 스크린샷으로 확인
→ 피드백 반영 → 수정 → PNG/PDF 내보내기
일반적인 디자인 도구(Figma 등)와 다른 점은 대화로 디자인한다는 것이다. "버튼을 좀 더 크게", "여백 줄여줘", "색상 톤 따뜻하게" — 이런 자연어 지시로 디자인을 수정한다.
Pencil로 할 수 있는 것:
/design-shotgun으로 여러 시안 동시 생성/design-consultation으로 컬러, 타이포, 레이아웃 결정/design-review로 완성된 화면의 간격, 계층, 일관성 점검기획자인 내가 직접 Figma를 열지 않아도 이런 **"느낌으로 만들어줘"**로 목업을 받아볼 수 있다는 게 핵심이다.
품질/배포 단계: "테스트 → 배포 → 모니터링"
| 스킬 | 하는 일 | 실제 사용 장면 |
|---|---|---|
/review | PR diff 분석 | 배포 전 코드 리뷰 |
/qa | QA 테스트 + 버그 수정 | 사이트 전체 점검 |
/ship | 테스트→리뷰→PR→푸시 | "배포해줘" |
/canary | 배포 후 모니터링 | 콘솔 에러, 성능 감시 |
/cso | 보안 감사 | OWASP, 시크릿 스캔 |
운영/회고 단계
| 스킬 | 하는 일 | 실제 사용 장면 |
|---|---|---|
/retro | 주간 회고 | 이번 주 뭐 했지? |
/handoff | 세션 인수인계 | 다음 세션에서 이어서 |
/browse | 헤드리스 브라우저 | 사이트 탐색, 스크린샷 |
커스텀 슬래시 커맨드
직접 만든 커맨드들:
| 커맨드 | 용도 |
|---|---|
/github:activity | 팀 활동 모니터링 (커밋, PR, 이슈) |
/github:sync | 14개 레포 일괄 동기화 |
/github:arch | 서비스 아키텍처 조회 |
/github:repo | 특정 레포 상태 확인 |
/util:read-hwp | HWP 파일 텍스트 추출 |
/util:md-to-pdf | Markdown → PDF 변환 |
/youtube-summarizer | YouTube 자막 요약 |
/knowledge-interviewer | 구조화된 인터뷰 → 문서 |
/handoff | 세션 인수인계 문서 생성 |
| 서버 | 용도 | 사용 빈도 |
|---|---|---|
| Notion (회사용) | 회의록, 프로젝트 현황 조회 (조회 전용) | 매일 |
| Notion (개인용) | 개인 노트 관리 | 수시 |
| Context7 | 최신 라이브러리 문서 (NestJS, Next.js 등) | 코딩 시 |
| Figma | 디자인 시안 데이터 추출 | 디자인→코드 시 |
| Pencil | .pen 파일 디자인 도구 | 목업 제작 시 |
Notion은 조회 전용으로 설정해두었다. CLAUDE.md에 "회사 Notion 데이터 수정/생성/삭제는 사용자 명시적 요청 시에만 허용"이라고 명시한다. Claude가 멋대로 회사 문서를 수정하는 일은 없어야 한다.
[기획] /knowledge-interviewer 또는 /office-hours
→ 1_project/{name}/개요서.md
[설계] /plan-ceo-review, /autoplan
→ 1_project/{name}/설계서.md
→ gstack 설계서는 Hook이 PARA로 자동 복사
[검토] /plan-design-review, /plan-eng-review, /plan-devex-review
→ 사용자 확정
[실행] 에이전트 Teams 병렬 투입
→ 코드 레포에서: /review, /qa, /ship
[회고] /retro, /handoff
→ 1_project/{name}/회고.md
→ 완료 시 4_archive/로 이동
PARA가 폴더 구조를, CLAUDE.md가 역할과 규칙을, Hooks가 자동화를, Memory가 기억을, gstack이 실행력을 담당한다. 이 다섯 가지가 맞물려야 "AI를 조직처럼 쓰는" 워크플로우가 완성된다.
mkdir -p ~/para-system/{1_project,2_area,3_resource,4_archive}
최소한으로 시작하되, 반드시 넣을 것:
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
},
"hooks": {
"Notification": [{
"hooks": [{
"type": "command",
"command": "osascript -e 'display notification \"작업 완료!\" with title \"Claude Code\" sound name \"Glass\"'"
}]
}]
}
}
cd ~/para-system && claude
Claude가 틀릴 때마다 교정하면 된다. 교정할 때마다 Memory에 feedback이 쌓이고, 점점 나에게 맞는 동료가 된다.
CLAUDE.md는 채용 공고이고, Hooks는 사내 규정이고, Memory는 업무 일지다. 이 세 가지를 잘 쓰면 Claude Code는 도구가 아니라 조직원이 된다.
댓글이 많아지면
직접 설치부터 설정하는 단계별 포스팅을 진행 해볼게요. 최소 20개 쌓이면...?
![[00화] 웹개발자가 기획하기 위해 만든 Claude Code 워크스테이션](https://data.develog.develrocket.com/upload/develog/web7722/1778137070008-jm40np/claude-code-thumnail.png)
개발자에서 기획자로 전환하며 세팅한 Claude Code 환경을 10편으로 나눠 기록한 컬렉션. Ghostty부터 PARA 통합 워크플로우까지

카테고리를 고민하다 글을 못 쓴 적 있는가? 분류는 시작 전이 아니라 결과에서 나온다. GTD의 'Capture first' 원칙과 PARA 방법론으로 증명하는, 카테고리 없이 블로그를 운영하는 법.
![[02편] tumx 기초 - 단축키 설정까지](https://data.develog.develrocket.com/upload/develog/web7722/1778213943826-d812ll/tmux-thumnail.png)
Claude Code Temas를 쓰기 위한 최소 단위 학습인 tmux! 5분안에 마스터해봅시다.
