From mas-designer
STEP 3 경영진 발표 PPT 생성 (spec-writer 위임 + generate_image + pptxgenjs 빌드)
How this skill is triggered — by the user, by Claude, or both
Slash command
/mas-designer:generate-pptxThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
[GENERATE-PPTX 활성화]
[GENERATE-PPTX 활성화]
STEP 1 기획·STEP 2 MAS 설계 산출물을 입력받아 경영진 발표용 PPT를 자동 생성함. 2단계 패턴 적용:
pptx-spec-writer 에이전트가 GREAT 2 WHY·방향성·MAS 아키텍처 필수 슬라이드 포함 명세(spec.md) 및 이미지 프롬프트 JSON 작성generate_image로 슬라이드별 이미지 생성 후 pptxgenjs 기반 빌드 스크립트를 Write하여 실행, .pptx 산출외부 변환 스킬(anthropic-skills:pptx 등) 미사용 — Cursor·Cowork 등 모든 런타임 호환.
사용자가 /mas-designer:generate-pptx 호출 시 또는 "경영진 발표 PPT", "프리젠테이션 생성", "pptx 빌드" 키워드 감지 시.
| 에이전트 | FQN |
|---|---|
| pptx-spec-writer | mas-designer:pptx-spec-writer:pptx-spec-writer |
resources/guides/combine-prompt.md에 따라 AGENT.md + agentcard.yaml + tools.yaml 합치기gateway/runtime-mapping.yaml 참조 (MEDIUM → sonnet-4-6)워크플로우 단계에 Agent: {agent-name}이 명시된 경우,
메인 에이전트는 해당 단계를 직접 수행하지 않고,
반드시 위 프롬프트 조립 규칙에 따라 해당 에이전트를 호출하여 결과를 받아야 함.
서브에이전트 호출 없이 메인 에이전트가 해당 산출물을 직접 작성하면 스킬 미준수로 간주함.
선행 조건:
output/{project}/plan/*.md(문제해결방향성 등) +output/{project}/step2/mas-architecture.md존재 필수. 없으면/mas-designer:plan·/mas-designer:design-mas먼저 실행하도록 안내 후 중단.
AskUserQuestion으로 확인 (기본값 사용 시 스킵):
output/{project}/step3/)스토리라인 초안 작성 후 output/{project}/step3/1-storyline.md에 저장.
output/{project}/step3/1-storyline.mdoutput/{project}/step3/2.script.md + output/{project}/step3/image-prompts.jsonreferences/pptx-build-guide.md 1~5절 스타일 준수, 슬라이드당 본문 ≤7줄, 이미지 참조는 , 고객 WHY/기업 WHY 문장은 문제해결방향성.md 원문 재사용output/{project}/step3/image-prompts.json 로드mkdir -p output/{project}/step3/imagespython gateway/tools/generate_image.py \
--prompt "{prompt}" \
--output-dir output/{project}/step3/images \
--output-name "{filename without .png}"
image-fallback.log에 기록 후 플레이스홀더 처리ralph 활용)skills/generate-pptx/references/pptx-build-guide.md 전체 읽기 (특히 6절 검증 규칙 11항)2.script.md 파싱하여 슬라이드별 패턴(A~F) 매핑output/{project}/step3/build.js 생성
pptx.shapes.RECTANGLE/ROUNDED_RECTANGLEdefineLayout({name:"CUSTOM", width:16, height:9})async function createSlideXX(pptx) 패턴slide.addTable() (수동 셀 그리기 금지)fs12() 헬퍼로 12pt 미만 차단main().catch(e => { console.error(...); process.exit(1); }) 진입점cd output/{project}/step3 && node build.js3.{project}.pptx 존재 + 크기 > 0.temp/export-pptx.ps1을 생성 후 슬라이드별 PNG 추출$pptxPath = '<절대경로\3.{project}.pptx>'
$outDir = '<절대경로\preview>'
if (-not (Test-Path $outDir)) { New-Item -ItemType Directory -Path $outDir | Out-Null }
Add-Type -AssemblyName Microsoft.Office.Interop.PowerPoint
$ppt = New-Object -ComObject PowerPoint.Application
$pres = $ppt.Presentations.Open($pptxPath, 0, 0, 0)
foreach ($i in 1..$pres.Slides.Count) {
$pres.Slides.Item($i).Export("$outDir\slide-$i.png", 'PNG', 1600, 900)
}
$pres.Close(); $ppt.Quit()
Get-Process POWERPNT -ErrorAction SilentlyContinue | Stop-Process -Force로 파일 잠금 해제build.js 수정 → 재빌드 → 재검토 (최대 2회)images/ 폴더)은 절대 삭제하지 말 것 — 레이아웃·크기만 조정Remove-Item '<preview경로>\*.png' -Force; Remove-Item '.temp\export-pptx.ps1' -Force산출물 체크리스트:
사용자에게 완료 보고 + 승인 요청.
images/ 기존 파일 삭제 금지 (레이아웃·크기 조정만 허용)anthropic-skills:pptx 등) 미호출각 Phase 완료 시 AGENTS.md의 ## 워크플로우 상태 > ### generate-pptx 섹션의 마지막 완료 Phase를 갱신.
완료 시 임시 파일 없음. images/ 디렉토리는 산출물로 보존.
AGENTS.md의 ## 워크플로우 상태 > ### generate-pptx 섹션에서 마지막 완료 Phase를 읽음spec.md·image-prompts.json이 존재하면 Phase 3 스킵. 마지막 완료 Phase의 다음 Phase부터 진행Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub unicorn-plugins/mas-designer --plugin mas-designer