개요

핫하디 핫한 AI시대에서 CLI 기반 툴 하나 제대로 알아두면 나머지 다른 모델 사용할 때도 유용할 것 같아 “클로드 코드”라는 개발 서적을 읽어 보았다.

아얘 챌린지를 염두에 두고 분량이 배분되어 나온 서적 같았고, 완독하기 위해서 서적 구매와 별도로 인프런에서 챌린지를 결재해서 강제성을 두었다.

기억하고 싶은 내용

프로젝트 설계 Tip

프로젝트 아키텍처 다이어그램 생성

머메이드를 이용해서 Mermaid 다이어그램으로 시각화 해달라는 요청을 수행할 수 있다.

프로젝트 구조 설계

디렉터리 구조와 설정 파일들의 자동 생성 요청을 수행하고 일관성을 유지할 수 있다.

티켓 관리 연동

깃허브 이슈, 지라, 아사나, 트렐로 같은 툴들과 연동하여 티켓 생성 요청을 자동화 할 수 있다.

예시

GitHub Issues를 자동으로 생성할 수 있는 gh CLI 명령어 스크립트를 작성해줘

Jira 티켓을 생성하는 Node.js 스크립트를 작성해줘. Jira REST API를 사용해

README 템플릿 생성

프로젝트 개요, 기술 스택, 설치 가이드, 환경 변수 설정, API 문서 링크, 컨트리뷰션 가이드 등을 포함한 Readme 템플릿을 생성할 수 있다.

ADR 작성

기술 결정을 기록해서 기술 부채와 불필요한 리팩토리를 방지하고 기술 근거를 남기기 위한 ADR 작성을 요청할 수 있다.

  • Y-statement 형식 : X를 선택함으로써 우리는 Y를 얻는 대신 Z를 감수한다.

예시

PosrgreSQL vs MongoDB 선택에 대한 ADR을 작성해줘. Y-statement 형식을 사용해봐.

깃 훅 설정

Git hooks를 설정하여 코드 품질을 보장할 수 있다.
pre-commit에서 린트, 포맷팅.
commit-msg에서 커밋 규칙 검증.
pre-push에서 테스트를 자동 실행하도록 설정할 수 있다.

예시

Git hooks를 설정해줘.

  • pre-commit: 린트와 포맷팅 체크
  • commit-msg: 커밋 메시지 규칙 검증
  • pre-push: 테스트 실행

환경 구성

각종 개발환경에 대한 구성을 수행할 수 있따.

예시

VS Code 환경 설정 파일을 생성해줘.

  • 추천 익스텐션 목록
  • 디버깅 설정
  • 태스크 러너
  • 코드 스니팻

개발용 Docker 환경을 구성해줘.

  • Hot reload 지원
  • 데이터베이스 연동
  • 볼륨 마운트 설정
  • 네트워크 설정

로컬 테스트용으로 k8s manifest를 작성해줘

테스트 환경을 설정해줘

  • Jest 설정(unit test)
  • React Testing Library(component test)
  • Playwright (E2E test)
  • 테스트 커버리지 설정

부트스트래핑

  • 부트스트래핑(Bootstrapping): 초기 상태에서 시작하여 점차 복잡한 체계를 구축하는 과정
    현재까지 설계한 구성을 바탕으로 복잡한 구조를 한번에 생성하고 설정들까지 자동으로 구축할 수 있다.

점검목록

  • 프로젝트 기본 구조 생성
  • 타입스크립트(언어) 설정 완료
  • 린터/포매터 설정
  • 깃 훅 설정
  • 환경 변수 설정
  • 도커 개발 환경 구성
  • 테스트 환경 설정
  • CI/CD 파이프라인 구성
  • README 문서 작성
  • CLAUDE.md 설정 문서화

예시

현재까지 구상된 문서 및 설계를 바탕으로 MVP를 구현해줘.
docker-compose를 통해 실행 가능한 형태로. 구현 내용은 playwright를 통해 검증해줘.

TDD(Test-Driven Development)

단위 테스트

특정 함수, 컴포넌트에 대해 테스트 코드 작성, 테스트 케이스에 대한 edge case와 정상 케이스 포함 여부 지시를 할 수 있다.

Red-Green-Refactor 사이클

3단계 사이클을 반복하여 안전성을 챙길 수 있다.

  • Red: 실패하는 테스트 작성

실패하는 테스트부터 작성해줘. 요구사항은 다음과 같아.

  • 이메일과 비밀번호로 회원가입
  • 이메일 중복 체크
  • 비밀번호 해싱
  • 입력값 유효성 검사
  • Green: 최소한의 코드로 테스트 통과시키기

작성된 테스트를 통과하는 UserService 클래스를 구현해줘. 최소한의 코드로 테스트만 통과하면 돼

  • Refactor : 코드 품질 개선

UserService 코드를 리팩토링해줘. 의존성 주입, 에러 핸들링 개선, 타입 안정성 강화를 적용하고 테스트도 함꼐 수정해줘.

Red-Green-Refactor 사이클 장점

  • 요구사항 명확화
  • 안전한 리팩토링
  • 높은 테스트 커버리지
  • 버그 조기 발견
  • 배포 안정화

깃허브 액션 테스트 자동화와 CI/CD

깃허브 액션 워크플로우를 자동으로 생성해서 지속적인 테스트를 수행하도록 지시할 수 있다.

예시

GitHub Actions workflow를 생성해줘.
-PR 생성 시 모든 테스트 실행
테스트 커버리지 리포트 생성
테스트 실패 시 PR 병합 차단
병렬 테스트 실행으로 속도 최적화

테스트 모니터링과 리포팅

테스트 대시보드를 만들어서 시각적으로 모니터링 하도록 지시할 수 있다.

예시

테스트 결과를 시각화하는 대시보드를 만들어줘.
-테스트 통과율 추이
커버리지 변화 그래프
실패한 테스트 목록
테스트 실행 시간 분석

개선

코드리뷰

깃허브 앱을 설치하면 클로드 코드로 PR에 자동 리뷰어로 참여시켜 코드 품질, 가독성, 버그, 보안이슈, 성능, 개선점, 중복 코드 등의 리뷰를 하도록 설정할 수 있다.

/install-github-app

설치 후 깃허브 앱을 설정하고 저장소를 선택한 후 이슈나 PR 코멘트에서 @claude를 명시해 깃허브 워크플로우에 참여시킬 수 있다.

리팩토링

코드 스멜 제거에 도움을 받을 수 있으며, 디자인 패턴을 적용, 검토하도록 해 AI 협업 시 맥락을 구조적으로 제한할 수 있다.

예시

~파일의 코드 스멜을 식별하고 리팩토링 해줘.
긴 메서드, 중복 코드, 복잡한 조건문, 매직 넘버 등을 개선하고 SOLID 원칙을 적용해줘.

성능 최적화

성능 분석과 최적화를 요청하여 불필요한 작업들을 걷어내도록 지시할 수 있다.
또한 쿼리 성능, 데이터베이스 스키마를 분석하고, 개선안을 제시, 최적화 하도록 지시할 수도 있다.
또한 자바스크립트 번들의 구성을 분석하고 최적화 포인트를 찾아 데드코드 제거, 라이브러리 중복 문제 식별, 지연 로딩 등을 통해 최적화 하도록 지시할 수 있다.

명세 작성 및 문서화

API 문서 자동 생성

OpenAPI 명세 생성을 Swagger UI 대상으로 하도록 지시하거나, GraphQL 스키마 문서화, 포스트맨 콜렉션 생성을 지시할 수 있다.

코드와 문서 동기화

개발 과정에서 문서와 코드의 진행도가 동기화 되어야 한다.(일반적으로 문서가 코드보다 뒤쳐지기 때문에) Doc을 기반으로 API 문서를 생성하도록 지시할 수 있다.
또한 코드가 변경될 때마다 자동으로 문서가 업데이트 되도록 CI/CD 파이프라인에 문서 업데이트 단계를 포함할 수도 있다.

예시

JavaDoc 주석으로부터 완전한 API 문서를 생성해줘.
각 엔드포인트별로 request/response 스키마, 에러 코드, 사용 예시를 포함해서 빌드할 수 있는 형태로 작성해줘.

문서 자동화 파이프라인을 구축해줘.
GitHub Actions 워크플로로 코드 변경 시 자동으로 OpenAPI 문서, 배포 가이드를 업데이트 하고 GitHub Pages에 배포하는 스크립트를 작성해줘

프롬프팅 전략과 사고 패턴

CoT(Chain of Thought)

문제를 단계별로 풀어나가도록 유도하는 기법으로 디버깅, 최적화 같이 복잡한 원인을 추적하거나 분석 보고서와 같이 사고 과정 기록이 필요한 상황에서 쓴다.

Sequential Thinking

CoT보다 좀더 심화적으로 중간 산출물을 점검하는 방식으로 단계별로 끊어서 점검 후에 다음 단계로 넘어가도록 지시해서 안정성을 더 높이는 방식이다.

예시

마이크로서비스를 단계별로 분리해줘.

ToT(Tree of Throughts)

여러 가능성을 동시에 탐색하면서 최적의 답을 고르는 전략이다. 다양한 대안 검토 및 선택에 사용된다

예시

최적의 데이터베이스 설계를 찾아줘.

Reflective Thinking

자체 피드백을 거쳐 반복적으로 개선하는 방식. 피드백 루프를 태우는 방식이다.

예시

API 엔드포인트를 구현하고 반복 개선해줘.

메모리 파일 분리 전략(맥락 관리)

용도별로 메모리를 분리하는 것이 효율적이다.
CLAUDE.md에 데이터를 몰아넣게 되면 토큰 낭비, 팀워크 측면에서 비효율 적인 면이 있다.
.claude/memory 하위로 용도별로 분리하고, CLAUDE.md에 인덱스 처럼 레퍼런스 링크를 두어 클로드가 필요 시 참조하도록 만든다.
대화 프롬프트에서는 필요한 파일만 참조시켜 선택해서 사용할 수 있도록 지시한다.

예시

이 프로젝트에서 참조할 메모리 파일 목록:

  • 프로젝트 개요: (경로)
  • 아키텍처 결정: (경로)
  • 용어집: (경로)
  • 코딩 규칙: (경로)
  • 성능 제약: (경로)
  • 알려진 문제: (경로)

저자 라이브 꿀팁 요약

클로드 코드는 항상 같은 답을 주지는 않는다.
반복적인 도구는 스크립트로 툴을 만든다음에 그걸 활용하는게 항상 같은 결과를 보장한다는 것을 명심하자.

/rewind 하는 것으로 세션에 쌓지 말고 도움되는 내용만 세션에 쌓아놓고 클리어 시켜버려야 메모리를 아낄 수 있다.
메모리 관리가 중요하다.

훅을 통해 안전장치를 마련해야 재앙을 피할 수 있다.

후기

초반에는 매우 기초적인 환경설정과, 내가 이미 사용중인 방식에 미치는 못한 활용도의 설명, 예제들이 있어서 좀 아깝다는 생각이 들었는데 3주차 내용에 도달하자 그래도 배울만한 점이 있다고 생각되었다.
“단순히 좋은 프롬프트로 코드를 개선하고 개발하는 행위” 말고도 개발 절차 자체에 응용할 수도 있는것이다. 물론 GPT나 다른 AI 툴들로도 이미 하던 행위들이지만 왠지 클로드 코드로 그런 작업을 더 완성도 있게 할 수 있다는 사실을 좀 외면하고 있었던 것 같다. 코드 개발, 개선만으로도 토큰이 부족해서 그렇게 쓰기엔 조금 아까웠던 탓일까..
근데 사실 설계와 테스트 명세는 개발보다 시간을 더 들여도 아깝지 않은 영역이긴하다.
내 프로젝트를 더 잘 이해할 수 있는 CLI 기반 AI 툴을 가지고 제한된 토큰으로 할 수 있는 선택 중 어쩌면 단순 코드 생산보다 이런 설계, 명세, 테스트를 생성하는 것이 더 효율이 좋을수도 있다.
사이드 프로젝트에서 이걸 명심하고 응용해봐야겠다는 생각이 들었다.
그리고 별로 의식하고 있던 부분은 아닌데 메모리, 맥락관리 생각보다 많이 중요했던 부분이었고, 앞으로도 작업할 때 토큰 절약과 효율쪽에도 신경을 써야겠다고 다짐했다.