작업 요약 (Task Recap)
완료된 모든 작업은 한 번의 요약으로 끝납니다. 모든 도구 호출 이후 응답의 마지막에 위치합니다. 이 요약은 독자에게 10초 안에 지금 무엇이 참인지, 어떻게 알 수 있는지, 그리고 무엇이 남았는지를 알려줍니다. 세션 로그가 아닌 요약입니다.
현재 프로젝트에 자체 task-recap 스킬이 있다면, 대신 그 스킬을 따르세요. 프로젝트의 검사 이름과 규칙이 포함되어 있습니다.
템플릿
### <상태 글리프> <제목: 지금 무엇이 참인지, 8단어 이내>
<한두 문장: 결과와 그 중요성. 과정을 서술하지 않습니다.>
**변경 사항 (Changes)**
- [`File.ext`](path/to/File.ext) — 간단히 설명
- [`Other.ext`](path/to/Other.ext:42) — …
**검사 (Checks)** · `build ✓` · `tests 14/14 ✓` · `lint ✓`
**다음 단계 (Next)** — <하나의 열린 항목, 결정 또는 후속 작업>
상태 글리프
제목에만 정확히 하나의 글리프를 사용합니다.
| 글리프 | 의미 |
|---|---|
| ✅ | 완료 및 확인됨 |
| ⚠️ | 완료되었으나 미확인 항목이나 실패한 검사가 있음 |
| ⛔ | 차단됨: 완료할 수 없음 (요약에 이유를 명시) |
| 🔎 | 조사 또는 질문에 답변 완료, 코드 변경 없음 |
섹션 설명
- 제목 (Title) — 활동이 아닌 결과: "SearchService의 버그 수정"이 아니라 "검색 결과가 순서를 유지함".
- 요약 (Summary) — 한두 문장. 사용자에게 보이는 효과를 먼저 언급하고, 그 다음에 명확하지 않은 경우 원인이나 접근 방식을 설명합니다.
- 변경 사항 (Changes) — 파일 또는 논리적 그룹당 한 개의 불릿, 최대 6개; 나머지는 그룹화합니다("+ 4개의 번역 (
Localizable.xcstrings)"). 파일은 작업 디렉터리 기준의 마크다운 링크이며, 특정 위치가 중요한 경우:line을 추가합니다. 변경 사항이 없으면 섹션을 생략합니다. - 검사 (Checks) — 실제로 이 작업에서 실행된 항목만 표시하는 한 줄의 인라인 코드 뱃지입니다. 프로젝트 자체 도구 이름을 사용합니다:
build ✓/build ✗,tests N/M ✓,ui ✓(UI 또는 E2E 테스트),lint ✓,types ✓(타입 검사기),changelog ✓, 그리고 프로젝트 지침에서 요구하는 기타 검사(예: 번역 검사).- 적용되지만 실행되지 않은 검사는
build –로 표시하고 다음 단계 또는 요약에 언급합니다. 실행되지 않은 항목을 ✓로 표시하지 마십시오. - 문서 전용 또는 조사 작업의 경우 이 줄을 생략합니다.
- 다음 단계 (Next) — 한 줄: 사용자의 결정을 기다리는 항목, 후속 작업, 또는 git 상태(
main에 커밋되지 않음,PR 열림). 보류 중인 항목이 없으면 생략합니다.
규칙
- 간결하게: 총 4–12줄. 더 필요하면 변경 사항 목록이 너무 상세한 것이므로 그룹화합니다.
- 정직하게: 실패한 테스트나 건너뛴 단계가 있으면 ⚠️로 명확히 표시하고 숨기지 않습니다.
- 과정을 서술하지 않음: "먼저 ...을 살펴보고, 그다음에 ..." 같은 말은 하지 않습니다. 요청을 다시 말하지 않습니다. 인사말이나 "...알려주세요" 같은 말은 하지 않습니다.
- 코드 블록 금지: 사용자가 명령을 실행해야 하는 경우가 아니라면 코드 블록을 사용하지 않습니다. 그럴 경우 하나의
bash블록에 하나의 명령어를 다음 단계 뒤에 배치합니다. - 순수 마크다운만 사용: 하나의
###제목, 굵은 레이블, 불릿, 인라인 코드. 표, 추가 이모지, 수평선은 사용하지 않습니다. - 사용자가 사용한 언어로 작성하되, 파일 이름, 코드 및 뱃지 레이블은 영어로 유지합니다.
- PR과 이슈는 전체 링크로 참조합니다(
[owner/repo#94](https://github.com/owner/repo/pull/94)), 절대#94와 같은 형식으로 쓰지 않습니다. - Claude Desktop 앱에서 요약은
wrap_up호출 후에 작성되는 마지막 메시지이며, 다음 단계 상자에 표시된 질문을 반복하지 않습니다.
예시
기능 작업 예시:
### ✅ 프로필 화면에 가입일 표시
각 프로필에 사용자가 가입한 날짜가 이름 아래에 표시되며, 사용자 로케일에 맞게 형식화됩니다.
**변경 사항**
- [`ProfileHeader.swift`](Sources/Profile/ProfileHeader.swift) — 가입일 레이블 추가
- [`Localizable.xcstrings`](Sources/Profile/Resources/Localizable.xcstrings) — `Joined %@` 문자열 추가
- [`CHANGELOG.md`](CHANGELOG.md) — Unreleased 섹션에 항목 추가
**검사** · `build ✓` · `tests 32/32 ✓` · `lint ✓`
**다음 단계** — `feature/profile-join-date` 브랜치에 커밋되지 않음; PR 생성 준비 완료.
부분 결과 예시:
### ⚠️ 업로드 진행률이 백그라운드 전환에도 유지됨
이제 진행률이 로컬 카운터 대신 서버가 확인한 바이트에서 파생되므로, 앱이 일시 중단된 후에도 정확하게 유지됩니다.
**변경 사항**
- [`UploadViewModel.swift`](Sources/Upload/UploadViewModel.swift:58) — `acknowledgedBytes`에서 진행률 읽도록 변경
**검사** · `build ✓` · `tests 11/12 ✗` · `lint ✓`
**다음 단계** — `testPauseResume`이 여전히 이전 카운터를 예상함; 업데이트하거나 이전 일시 중지 동작을 유지할지 결정 필요.
조사 예시:
### 🔎 대시보드 지연 원인: 캐시 저장 시점 문제
대시보드가 백그라운드 저장이 완료되기 전에 캐시를 읽으므로, 다음 새로 고침까지 이전 데이터를 표시합니다.
**다음 단계** — `SyncService`에서 저장 완료 후 다시 새로 고침하여 수정; 여기서 진행할까요?