하루 일과: 클로드 코드 세션 전체 안내
출처: Dev.to
7부 중 7부 · 시리즈: AI 개발자 핸드북 만들기 · GitHub
비밀번호 재설정 기능을 만들고 있습니다. 사용자가 이메일을 입력 → 재설정 링크를 받음 → 링크를 클릭 → 새 비밀번호를 입력합니다. 표준 흐름이며, 중간 난이도입니다.
전체 워크플로우를 사용해 모든 단계를 살펴보겠습니다 — 마치 이 시스템을 만든 사람의 어깨 너머를 보는 듯이.
“당신의 워크플로우를 보여주면, 당신의 출력 품질을 보여드리겠습니다.”
Claude가 자동으로 백그라운드에서 로드됩니다:
✓ ~/.claude/CLAUDE.md 로드됨 ← 전역 핸드북
✓ .claude/CLAUDE.md 로드됨 ← 프로젝트 규칙 (TypeScript, pnpm)
✓ memory/MEMORY.md 스캔됨 ← 모든 레슨 및 선호도
아직 입력한 내용이 없습니다. Claude는 이미 알고 있습니다:
- 기능 기반 폴더 구조
- 상태 관리 단계(Ladder)
- 데이터베이스 목킹 금지
- 커밋에 AI 기여 표시 금지
- 프로파일러 증거 없이
useCallback사용 금지 - “방에 들어오기 전에 파일을 검토해 주는 의사가 ‘그럼, 당신이 누구인지 다시 알려 주세요?’라고 묻는 사람보다 더 유용합니다.”
/status
모델: claude-sonnet-4-6
노력: 보통
플러그인: security-guidance ✓
30초. 과부하 시 대체 모델이 로드될 때도 있고, 플러그인이 조용히 실패할 때도 있습니다. 이 검사는 30초가 소요되며, 30분 뒤에 깜짝 놀라지 않게 해줍니다.
“조종사가 조종석에 앉은 뒤 첫 번째 행동은 이륙이 아니라, 모든 계기가 정상적으로 표시되는지 확인하는 것입니다.”
/cost
→ 사용 토큰: 2,847 | 예상 비용: $0.004
이 숫자를 기록해 두세요. 나중에 비용이 많이 드는 코드 리뷰 단계와 비교할 것입니다. 갑작스러운 급증은 무언가 잘못됐다는 신호입니다.
/plan
비밀번호 재설정 기능 구축:
- 사용자가
/forgot-password에 이메일 입력 - 시스템이 재설정 링크(토큰, 1시간 유효) 전송
- 사용자가 링크 클릭 →
/reset-password?token=xxx로 이동 - 새 비밀번호 입력
- 토큰 검증, 비밀번호 업데이트, 토큰 무효화
Claude가 계획을 제시합니다 — 아직 코드는 없습니다:
제안 접근법:
-
DB:
password_reset_tokens테이블 추가id,user_id,token(해시),expires_at,used_at
-
API
POST /api/auth/forgot-password— 토큰 생성, 이메일 전송POST /api/auth/reset-password— 토큰 검증, 비밀번호 업데이트
-
UI
/features/auth/ForgotPasswordForm.tsx/features/auth/ResetPasswordForm.tsxusePasswordReset.ts훅
-
테스트
- 단위: 토큰 생성/검증 로직
- 통합: 실제 테스트 DB와 함께 전체 흐름
- E2E는 제외(핵심 경로가 아님)
시작하기 전 질문:
- 이메일 제공자는 어떤 것을 사용할까요?
- 토큰 길이와 해시 알고리즘 선호도는?
- 사용된 토큰은 삭제할까요, 아니면 사용 표시만 할까요?
“답을 가정하는 계획보다 질문을 던지는 계획이 더 가치 있습니다.”
당신이 질문에 답하고 계획을 승인하면 코딩이 시작됩니다.
Claude가 구현을 시작합니다. 선호도가 로드돼 있기 때문에 자동으로:
/features/auth/ForgotPasswordForm.tsx를 생성 (/components/ForgotPassword.tsx가 아님)- 폼 필드에
useState사용, API 호출에 TanStack Query 활용 catch블록은console.error로 로깅하고 토스트로 표시- 프로파일러 증거 없이 핸들러에
useCallback을 추가하지 않음
당신은 지켜보고, 흐름이 어긋나면 바로 리디렉션합니다.
“감독은 불신이 아니라, 작은 교정을 미리 잡아 큰 우회로 가는 것을 방지하는 방법입니다.”
pnpm test
테스트는 반드시 0으로 종료돼야 합니다. “대부분 통과”, “실패한 테스트는 무관한 것”은 허용되지 않습니다. 모든 테스트가 통과해야 합니다.
테스트가 실패하면:
FAIL features/auth/usePasswordReset.test.ts
✗ handles expired token correctly
Expected: { error: 'Token expired' }
Received: { error: undefined }
멈추고 수정합니다. 다시 테스트를 실행하고 초록색이 될 때까지 진행합니다.
“편지를 교정 없이 보내지는 않듯, 코드를 테스트 없이 배포하지도 않습니다. 테스트 게이트가 교정 역할을 합니다