강의자료·워크숍 자료를 HTML 슬라이드덱으로 만들고, 브라우저에 띄운 채로 고칠 문장을 드래그 선택해 지시하면 즉시 반영되는 라이브 편집 시스템의 오케스트레이터. 인터뷰 → 구성안 승인 게이트 → HTML 빌드 → 라이브 편집 → 배포의 5단계로 진행한다. 채팅에 '몇 번째 슬라이드가 어떻다'고 말로 지목할 필요 없이 화면에서 직접 고친다. '강의자료 만들어줘', '강의 슬라이드', '워크숍 자료', '교육자료', '세미나 발표자료', 'HTML 슬라이드', '슬라이드덱' 요청 시 반드시 사용. 후속 작업: 슬라이드 수정·추가·삭제·분할·합치기·순서 변경, 라이브 편집 시작·재개, 피드백 반영, 되돌리기, 특정 장만 다시, 구성안 재검토, 분량 늘리기·줄이기, 기존 HTML 강의자료 편집·개선, 발표자 노트 작성, 배포·공유 요청 시에도 반드시 이 스킬을 사용. ※ .pptx 파일 산출은 axlabs-mckinsey-pptx 플러그인, 한글 .hwpx 문서는 각 문서 하네스를...
Scanned 9/6/2026
Install to Claude Code
npx -y skills add parkjui92/lecture-deck-kit --skill lecture-deck-orchestrator --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Lecture Deck Orchestrator?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/parkjui92-lecture-deck-orchestrator)More formats (shields.io, HTML) on the badges page.
---
name: lecture-deck-orchestrator
description: "강의자료·워크숍 자료를 HTML 슬라이드덱으로 만들고, 브라우저에 띄운 채로 고칠 문장을 드래그 선택해 지시하면 즉시 반영되는 라이브 편집 시스템의 오케스트레이터. 인터뷰 → 구성안 승인 게이트 → HTML 빌드 → 라이브 편집 → 배포의 5단계로 진행한다. 채팅에 '몇 번째 슬라이드가 어떻다'고 말로 지목할 필요 없이 화면에서 직접 고친다. '강의자료 만들어줘', '강의 슬라이드', '워크숍 자료', '교육자료', '세미나 발표자료', 'HTML 슬라이드', '슬라이드덱' 요청 시 반드시 사용. 후속 작업: 슬라이드 수정·추가·삭제·분할·합치기·순서 변경, 라이브 편집 시작·재개, 피드백 반영, 되돌리기, 특정 장만 다시, 구성안 재검토, 분량 늘리기·줄이기, 기존 HTML 강의자료 편집·개선, 발표자 노트 작성, 배포·공유 요청 시에도 반드시 이 스킬을 사용. ※ .pptx 파일 산출은 axlabs-mckinsey-pptx 플러그인, 한글 .hwpx 문서는 각 문서 하네스를 사용."
---
# 강의자료 제작 · 라이브 편집 오케스트레이터
강의자료를 **한 개의 자기완결 HTML 파일**로 만들고, 브라우저에 띄운 상태에서
사용자가 화면의 문장을 드래그 선택해 남긴 지시를 즉시 반영한다.
핵심 전환: 사용자가 "3번 슬라이드가 너무 방어적이야"라고 **말로 지목**하는 대신,
그 문장을 **화면에서 긁어** "덜 방어적으로"라고 적는다. 지목 비용이 0이 된다.
## 구성 자산
| 자산 | 위치 | 역할 |
|------|------|------|
| 서버 | `lecture-live-edit/scripts/server.py` | 정적 서빙 + 오버레이 주입 + 피드백 수집 |
| 오버레이 | `lecture-live-edit/scripts/editor.js` | 하이라이트 → 지시 UI, 자동 새로고침 |
| 큐 CLI | `lecture-live-edit/scripts/lle.py` | `pending` / `done` / `status` / `adopt` / `revert` |
| 덱 규격 | `lecture-deck-build` 스킬 | 표준 골격·슬라이드 문법·인터뷰 질문 |
| 편집 규약 | `lecture-live-edit` 스킬 | 드레인 절차·앵커링·재개 의식 |
에이전트 팀을 쓰지 않는다. 라이브 편집은 **반응 속도가 품질**이므로 메인 세션이 직접 편집한다.
(대규모 신규 집필로 조사가 많이 필요할 때만 `Explore`/`general-purpose`로 조사만 분리한다.)
---
## Phase 0 — 컨텍스트 확인 (항상 먼저)
작업 폴더는 강의별로 하나씩 둔다(`<작업루트>/<강의명>/`). 사용자가 지정하지 않으면 현재 폴더를 쓴다. 다음을 확인해 분기한다.
1. **대상 폴더에 `feedback/` 이 있다** → 진행 중인 강의. **재개 의식**(Phase 4의 재개 절차)으로 간다.
2. **사용자가 기존 HTML 파일을 지목했다** → **입양**(`lle.py adopt`) 후 Phase 3 뒷부분(서버 기동)부터.
3. **그 외** → 신규. Phase 1로.
> ⚠️ **어떤 턴이든 시작할 때**, 라이브 편집 중인 프로젝트가 있으면
> `python3 "$TOOL"/lle.py status --root <폴더>` 로 `pending` 을 먼저 확인한다
> (`$TOOL` 해석법은 `lecture-live-edit` 스킬의 "도구 경로 확인" 참조).
> 0이 아니면 사용자가 무슨 말을 하든 **먼저 드레인**하고 답한다. 이것이 알림이 유실돼도
> 피드백이 사라지지 않게 하는 최후의 안전망이다.
---
## Phase 1 — 인터뷰
`lecture-deck-build` 스킬의 `references/interview-storyline.md` 를 Read 해 질문 세트를 쓴다.
한 번에 다 묻지 말고 **AskUserQuestion 1~2회**로 핵심만 확정한다.
반드시 확정할 것: **청중 / 목적(끝나고 무엇을 할 수 있게 되나) / 시간 / 톤 / 기존 자료 유무**.
나머지(분량·시각 형식·색)는 기본값으로 제안하고 라이브 편집에서 고치게 한다.
— 인터뷰를 길게 끄는 것이 이 시스템의 취지에 반한다. **일단 만들고 화면에서 고친다.**
기존 자료(.hwpx/.docx/.pdf/.md/기존 덱)를 주면 먼저 읽어 골자를 인터뷰 답변으로 대체한다.
---
## Phase 2 — 구성안 + ★ 승인 게이트
`_workspace/구성안.md` 에 장별 설계를 표로 쓴다. 각 행: `sid · 유형 · 헤드 메시지 · 근거/자료 · 시각 형식`.
- **헤드 메시지**는 "무엇에 대해 말한다"가 아니라 **주장 한 문장**으로 쓴다.
(✗ "AI 도입 현황" → ✓ "도입률은 높지만 정착률은 3분의 1이다")
- 40~50분 강의 ≈ 20~28장이 기준. 간지(divider)를 축마다 넣는다.
**★ 구성안 사용자 승인 게이트 (필수)**
표를 제시하고 승인을 받는다. 승인 없이 빌드로 넘어가지 않는다.
이 게이트에서 걸러진 구조 오류 1건이 라이브 편집 20건보다 싸다.
사용자가 "그냥 만들어봐"라고 하면 승인으로 간주하고 진행한다.
---
## Phase 3 — 빌드 · 기동
1. `lecture-deck-build` 스킬을 따라 `<강의명>/deck.html` 을 만든다
(표준 골격 `assets/deck-skeleton.html` 복사 후 내용 채우기).
2. **서버 경로와 포트를 해석한다.** `launch.json` 은 자연어 플레이스홀더를 못 쓰므로
여기서만 실제 절대경로가 필요하다.
```bash
SERVER=$(find ~/.claude -name server.py -path '*lecture-live-edit/scripts*' 2>/dev/null | head -1)
python3 -c "import socket;s=socket.socket();print('4601 사용중' if s.connect_ex(('127.0.0.1',4601))==0 else '4601 비어있음')"
```
포트는 강의별로 고정하며 4601부터 순서대로 쓴다(이미 쓰이면 4602, 4603 …).
3. 작업 루트의 `.claude/launch.json` 에 항목을 **추가**한다(기존 항목을 지우지 않는다).
`<SERVER>` 자리에 2단계에서 얻은 절대경로를 넣는다:
```json
{ "name": "<강의명>", "runtimeExecutable": "python3",
"runtimeArgs": ["<SERVER>", "--root", "./<강의명>", "--port", "4601"],
"port": 4601 }
```
4. `preview_start({name: "<강의명>"})` 로 서버를 띄우고 Browser pane 에 표시한다.
5. 스크린샷으로 첫 화면을 확인한다. 깨진 레이아웃은 여기서 잡는다.
---
## Phase 4 — 라이브 편집 (상주)
**Monitor 장전** — 사용자가 피드백을 보내면 자동으로 깨어나게 한다. 프로젝트당 1회.
```
Monitor(persistent: true, timeout_ms: 3600000,
description: "<강의명> 라이브 편집 피드백",
command: tail -F -n 0 "<절대경로>/feedback/queue.jsonl" | (JSON을 한 줄 요약으로 변환))
```
정확한 커맨드와 재장전 규칙은 `lecture-live-edit` 스킬을 Read 해서 쓴다.
**알림이 오면** → `lecture-live-edit` 스킬의 드레인 절차를 그대로 수행한다:
`lle.py pending` → 슬라이드별 Edit → `lle.py done --cursor <cursor_after> --note "..."`.
`done` 시점에 브라우저가 자동으로 새로고침되며 보던 슬라이드에 그대로 머문다.
**사용자에게 안내할 조작** (Phase 3 직후 한 번):
> 화면에서 고치고 싶은 **문장을 드래그**하면 뜨는 [수정 지시] 버튼을 누르고 어떻게 고칠지 적어 보내세요.
> 장 전체는 슬라이드 위 💬 배지, 자료 전체는 우하단 [덱 전체]. 보내면 제가 바로 고치고 화면이 갱신됩니다.
> 조작: ← → 이동 · `O` 목차 · `N` 발표자 노트 · `T` 밝게/어둡게 · `F` 전체화면
**세션 재개 의식** (세션이 끊겼다가 돌아왔을 때 — Monitor 는 세션과 함께 죽지만 큐는 디스크에 남아 유실이 없다):
1. `preview_start({name})` (이미 떠 있으면 재사용된다)
2. `lle.py status` → `pending` 이 있으면 먼저 드레인
3. Monitor 재장전
4. 사용자에게 한 줄 보고: "이어서 편집 가능합니다. 밀린 피드백 n건은 반영했습니다."
---
## Phase 5 — 마감 · 배포
`deck.html` 은 **이미 클린하다**(오버레이는 서버가 응답에만 주입하므로 파일에 없다). 별도 정리 불필요.
확인만: `grep -c "__editor" <강의명>/deck.html` → `0` 이어야 한다.
배포 경로를 제시하고 **사용자가 고른 뒤에** 실행한다:
| 방법 | 쓸 때 | 방법 |
|------|-------|------|
| 파일 그대로 | 가장 안전. 오프라인·수정 자유 | `SendUserFile` 로 `deck.html` 전달. 더블클릭하면 열린다 |
| 링크 공유 | 수강생에게 URL로 배포 | `Artifact` 로 게시 → URL. **게시 전 사용자 확인 필수** |
| 인쇄·PDF | 핸드아웃 | 브라우저에서 `Cmd+P` (골격에 인쇄 CSS 있음) |
Artifact 게시 시: 골격은 외부 CDN을 쓰지 않으므로 CSP 제약을 그대로 통과한다.
게시는 되돌리기 어려운 외부 공개 행위이므로 **반드시 먼저 묻는다.**
---
## 운영 원칙
- **인터뷰는 짧게, 수정은 화면에서.** 완벽한 첫 초안보다 빠른 첫 초안이 이 시스템의 설계 의도다.
- **추측해서 반영하지 않는다.** 지시가 모호하면 `--needs-input` 으로 표시하고 채팅으로 되묻는다.
나머지 항목은 그대로 진행한다(부분 드레인).
- **자동 새로고침은 `done` 한 번에 한 번.** 여러 슬라이드를 고쳐도 마지막에 한 번만 게시해
중간 상태가 화면에 노출되지 않게 한다.
- **되돌리기는 항상 가능.** `pending` 이 편집 직전 스냅샷을 남기므로
"직전으로 되돌려" 는 `lle.py revert --root <폴더>` 한 번이다.
- 강의 1건 = 폴더 1개 = 포트 1개. 같은 프로젝트를 두 세션이 동시에 편집하지 않는다(커서 이중 기록).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!