문의 저장 요청이 실패할 때 사용자가 쓴 내용까지 사라지는 버그를 가정해 봅시다. 이슈 번호만 전달하면 에이전트가 재시도 서버와 새 알림 체계까지 범위를 넓힐 수 있습니다.

핵심 에이전트용 이슈에는 증상, 변경 범위, 제외 대상, 관찰 가능한 완료 상태와 통합 책임이 필요합니다.

이슈를 사용자 장면으로 다시 썼습니다. 서버 오류를 숨기지 않고 작성 내용을 지키는 데 집중했습니다.

작업 계약
문제: 저장 요청이 503이면 제목과 본문이 비워진다.
범위: 작성 폼, 실패 처리, 회귀 테스트
제외: DB, 인증, 자동 재시도
완료: 오류 안내 뒤 입력 유지, 다시 저장 가능

코드에서 발견한 실제 원인. 예시 원인은 폼이 응답 성공 여부를 확인하기 전에 초기화 함수를 호출하는 코드입니다. 성공한 경우에만 초기화하도록 고친 뒤, 실패 응답을 재현하는 브라우저 테스트에서 제목과 본문이 유지되는지를 확인합니다.

병합 뒤에도 끝나지 않았습니다. 추가 수용 장면으로 작은 화면에서 오류 문구가 저장 버튼을 가리지 않는지 확인합니다. 문구 영역을 고친 뒤 입력을 유지한 채 다시 저장할 수 있어야 완료로 판정합니다.

새 문제는 새 계약으로. 503의 서버 원인, 전역 알림 체계, 스키마 변경은 별도 이슈로 분리합니다. 자동 병합과 배포는 계약에 없으므로 실행하지 않습니다.

이슈의 빈칸을 확인하는 명령. 이 시작 예시는 이슈 문장과 현재 코드·테스트의 차이만 조사합니다. Claude Code에는 이슈 번호를 포괄적 구현 지시로 해석하지 말고 사용자 장면, 제외 범위와 병합 책임의 빈칸을 먼저 반환하게 합니다.

계획 모드 시작과 복사 프롬프트 예시
cd /path/to/project
claude --permission-mode plan

첫 프롬프트: 이슈와 관련 코드·테스트를 읽고 설명과 실제 동작이 충돌하는 곳을 찾으세요. 수정하지 마세요.
읽을 대상: 이슈 184, src/inquiry/, tests/inquiry/, AGENTS.md
허용 도구: Read, Glob, Grep
Edit와 Bash는 검토 전 승인하지 않습니다.
반환 형식: 사용자 장면 / 범위 / 제외 / 변경 파일 / 검증 / 통합 책임

이슈 담당자가 구현 경계를 승인합니다. 이슈 담당자는 변경 파일이 폼과 실패 회귀에 한정되는지, 모바일 재시도까지 관찰 가능한 완료 조건인지 확인합니다. 후속 프롬프트는 “승인한 입력 보존과 오류 표시만 구현하세요. 서버 재시도, DB와 전역 알림은 수정하지 말고 별도 이슈 후보로 반환하세요”로 범위를 닫습니다.

테스트와 변경 차이를 따로 확인합니다. 문의 저장 실패 회귀를 실행하고 이슈 범위 밖 변경이 없는지 확인합니다.

검증과 변경 차이 검토 예시
npm test -- inquiry\ngit diff -- src/inquiry tests/inquiry\ngit status --short

이슈 밖 원인이 보여도 현재 세션을 넓히지 않습니다. 503의 서버 원인이나 스키마 변경이 필요하면 현재 구현을 멈추고 새 이슈 후보와 재현 증거만 반환합니다. 폼 입력 보존이라는 계약이 유지될 때만 재개하며, 통합 책임이나 배포가 추가되면 현재 변경·테스트 상태를 인계하고 승인된 별도 작업에서 진행합니다.