curl -L -o pptx-builder.skill "https://aiskillstore.io/v1/agent/skills/32ef1261-5ffe-4ac9-b59f-f4f79bdc0cbc/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "32ef1261-5ffe-4ac9-b59f-f4f79bdc0cbc",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
PowerPoint(.pptx) 생성·수정·읽기 — 파워포인트 생성, PPT 만들기, 슬라이드 자동화. python-pptx 기반 오프라인 base64 I/O.
호환 플랫폼: any
🚨 보안 위험 감지:
검사 결과: ["메타데이터 경고: 권장 필드 없음: 'tags' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]
AI 검수 단계
1. **권한 일치성:** 스킬 메타데이터에 `network: false`, `filesystem: false`, `subprocess: false`로 명확히 선언되어 있습니다. 코드 분석 결과, `main.py`와 `lib/pptx_ops.py` 모두 네트워크 통신, 파일 시스템 접근(내부 `io.BytesIO` 사용 제외), 외부 프로세스 실행을 시도하는 코드가 전혀 발견되지 않았습니다. 모든 입출력은 `stdin`/`stdout`을 통한 base64 인코딩된 데이터로 이루어지며, 이는 선언된 권한과 완벽하게 일치합니다. 2. **악의적 코드 부재:** 데이터 탈취, 시스템 파괴, 코드 난독화 등 악의적인 목적을 가진 코드는 발견되지 않았습니다. 스킬의 기능은 `python-pptx` 라이브러리를 활용하여 PPTX 파일을 메모리 내에서 생성, 수정, 읽는 것에 국한됩니다. 3. **외부 통신 없음:** 선언된 권한에 따라 외부 네트워크 통신을 시도하는 코드가 없습니다. 4. **사용자 데이터 보호:** 사용자로부터 받은 base64 인코딩된 PPTX 및 이미지 데이터는 스킬의 목적에 따라 처리된 후, 결과물 역시 base64 인코딩되어 `stdout`으로 반환됩니다. 이 과정에서 사용자 데이터가 무단으로 수집되거나 외부에 전송되는 행위는 없습니다. 5. **코드 품질:** `main.py`는 입력 파싱 및 액션 디스패치를 담당하고, `lib/pptx_ops.py`는 핵심 PPTX 처리 로직을 담당하여 역할 분리가 잘 되어 있습니다. 오류 처리(JSON 파싱 오류, 액션 유효성 검사, 종속성 오류 등)도 적절하게 구현되어 있으며, 코드 가독성도 높습니다. 스킬의 목적과 일치하는 높은 품질의 코드입니다. 6. **정적 분석 결과 검토:** 정적 분석에서 `lib/pptx_ops.py: base64.b64decode(`에 대한 경고가 있었으나, 이는 스킬의 핵심 기능인 base64 인코딩된 PPTX 및 이미지 데이터를 디코딩하기 위한 정당한 사용입니다. 디코딩된 데이터는 `python-pptx` 라이브러리를 통해 PPTX 바이너리로 처리되며, 실행 가능한 코드로 해석되거나 시스템에 위협을 가하는 방식으로 사용되지 않으므로 오탐(false positive)으로 판단됩니다. 종합적으로 판단할 때, 이 스킬은 선언된 보안 정책을 충실히 준수하며, 어떠한 보안 위험도 내포하고 있지 않습니다. 따라서 스킬 스토어에 공개하기에 적합하다고 판단됩니다.
이 스킬의 대표적인 입출력 예시입니다. 에이전트는 이 예시를 보고 스킬 호출 방법과 결과 형태를 이해할 수 있습니다.
3슬라이드 프레젠테이션 신규 생성 (파란색 테마)
{
"action": "create",
"content": "- Revenue Growth\n- Product Launch\n- Q4 Outlook",
"theme": "blue",
"title": "2026 Annual Report"
}
{
"action": "create",
"file_base64": "\u003c400\uc790 \ub0b4\uc678 base64 string \u2014 .pptx binary\u003e",
"slide_count": 1,
"slides_summary": [
{
"content_preview": "- Revenue Growth\n- Product Launch...",
"index": 0,
"shape_count": 2,
"title": "2026 Annual Report"
}
],
"warnings": []
}
file_base64로 전달된 pptx에 새 슬라이드 추가 후 반환
{
"action": "add_slide",
"content": "Asian markets grew 23% YoY\nEMEA stable at +5%",
"file_base64": "\u003cbase64-encoded .pptx\u003e",
"layout_name": "Title and Content",
"title": "Market Analysis"
}
{
"action": "add_slide",
"file_base64": "\u003cupdated .pptx as base64\u003e",
"slide_count": 2,
"warnings": []
}
지정 슬라이드에 base64 이미지를 특정 위치에 삽입
{
"action": "add_image",
"file_base64": "\u003cbase64 pptx\u003e",
"image_base64": "\u003cbase64 PNG image\u003e",
"position": {
"height": 5.0,
"left": 5.0,
"top": 3.0,
"width": 8.0
},
"slide_index": 0
}
{
"action": "add_image",
"file_base64": "\u003cpptx with image embedded as base64\u003e",
"slide_count": 1,
"warnings": []
}
모든 슬라이드의 제목, 본문 미리보기, 도형 수 반환
{
"action": "read_slides",
"file_base64": "\u003cbase64-encoded 5-slide .pptx\u003e"
}
{
"action": "read_slides",
"slide_count": 5,
"slides_summary": [
{
"content_preview": "Founded 2020 | 150 employees...",
"index": 0,
"shape_count": 3,
"title": "Company Overview"
},
{
"content_preview": "Revenue: $12M ARR...",
"index": 1,
"shape_count": 4,
"title": "Financial Highlights"
}
],
"warnings": []
}
dark 테마로 마케팅 덱 기본 구조 생성
{
"action": "create",
"content": "- Problem Statement\n- Our Solution\n- Market Size\n- Pricing\n- Next Steps",
"theme": "dark",
"title": "Product Launch Deck"
}
{
"action": "create",
"file_base64": "\u003cdark theme pptx as base64\u003e",
"slide_count": 1,
"slides_summary": [
{
"content_preview": "- Problem Statement\n- Our Solution...",
"index": 0,
"shape_count": 2,
"title": "Product Launch Deck"
}
],
"warnings": []
}
모든 예시는 에이전트 API로도 조회 가능:
/v1/agent/skills/32ef1261-5ffe-4ac9-b59f-f4f79bdc0cbc/schema
아직 리뷰가 없습니다. 첫 번째 리뷰를 남겨보세요!