pptx
npx skills add https://github.com/unicorn-plugins/claude-skills --skill pptx
Agent 安装分布
Skill 文档
PowerPoint í리ì í ì´ì (PPTX) ì²ë¦¬ ì¤í¬
[PPTX ì¤í¬ íì±í]
목í
PowerPoint í리ì í ì´ì (.pptx) ìì±, ì½ê¸°, í¸ì§ì ì 문 ìì´ì í¸ì ììíì¬ ì¬ì©ì ìì²ì ììí¨.
íì±í ì¡°ê±´
ì¬ì©ìê° .pptx, PowerPoint, íìí¬ì¸í¸, í리ì í
ì´ì
, ì¬ë¼ì´ë, ë± í¤ìë를 ì¸ê¸íê±°ë ì¬ë¼ì´ë ì°ì¶ë¬¼ì ìì²í ë íì±í.
ìí¬íë¡ì°
Phase 1: ìì
ì í íë³ (ulw íì©)
ì¬ì©ì ìì²ì ë¶ìíì¬ ìì±/í¸ì§/ë¶ì ìì ì íì ê²°ì í¨.
| ìì ì í | íë³ ì¡°ê±´ |
|---|---|
| ìì± | ì í리ì í ì´ì íì¼ ìì± ìì² |
| í¸ì§ | 기존 .pptx íì¼ ìì , ì¬ë¼ì´ë ì¶ê°/ìì /ì¬ë°°ì¹ |
| ë¶ì | ë´ì© ì¶ì¶, 구조 íì , ì¸ë¤ì¼ ìì± |
ì´ Phaseë ulw ë§¤ì§ í¤ìë를 íì©íì¬ ìíí¨.
Phase 2-A: ì í리ì í
ì´ì
ìì± â Agent: office-editor (/oh-my-claudecode:ralph íì©)
- TASK: pptxgenjs npm í¨í¤ì§ë¥¼ ì¬ì©íì¬ ì PowerPoint ìì±
- EXPECTED OUTCOME: ì í¨í OOXML 구조를 ê°ì§
.pptxíì¼ ìì±. XSD ê²ì¦ íµê³¼ - MUST DO:
- ëìì¸ ìì¹ ì ì© (ìì íë í¸, íì´í¬ê·¸ëí¼, ë ì´ìì ì¼ê´ì±)
- ì¬ë¼ì´ëë§ë¤ ìê°ì ìì í¬í¨ (ì´ë¯¸ì§/ì°¨í¸/ìì´ì½/ëí)
- ìì± í validate.pyë¡ ê²ì¦
- ìê°ì ê²ì¦ (PDF ë³í â ì´ë¯¸ì§ ìì± â ìë¸ìì´ì í¸ ê²ì¬)
- MUST NOT DO:
- í ì¤í¸ë§ ìë ì¬ë¼ì´ë ìì±íì§ ìì
- accent line ì¥ì ì¬ì©íì§ ìì (AI slop í¨í´)
- ë®ì ëë¹ í ì¤í¸/ìì´ì½ ì¬ì©íì§ ìì
- CONTEXT:
- PYTHONPATH=gateway/tools íê²½ë³ì ì¤ì íì
- pptxgenjs API ë í¼ë°ì¤ë
agents/office-editor/references/pptx-api-reference.md참조 - ëìì¸ ê°ì´ëë
agents/office-editor/references/pptx-design-guide.md참조
ì´ Phaseë /oh-my-claudecode:ralph를 íì©íì¬ ìíí¨.
Phase 2-B: 기존 PPTX í¸ì§ â Agent: office-editor (/oh-my-claudecode:ralph íì©)
- TASK: unpack â XML í¸ì§ â ê²ì¦ â pack ìí¬íë¡ì°ë¡ í리ì í ì´ì ìì
- EXPECTED OUTCOME: ìì ë ì í¨ OOXML í리ì í ì´ì . XSD ê²ì¦ íµê³¼. ê³ ì 리ìì¤ ìì
- MUST DO:
- ì¬ë¼ì´ë ë§ì¤í°/ë ì´ìì 참조 ë¬´ê²°ì± ë³´ì¡´
- Content_Types.xmlê³¼ _rels íì¼ ë기í
- pack ì validate.py + clean.py ì¤í
- MUST NOT DO:
- XSD ê²ì¦ ìì´ pack ì¤í ê¸ì§
- ì¬ë¼ì´ë ì¶ê° ì add_slide.py ì¤í¬ë¦½í¸ íì©
- CONTEXT:
- PYTHONPATH=gateway/tools ì¤ì
- XML í¸ì§ ê°ì´ëë
agents/office-editor/references/pptx-editing-guide.md참조
ì´ Phaseë /oh-my-claudecode:ralph를 íì©íì¬ ìíí¨.
Phase 3: ê²°ê³¼ ê²ì¦ (ulw íì©)
ìì±/í¸ì§ë í리ì í ì´ì ì ì í¨ì± íì¸.
| ê²ì¦ í목 | ê²ì¦ ë°©ë² |
|---|---|
| OOXML ì í¨ì± | validate.py XSD ì¤í¤ë§ ê²ì¦ |
| ê³ ì 리ìì¤ | clean.pyë¡ ë¯¸ì°¸ì¡° íì¼ íì¸ ë° ì 리 |
| ì¬ë¼ì´ë íì§ | thumbnail.pyë¡ ì¸ë¤ì¼ ìì± â ìê°ì íì¸ |
| ë´ì© ë°ì | markitdownì¼ë¡ í ì¤í¸ ì¶ì¶ ë¹êµ |
ì´ Phaseë ulw ë§¤ì§ í¤ìë를 íì©íì¬ ìíí¨.
ìì´ì í¸ í¸ì¶ ê·ì¹
ìì´ì í¸ FQN
| ìì´ì í¸ | FQN | í°ì´ |
|---|---|---|
| office-editor | claude-skills:office-editor:office-editor |
MEDIUM |
í롬íí¸ ì¡°ë¦½ ì ì°¨
agents/office-editor/ìì 3íì¼ ë¡ë (AGENT.md + agentcard.yaml + tools.yaml)gateway/runtime-mapping.yaml참조íì¬ êµ¬ì²´í:- ëª¨ë¸ êµ¬ì²´í: agentcard.yamlì
tier: MEDIUMâtier_mapping.default.MEDIUMâclaude-sonnet-4-5 - í´ êµ¬ì²´í: tools.yamlì ì¶ì ë구 â
tool_mappingìì ì¤ì ë구 ê²°ì - ê¸ì§ì¡ì
구체í:
forbidden_actions: [user_interact, agent_delegate]âaction_mappingìì[AskUserQuestion, Task]ì ì¸ - ìµì¢ ë구 = (구체íë ë구) – (ì ì¸ ë구)
- ëª¨ë¸ êµ¬ì²´í: agentcard.yamlì
- í롬íí¸ ì¡°ë¦½: 3íì¼ì í©ì³ íëì í롬íí¸ë¡ 구ì±
- êµ¬ì± ìì: ê³µíµ ì ì (runtime-mapping) â ìì´ì í¸ë³ ì ì (3íì¼) â ëì (ìì ì§ì)
Task(subagent_type="claude-skills:office-editor:office-editor", model="claude-sonnet-4-5", prompt=조립ë í롬íí¸)í¸ì¶
ì¤ì¼ì¤í¸ë ì´ì ì¤í¬ íì©
| ìí¬íë¡ì° Phase | ì¶ì² ì¤í¬ | ì ì© |
|---|---|---|
| Phase 1 (ìì ì í íë³) | ulw ë§¤ì§ í¤ìë |
íì |
| Phase 2 (ìì±/í¸ì§ ì¤í) | /oh-my-claudecode:ralph |
íì |
| Phase 3 (ê²°ê³¼ ê²ì¦) | ulw ë§¤ì§ í¤ìë |
íì |
ì¤í¬ë¦½í¸ í¸ì¶ í¨í´
모ë 커ì¤í ë구 í¸ì¶ ì PYTHONPATH íê²½ë³ì를 ì¤ì :
PYTHONPATH=gateway/tools python gateway/tools/office/unpack.py input.pptx output_dir/
PYTHONPATH=gateway/tools python gateway/tools/office/pack.py input_dir/ output.pptx
PYTHONPATH=gateway/tools python gateway/tools/pptx/add_slide.py input.pptx template_slide_index new_slide_index
PYTHONPATH=gateway/tools python gateway/tools/pptx/clean.py input.pptx
PYTHONPATH=gateway/tools python gateway/tools/pptx/thumbnail.py input.pptx
ìë£ ì¡°ê±´
| # | ì¡°ê±´ |
|---|---|
| 1 | ìì±/í¸ì§ë PPTXê° ì í¨í OOXML 구조를 ê°ì§ |
| 2 | XSD ì¤í¤ë§ ê²ì¦ íµê³¼ |
| 3 | ê³ ì 리ìì¤ ìì (clean.py ê²ì¦) |
| 4 | ì¬ë¼ì´ë ì¸ë¤ì¼ ìì± ê°ë¥ (thumbnail.py ê²ì¦) |
ê²ì¦ íë¡í ì½
- pack.py ì¤í ì XSD ê²ì¦ ìë ìí
- clean.pyë¡ ê³ ì 리ìì¤ íì¸ ë° ì 리
- thumbnail.pyë¡ ì¬ë¼ì´ë ìê°ì ê²ì¦
- 모ë ê²ì¦ íµê³¼ íìë§ ìë£ ì ì¸
ìí ì 리
ìë£ ì ìì unpack ëë í 리 ìì . .omc/state/ ì ìí íì¼ ë¯¸ì¬ì© (ë¨ê±´ ìì
).
ì·¨ì
cancelomc ëë stopomc í¤ìëë¡ ì¦ì ì¤ë¨. ìì unpack ëë í ë¦¬ê° ì¡´ì¬íë©´ ìì .
ì¬ê°
ìì unpack ëë í ë¦¬ê° ë¨ììì¼ë©´ í´ë¹ ìíìì ì¬ê° ê°ë¥. ì본 íì¼ì´ ë³´ì¡´ëì´ ìì¼ë¯ë¡ ì²ìë¶í° ì¬ììë ê°ë¥.
MUST ê·ì¹
| # | ê·ì¹ |
|---|---|
| 1 | ì본 PPTX í¸ì§ ì ë°ëì unpack â XML í¸ì§ â validate â pack ìì ì¤ì |
| 2 | ì¬ë¼ì´ë ë§ì¤í°/ë ì´ìì 참조 ë¬´ê²°ì± ë³´ì¡´ |
| 3 | 모ë Phaseì ì¤ì¼ì¤í¸ë ì´ì ì¤í¬ íì© íì ëª ì |
| 4 | ìì´ì í¸ ìì ì 5í목 í¬í¨ |
MUST NOT ê·ì¹
| # | ê¸ì§ ì¬í |
|---|---|
| 1 | ì§ì ZIP íì¼ì ë°ì´ë리 ìì íì§ ìì |
| 2 | XSD ê²ì¦ ìì´ ë¬¸ì ì ë¬ ê¸ì§ |
| 3 | ìì´ì í¸ì ë´ë¶ ì 차를 ì¤í¬ìì 기ì íì§ ìì |
ê²ì¦ ì²´í¬ë¦¬ì¤í¸
- frontmatterì name, description í¬í¨
- ìì´ì í¸ í¸ì¶ ê·ì¹ ì¹ì í¬í¨ (FQN, í롬íí¸ ì¡°ë¦½ 4ë¨ê³, ì¤ì¼ì¤í¸ë ì´ì íì©)
- 모ë Phaseì ì¤í¬ ë¶ì¤í ëª ì
- ìë£ ì¡°ê±´, ê²ì¦ íë¡í ì½, ìí ì 리, ì·¨ì/ì¬ê° ì¹ì í¬í¨
- MUST ê·ì¹, MUST NOT ê·ì¹ ì¹ì í¬í¨
- Agent ìì ë¨ê³ì 5í목 í¬í¨