> [김영동](https://www.linkedin.com/in/youngdongkim) 님이 링크드인에 올려주신 ['클로드 코드 잘 사용하기' 세미나 자료](https://www.linkedin.com/posts/youngdongkim_%ED%81%B4%EB%A1%9C%EB%93%9C%EC%BD%94%EB%93%9C-%EC%9E%98-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-activity-7447188897098522624-jtPO)를 읽고 인상적이었던 것과 배운 것을 정리함
### Section 1
#### 추상화의 역사 -> (대공감)
기계어에서 고급언어로 추상화
메모리를 직접 다루던 C에서 언어 차원에서 가비지 컬렉션을 제공하는 Java로 추상화
일일이 필요한 기능을 구현하던 것에서 외부 라이브러리를 적극적으로 사용하는 Python으로 추상화
**직접 구현하는 것에서 '이 함수를 리팩토링하고 테스트 코드를 작성해줘'로 추상화**
#### 개발자의 능력의 정의가 변하고 있다
코드를 잘 짜는 능력 → 문서를 잘 쓰는 능력 → 컨텍스트를 설계하는 능력
역설적으로 중요해진 능력 ➡️ **기초 지식**
보안이나 동시 접속 이슈, DB 스키마 등의 지식을 갖고 있어야 질문을 할 수 있다. 뭘 모르는지를 알아야 한다.
### Section 2
#### AI 코딩 도구의 진화
\[자동완성\] : 초기 코파일럿. 반복 작업에 유용했음
↓
\[대화형\] : GUI 사용. 코드나 문맥을 복붙해야 했음
↓
\[에이전틱\] : 지금 여기. 전체 코드베이스를 이해하고 작업
#### Claude Code, Codex
아래 루프를 작업이 완료될 때 까지 반복한다.
1. 작업에 필요한 Context 수집
2. 작업
3. 결과 검증
#### Claude Code
확장 레이어 구조 ➡️ 필요에 따라 확장해나간다.
\[기초\] : CLAUDE.md
↓
\[자동화\] : skills, hooks
↓
\[연결\] : MCP
↓
\[확장\] : SubAgent, Agent teams, Plugins
#### 실무에 사용 가능한 이유
생태계가 빠르게 발전해나가는 중 (ex.awesome-claude-code)
문제가 생겼을 때 검색해서 해결할 수 있는 것이 실무에 적용하기 위한 중요 조건 중 하나. 나 혼자 쓰게 된다면 리스크가 크다.
### Section 3
#### TDD
1. 인간이 테스트 코드를 작성한다.
2. AI가 그 테스트 코드에 맞추도록 구현한다.
3. 인간이 리뷰한다
4. AI가 리뷰한다.
> [!CAUTION]
> AI가 테스트 코드를 수정하거나, 건너뛰지 않도록 제약을 걸어야 한다.
#### SDD
1. 인간이 스펙을 정의한다.
2. AI가 그 스펙을 구현하기 위한 plan을 제안한다.
3. 인간이 승인한다
4. AI가 plan을 task 단위로 쪼개서 병렬로 수행한다.
> [!CAUTION]
> AI가 작업할 때 모호한 부분은 `[NEED CLARIFICATION]` 마커를 찍고 구현을 중단하도록 제약을 걸어야 한다
#### SDD + TDD
SDD와 TDD를 함께 사용하는게 이상적인 개발 방법론
SDD는 신규 기능을 추가하거나 대규모 설계를 해야 할 때 최적
TDD는 기존 코드를 수정해야 할 때 최적이다.
### Section 4
#### 엔지니어링의 진화
\[프롬프트 엔지니어링\] : 무엇을 말할 것인가
↓
\[컨텍스트 엔지니어링\] : 무엇을 보여줄 것인가
↓
\[하네스 엔지니어링\] : 무엇을 구축할 것인가
프롬프트로 부족한 이유 : 같은 프롬프트를 써도 같은 결과물이 안나옴
#### 하네스 엔지니어링
하네스 ➡️ 날뛰는 말(LLM)을 올바른 길로 이끈다.
프롬프트만으로는 LLM이 항상 균일한 결과를 내지 않기 때문에
- 읽고 보는 것을 정의하고 (context)
- 뭘 할 수 있는지 제한하고 (도구, 권한)
- 언제 멈춰야 하는지 정의하고 (제약)
- 잘못되었을 때 어떻게 해야 하는지 정의 (복구)
**6대 구성요소**
1. 컨텍스트 엔지니어링
2. 도구 오케스트레이션
3. 상태와 메모리
4. 검증 루프
5. 오류 복구
6. 인간 개입 제거
**에이전트 루프의 4단계**
1. Context 수집
2. Action 수행
3. 작업 검증
4. 결과를 다음 루프 컨텍스트로
> 이 각 단계를 신뢰성 있게 만드는 작업이 하네스 엔지니어링!
#### 지시문의 고도화
너무 낮아도, 너무 높아도 안된다.
**올바른 고도 공식 : 원칙 1줄, 이유 1줄, 예시 1~2개**
새로운 상황에서도 일반화가 가능하도록
#### CLAUDE.md
CLAUDE.md는 계속 업데이트해야 하는 문서
이 안에는 지시가 아닌 **context를 검증 가능하고 구체적으로** 담는다.
```markdown
- 페이지 규격
- 종결 어미는 명사로
- 금지: -합니다 같은 공손체
- 디자인 토큰 : bg=#faf8f5
```
짧을수록 좋다. 문서가 비대해지면 모듈화를 한다.
#### plugin
CLAUDE.md를 포함해서 skills, hooks, subagent같은 하네스를 plugin으로 묶어서 팀의 자산으로 만들 수 있다.
> [!EXAMPLE] 스킬 예시
> ![[8ac1cf46-9dea-4b5d-b4ed-bbc8462bc15a.png]]
#### Plan-Critic-Build
에이전트는 계획 없이 바로 코드를 작성해서 문제가 생긴다. => 계획 단계를 쓰기 권한 없는 모드로 분리해서 쓰게 한다.
1. plan : 읽기만 가능한 모드에서 검색과 질문만 하게 한다. => 계획 문서 산출
2. critic : 리뷰 전용 에이전트 - 사용자가 보지 못한 곳을 짚는 목적
3. build : 승인된 계획 링크만 컨텍스트로 제공받는다. 쓰기 권한을 갖고 있음
> [!CAUTION]
> planner와 critic을 같은 컨텍스트에 두지 않는다. 자가비평하면 blind spot이 여전히 남아 있음
#### 암묵지를 파일로 뽑아내기
리뷰로 수정했거나, 버그를 겪고 수정하던 것들을 파일로 추출한다. => 같은 실수를 반복하지 ㅇ낳는다.
결정의 이유까지 함께 남긴다 => 여러 상황에서도 활용할 수 있게 일반화가 된다.
### Section 5
#### 실패 패턴 5가지
1. 컨텍스트 과부하
2. 불명확한 요구사항
3. 검증 없는 자동 수락
4. 긴 세션 드리프트
5. 권한 과다
#### 그래도 여전히 기초가 중요하다
AI가 자신감 있게 틀린 코드 제시 - 틀린게 틀린건줄은 알아야 한다.
추상화 수준만 올라갔을 뿐 문제 해결, 시스템 사고, 디버깅은 인간의 영역
### Section 6
#### Subagent vs Agent Team
- Subagent : 격리. 주 컨텍스트가 일을 시키면 독립적인 컨텍스트에서 작업하고 summery만 전달한다.
- Agent Team : 같이 토론하고 합의한다. 3명까지는 이득이지만 더 많으면 대기 시간이 길어진다.
### Section 7
#### 실전 세팅 - 다중 세션 병렬
[cmux](https://cmux.com/ko) + [Git worktree](https://daleseo.com/git-worktree/)
- 창 1 : 메인 작업 - 현재 이슈를 구현하고 수정, 핵심 컨텍스트 보호
- 창 2 : 조사와 탐색 - 코드베이스를 탐색하고 문서 검색. Explore 서브에이전트 활용
- 창 3 : 감시 - 테스트와 빌드 로그 실시간 확인, 알림 수신
- 창 4 : 이슈와 PR - 이슈 확인, PR 생성, git 상태와 브랜치 관리
Git worktree를 이용해서 창마다 독립 작업 디렉토리를 만든다.
### Appendix
레퍼런스 : [GitHub - Youngdong2/claude-seminar-references: 클로드코드 잘 사용하기 — 전사 세미나 참고 자료 모음 · GitHub](https://github.com/Youngdong2/claude-seminar-references)