Adaptive Presentation
사용자가 바로 발표하고 편집할 수 있으며 첫 본문부터 결론·의미·다음 행동이 보이는 PowerPoint를 만든다.
산출물
- 기본 산출물: 요청한 장수의 편집 가능한
.pptx 1개. 템플릿이 없으면 16:9, 있으면 원본 canvas를 보존한다.
- 사용자가 요청한 경우에만 PDF 또는 생성 스크립트를 추가한다.
- 최종 출력 위치에는 요청한 파일만 남긴다. 조사 메모·생성 스크립트·PDF·QA 이미지는 저장소와 최종
출력 폴더 밖의 세션 작업 디렉터리에 두고 완료 시 정리한다.
<session>은 client가 제공한 artifact 디렉터리다. 없으면 저장소·최종 출력 폴더 밖의 고유 OS
temporary directory를 사용하고 최종 파일을 복사한 뒤 삭제한다.
입력
| 입력 |
처리 |
TOPIC |
반드시 확인하거나 문맥에서 명확히 추론 |
AUDIENCE |
직급·직무·사전지식에 맞춰 내용과 표현 조정 |
PURPOSE |
설명·의사결정·설득·교육·영업·보고 중 결정 |
SLIDE_COUNT |
지정하면 정확히 준수, 없으면 목적에 맞게 결정 |
LANG |
사용자 언어 사용. 한국어 덱은 설명 문장을 한글 우선으로 쓰되 서비스명·공식 기능명·정착된 기술 용어는 영문 유지 |
TEMPLATE/BRAND |
제공되면 profile을 추출하고 master·layout·font·color·canvas를 보존 |
OUTPUT |
사용자 지정 파일명·경로·형식 준수 |
결과를 크게 바꾸는 blocking 정보만 질문한다. 안전한 기본값이 있으면 가정을 표시하고 진행한다.
필수 워크플로
1. 조사와 Fact Ledger
- 외부 사실·최신 정보·가격·규제·제품 상태·고객 성과를 사용하는 경우
web-search 스킬을 호출한다.
검색 backend와 원문 검증 방법은 web-search가 결정하며 이 스킬에서 별도 정책을 정의하지 않는다.
- 사용자 제공 자료만 재구성하거나 외부 사실이 없는 창작형 덱은 불필요한 웹 조사를 강제하지 않는다.
- 복합 조사 결과는
web-search의 공통 Fact Ledger 계약으로 fact-ledger.md에 병합하고, deck spec
handoff용 fact-ledger.json도 공통 schema에 맞춰 만든다.
슬라이드 매핑은 Ledger를 확장하지 않고 storyline과 deck spec에 기록한다.
- 상충, Preview, 가정, 추정, 시연 데이터는 명시적으로 표시한다.
- 필요한 조사 축만 선택하고
web-search 완료 기준을 충족하면 탐색을 종료한다.
2. 스토리라인
코드 전에 reference/deck-spec.md의 deck-spec.json과 storyline.md에
요청 장수를 배분하고 슬라이드별로 다음을 확정한다.
- 청중이 받아들일 결론형 제목
- 기억해야 할 한 문장과 다음 판단·행동
- 사용할 Fact Ledger 근거와 출처
- 정보 관계에 맞는 시각 형태
- 이전·다음 슬라이드와의 논리적 연결
- 발표자가 그대로 말할 수 있는 핵심 메시지 약 5문장
- 사용자가 진행 질문·장표 전환 cue를 명시적으로 요청한 경우에만 해당 질문과 전환
제목만 연속해서 읽어도 논리가 완성되어야 한다. 결론이나 판단을 바꾸지 않는 장은 제거·통합하고,
고정 장수를 채워야 하면 반복 문구 대신 근거·사례·비교·실행 기준을 추가한다.
코드 작성 후에는 새 근거나 시각적 blocker가 있을 때만 storyline과 deck spec을 함께 갱신한다.
목적별 서사 패턴은 reference/narrative-patterns.md를 참고한다.
한국어·영문 균형 계약
- 한국어 덱의 기본 목표는 **설명용 영문 문자 약 40%**다.
protectedTerms의 공식명은 계산에서
중립 처리하며, 원시 영문 비율은 참고값으로만 기록한다.
- 고객 결과·설명·판단·행동·KPI 의미는 자연스러운 한국어를 우선한다.
- 서비스명, 제품명, 공식 기능명, 명령·API·SDK·프로토콜·표준 약어는 번역하지 않는다.
예:
GitHub Copilot, Microsoft Foundry, Hosted Agents, Code Review, Browser Tools,
Managed Settings, Session Streaming, Control Plane, AKS, ACA, MCP.
deck-spec.json의 languagePolicy.protectedTerms에는 해당 덱에서 반드시 영문으로 유지할 공식 용어를
기록한다. Verifier는 이 용어가 최종 PPTX에 실제로 존재하는지 확인한다.
- 한국어 문장 안에서 공식 영문명을 억지로 번역하거나, 반대로 설명 전체를 영어 catalog로 쓰지 않는다.
Code Review로 결함을 조기에 찾습니다처럼 역할 설명만 한국어로 연결한다.
비기술 청중에게 기술을 설명하는 계약
- 비기술 청중이라고 서비스·기능·architecture component를 제거하거나 모호한 한국어로 바꾸지 않는다.
기술 이름은 정확한 공식 영문과 capitalization을 유지한다.
- 기본 읽기 순서는
고객 질문/결론(쉬운 한글) → English 기술명 → 역할 설명(쉬운 한글) → 고객 가치·판단이다.
- 한 슬라이드에서 새로 소개하는 핵심 technical term은 원칙적으로 3~5개로 제한하고, 첫 등장 시
한 줄 역할 설명을 붙인다.
- 권장 예:
Hosted Agents — 격리된 환경에서 Agent를 실행
Foundry IQ — 사용자 권한을 반영해 근거를 찾음
Toolboxes — 허용된 업무 action을 연결
Code Review — 코드 품질을 검증
Control Plane — 여러 Agent의 상태·비용·위험을 관리
- 금지 예:
- 공식명
Hosted Agents를 주 라벨에서 호스팅 실행환경으로 대체
- 서비스명만 나열하고 고객에게 무엇이 달라지는지 설명하지 않음
- 설명 문장까지
permission-aware knowledge layer처럼 불필요하게 영어로 작성
3. 제작
reference/pptx-production.md를 따라 python-pptx로 직접 만든다.
- 템플릿이 있으면
scripts/inspect_template.py로 profile을 만들고 template-aware initializer로
master·layout·theme·canvas를 보존한다. 없으면 고정 템플릿을 강제하지 않는다.
scripts/toolcheck.py가 선택한 언어·환경별 설치 폰트를 deck-spec.json에 기록하고 제작에 사용한다.
- 이 repository의 한국어 기본 글꼴은
Apple SD Gothic Neo다. 표지·본문·표·도식·footer를 포함한
모든 visible text run에 같은 typeface를 명시하고 fontPolicy.requireAllTextFont=true로 기록한다.
본문 리딩 메시지는 Apple SD Gothic Neo · 27pt · Bold로 통일하고 fontPolicy.leadingMessage에 기록한다.
명시적 브랜드·템플릿 override가 있으면 그 값을 같은 contract에 기록하며, 임의 slide별 변경은 허용하지 않는다.
- 한국어 덱은
languagePolicy 기본값(targetLatinRatio=0.40, maxLatinRatio=0.55,
maxSlideLatinRatio=0.75)을 사용하고 관련 protectedTerms를 채운다.
protectedTerms에는 서비스명·공식 기능명뿐 아니라 해당 덱의 주요 architecture component와
안정적으로 통용되는 technical term을 포함한다. 해당 용어가 있는 장에는 쉬운 한글 역할 설명을 둔다.
- 한국어 덱은 모든 슬라이드에 speaker notes를 작성한다. 기존 notes가 있더라도 먼저 완전히 지우고
storyline·현재 slide visual·Fact Ledger만 기준으로 새로 생성한다. 기본은
core-only 모드이며
핵심 메시지: 한 블록만 작성한다. 질문:과 전환: 블록은 넣지 않는다.
- 노트는 슬라이드 문구를 반복하거나 상세 reference를 쌓지 않고 핵심 전달용 cue로 작성한다.
한국어 기본 목표는 장당 약 60초, 120
600자다. notes는 반드시 핵심 메시지:로 시작하고
슬라이드의 결론·작동 원리·고객 의미를 46문장, 즉 약 5문장으로 정리한다.
- 노트는 보고서 문장을 옮긴 글이 아니라 발표자가 그대로 읽어도 자연스러운 쉬운 구어체로 쓴다.
한 문장에는 한 가지 생각만 담고, 긴 명사 나열과 추상 표현은 짧은 동사형 문장으로 풀어 쓴다.
- 공식 제품명·기능명은 유지하되, 처음 나오는 technical term은
trace, 즉 실행 기록처럼 바로
이해할 수 있는 쉬운 표현으로 설명한다. 화면에 영문 용어가 많아도 노트까지 영문 catalog처럼 읽지
않으며, 승격 여부를 결정합니다보다 다음 버전으로 올릴지 정합니다처럼 말하기 쉬운 표현을 우선한다.
- 소리 내어 읽었을 때 숨이 차거나 의미가 한 번에 잡히지 않는 문장은 둘로 나눈다. 불필요한
~할 수 있습니다, ~에 해당합니다, ~을 의미합니다를 반복하지 않는다.
- 핵심 메시지는 제목을 바꿔 말하는 데 그치지 않고, 현재 visual의 핵심 요소 2~4개가 어떻게 연결되어
결론과 고객 의미를 만드는지 설명한다. 모든 라벨을 낭독하지 않고 결론, 근거, 작동 방식, 고객 영향,
판단 또는 행동을 한 문장씩 배분한다.
- 사용자가 workshop 진행용 질문과 슬라이드 간 bridge를 명시적으로 요청한 경우에만
speakerNotesPolicy.mode를 guided-flow로 설정해 기존 질문/핵심 메시지/전환 3블록을 사용한다.
notes에는 출처: 블록, Fact ID, URL을 넣지 않으며, 근거와 상태는 slide footer·Fact Ledger·deck
spec에만 둔다.
- 한 슬라이드는 질문 하나, 결론 하나, 핵심 근거 2~4개를 기본으로 한다.
- 첫 본문 슬라이드에서 핵심 결론·가치·다음 행동을 보여준다.
- 제목+불릿만 반복하지 않고 숫자·표·차트·흐름·비교·계층·타임라인 중 적합한 native visual을 사용한다.
- 핵심 도형·차트·텍스트는 편집 가능한 PowerPoint 객체로 만든다.
- 같은 역할의 본문 제목 크기와 색상 의미를 덱 전체에서 일관되게 유지한다. 한국어 기본 리딩 메시지는
Apple SD Gothic Neo · 27pt · Bold이며, 한글·Latin·complex-script run에 같은 typeface를 명시한다.
- 한국어 덱의 visible text에는 fallback font를 직접 선언하지 않는다. fallback은 LibreOffice/PDF 렌더
환경에서 selected font를 사용할 수 없을 때의 대체 렌더에만 허용한다.
- 작은 글씨로 과밀 문제를 숨기지 않는다. 주요 본문은 원칙적으로 15pt 이상을 유지한다.
- 차트는 실제 데이터와 축·단위·기준일을 사용한다. 외부 사실이 있는 슬라이드에는 사람이 이해할 수 있는
발행자·문서명·확인일을 footer에 표시하고
[F-001] 같은 내부 Fact ID는 노출하지 않는다.
- 권한이 불분명한 로고·인물·브랜드 자산을 임의 생성하지 않는다.
관계형 레이아웃 아이디어는 reference/slide-blueprints.md를 선택적으로
참고하고, 임원 편집 스타일은
reference/editorial-business-style.md를 따른다.
4. 렌더 검증과 수정
scripts/verify_deck.py와
reference/verification.md를 사용한다.
python3 -B .github/skills/adaptive-presentation/scripts/verify_deck.py <deck>.pptx --out <work> \
--deck-spec <work>/deck-spec.json
외부 사실 슬라이드는 deck spec의 claimIds에서 자동 도출한다. Verifier는 Fact Ledger의 발행자가
사람이 읽을 수 있는 footer 출처에 표시되는지 확인하고, 내부 Fact ID가 화면에 노출되면 실패한다.
- 동일한 최초 PPTX에 대해 구조 감사와 전체 렌더를 실행한다.
- compact contact sheet를 확인하고 위험 슬라이드만 상세 확인한다.
- 자동 검증이 지원하지 않는 chart·SmartArt와 unmapped text도 finding ID로 기록한다.
- 결함을 일괄 수정한다. 의도적 예외는 finding ID·검토 이유를 exception manifest에 기록한다.
- contact sheet와 위험 슬라이드를 확인한 뒤 현재 PPTX SHA-256에 묶인
visual-review.json을 만들고
verifier를 다시 실행한다.
시각 검증 없이 완료했다고 주장하지 않는다. 실행 최적화와 캐시는
reference/full-optimized.md를 따르되 품질 단계를 생략하지 않는다.
완료 조건
- 요청한 형식·장수·언어·템플릿 조건을 지켰다.
- 첫 본문에서 결론·가치·다음 행동이 보이고 제목만 읽어도 서사가 이어진다.
- 내용 전달이 목적인 본문 슬라이드에는 관계를 설명하는 시각 구조가 있다. 표지·section divider·단순
마무리 장은 장식적 visual을 억지로 추가하지 않는다.
- 자동 검증 범위의 geometry·rendered text 결함이 0이며, 미지원 객체는 finding 단위 검토 근거가 있다.
- 텍스트가 경계와 컨테이너 안에 있고 발표 거리에서 읽힌다.
- 외부 사실을 사용하는 슬라이드에 출처가 있고 Preview·가정·시연 데이터가 표시된다.
- 한국어 덱은 설명 문구가 한글 우선이고,
protectedTerms의 서비스·공식 기능명이 영문으로 유지되며,
language balance QA를 통과한다.
- 모든 슬라이드 notes가
핵심 메시지:로 시작하고 질문:·전환: 없이 4~6문장으로 정리되며,
출처·Fact ID·URL 없이 notes QA를 통과한다. 각 노트는 visual의 핵심 관계와 고객 의미를 설명하고,
발표자가 소리 내어 읽었을 때 보고서 문체나 긴 명사 나열 없이 쉬운 구어체로 전달된다.
- 최종 PPTX revision과 일치하는 전체 시각 검토 증거가 있다.
- PPTX가 정상적으로 열리고 압축 구조 오류가 없다.
- 저장소와 최종 출력 폴더에 임시
.py, .pyc, __pycache__, PDF, QA 이미지가 남지 않는다.
참고
1---2name: adaptive-presentation3description: 주제·청중·목적에 맞춘 편집 가능한 PowerPoint(.pptx)를 결론과 다음 행동이 먼저 보이도록 만듭니다. 필요한 조사 → 스토리라인 → python-pptx 제작 → 렌더 검증 순으로 실행하며 고정 템플릿 없이 내용에 맞게 구성합니다. WHEN: PPT 만들어줘, PPTX 생성, 발표자료, 슬라이드 덱, 임원 보고자료, 제안서, 영업 자료, 제품 소개서, 기술 아키텍처 발표, 교육·세미나·컨퍼런스 자료. NOT WHEN: 기존 문서의 텍스트 요약만 필요하거나 PowerPoint 파일이 아닌 웹 앱·단일 HTML 데모를 요청한 경우.4---5
6# Adaptive Presentation
7
8사용자가 바로 발표하고 편집할 수 있으며 첫 본문부터 **결론·의미·다음 행동**이 보이는 PowerPoint를 만든다.
9
10## 산출물
11
12- 기본 산출물: 요청한 장수의 편집 가능한 `.pptx` 1개. 템플릿이 없으면 16:9, 있으면 원본 canvas를 보존한다.
13- 사용자가 요청한 경우에만 PDF 또는 생성 스크립트를 추가한다.
14- 최종 출력 위치에는 요청한 파일만 남긴다. 조사 메모·생성 스크립트·PDF·QA 이미지는 저장소와 최종
15 출력 폴더 밖의 세션 작업 디렉터리에 두고 완료 시 정리한다.
16- `<session>`은 client가 제공한 artifact 디렉터리다. 없으면 저장소·최종 출력 폴더 밖의 고유 OS
17 temporary directory를 사용하고 최종 파일을 복사한 뒤 삭제한다.
18
19## 입력
20
21| 입력 | 처리 |
22|---|---|
23| `TOPIC` | 반드시 확인하거나 문맥에서 명확히 추론 |
24| `AUDIENCE` | 직급·직무·사전지식에 맞춰 내용과 표현 조정 |
25| `PURPOSE` | 설명·의사결정·설득·교육·영업·보고 중 결정 |
26| `SLIDE_COUNT` | 지정하면 정확히 준수, 없으면 목적에 맞게 결정 |
27| `LANG` | 사용자 언어 사용. 한국어 덱은 설명 문장을 한글 우선으로 쓰되 서비스명·공식 기능명·정착된 기술 용어는 영문 유지 |
28| `TEMPLATE/BRAND` | 제공되면 profile을 추출하고 master·layout·font·color·canvas를 보존 |
29| `OUTPUT` | 사용자 지정 파일명·경로·형식 준수 |
30
31결과를 크게 바꾸는 blocking 정보만 질문한다. 안전한 기본값이 있으면 가정을 표시하고 진행한다.
32
33## 필수 워크플로
34
35### 1. 조사와 Fact Ledger
36
37- 외부 사실·최신 정보·가격·규제·제품 상태·고객 성과를 사용하는 경우 `web-search` 스킬을 호출한다.
38 검색 backend와 원문 검증 방법은 `web-search`가 결정하며 이 스킬에서 별도 정책을 정의하지 않는다.
39- 사용자 제공 자료만 재구성하거나 외부 사실이 없는 창작형 덱은 불필요한 웹 조사를 강제하지 않는다.
40- 복합 조사 결과는 `web-search`의 공통 Fact Ledger 계약으로 `fact-ledger.md`에 병합하고, deck spec
41 handoff용 `fact-ledger.json`도 공통 schema에 맞춰 만든다.
42 슬라이드 매핑은 Ledger를 확장하지 않고 storyline과 deck spec에 기록한다.
43- 상충, Preview, 가정, 추정, 시연 데이터는 명시적으로 표시한다.
44- 필요한 조사 축만 선택하고 `web-search` 완료 기준을 충족하면 탐색을 종료한다.
45
46### 2. 스토리라인
47
48코드 전에 [`reference/deck-spec.md`](./reference/deck-spec.md)의 `deck-spec.json`과 `storyline.md`에
49요청 장수를 배분하고 슬라이드별로 다음을 확정한다.
50
51- 청중이 받아들일 결론형 제목
52- 기억해야 할 한 문장과 다음 판단·행동
53- 사용할 Fact Ledger 근거와 출처
54- 정보 관계에 맞는 시각 형태
55- 이전·다음 슬라이드와의 논리적 연결
56- 발표자가 그대로 말할 수 있는 핵심 메시지 약 5문장
57- 사용자가 진행 질문·장표 전환 cue를 명시적으로 요청한 경우에만 해당 질문과 전환
58
59제목만 연속해서 읽어도 논리가 완성되어야 한다. 결론이나 판단을 바꾸지 않는 장은 제거·통합하고,
60고정 장수를 채워야 하면 반복 문구 대신 근거·사례·비교·실행 기준을 추가한다.
61코드 작성 후에는 새 근거나 시각적 blocker가 있을 때만 storyline과 deck spec을 함께 갱신한다.
62목적별 서사 패턴은 [`reference/narrative-patterns.md`](./reference/narrative-patterns.md)를 참고한다.
63
64### 한국어·영문 균형 계약
65
66- 한국어 덱의 기본 목표는 **설명용 영문 문자 약 40%**다. `protectedTerms`의 공식명은 계산에서
67 중립 처리하며, 원시 영문 비율은 참고값으로만 기록한다.
68- 고객 결과·설명·판단·행동·KPI 의미는 자연스러운 한국어를 우선한다.
69- **서비스명, 제품명, 공식 기능명, 명령·API·SDK·프로토콜·표준 약어는 번역하지 않는다.**
70 예: `GitHub Copilot`, `Microsoft Foundry`, `Hosted Agents`, `Code Review`, `Browser Tools`,
71 `Managed Settings`, `Session Streaming`, `Control Plane`, `AKS`, `ACA`, `MCP`.
72- `deck-spec.json`의 `languagePolicy.protectedTerms`에는 해당 덱에서 반드시 영문으로 유지할 공식 용어를
73 기록한다. Verifier는 이 용어가 최종 PPTX에 실제로 존재하는지 확인한다.
74- 한국어 문장 안에서 공식 영문명을 억지로 번역하거나, 반대로 설명 전체를 영어 catalog로 쓰지 않는다.
75 `Code Review로 결함을 조기에 찾습니다`처럼 역할 설명만 한국어로 연결한다.
76
77### 비기술 청중에게 기술을 설명하는 계약
78
79- 비기술 청중이라고 서비스·기능·architecture component를 제거하거나 모호한 한국어로 바꾸지 않는다.
80 기술 이름은 정확한 공식 영문과 capitalization을 유지한다.
81- 기본 읽기 순서는 `고객 질문/결론(쉬운 한글) → English 기술명 → 역할 설명(쉬운 한글) →
82 고객 가치·판단`이다.
83- 한 슬라이드에서 새로 소개하는 핵심 technical term은 원칙적으로 3~5개로 제한하고, 첫 등장 시
84 한 줄 역할 설명을 붙인다.
85- 권장 예:
86 - `Hosted Agents` — 격리된 환경에서 Agent를 실행
87 - `Foundry IQ` — 사용자 권한을 반영해 근거를 찾음
88 - `Toolboxes` — 허용된 업무 action을 연결
89 - `Code Review` — 코드 품질을 검증
90 - `Control Plane` — 여러 Agent의 상태·비용·위험을 관리
91- 금지 예:
92 - 공식명 `Hosted Agents`를 주 라벨에서 `호스팅 실행환경`으로 대체
93 - 서비스명만 나열하고 고객에게 무엇이 달라지는지 설명하지 않음
94 - 설명 문장까지 `permission-aware knowledge layer`처럼 불필요하게 영어로 작성
95
96### 3. 제작
97
98- [`reference/pptx-production.md`](./reference/pptx-production.md)를 따라 `python-pptx`로 직접 만든다.
99- 템플릿이 있으면 `scripts/inspect_template.py`로 profile을 만들고 template-aware initializer로
100 master·layout·theme·canvas를 보존한다. 없으면 고정 템플릿을 강제하지 않는다.
101- `scripts/toolcheck.py`가 선택한 언어·환경별 설치 폰트를 `deck-spec.json`에 기록하고 제작에 사용한다.
102- 이 repository의 한국어 기본 글꼴은 `Apple SD Gothic Neo`다. 표지·본문·표·도식·footer를 포함한
103 모든 visible text run에 같은 typeface를 명시하고 `fontPolicy.requireAllTextFont=true`로 기록한다.
104 본문 리딩 메시지는 `Apple SD Gothic Neo · 27pt · Bold`로 통일하고 `fontPolicy.leadingMessage`에 기록한다.
105 명시적 브랜드·템플릿 override가 있으면 그 값을 같은 contract에 기록하며, 임의 slide별 변경은 허용하지 않는다.
106- 한국어 덱은 `languagePolicy` 기본값(`targetLatinRatio=0.40`, `maxLatinRatio=0.55`,
107 `maxSlideLatinRatio=0.75`)을 사용하고 관련 `protectedTerms`를 채운다.
108- `protectedTerms`에는 서비스명·공식 기능명뿐 아니라 해당 덱의 주요 architecture component와
109 안정적으로 통용되는 technical term을 포함한다. 해당 용어가 있는 장에는 쉬운 한글 역할 설명을 둔다.
110- 한국어 덱은 모든 슬라이드에 speaker notes를 작성한다. 기존 notes가 있더라도 먼저 완전히 지우고
111 storyline·현재 slide visual·Fact Ledger만 기준으로 새로 생성한다. 기본은 `core-only` 모드이며
112 `핵심 메시지:` 한 블록만 작성한다. `질문:`과 `전환:` 블록은 넣지 않는다.
113- 노트는 슬라이드 문구를 반복하거나 상세 reference를 쌓지 않고 **핵심 전달용 cue**로 작성한다.
114 한국어 기본 목표는 장당 약 60초, 120~600자다. notes는 반드시 `핵심 메시지:`로 시작하고
115 슬라이드의 결론·작동 원리·고객 의미를 4~6문장, 즉 약 5문장으로 정리한다.
116 - 노트는 보고서 문장을 옮긴 글이 아니라 **발표자가 그대로 읽어도 자연스러운 쉬운 구어체**로 쓴다.
117 한 문장에는 한 가지 생각만 담고, 긴 명사 나열과 추상 표현은 짧은 동사형 문장으로 풀어 쓴다.
118 - 공식 제품명·기능명은 유지하되, 처음 나오는 technical term은 `trace, 즉 실행 기록`처럼 바로
119 이해할 수 있는 쉬운 표현으로 설명한다. 화면에 영문 용어가 많아도 노트까지 영문 catalog처럼 읽지
120 않으며, `승격 여부를 결정합니다`보다 `다음 버전으로 올릴지 정합니다`처럼 말하기 쉬운 표현을 우선한다.
121 - 소리 내어 읽었을 때 숨이 차거나 의미가 한 번에 잡히지 않는 문장은 둘로 나눈다. 불필요한
122 `~할 수 있습니다`, `~에 해당합니다`, `~을 의미합니다`를 반복하지 않는다.
123 - 핵심 메시지는 제목을 바꿔 말하는 데 그치지 않고, 현재 visual의 핵심 요소 2~4개가 어떻게 연결되어
124 결론과 고객 의미를 만드는지 설명한다. 모든 라벨을 낭독하지 않고 결론, 근거, 작동 방식, 고객 영향,
125 판단 또는 행동을 한 문장씩 배분한다.
126 - 사용자가 workshop 진행용 질문과 슬라이드 간 bridge를 명시적으로 요청한 경우에만
127 `speakerNotesPolicy.mode`를 `guided-flow`로 설정해 기존 `질문/핵심 메시지/전환` 3블록을 사용한다.
128 notes에는 `출처:` 블록, Fact ID, URL을 넣지 않으며, 근거와 상태는 slide footer·Fact Ledger·deck
129 spec에만 둔다.
130- 한 슬라이드는 질문 하나, 결론 하나, 핵심 근거 2~4개를 기본으로 한다.
131- 첫 본문 슬라이드에서 핵심 결론·가치·다음 행동을 보여준다.
132- 제목+불릿만 반복하지 않고 숫자·표·차트·흐름·비교·계층·타임라인 중 적합한 native visual을 사용한다.
133- 핵심 도형·차트·텍스트는 편집 가능한 PowerPoint 객체로 만든다.
134- 같은 역할의 본문 제목 크기와 색상 의미를 덱 전체에서 일관되게 유지한다. 한국어 기본 리딩 메시지는
135 `Apple SD Gothic Neo · 27pt · Bold`이며, 한글·Latin·complex-script run에 같은 typeface를 명시한다.
136- 한국어 덱의 visible text에는 fallback font를 직접 선언하지 않는다. fallback은 LibreOffice/PDF 렌더
137 환경에서 selected font를 사용할 수 없을 때의 대체 렌더에만 허용한다.
138- 작은 글씨로 과밀 문제를 숨기지 않는다. 주요 본문은 원칙적으로 15pt 이상을 유지한다.
139- 차트는 실제 데이터와 축·단위·기준일을 사용한다. 외부 사실이 있는 슬라이드에는 사람이 이해할 수 있는
140 발행자·문서명·확인일을 footer에 표시하고 `[F-001]` 같은 내부 Fact ID는 노출하지 않는다.
141- 권한이 불분명한 로고·인물·브랜드 자산을 임의 생성하지 않는다.
142
143관계형 레이아웃 아이디어는 [`reference/slide-blueprints.md`](./reference/slide-blueprints.md)를 선택적으로
144참고하고, 임원 편집 스타일은
145[`reference/editorial-business-style.md`](./reference/editorial-business-style.md)를 따른다.
146
147### 4. 렌더 검증과 수정
148
149[`scripts/verify_deck.py`](./scripts/verify_deck.py)와
150[`reference/verification.md`](./reference/verification.md)를 사용한다.
151
152```bash
153python3 -B .github/skills/adaptive-presentation/scripts/verify_deck.py <deck>.pptx --out <work> \
154 --deck-spec <work>/deck-spec.json
155```
156외부 사실 슬라이드는 deck spec의 `claimIds`에서 자동 도출한다. Verifier는 Fact Ledger의 발행자가
157사람이 읽을 수 있는 footer 출처에 표시되는지 확인하고, 내부 Fact ID가 화면에 노출되면 실패한다.
158
1591. 동일한 최초 PPTX에 대해 구조 감사와 전체 렌더를 실행한다.
1602. compact contact sheet를 확인하고 위험 슬라이드만 상세 확인한다.
1613. 자동 검증이 지원하지 않는 chart·SmartArt와 unmapped text도 finding ID로 기록한다.
1624. 결함을 일괄 수정한다. 의도적 예외는 finding ID·검토 이유를 exception manifest에 기록한다.
1635. contact sheet와 위험 슬라이드를 확인한 뒤 현재 PPTX SHA-256에 묶인 `visual-review.json`을 만들고
164 verifier를 다시 실행한다.
165
166시각 검증 없이 완료했다고 주장하지 않는다. 실행 최적화와 캐시는
167[`reference/full-optimized.md`](./reference/full-optimized.md)를 따르되 품질 단계를 생략하지 않는다.
168
169## 완료 조건
170
171- 요청한 형식·장수·언어·템플릿 조건을 지켰다.
172- 첫 본문에서 결론·가치·다음 행동이 보이고 제목만 읽어도 서사가 이어진다.
173- 내용 전달이 목적인 본문 슬라이드에는 관계를 설명하는 시각 구조가 있다. 표지·section divider·단순
174 마무리 장은 장식적 visual을 억지로 추가하지 않는다.
175- 자동 검증 범위의 geometry·rendered text 결함이 0이며, 미지원 객체는 finding 단위 검토 근거가 있다.
176- 텍스트가 경계와 컨테이너 안에 있고 발표 거리에서 읽힌다.
177- 외부 사실을 사용하는 슬라이드에 출처가 있고 Preview·가정·시연 데이터가 표시된다.
178- 한국어 덱은 설명 문구가 한글 우선이고, `protectedTerms`의 서비스·공식 기능명이 영문으로 유지되며,
179 language balance QA를 통과한다.
180- 모든 슬라이드 notes가 `핵심 메시지:`로 시작하고 `질문:`·`전환:` 없이 4~6문장으로 정리되며,
181 출처·Fact ID·URL 없이 notes QA를 통과한다. 각 노트는 visual의 핵심 관계와 고객 의미를 설명하고,
182 발표자가 소리 내어 읽었을 때 보고서 문체나 긴 명사 나열 없이 쉬운 구어체로 전달된다.
183- 최종 PPTX revision과 일치하는 전체 시각 검토 증거가 있다.
184- PPTX가 정상적으로 열리고 압축 구조 오류가 없다.
185- 저장소와 최종 출력 폴더에 임시 `.py`, `.pyc`, `__pycache__`, PDF, QA 이미지가 남지 않는다.
186## 참고
187
188- 제작·서사·시각: [`pptx-production`](./reference/pptx-production.md) ·
189 [`narrative-patterns`](./reference/narrative-patterns.md) · [`slide-blueprints`](./reference/slide-blueprints.md)
190- 계약·검증·최적화: [`deck-spec`](./reference/deck-spec.md) ·
191 [`verification`](./reference/verification.md) · [`full-optimized`](./reference/full-optimized.md)