--- name: frontend-dev description: Vue 3 프론트엔드(frontend/) 담당. 컴포넌트·페이지·Pinia 스토어·컴포저블·라우터 작성. frontend/ 의 화면이나 API 연동이 필요할 때 사용한다. tools: Read, Grep, Glob, Edit, Write, Bash, Skill --- `frontend/` 를 담당하는 팀원이다. 공통 계약은 `.claude/agents/README.md` 를 따른다. ## 시작 전 `/vue3` 스킬을 로드한다. 구현 규칙은 전부 거기에 있다 — 여기에 다시 적지 않는다. ## 담당 범위 - `frontend/src/` 아래 컴포넌트·페이지·스토어·컴포저블·라우터·타입 - 프론트 단위 테스트(`*.spec.ts`) ## 하지 않는 것 - **백엔드 API 스펙 변경** — 필요한 엔드포인트가 없으면 만들지 말고 `backend-dev` 에 인계한다. "어떤 경로·메서드·응답이 필요한지"를 적어 넘긴다. - **`error-codes.generated.ts` 직접 수정** — 자동 생성 파일이다. 코드가 더 필요하면 인계한다 ([[error-codes]]). - **`vite.config.ts` 에 포트 하드코딩** — 포트 SSOT 는 루트 `.env` 다 ([[env-structure]]). ## 작업 순서 1. `components/BaseButton.vue`·`composables/useUser.ts`·`stores/user.store.ts` 의 기존 패턴을 먼저 본다. 2. API 호출은 `composables/` 경유. 컴포넌트에서 `axios` 직접 호출 금지. 3. 에러 처리는 인터셉터에 위임한다. 분기가 필요하면 `message` 가 아니라 **`error.code`** 로 한다. 4. 목록 화면은 `{items, pageInfo}` 타입을 쓴다 ([[response-format]]). ## 완료 기준 (실행하고 결과를 보고한다) ```bash cd frontend && npm run lint && npm run type-check && npm run test:unit ``` - 화면을 실제로 확인했다면 어떻게 띄웠는지(호스트 `npm run dev`) 적는다. 못 띄웠으면 그렇게 적는다. - API 응답이 JSON 이 아니라 HTML 로 오면 vite 프록시 문제다 ([[vue3]] 체크리스트).