skills/pdf/SKILL.md
미팅 분석 리포트(analysis.md)를 PDF로 변환하는 스킬. mermaid 다이어그램을 사전에 PNG로 렌더하여 끼워 넣은 뒤 md-to-pdf로 변환한다. 슬라이드 이미지(images/slide-*.png)와 mermaid 도식이 모두 포함된 단일 PDF 파일을 생성하여 공유하기 쉽게 만든다. WHEN: "/pdf", "분석 PDF로", "리포트 PDF", "PDF로 변환", "PDF로 만들어줘", "공유용 PDF" WHEN NOT: 마크다운 그대로 공유 (zip만 필요), HTML 변환, Notion 업로드
npx skillsauth add hwanh2/meeting-kit pdfInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
미팅 분석 리포트(analysis.md)를 mermaid 다이어그램까지 렌더된 PDF로 변환한다.
meeting-review로 analysis.md가 만들어진 뒤, 다른 사람과 공유해야 할 때/pdf mitsui-q2) → ~/meetings/*-{mitsui-q2}/ 매칭~/meetings/.current (활성 미팅) 우선~/meetings/에서 가장 최근 수정된 폴더대상 미팅 폴더에 analysis.md가 있는지 확인.
❌ analysis.md가 없습니다. 먼저 /meeting-kit:meeting-review로 분석을 생성하세요. 안내 후 중단analysis.md에서 ```mermaid ... ``` 블록을 모두 추출해 PNG로 렌더한다.
cd {meeting-folder}
mkdir -p mermaid-tmp
# 1) 블록 추출
python3 << 'PY'
import re, pathlib
src = pathlib.Path("analysis.md").read_text()
blocks = re.findall(r"```mermaid\n(.*?)\n```", src, re.DOTALL)
for i, b in enumerate(blocks, 1):
pathlib.Path(f"mermaid-tmp/diagram-{i}.mmd").write_text(b)
print(f"extracted {len(blocks)} mermaid blocks")
PY
# 2) 각 블록을 PNG로 렌더 (mermaid-cli)
for i in $(seq 1 {N}); do
npx --yes -p @mermaid-js/mermaid-cli mmdc \
-i mermaid-tmp/diagram-$i.mmd \
-o mermaid-tmp/diagram-$i.png \
-b white -w 1600
done
mermaid 블록이 0개면 이 단계는 건너뛴다.
python3 << 'PY'
import re, pathlib
src = pathlib.Path("analysis.md").read_text()
counter = [0]
def repl(m):
counter[0] += 1
return f""
out = re.sub(r"```mermaid\n.*?\n```", repl, src, flags=re.DOTALL)
pathlib.Path("analysis-pdf.md").write_text(out)
print(f"replaced {counter[0]} blocks → analysis-pdf.md")
PY
rtk proxy npx --yes md-to-pdf analysis-pdf.md \
--launch-options '{"args":["--no-sandbox"]}'
중요: 사용자 환경에 RTK(rust token killer) 훅이 설치되어 있으면 일반
npx md-to-pdf호출이 RTK와 충돌해 실패할 수 있다. 이 경우rtk proxy npx ...형태로 우회한다. RTK가 없는 환경이면rtk proxy접두사 없이도 동작한다 — 둘 다 시도하라.
mv -f analysis-pdf.pdf analysis.pdf
rm analysis-pdf.md
# mermaid-tmp/는 보존 (다음 변환 시 캐시 가능)
✅ PDF 생성 완료 → {meeting-folder}/analysis.pdf ({size}MB)
- 슬라이드 이미지: {slide-count}장 embed
- mermaid 다이어그램: {N}개 렌더
- 총 페이지: (md-to-pdf 출력에서 추출 가능하면)
전체 PDF 내용을 인라인으로 보여주지 말 것.
| 도구 | 설치 여부 확인 |
|---|---|
| python3 | macOS 기본 |
| npx | Node.js 설치 시 자동 |
| @mermaid-js/mermaid-cli (mmdc) | npx로 자동 다운로드 (첫 실행 시 puppeteer 포함, 시간 걸림) |
| md-to-pdf | npx로 자동 다운로드 |
| rtk (선택) | 사용자 환경에 RTK 훅이 있을 때만 필요 |
| 상황 | 대처 |
|---|---|
| analysis.md 없음 | meeting-review 먼저 실행하라고 안내 |
| 활성 미팅도 인자도 없음 | 후보 목록 제시 |
| mermaid 블록 0개 | 추출/렌더 단계 건너뛰고 바로 md-to-pdf 실행 |
| md-to-pdf 첫 실행 (puppeteer 다운로드) | timeout 5분 정도로 설정 |
| 기존 analysis.pdf 있음 | 덮어쓰기 (확인 안 물어봄, 재생성이 흔하므로) |
| RTK 없음 | rtk proxy 접두사 없이 재시도 |
analysis.md 원본은 절대 수정하지 말 것 — 항상 analysis-pdf.md 임시본 사용mermaid-tmp/ 폴더는 보존 (사용자가 직접 mermaid PNG가 필요할 수도 있음)documentation
생성된 발표 슬라이드(deck.md)를 입력으로 받아 발표자가 그대로 읽을 수 있는 발표 대본(script.md)을 생성하는 스킬. 사내 공유 톤(존댓말, 세미 포멀). 슬라이드별 본문 + 강조 포인트 + 전환 멘트 + 예상 질문 + 시간 배분 포함. 무거운 작성은 script-writer 서브에이전트에 위임하여 메인 컨텍스트를 보호한다. WHEN: "/script", "발표 대본", "발표 스크립트", "발표 멘트", "이거 어떻게 말해야 해", "발표 연습", "리허설" WHEN NOT: 슬라이드 자체 생성(→ deck), 종합 분석(→ meeting-review)
tools
미팅 중 흐름을 놓쳤을 때 빠르게 따라잡기 위한 라이브 요약 스킬. 현재 활성 미팅의 notes.md를 읽고 3~5줄 요약을 즉시 반환한다. 메인 세션에서 직접 처리 (서브에이전트 X) — 응답 속도가 핵심. /meeting-review와 다른 점: 짧고 빠르며, 미팅 도중 사용 목적. WHEN: "/recap", "지금까지 뭐 얘기했지", "방금까지 요약해줘", "흐름 놓쳤어", "지금 어디까지 왔어", "중간 정리" WHEN NOT: 미팅 후 전체 분석(→ meeting-review), 특정 질문(→ ask), 캡처(→ cap)
tools
~/meetings/ 안의 모든 미팅 폴더 목록을 보여주는 스킬. 각 미팅의 날짜/이름/슬라이드 수/발화 블록 수/시작 시각/분석 여부를 표 형태로 출력하고, 현재 활성 미팅을 표시한다. 어떤 미팅이 있었는지 빠르게 훑어보고 싶을 때 사용. WHEN: "/meetings", "미팅 목록", "지금까지 어떤 미팅", "list meetings", "활성 미팅 뭐야", "어떤 미팅이 있었지" WHEN NOT: 특정 미팅 분석(→ meeting-review), 캡처(→ cap)
data-ai
미팅 종료 후 전체 분석 리포트를 생성하는 스킬. notes.md(캡처) + context.md(배경) + 슬라이드 이미지를 모두 종합하여 요약/토픽/용어 사전/결정 사항/열린 질문/액션 아이템을 포함한 analysis.md를 생성한다. 관련 슬라이드 이미지를 embed하고 필요시 mermaid 다이어그램도 생성하여 이해를 돕는다. 무거운 분석은 meeting-analyzer 서브에이전트에 위임하여 메인 컨텍스트를 보호한다. 코드 PR 리뷰가 아닌 외국어 미팅 분석 전용. (PR 리뷰는 별도 review 스킬 사용) WHEN: "/meeting-review", "미팅 분석해줘", "미팅 정리해줘", "오늘 미팅 어땠어", "미팅 전체 분석", "미팅 후 정리", "외국어 미팅 정리" WHEN NOT: 미팅 중 짧은 요약(→ recap), 특정 용어 질문(→ ask), 캡처(→ cap), 코드/PR 리뷰(→ review)