소규모 매장을 위한 Laravel 뼈대(雛形)를 Claude Code에게 거의 작성하게 했습니다. 그 과정에서 지시하는 방식에 따라 결과가 크게 달라진 부분이 예약 모듈이었습니다. 너무 거칠게 지시해도, 너무 세밀하게 지시해도 실패했고, 성공한 것은 '하지 않을 것'과 '판단 기준'을 전달하는 지시였습니다.
이러한 수준의 디테일로 요청하면, 돌아오는 결과물은 만들 수 있는 모든 것을 욱여넣은 설계안이 되기 쉽습니다. 예를 들면 다음과 같습니다:
- 시간대별 달력 (시간 프레임의 캘린더)
- 직원 지정 기능
- 외부 캘린더와의 동기화
하지만 소규모 한방 치료실이나 미용실이 원하는 것은 대부분 '희망 일시를 보내면, 매장 측에서 수동으로 확정하는' 경우에 불과합니다. AI는 '무엇을 만들지 않을지'를 알지 못합니다. 그것을 결정하는 것은 인간의 역할입니다.
reservations 테이블에 name(string), phone(string, nullable), reserved_at(datetime) 등을 추가하고, 모델에 fillable을 설정하며, 컨트롤러의 store에서...
이것은 작동합니다. 다만, 설계를 인간이 전부 작성했기 때문에 Claude Code를 사용할 의미가 거의 없습니다. 게다가 지시한 사람이 놓치고 있는 요구사항(예: '같은 일시에 대한 중복 예약 방지')은 그대로 빠져버립니다.
실제로 예약 모듈을 만들게 했을 때의 지시는 다음과 같은 형태였습니다:
예약 모듈을 만들어 주세요.
- 대상은 소규모 매장(한방 치료실/미용실).
리퀘스트 방식이며, 매장 측이 관리 화면에서 '확정' 또는 '취소'를 선택하는 운영 방식-
영업 시간・공석 달력은 만들지 않는다 (나중에 필요하면 추가 예정)- 같은 일시에 대한 중복 예약은 방지한다. 단, 취소된 것은 대상 제외
- 신규 예약이 들어오면 직원에게 이메일 통지. ContactForm 모듈과 동일한 방식으로-
확정했을 때는 고객에게도 확정 메일을 보낸다. 문구는 매장 측이 관리 화면에서 편집할 수 있도록 하고 싶습니다.
- 공개 페이지는 인증 불필요, 관리 화면은
auth 미들웨어.
Blog 모듈의 구성에 맞출 것
넣은 것은 다음 4가지입니다:
| 넣은 항목 | 이 지시에서의 예시 |
|---|
| 대상 사용자 | 소규모 매장(한방 치료실/미용실) |
| ... | |
구현에 들어가기 전에 Claude Code가 '앞으로 무엇을 만들지'를 목록으로 반환합니다. 그중 제가 지시하지 않은 판단이 2가지 있었습니다.
- 확정 메일 문구 편집은 Reservation 모듈 내에서가 아니라 앱 본체의
message_templates로 만든다. 이유: 향후 ContactForm 등 다른 모듈의 고객용 메일에서도 같은 구조가 필요하기 때문에-
- 메일은 일반 텍스트(plain text)로 한다. 이유: 매장 측이 문구를 자유롭게 수정할 전제이므로, HTML 깨짐을 신경 쓰지 않고 편집하는 것이 운영에 더 적합하기 때문에
둘 다 이유가 타당했기 때문에 그대로 적용했습니다. 판단 기준을 전달하면 Claude Code는 지시하지 않은 부분에서도 같은 기준으로 판단해 줍니다. 이것이 도구가 아니라 '직원으로 사용하는' 감각의 정체라고 생각합니다.
위의 4와 5와 같은 판단은 다음 주가 되면 저 스스로도 잊게 됩니다. 그래서 핵심 정리로 나온 '이유가 있는 판단'은 README에 작성하도록 했습니다.
- 모든 메일은 일반 텍스트(plain text)로 한다 (HTML/Markdown 메일 사용 안 함 방침). 이유: 도입 후 운영자(매장 측)가 문구 변경・캠페인 문구 추가를 자유롭게 하고 싶다는 요구사항 때문에, HTML의 모양 깨짐을 신경 쓰지 않고...
나중에 다른 세션에서 '예약 완료 메일을 멋진 HTML로 해달라'고 요청했을 때, Claude Code는 'README에 일반 텍스트 방침과 그 이유가 있습니다. 변경하시겠습니까?'라고 확인해 왔습니다.
- 대상 사용자를 작성했는지
- 만들지 않을 것을 작성했는지 - 기존의 어떤 코드와 통일할지를 작성했는지
- 애매한 부분의 판단 기준을 작성했는지(중복 예약은 어떻게 처리할지 등)
- 이유가 있는 판단이 돌아오면, README에 남길 전제는 했는지
세부 사양을 작성하는 시간을 '하지 않을 것'을 한 줄 추가하는 시간으로 바꾼 것이 훨씬 효과적이었습니다.