참고 자료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

파일

왼쪽 목록에서 파일을 고르면 내용을 보여 준다. 스크립트는 실행하기 전에 여기서 읽는다.

파일 목록에서 하나를 고른다.

스크립트 요약

스크립트입력출력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) 또는 --valuesXmR 관리도 표와 신호, --tsv접속하지 않는다A2, A3, A4
little.sh이벤트 로그, --from·--toL, λ, 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.tsvOCEL 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/*팀의 운영 규칙에 맞춘 양식 문구