MVP는 최소 기능 제품, 즉 가장 적은 범위로 실제 사용 가치를 확인하는 첫 제품입니다. 회의 메모를 “만들어 줘”라고만 요청하면 공유·검색·버전 기록까지 범위가 번질 수 있지만, 정작 저장 실패 뒤 본문을 보존하는 기본 흐름은 빠질 수 있습니다. 기능 개수보다 한 사용자가 끝낼 행동을 먼저 적어야 합니다.
핵심 MVP 명세는 기능 목록이 아니라 시작 상태, 입력, 성공과 실패 결과, 제외 범위를 가진 사용자 흐름입니다. 한 흐름이 실제 저장과 새로고침까지 통과해야 다음 기능을 엽니다.
기능 수 대신 한 번의 완료를 적었습니다
사용자의 시작과 실패 뒤 행동까지 명세했습니다.
시작: 로그인한 작성자
입력: 제목과 본문
상태: 작성·저장 중·저장됨·실패
성공: 새로고침 뒤 같은 내용 표시
실패: 입력 유지와 다시 저장
제외: 공유·검색·버전·오프라인
최소 구현의 실제 범위
예시 범위는 메모 테이블, 생성 요청, 작성 화면과 저장 성공·실패 회귀로 제한합니다. 범용 이벤트 버스와 관리 화면은 명시된 사용자 흐름에 필요하지 않으므로 제외합니다.
브라우저에서 드러난 빠진 상태
설명용 브라우저 검증에서는 느린 요청 중 저장 버튼을 다시 누를 때 중복 생성이 생기는지를 확인합니다. 화면에서는 저장 중 버튼을 비활성화하고, 서버에서는 같은 요청이 반복돼도 메모가 하나만 생기는지를 별도 테스트합니다. 실패 뒤 제목과 본문이 그대로 남는 것도 수용 기준입니다.
다음 기능을 열지 않는 조건
새로고침 후 내용이 없거나 실패 입력이 사라지면 MVP는 미완료입니다. 공유 요구가 나오더라도 권한 모델을 별도 계약으로 만들기 전에는 붙이지 않고 운영 DB 적용과 배포는 승인 단계에서 멈춥니다.
한 기능만 여는 시작 명령
이 시작 예시는 메모 저장 한 흐름의 현재 상태만 조사합니다. Claude Code가 공유·검색을 새 요구로 추측하지 않도록 제외 범위와 성공·실패 상태를 먼저 반환하게 하고, 수용 기준을 승인하기 전에는 편집하지 않습니다.
cd ~/projects/notes-app
claude --permission-mode plan
첫 프롬프트: 회의 메모 저장 한 흐름을 읽고 작성·저장 중·성공·실패 상태와 제외 범위를 반환하세요. 아직 수정하지 마세요.
읽을 대상: src/notes/, tests/notes/, AGENTS.md
허용 도구: Read, Glob, Grep
Edit와 Bash는 검토 전 승인하지 않습니다.
반환 형식: 현재 흐름 / 빠진 상태 / 변경 파일 / 수용 기준 / 제외 기능
승인할 저장 범위를 다시 좁힙니다
상태표의 네 장면이 각각 테스트 이름으로 연결돼야 구현을 시작할 수 있습니다. 저장 흐름과 관련 테스트만 바꾸고 공유·검색이나 범용 이벤트 계층이 변경 내역에 섞이지 않아야 합니다. 새로고침, 중복 제출과 실패 입력 보존 중 하나라도 미검증이면 “화면이 보인다”는 이유로 MVP를 완료 처리하지 않습니다.
기능이 보이는 것과 요구를 만족한 것은 다릅니다
메모 저장 테스트와 변경 파일을 따로 확인해 공유·검색 기능이 섞이지 않았는지 봅니다.
npm test -- notes\ngit diff -- src/notes tests/notes\ngit status --short
저장 흐름을 멈추거나 새 작업으로 나누는 기준
공유 권한, 검색 인덱스, 운영 DB 적용이 필요해지면 MVP 세션을 멈추고 별도 계약을 만듭니다. 같은 저장 성공·실패 흐름의 회귀를 고칠 때만 현재 세션을 재개하며, 수용 기준이 바뀌면 기존 변경과 미검증 상태를 남기고 새 계획에서 시작합니다.