아래는 이 실습의 핵심 명령을 실행한 화면을 재현한 것이다. 화면이 보이면 자동으로 재생되고, 오른쪽 위 버튼으로 다시 볼 수 있다.
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, --owner | Project 현황 절을 덧붙인다. 빼면 저장소 조회만 한다. |
--iteration | Project 현황을 한 스프린트로 좁힌다. |
> "$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 밖에 있다 | 업무 댓글에 링크와 진행 메모 |
| 작업의 어려움과 이유 | 기록되지 않은 사정 | 막힘 기록 댓글, 회의 질문 |
리포트는 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 병합부터 스프린트 종료 보고까지 마무리한다.