1왜 이 단계는 웹에서 하는가
gh project field-create가 만들 수 있는 필드 유형은 TEXT, SINGLE_SELECT, DATE, NUMBER이고 Iteration은 없다. 값을 바꾸는 item-edit도 Iteration은 이름으로 지정할 수 없고, --field Iteration --value "Sprint 1"을 실행하면 “setting an iteration field by name is not supported”라는 오류가 난다. 따라서 Iteration의 생성과 배정은 웹 화면에서 한다. 보기(view)의 구성도 웹에서 한다.
source pm-lab/env.sh gh project view "$PM_PROJECT" --owner "$PM_OWNER" --web
2Iteration 필드 만들기
- Project 화면 오른쪽 위의 ⋯ 메뉴에서 Settings를 연다.
- 왼쪽 Fields 목록 아래의 + New field를 누른다.
- 이름에
Iteration을 입력하고 유형으로 Iteration을 고른다. - 시작일 2026-10-12, 기간 2 weeks로 정하고 저장한다.
- 생성된 반복의 이름을
Sprint 1,Sprint 2로 바꾼다. 기본 이름은 “Iteration 1”처럼 붙는다.
기간은 시작일을 포함해 달력 날짜로 센다. 10월 12일(월)부터 2주는 10월 25일(일)까지로 표시된다. 업무일 기준으로는 10월 23일(금)에 끝나므로 화면의 종료일과 계획표의 종료일이 이틀 다르다. Sprint 2는 10월 26일(월)에 시작해 11월 8일(일)까지로 표시되고, 업무일 기준으로는 M1 마감일인 11월 6일(금)에 끝난다.
| 반복 | 화면 표시 | 업무일 기준 |
|---|---|---|
| Sprint 1 | 10-12 ~ 10-25 | 10-12 ~ 10-23 |
| Sprint 2 | 10-26 ~ 11-08 | 10-26 ~ 11-06 |
3Status에 In Review 추가
- Settings의 Fields 목록에서 Status를 연다.
- 선택지에
In Review를 추가하고, In Progress와 Done 사이로 끌어 옮긴다. - 선택지가 Todo, In Progress, In Review, Done 순서인지 확인한다.
4업무에 값 배정
Project의 기본 표 화면으로 돌아가 오른쪽 끝 +로 Iteration, Priority, Target date 열을 표시한다. 각 칸을 눌러 아래 값을 입력한다. Priority가 이미 채워져 있으면 그대로 둔다.
| 키 | Iteration | Priority | Target date | Status |
|---|---|---|---|---|
| LP-01 | Sprint 1 | P0 | 2026-10-14 | Todo |
| LP-02 | Sprint 1 | P1 | 2026-10-21 | Todo |
| LP-03 | Sprint 1 | P0 | 2026-10-23 | Todo |
| LP-04 | Sprint 2 | P1 | 2026-10-30 | Todo |
| LP-05 | Sprint 2 | P0 | 2026-11-04 | Todo |
| LP-06 | Sprint 2 | P1 | 2026-11-06 | Todo |
여러 칸에 같은 값을 넣을 때는 첫 칸을 고른 뒤 아래 칸들로 끌어 채울 수 있다. 같은 이슈에 Iteration(작업 기간), Target date(업무 목표일), 마일스톤(출시 마감)이 모두 붙었다. 세 값은 서로 독립적으로 바뀐다.
5보기 세 개 구성
보기는 같은 항목을 다른 배치와 필터로 보여 주는 탭이다. Project 상단의 + New view로 만들고, 탭 이름을 두 번 눌러 이름을 바꾼다. 필터나 정렬을 바꾸면 탭 옆에 저장 표시가 생기므로 Save를 눌러 저장한다.
| 보기 이름 | 배치(Layout) | 설정 | PM이 확인할 내용 |
|---|---|---|---|
| Backlog | Table | 정렬: Priority 오름차순. 필터: label:"kind:task" | 다음에 할 일, 담당자 누락 |
| Sprint 1 | Board | 열: Status. 필터: iteration:"Sprint 1" | 이번 스프린트의 진행과 막힘 |
| Release roadmap | Roadmap | 날짜 필드(Date fields)의 목표일에 Target date. 표시(Markers)에서 Milestones 선택 | 업무 목표일과 출시 마감의 관계 |
Roadmap의 Milestones 표시를 켜면 마일스톤 마감일이 세로선으로 나타나, 업무 막대가 출시 마감을 넘는지 볼 수 있다. 현재 날짜 기준으로 운영할 때는 필터에 iteration:@current를 쓸 수 있다. 오늘 날짜가 Sprint 1의 시작일(2026-10-12)보다 앞이면 @current에 해당하는 반복이 없어 보드가 비어 보인다. 수업에서는 이름을 직접 적는다.
6CLI로 같은 보기 확인
웹의 필터 문법은 item-list --query에 그대로 쓸 수 있다. --field는 지정한 필드를 열로 덧붙인다.
gh project item-list "$PM_PROJECT" --owner "$PM_OWNER" --limit 100 \ --query 'iteration:"Sprint 1"' \ --field Status --field Priority --field "Target date"
TYPE TITLE NUMBER REPOSITORY ID STATUS PRIORITY TARGET DATE Issue [LP-01] 사전신청 정책을 확정한다 1 gildong/launchpad-pm-lab PVTI_lAHOA... Todo P0 2026-10-14 Issue [LP-02] 랜딩 페이지에서 서비스 안내와 신청 버튼... 2 gildong/launchpad-pm-lab PVTI_lAHOA... Todo P1 2026-10-21 Issue [LP-03] 방문자가 이메일로 사전신청을 완료한다 3 gildong/launchpad-pm-lab PVTI_lAHOA... Todo P0 2026-10-23
1회차 점검
1회차가 끝나면 아래 상태가 되어야 한다. 2회차는 이 상태에서 시작한다.
source pm-lab/env.sh cat pm-lab/env.sh gh api "repos/$PM_REPO/milestones" --jq '.[] | "\(.title) 열림 \(.open_issues) 닫힘 \(.closed_issues)"' gh project item-list "$PM_PROJECT" --owner "$PM_OWNER" --limit 100 --field Iteration --field Priority
PM_OWNER="gildong" PM_REPO_NAME="launchpad-pm-lab" PM_REPO="gildong/launchpad-pm-lab" PM_MILESTONE="M1 비공개 베타" PM_POLICY_URL="https://github.com/gildong/launchpad-pm-lab/issues/1" PM_PROJECT="3" M1 비공개 베타 열림 6 닫힘 0 M2 공개 런칭 열림 0 닫힘 0 (Project 항목 6줄, ITERATION 열에 Sprint 1 세 개와 Sprint 2 세 개)
- Iteration 필드에 Sprint 1(10-12 시작)과 Sprint 2(10-26 시작)가 있다.
- Status 선택지가 Todo, In Progress, In Review, Done 순서다.
- 여섯 업무 모두 Iteration, Priority, Target date가 채워져 있다.
- Backlog, Sprint 1, Release roadmap 보기 세 개가 저장되어 있다.
- CLI의
--query 'iteration:"Sprint 1"'결과가 Sprint 1 보드와 같은 세 업무다. pm-lab/env.sh에 여섯 줄이 있다.
막히면
| 증상 | 확인과 해결 |
|---|---|
| Sprint 1 보드가 비어 있음 | 필터 철자와 따옴표를 확인한다. iteration:"Sprint 1"처럼 공백이 있는 이름은 큰따옴표로 감싼다. @current를 썼다면 오늘 날짜가 Sprint 기간 안인지 확인한다. |
field "Iteration" not found in project | 필드 이름이 다르다. gh project field-list "$PM_PROJECT" --owner "$PM_OWNER"로 실제 이름을 확인한다. |
| Roadmap에 막대가 없음 | 보기 설정의 날짜 필드(Date fields)에 Target date가 지정되어 있는지 확인한다. |
| 보기를 바꿨는데 다음에 열면 원래대로임 | 탭 옆의 저장 표시를 눌러 Save 하지 않았다. |
마치며...
1회차에서 출시 목표 2개, 라벨 7개, 업무 6개, Project 하나와 필드 셋, 스프린트 두 개, 보기 세 개가 만들어졌고, 이후 명령에 쓰는 변수 여섯 개가 pm-lab/env.sh에 저장되었다. 같은 업무가 백로그 표, 스프린트 보드, 로드맵에 동시에 나타나는 구조가 완성되었다. 2회차는 이 구조 위에서 업무의 상태를 바꾸고, 회의 전에 진행 상황을 조회하는 명령부터 시작한다.