AGENTS.md

---
AGENTS.md 파일에 4가지 작업 유형에 대해 나열한다.

1. 브레인스토밍 작업
2. 명세 작성 작업
3. 구현 작업
4. 그 외 (별도 AGENTS 파일 없이 일반적인 지침을 따른다)

이후, 각 작업에 대해 별도의 AGENTS 파일을 작성하고 root 파일에는 각 파일의 경로를 명시한다.
추후 에이전트가 작업 요청을 받으면, 요청이 어떤 유형의 작업인지 판단하고 해당 유형에 대한 AGENTS 파일을 추가적으로 확인할 수 있도록 지침을 작성한다.
---
# 브레인스토밍 작업 (agent/brainstorming/*)
1. 명세 -> 평탄화 -> 체크리스트 순으로 파일을 생성한다.
  - 사용자의 요구사항을 이해하고 명세를 작성해 파일로 저장한다. 명세의 형식은 요구사항에 기반하여 결정한다.
  - 저장된 명세를 평탄화하여 새로운 파일로 저장한다. 평탄화 중 명세의 내용이 누락되지 않도록 한다.
  - 평탄화된 파일을 체크리스트 형식으로 변환해 새로운 파일로 저장한다. 체크리스트의 각 항목에는 번호를 붙여 의사소통에 문제가 없도록 한다.
  - 각 파일은 요구사항에 사용된 언어로 작성한다.
2. 사용자의 지시에 따라 체크리스트의 각 항목에 승인/반려를 여부를 표시한다.
3. 사용자의 지시에 따라 체크리스트에 새로운 항목을 이어서 추가할 수 있다.
4. 협의 과정에서 한번 작성된 체크리스트 항목의 내용은 절대로 수정되거나 삭제되지 않도록 한다.
---
# 명세 작성 작업 (agent/specs/*, agent/indexes/spec-index.json, agent/indexes/spec-reference-index.json)
1-1. 사용자의 요구사항을 이해하고 명세를 작성해 파일로 저장한다. 명세의 형식은 요구사항에 기반하여 결정한다.
1-2. 만약 작업 요청에 체크리스트가 포함되어 있다면, 각 항목의 승인/반려 여부를 고려하여 명세로 재작성한다.
2. 명세 파일을 생성한 후, 명세의 의도, 핵심 키워드, 태그 3가지를 Spec Index 파일에 기록해서 저장한다.
3. 만약 생성된 명세의 내용이 기존의 명세와 연관이 있다면 Spec Reference Index에 관계에 대해 정리하여 저장한다.
---
# 구현 작업 (agent/indexes/implementation-index.json)
1. 작업 요청에 명세가 포함되어 있지 않다면 명세를 먼저 작성한다.
2. 구현 작업은 명세를 기반으로 진행한다. 명시적인 지시가 없는 한 최대한 쉽고 단순하게 진행한다.
3. 명세를 이해하는 과정에서 추가 맥락이 필요하다면 index 파일 및 관련 파일을 참고한다.
4. 구현 작업의 결과에는 항상 주석 등으로 어떤 명세에 대한 구현인지 명시한다.
5. 구현 작업을 진행한 후, Implementation Index에 명세와 구현의 각 결과물 사이의 관계를 기록한다.
---
마지막으로 root AGENTS 파일에 Spec, Spec Index, Implementation, Implementation Index가 항상 일관성을 유지할 수 있도록 추가 지침을 작성한다.
---

도메인

아래 요구사항을 만족하는 식사 약속을 잡는 앱에 대해 브레인스토밍 작업 진행해

# 기능 요구사항
1. 약속을 생성한 후 다른 사람과 공유할 수 있다
2. 약속을 공유 받은 사용자는 해당 약속에 참여할 수 있다
3. 시간 슬롯은 규칙을 기반으로 결정된다
4. 약속 참여자는 자신이 참여 가능한 시간 슬롯 목록을 등록 및 갱신할 수 있다
5. 모든 참여자는 해당 약속의 참여 가능 여부 현황을 확인할 수 있다

# 비기능 요구사항
1. 보안보다 사용성을 우선한다
2. 개인을 특정할 수 있는 정보는 수집하지 않는다
agent/brainstorming/meal-appointment-checklist.md를 기반으로 도메인 명세를 작성해
초기 구현에서는 한가지 시간 슬롯 템플릿만 구현할 거야. 해당 시간 단위는 날짜가 평일이라면 저녁을, 주말이라면 점심과 저녁을 선택할 수 있는 단위야.
시간 슬롯 템플릿은 추후에 추가될 여지가 있어.

아키텍처, 테스트

agent/specs/meal-appointment-domain-spec.md를 기반으로 소프트웨어 아키텍처 명세를 작성해
아키텍처는 가능한 한 단순하게 구성하되, 어떤 기술 스택을 사용할지 명확하게 명시해
agent/specs/meal-appointment-domain-spec.md, agent/specs/meal-appointment-architecture-spec.md를 기반으로 로컬 테스트 명세를 작성해
로컬에서 단위 테스트, 통합 테스트, E2E 테스트를 실행하기 위한 절차에 대해 설명하면 돼
단, 로컬 환경에서는 docker를 사용할 수 없다고 가정해
1. agent/specs/meal-appointment-local-testing-spec.md를 기반으로 각 테스트를 실행하는데 사용할 스크립트 파일을 작성해. 통합 테스트와 e2e 테스트는 in-memory db가 아닌 실제 로컬 데이터베이스와의 연결성까지 확인해야 해.
2. README.md 파일을 작성해.
3. agent/specs/meal-appointment-architecture-spec.md를 기반으로 아키텍처 부트스트랩 진행해.
4. 각 테스트 종류에 대해 더미 테스트 작성하고, 스크립트를 통해서 테스트를 실행했을 때 작성한 테스트가 정상적으로 통과하는지 확인해.
통합 테스트, E2E 테스트를 실행하기 전에 postgresql 서비스가 실행되는지 확인하고 아니라면 실행하는 과정이 필요해. 그런데 script랑 README.md 파일에 해당 내용이 누락되어 있는 것 같아.
1. 통합 테스트 script를 실행해서 실패하는지 확인해
2. 실제로 어떻게 postgresql을 실행할 수 있는지 확인해
3. postgresql을 실행한 후에 통합 테스트가 성공하는지 확인해
4. script에 postgresql을 실행하는 단계를 추가해

약속 생성

agent/specs/meal-appointment-domain-spec.md, agent/specs/meal-appointment-architecture-spec.md를 기반으로 약속 생성 기능에 대한 명세를 최종 사용자 관점에서 작성해. 단, UI/UX에 대한 부분은 제외해.
agent/specs/meal-appointment-create-appointment-user-spec.md를 기반으로 UI/UX 명세 및 샘플 디자인을 작성하고 스크린샷으로 보여줘. 레이아웃, 색깔, 폰트 등을 확인하는 게 목적이야.

백엔드

agent/specs/meal-appointment-create-appointment-user-spec.md를 기반으로 약속 생성 기능에 대해 백엔드 구현을 위한 브레인스토밍 작업 진행해
agent/brainstorming/meal-appointment-create-appointment-backend-checklist.md를 기반으로 약속 생성 기능에 대한 백엔드 구현 명세 작성해
agent/specs/meal-appointment-create-appointment-backend-spec.md를 기반으로 백엔드 테스트 명세 작성해
agent/specs/meal-appointment-create-appointment-backend-spec.md, agent/specs/meal-appointment-create-appointment-backend-test-spec.md를 기반으로 백엔드 구현 진행해. 테스트 실행할 때는 README.md의 지침을 따라.

프론트엔드

agent/specs/meal-appointment-create-appointment-user-spec.md, agent/specs/meal-appointment-create-appointment-uiux-spec.md, web-client/mockups/create-appointment.html를 기반으로 약속 생성 기능에 대해 프론트엔드 구현 명세 작성해