나만의 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 방법론으로 증명하는, 카테고리 없이 블로그를 운영하는 법.

AI·바이브 코딩은 "만드는 장벽"을 낮췄지만, "사람을 움직이는 문제"는 여전히 사람의 몫이라고 본다. 게임은 오래전부터 사람을 움직이는 참여 구조를 다뤄온 형식이다. AI가 결과물을 흔하게 만들수록, 사람을 참여시키는 설계의 값은 오히려 올라간다.
![[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 방법론으로 증명하는, 카테고리 없이 블로그를 운영하는 법.


AI·바이브 코딩은 "만드는 장벽"을 낮췄지만, "사람을 움직이는 문제"는 여전히 사람의 몫이라고 본다. 게임은 오래전부터 사람을 움직이는 참여 구조를 다뤄온 형식이다. AI가 결과물을 흔하게 만들수록, 사람을 참여시키는 설계의 값은 오히려 올라간다.