참고 자료 github-pm-starter-kit
실습 키트
실습 키트는 Launchpad 사례의 업무 본문 6개, 백로그 등록 스크립트, 주간 사전 리포트 스크립트, 스프린트 비교 스크립트, 진도 따라잡기 스크립트, 운영 양식 3종, 3·4회차의 PM 방법론과 기록 확장 스크립트, 2단계의 프로세스 분석 스크립트와 Orbit 합성 로그, 심화 과정 트랙 A~D의 스크립트와 양식을 담은 폴더다. GitHub에 쓰는 스크립트는 등록 스크립트, 따라잡기 스크립트, 의존성 연결 스크립트, 위키 동기화 스크립트다. 트랙 B의 pr-event-log.sh는 GitHub를 읽기만 하고, 트랙 B·D의 워크플로 양식은 설치한 저장소에 이슈나 댓글을 쓴다.
받는 방법
방법 절차
배포 파일 수업에서 나눠 준 github-pm-starter-kit.zip을 작업 폴더(~/gh-pm-lab)에 압축 해제한다.
교안 사이트에서 내려받기 github-pm-starter-kit.zip . GitHub Pages로 게시한 교안에서 동작하며, 미리보기 화면에서는 내려받기가 막혀 있을 수 있다.
교안 저장소에서 복사 교안 저장소에 접근 권한이 있으면 복제한 뒤 docs/kit/github-pm-starter-kit 폴더를 작업 폴더로 복사한다.
# 교안 저장소에서 복사하는 경우 (저장소 이름은 배포받은 주소로 바꾼다)
cd ~/gh-pm-lab
gh repo clone 소유자/교안저장소 course-src
cp -R course-src/docs/kit/github-pm-starter-kit .
ls github-pm-starter-kit
파일
왼쪽 목록에서 파일을 고르면 내용을 보여 준다. 스크립트는 실행하기 전에 여기서 읽는다.
README.md
backlog.tsv
seed-backlog.sh
weekly-digest.sh
sprint-report.sh
catch-up.sh
schedule.tsv
cpm.sh
link-deps.sh
evm-report.sh
flow-metrics.sh
forecast.sh
event-log.sh
process-map.sh
process-rules.tsv
lead-lag.sh
discussion-digest.sh
branch-report.sh
wiki-sync.sh
log-check.sh
bottleneck.sh
compare.sh
whatif.sh
pm4py-notebook.py
roles.tsv
lib/workdays.jq
lib/cpm.jq
lib/eventlog.jq
issues/LP-01.md
issues/LP-02.md
issues/LP-03.md
issues/LP-04.md
issues/LP-05.md
issues/LP-06.md
templates/sprint-record.md
templates/ISSUE_TEMPLATE/task.yml
templates/pull_request_template.md
templates/status-report.md
templates/workflows/pm-snapshot.yml
templates/workflows/process-report.yml
templates/process-analysis-report.md
templates/improvement-proposal.md
samples/evm-input.sample.json
samples/event-log.sample.csv
duration.sh
xmr.sh
little.sh
forecast-check.sh
forecast-scope.sh
effect.py
km.py
templates/metric-spec.md
templates/experiment-design.md
samples/a-project-items.tsv
samples/a-forecast-history.tsv
samples/a-experiment-weekly.csv
baseline-diff.sh
control-matrix.sh
release-trace.sh
pr-event-log.sh
four-eyes.sh
templates/ISSUE_TEMPLATE/change-request.yml
templates/CODEOWNERS.example
templates/change-control.md
templates/ruleset-main.json
templates/workflows/control-check.yml
templates/control-report.md
samples/b-change-register.tsv
samples/b-control-rules.tsv
samples/b-rulesets.json
samples/b-collaborators.json
ocel-export.py
ocel-notebook.py
model-compare.py
declare-rules.py
drift-check.py
queue-mining.py
org-mining.py
review-sim.py
pr-predict.py
sra.sh
decision-queue.sh
wsjf.sh
templates/tailoring.md
templates/ISSUE_TEMPLATE/risk.yml
templates/ISSUE_TEMPLATE/decision.yml
templates/stakeholder-register.md
templates/communication-plan.md
templates/benefits-tracking.md
templates/workflows/decision-queue.yml
templates/workflows/benefits-review.yml
samples/d-schedule-3pt.tsv
samples/d-portfolio.tsv
samples/d-risk-weekly.tsv
samples/d-decisions.json
스크립트 요약
스크립트 입력 출력 GitHub에 쓰는가 사용 실습
seed-backlog.sh저장소, Project 번호, backlog.tsv 이슈, Project 항목, pm-lab/backlog-map.tsv 쓴다 (확인 후) 실습 5
weekly-digest.sh저장소, 기간, 선택: Project와 스프린트 Markdown 리포트 (화면) 쓰지 않는다 실습 11
sprint-report.sh시작·종료 JSON 파일 Markdown 비교 보고 (화면) 접속하지 않는다 실습 12
catch-up.sh선택: 저장소 이름 실습 1~5의 결과물, pm-lab/env.sh 쓴다 진도를 놓쳤을 때
cpm.shschedule.tsv, 시작일, 마감일주경로와 여유 (화면), --commands로 필드 입력 명령 접속하지 않는다 실습 13
link-deps.sh저장소, schedule.tsv 이슈 의존성(Blocked by) 쓴다 (--dry-run 가능) 실습 13
evm-report.shProject 항목 JSON, 기준일 EVM과 획득 일정 보고 (화면), 추세 CSV 접속하지 않는다 실습 14
flow-metrics.sh저장소, 기간 처리량, 리드 타임, PR 사이클 타임 (화면) 쓰지 않는다 실습 15
forecast.sh남은 업무 수, 주별 처리량 완료 확률 표와 분포 (화면) 접속하지 않는다 실습 15
wiki-sync.sh저장소, 선택: 상태 보고 폴더, 프로세스 지도 파일 위키 페이지(마일스톤, 결정 기록, 상태 보고, 프로세스 지도) 위키에 쓴다 (--push일 때) 실습 17
branch-report.sh저장소, 기준일 브랜치별 업무, 마지막 커밋, PR 판정 (화면) 쓰지 않는다 실습 18
discussion-digest.sh저장소, 기간 결정 기록, 토론, 변경 요청 정리 (화면) 쓰지 않는다 실습 19
event-log.sh저장소, 선택: 스냅숏 폴더 이벤트 로그 CSV (화면) 쓰지 않는다 실습 20
lead-lag.shschedule.tsv, 이벤트 로그, 시작일업무별·관계별 계획과 실제 비교 (화면) 접속하지 않는다 실습 20
process-map.sh이벤트 로그, 규칙 파일 프로세스 지도 보고 또는 Mermaid 흐름도 (화면) 접속하지 않는다 실습 21, 23, 26
log-check.sh이벤트 로그 품질 점검 보고, --clean이면 정리한 로그 (화면) 접속하지 않는다 실습 22
pm4py-notebook.py이벤트 로그 (Python과 PM4Py 필요) 변형, 모델 품질, 정렬, 기간 비교 (화면), 그림 DOT 파일 접속하지 않는다 실습 24, 26, 27
bottleneck.sh이벤트 로그, 선택: 역할 파일, 기간 단계별 대기, 요일별 리뷰 대기, 재작업, 리뷰 집중도, 역할 넘김 (화면) 접속하지 않는다 실습 25
compare.sh이벤트 로그, 나누는 기준 묶음별 지표 10개 비교 (화면) 접속하지 않는다 실습 27
whatif.sh이벤트 로그, 시나리오, 기간 개선 효과 어림 (화면) 접속하지 않는다 실습 28
2단계 자료 내용
samples/orbit-event-log.csv가상 팀 Orbit의 합성 로그. 업무 260건, 사건 1,988건, 2026-03-03 ~ 09-04
samples/orbit-event-log-clean.csv위 로그에 log-check.sh --clean을 적용한 결과. 업무 257건, 사건 1,975건
roles.tsv아이디와 역할(PM, 개발, QA). bottleneck.sh --roles가 읽는다
templates/process-analysis-report.md, improvement-proposal.md분석 보고서 여덟 절 양식과 개선안 양식
templates/workflows/process-report.yml매주 이벤트 로그와 병목 보고를 pm-data 브랜치에 남기는 워크플로
심화 과정 스크립트
트랙 A~D의 스크립트는 모두 결과를 표준 출력에 Markdown으로 낸다. 별도 표시가 없는 출력은 화면에 나오며, 파일로 남길 때는 > pm-lab/파일이름을 붙인다.
트랙 A · 측정과 판단 입력 출력 GitHub에 쓰는가 모듈
duration.sh이벤트 로그, 시작·끝 사건, 달력 또는 업무 시간 소요 시간 분포, --list면 업무별 TSV 접속하지 않는다 A1, A2
xmr.sh이벤트 로그(--series throughput/lead/review) 또는 --values XmR 관리도 표와 신호, --tsv 접속하지 않는다 A2, A3, A4
little.sh이벤트 로그, --from·--to L, λ, W와 조건 점검 표 접속하지 않는다 A2
forecast-check.sh예측 기록 TSV 적중률, 브라이어 점수, 보정 표, 참조 집단 계수, 범위 증가율 접속하지 않는다 A3
forecast-scope.sh남은 업무 수, 주별 처리량, --window·--split·--growth 완료 확률 표, 마감 확률, --record면 기록 한 줄 접속하지 않는다 A3
effect.py주별 값 CSV·TSV 또는 건수 이중차분, 중단 시계열, 비율의 이중차분과 95% 신뢰구간, 검정력 접속하지 않는다 A4
km.py원본 이벤트 로그 열린 업무를 뺀 값과 카플란·마이어 분위수 비교, --svg면 곡선 접속하지 않는다 A4
트랙 B · GitHub로 하는 통제 입력 출력 GitHub에 쓰는가 모듈
baseline-diff.sh기준선·현재 스냅숏 JSON, 선택: 변경 대장 TSV 기준선 차이 보고 접속하지 않는다 B1
control-matrix.sh규칙 세트 JSON 배열, 협업자 JSON, 선택: roles.tsv 통제 매트릭스 접속하지 않는다 B2
release-trace.shgh pr list --json 결과, 선택: gh issue list --json 결과릴리스 추적 보고 접속하지 않는다 B3
pr-event-log.sh저장소 또는 --from-json 파일 PR 단위 이벤트 로그 CSV 쓰지 않는다 (--from-json이면 접속하지 않는다) B4
four-eyes.shPR 단위 이벤트 로그 4-eyes 점검 보고, --count면 미해결 건수 접속하지 않는다 B4
트랙 C · 프로세스 마이닝 심화 입력 출력 GitHub에 쓰는가 모듈
ocel-export.py이벤트 로그, 선택: roles.tsv OCEL 2.0 JSON 또는 SQLite, 선택: 가명 대응표(--map) 접속하지 않는다 C1
ocel-notebook.pyOCEL 2.0 파일 객체 수, 평탄화 비교, 수렴·발산, OC-DFG 연결, 선택: --out 폴더에 DOT 파일 접속하지 않는다 C1
model-compare.py이벤트 로그, 선택: 프로세스 트리(--tree) 발견 알고리즘별 페트리넷의 크기, 건전성, 적합도, 정밀도, 일반화, 단순성 비교 접속하지 않는다 C2
declare-rules.py이벤트 로그, process-rules.tsv 선언적 제약 발견, 팀 규칙과 비교, 기간 사이 신뢰도 변화 접속하지 않는다 C2
drift-check.py이벤트 로그 기간 창 통계 검정으로 찾은 표류 지점 접속하지 않는다 C2
queue-mining.py이벤트 로그 PR 첫 리뷰 대기열의 도착률, 리뷰어별 몫과 대기, 리틀의 법칙 점검, 묶음 리뷰 접속하지 않는다 C3
org-mining.py이벤트 로그, 선택: roles.tsv 넘김·함께 일함 관계, 역할 발견, 첫 리뷰가 변경 요청으로 갈라지는 분기의 결정 나무 접속하지 않는다 C3
review-sim.py이벤트 로그 리뷰 배정 정책별 시뮬레이션 비교 접속하지 않는다 C3
pr-predict.py원본 이벤트 로그 지연 예측 평가 보고와 경보 목록, 선택: 모델 문서(--card) 접속하지 않는다 C4
트랙 D · 프로젝트 관리 본류 입력 출력 GitHub에 쓰는가 모듈
sra.shsamples/d-schedule-3pt.tsv, 시작일, 마감일, 시행 수P50·P80·P90, 마감 확률, 주경로 지수, 기간·완료일 상관, 히스토그램 접속하지 않는다 D2
decision-queue.shgh issue list --label kind:decision --json … 결과결정 요청 대기열, --fail-overdue면 기한 초과 시 종료 코드 2 접속하지 않는다 D3
wsjf.shsamples/d-portfolio.tsvWSJF와 CD3 순위, 순서별 총 지연 비용 접속하지 않는다 D4
심화 과정 양식과 자료 내용 모듈
templates/metric-spec.md, experiment-design.md지표 정의서 양식, 개선 실험 설계서 양식 A1, A4
samples/a-*.tsv, a-experiment-weekly.csvPriority 예시, 예측 기록(합성), 두 저장소 순차 도입 주별 값(합성) A1, A3, A4
templates/ISSUE_TEMPLATE/change-request.yml, CODEOWNERS.example, change-control.md변경 요청 양식, 코드 소유자 예시, 변경 통제 절차서 양식 B1
templates/ruleset-main.json규칙 세트 생성 REST 본문 B2
templates/workflows/control-check.yml, control-report.md주간 통제 점검 워크플로, 분기 통제 점검 보고 양식 B4
samples/b-*기준선·현재 스냅숏, 변경 대장, 규칙 세트, 협업자, 릴리스 PR·이슈, PR 이벤트 로그 예시 B1~B4
samples/c-orbit-ocel.jsonOrbit 로그를 바꾼 OCEL 2.0 예시 파일 (약 640KB, 파일 목록에는 싣지 않았다) C1
templates/tailoring.md팀 맞춤 원칙 양식 D1
templates/ISSUE_TEMPLATE/risk.yml, decision.yml리스크 이슈 양식(kind:risk), 결정 요청 이슈 양식(kind:decision) D2, D3
templates/stakeholder-register.md, communication-plan.md이해관계자 분석표, 소통 계획 양식 D3
templates/benefits-tracking.md효익 추적 계획 양식 D4
templates/workflows/decision-queue.yml기한을 넘긴 결정 요청을 DECISION_ISSUE 변수의 이슈에 댓글로 알리는 워크플로 D3
templates/workflows/benefits-review.yml마일스톤을 닫으면 [효익 확인] 이슈(kind:benefit)를 만드는 워크플로 D4
samples/d-*3점 추정 일정, 포트폴리오, 주별 리스크, 결정 요청 JSON, 작성 예시 문서 D1~D4
모든 스크립트는 Bash 3.2 이상(macOS 기본 셸 포함)과 gh 2.97.0 이상에서 동작하도록 작성했다. sprint-report.sh, cpm.sh, evm-report.sh와 이벤트 로그를 읽는 스크립트는 jq 1.6 이상이 필요하다. pm4py-notebook.py는 Python 3.9 이상과 PM4Py 2.7.23.8에서 확인했다. 심화 과정 Python 스크립트가 쓰는 패키지는 아래 표와 같다. 자세한 동작 규칙과 다음 프로젝트에서 바꿔 쓰는 방법은 키트의 README.md에 있다.
Python 스크립트 패키지
effect.pypandas, numpy, scipy, statsmodels
km.pypandas, numpy (--svg를 쓸 때 matplotlib)
ocel-export.py표준 라이브러리만
ocel-notebook.py, model-compare.pypm4py 2.7.23.8, pandas
declare-rules.pypm4py 2.7.23.8, pandas, scipy
org-mining.pypm4py 2.7.23.8, pandas, scikit-learn
drift-check.pynumpy, scipy
queue-mining.pynumpy
review-sim.pysimpy, numpy
pr-predict.pynumpy, scikit-learn
다음 프로젝트에서 바꿔 쓸 곳
파일 바꿀 내용
backlog.tsv업무 키, 제목, 라벨, 마일스톤, Priority, 예시 스프린트, 본문 파일 이름. 열은 탭으로 나누고 빈 값은 -로 쓴다.
issues/*.md업무 본문. 파일 이름은 backlog.tsv의 마지막 열과 같아야 한다.
templates/*팀의 운영 규칙에 맞춘 양식 문구