2회차실습 11115–140분

주간 사전 리포트

PR 다섯 건과 업무 열 건을 회의 전에 하나씩 열어 보면 매주 같은 명령을 스무 번 넘게 입력하게 된다. 결과를 각자 다른 형식으로 메모하면 참석자마다 본 것이 달라진다. 이 실습은 지금까지 쓴 조회 명령을 하나의 스크립트로 묶어 같은 형식의 사전 리포트를 만들고, 회의 전날 운영 이슈에 올려 참석자가 회의 전에 읽게 한다. 회의 시간은 리포트로 답할 수 없는 질문과 결정에 쓴다.

진행
설명 5분, 실습 15분, 회의 진행 연습 5분
결과
pm-lab/weekly-날짜.md, 운영 이슈의 리포트 댓글
명령
bash weekly-digest.sh, gh issue comment --body-file

아래는 이 실습의 핵심 명령을 실행한 화면을 재현한 것이다. 화면이 보이면 자동으로 재생되고, 오른쪽 위 버튼으로 다시 볼 수 있다.

cd ~/gh-pm-lab
source pm-lab/env.sh

1리포트에 신호 하나 만들기

디자인 담당이 LP-02 작업을 시작했지만 아직 PR은 없다고 가정한다. 리포트가 이 상태를 찾아내는지 확인하기 위해 Status를 바꾼다.

PM_LANDING_URL=$(awk -F'\t' '$1=="LP-02" {print $3}' pm-lab/backlog-map.tsv)
gh project item-edit "$PM_PROJECT" --owner "$PM_OWNER" \
  --url "$PM_LANDING_URL" --field Status --value "In Progress"

2스크립트가 하는 일

실습 키트의 weekly-digest.sh는 조회만 하고 GitHub에 아무것도 쓰지 않는다. 결과는 Markdown 형식으로 화면에 출력한다. 각 절은 실습 7~9에서 쓴 명령과 같은 조회다.

절조회 내용바탕이 된 실습
병합된 PR기간 중 병합된 PR, 작성자, 연결 이슈실습 9 질문 5
열린 PR초안·리뷰 상태, 마지막 갱신 경과일, 연결 이슈실습 9 질문 1·2
연결 이슈가 없는 PR기간 중 갱신된 PR 가운데 닫는 키워드가 없는 것실습 9 신호
닫힌 이슈완료, 계획 취소, 중복을 구분-
blocked 이슈담당자와 마지막 갱신 경과일실습 8
담당자 없는 업무kind:task 중 담당자 없음실습 7 질문 2
기본 브랜치 커밋기간 중 커밋 제목실습 9 질문 5
Project 현황스프린트의 Status별 건수, In Progress인데 열린 PR이 없는 업무실습 7, 9
회의에서 다룰 것PM이 채우는 빈칸-
sed -n '1,15p' github-pm-starter-kit/weekly-digest.sh

3리포트 만들기

PM_WEEKLY="pm-lab/weekly-$(date +%F).md"
bash github-pm-starter-kit/weekly-digest.sh "$PM_REPO" --days 7 \
  --project "$PM_PROJECT" --owner "$PM_OWNER" --iteration "Sprint 1" \
  > "$PM_WEEKLY"
cat "$PM_WEEKLY"
# 주간 사전 리포트: gildong/launchpad-pm-lab

- 기간: 2026-10-08 ~ 2026-10-15
- 생성: 2026-10-15 11:20 (weekly-digest.sh)
- 이 문서는 조회 결과다. 판단과 결정은 아래 "회의에서 다룰 것"에 적는다.

## 병합된 PR
- 없음

## 열린 PR (오래된 순)
- [#7](https://github.com/gildong/launchpad-pm-lab/pull/7) [LP-01] 사전신청 정책 문서 · @gildong · 리뷰 결정 없음 · 마지막 갱신 0일 전 · 연결 #1

## 연결 이슈가 없는 PR (기간 중 갱신)
- 없음

## 기간 중 닫힌 이슈
- 없음

## blocked 라벨이 붙은 이슈
- [#3](https://github.com/gildong/launchpad-pm-lab/issues/3) [LP-03] 방문자가 이메일로 사전신청을 완료한다 · 담당 gildong · 마지막 갱신 0일 전

## 담당자가 없는 열린 업무 (kind:task)
- 없음

## 기본 브랜치 커밋
- `3f2a9c1` Initial commit · 홍길동 · 2026-10-12

## Project 3 현황: Sprint 1

| Status | 건수 |
| - | - |
| Todo | 1 |
| In Progress | 1 |
| In Review | 1 |

### In Progress인데 연결된 열린 PR이 없는 업무
- [#2](https://github.com/gildong/launchpad-pm-lab/issues/2) [LP-02] 랜딩 페이지에서 서비스 안내와 신청 버튼을 제공한다

## 회의에서 다룰 것 (PM 작성)

- 결정이 필요한 것:
- 막힘을 풀 담당자와 다음 확인일:
- 범위 변경 제안:
- 다음 주 확인할 PR 또는 업무:
옵션뜻
--days 7오늘부터 7일 전까지를 기간으로 한다. 날짜를 직접 정하려면 --since 2026-10-08을 쓴다.
--project, --ownerProject 현황 절을 덧붙인다. 빼면 저장소 조회만 한다.
--iterationProject 현황을 한 스프린트로 좁힌다.
> "$PM_WEEKLY"화면 대신 날짜가 붙은 파일에 저장한다.

4“회의에서 다룰 것” 채우기

리포트를 편집기로 열어 마지막 절을 채운다. 편집기 예: macOS open -e "$PM_WEEKLY", Windows Git Bash notepad "$PM_WEEKLY", 공통 nano "$PM_WEEKLY". 위 리포트를 읽고 쓴 예는 다음과 같다.

## 회의에서 다룰 것 (PM 작성)

- 결정이 필요한 것: PR #7(정책 문서)의 리뷰 담당과 기한. 승인되면 LP-01이 닫히고 LP-03의 막힘이 풀린다.
- 막힘을 풀 담당자와 다음 확인일: LP-03 ← LP-01. PM, 10월 16일.
- 범위 변경 제안: 없음.
- 다음 주 확인할 PR 또는 업무: LP-02는 In Progress지만 PR이 없다. 시안 위치와 PR 예정일을 확인한다.

리포트의 위쪽 절은 사실이고, 마지막 절은 PM의 판단이다. 두 부분을 섞지 않으면 참석자가 사실은 리포트로 확인하고 판단에 대해서만 의견을 낸다.

5운영 이슈에 올리기

gh issue comment "$PM_SPRINT_URL" --body-file "$PM_WEEKLY"
gh issue view "$PM_SPRINT_URL" --comments --web

리포트는 회의 전날 올린다. 참석자는 회의 전에 읽고, 사실 확인이 필요한 부분은 회의를 기다리지 않고 댓글로 묻는다.

6사전 리포트를 쓰는 회의의 순서

시점PM참석자
회의 전날리포트 생성, “회의에서 다룰 것” 작성, 운영 이슈에 게시리포트 읽기, 사실 오류는 댓글로 정정
회의 0–5분댓글로 들어온 정정 사항 확인-
회의 5–25분“결정이 필요한 것”을 하나씩 결정근거 제시, 결정
회의 25–30분결정 기록과 담당자, 확인일 읽어 주기담당 확인
회의 직후결정 기록 댓글, 관련 이슈 갱신맡은 업무의 Status와 댓글 갱신

회의에서 진행 상황을 한 사람씩 말하는 순서는 두지 않는다. 진행 상황은 리포트에 있고, 리포트에 없는 사정은 해당 업무의 댓글로 남긴다.

7리포트가 보여 주지 않는 것

보이지 않는 것이유보완
Refs #3로만 연결한 PR닫는 키워드가 아니면 연결 이슈 목록에 들어가지 않는다PR 제목의 업무 키 확인
아직 push하지 않은 작업로컬 컴퓨터에만 있는 변경은 GitHub에 없다팀 약속: 하루 한 번 push, 초안 PR 활용
다른 브랜치의 커밋커밋 절은 기본 브랜치만 조회한다열린 PR 절에서 확인
디자인 파일, 문서 도구의 작업GitHub 밖에 있다업무 댓글에 링크와 진행 메모
작업의 어려움과 이유기록되지 않은 사정막힘 기록 댓글, 회의 질문
선택: AI 도구로 질문 초안 만들기

리포트는 Markdown 텍스트이므로 AI 도구에 그대로 넣을 수 있다. 예: “아래 주간 리포트에서 회의에서 확인해야 할 질문 5개를 뽑고, 각 질문이 어느 PR이나 이슈에 근거하는지 번호를 붙여라.” 회사 비공개 저장소의 내용을 외부 AI 도구에 넣어도 되는지는 회사 정책을 먼저 확인한다. AI가 만든 질문은 초안이며, 근거로 제시한 번호가 리포트에 실제로 있는지 확인한 뒤 “회의에서 다룰 것”에 옮긴다.

  • cat "$PM_WEEKLY"가 9개 절을 출력한다.
  • 리포트의 “In Progress인데 연결된 열린 PR이 없는 업무”에 LP-02가 나온다.
  • “회의에서 다룰 것”을 채워 운영 이슈에 댓글로 올렸다.
  • 리포트가 보여 주지 않는 것 두 가지와 보완 방법을 말할 수 있다.
막히면
증상확인과 해결
Project 현황 표가 “항목 없음”--iteration 이름이 Project의 반복 이름과 다르다. "Sprint 1"처럼 큰따옴표와 공백을 확인한다.
오류: --since 값은 YYYY-MM-DD 형식이다날짜를 2026-10-08 형식으로 쓴다.
리포트 파일이 비어 있고 화면에 오류만 나옴오류 메시지는 파일이 아니라 화면으로 나온다. 메시지의 원인(로그인, 권한, 저장소 이름)을 해결하고 다시 실행한다.
댓글이 너무 길다는 오류댓글은 65,536자까지다. --days를 줄이거나 커밋 절을 지운 뒤 올린다.

마치며...

지금까지의 조회 명령이 리포트 하나로 묶였고, PM의 판단을 덧붙인 리포트가 운영 이슈에 올라갔다. 리포트는 LP-02처럼 진행 중인데 PR이 없는 업무를 기록에서 찾아냈다. 실습 12에서는 스프린트 도중의 범위 변경을 기록하고, PR 병합부터 스프린트 종료 보고까지 마무리한다.