docx
npx skills add https://github.com/unicorn-plugins/claude-skills --skill docx
Agent 安装分布
Skill 文档
Word 문ì(DOCX) ì²ë¦¬ ì¤í¬
[DOCX ì¤í¬ íì±í]
목í
Word 문ì(.docx) ìì±, ì½ê¸°, í¸ì§, ë¶ìì ì 문 ìì´ì í¸ì ììíì¬ ì¬ì©ì ìì²ì ììí¨.
íì±í ì¡°ê±´
ì¬ì©ìê° .docx, Word, ìë, 문ì í¤ìë를 ì¸ê¸íê±°ë ë³´ê³ ì, ë©ëª¨, í¸ì§, í
í릿 ë±ì ì°ì¶ë¬¼ì Word íì¼ë¡ ìì²í ë íì±í.
ìí¬íë¡ì°
Phase 1: ìì
ì í íë³ (ulw íì©)
ì¬ì©ì ìì²ì ë¶ìíì¬ ì½ê¸°/ìì±/í¸ì§ ìì ì íì ê²°ì í¨.
| ìì ì í | íë³ ì¡°ê±´ |
|---|---|
| ì½ê¸°/ë¶ì | íì¼ ë´ì© ì¶ì¶, í ì¤í¸ ë³í, 구조 ë¶ì |
| ì 문ì ìì± | .docx íì¼ ë¯¸ì¡´ì¬, “ë§ë¤ì´ì¤”, “ìì±í´ì¤” |
| 기존 문ì í¸ì§ | .docx íì¼ ì¡´ì¬, “ìì ”, “ë³ê²½”, “ì¶ê°”, “ìì ” |
ì´ Phaseë ulw ë§¤ì§ í¤ìë를 íì©íì¬ ìíí¨.
Phase 2-A: ì 문ì ìì± â Agent: office-editor (/oh-my-claudecode:ralph íì©)
- TASK: docx-js npm í¨í¤ì§ë¥¼ ì¬ì©íì¬ ì Word 문ì ìì±
- EXPECTED OUTCOME: ì í¨í OOXML 구조를 ê°ì§
.docxíì¼ ìì±. XSD ê²ì¦ íµê³¼ - MUST DO:
- US Letter íì´ì§ í¬ê¸° ëª ì ì¤ì (A4 ê¸°ë³¸ê° íí¼)
- 리ì¤í¸ë numbering config ì¬ì© (ì ëì½ë bullet ê¸ì§)
- í ì´ë¸ì DXA ë¨ìë¡ width ì¤ì (percentage ê¸ì§)
- ìì± í validate.pyë¡ ê²ì¦
- MUST NOT DO:
- PageBreak를 Paragraph ë°ì ë°°ì¹íì§ ìì
- ImageRunìì type íë¼ë¯¸í° ëë½íì§ ìì
- ì¤íì¼ ì ì ìì´ ì»¤ì¤í ì¤íì¼ ì°¸ì¡°íì§ ìì
- CONTEXT:
- PYTHONPATH=gateway/tools íê²½ë³ì ì¤ì íì
- docx-js API ë í¼ë°ì¤ë
agents/office-editor/references/docx-api-reference.md참조
ì´ Phaseë /oh-my-claudecode:ralph를 íì©íì¬ ìíí¨.
Phase 2-B: 기존 문ì ì½ê¸° â Agent: office-editor (ulw íì©)
- TASK: pandoc ë³í ëë unpack â XML ë¶ìì¼ë¡ 문ì ë´ì© ì¶ì¶
- EXPECTED OUTCOME: í ì¤í¸, ìì, 구조 ì ë³´ê° í¬í¨ë ë¶ì ê²°ê³¼
- MUST DO:
- pandoc ì¬ì© ì –track-changes=all ìµì í¬í¨
- XML ë¶ì ì unpack.pyë¡ ZIP í´ì
- MUST NOT DO: ì§ì ZIP ë°ì´ë리 ìì ìëíì§ ìì
- CONTEXT: PYTHONPATH=gateway/tools ì¤ì , ooxml-structure.md 참조
ì´ Phaseë ulw ë§¤ì§ í¤ìë를 íì©íì¬ ìíí¨.
Phase 2-C: 기존 문ì í¸ì§ â Agent: office-editor (/oh-my-claudecode:ralph íì©)
- TASK: unpack â XML í¸ì§ â validate â pack ìí¬íë¡ì°ë¡ 문ì ìì
- EXPECTED OUTCOME: ìì ë ì í¨ OOXML 문ì. XSD ê²ì¦ íµê³¼. LibreOffice ì´ê¸° ê°ë¥
- MUST DO:
- ì본 ìì, ì¤íì¼, ë¤ìì¤íì´ì¤ ë³´ì¡´
- ë³ê²½ ì¶ì ì WHATë§ ë§í¹ (ìµì í¸ì§)
- ì¤ë§í¸ ì¿¼í¸ XML ìí°í° ì¬ì© (
’ë±) - pack.py ì¤í ì validate.py ê²ì¦
- MUST NOT DO:
- XSD ê²ì¦ ìì´ pack ì¤í ê¸ì§
<w:commentRangeStart>를<w:r>ìì ë°°ì¹íì§ ìì
- CONTEXT:
- PYTHONPATH=gateway/tools ì¤ì
- XML í¸ì§ ì Edit ë구 ì§ì ì¬ì© (Python ì¤í¬ë¦½í¸ ìì± ê¸ì§)
- ë³ê²½ ì¶ì authorë “Claude” ì¬ì© (ì¬ì©ì ëª ì ìì¼ë©´)
ì´ Phaseë /oh-my-claudecode:ralph를 íì©íì¬ ìíí¨.
Phase 3: ê²°ê³¼ ê²ì¦ (ulw íì©)
ìì±/í¸ì§ë 문ìì ì í¨ì± íì¸.
| ê²ì¦ í목 | ê²ì¦ ë°©ë² |
|---|---|
| OOXML ì í¨ì± | validate.py XSD ì¤í¤ë§ ê²ì¦ |
| 문ì ì´ê¸° ê°ë¥ | soffice.pyë¡ LibreOffice ì´ê¸° í ì¤í¸ |
| ë´ì© ë°ì íì¸ | pandoc ë³í ëë 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.docx output_dir/
PYTHONPATH=gateway/tools python gateway/tools/office/pack.py input_dir/ output.docx
PYTHONPATH=gateway/tools python gateway/tools/docx/accept_changes.py input.docx output.docx
ìë£ ì¡°ê±´
| # | ì¡°ê±´ |
|---|---|
| 1 | ìì±/í¸ì§ë 문ìê° ì í¨í OOXML 구조를 ê°ì§ |
| 2 | XSD ì¤í¤ë§ ê²ì¦ íµê³¼ (validate.py) |
| 3 | LibreOffice ëë Wordìì ì´ ì ìì (soffice.py ê²ì¦) |
| 4 | ì¬ì©ì ìì²ì 모ë íëª©ì´ ë°ìë¨ |
ê²ì¦ íë¡í ì½
- pack.py ì¤í ì validate.pyê° ìëì¼ë¡ XSD ê²ì¦ ìí
- ìì±ë 문ì를 soffice.pyë¡ ì´ê¸° ê°ë¥ ì¬ë¶ íì¸
- 모ë ê²ì¦ íµê³¼ íìë§ ìë£ ì ì¸
ìí ì 리
ìë£ ì ìì unpack ëë í 리 ìì . .omc/state/ ì ìí íì¼ ë¯¸ì¬ì© (ë¨ê±´ ìì
).
ì·¨ì
cancelomc ëë stopomc í¤ìëë¡ ì¦ì ì¤ë¨. ìì unpack ëë í ë¦¬ê° ì¡´ì¬íë©´ ìì .
ì¬ê°
ìì unpack ëë í ë¦¬ê° ë¨ììì¼ë©´ í´ë¹ ìíìì ì¬ê° ê°ë¥. ì본 íì¼ì´ ë³´ì¡´ëì´ ìì¼ë¯ë¡ ì²ìë¶í° ì¬ììë ê°ë¥.
MUST ê·ì¹
| # | ê·ì¹ |
|---|---|
| 1 | ì본 문ì í¸ì§ ì ë°ëì unpack â XML í¸ì§ â validate â pack ìì ì¤ì |
| 2 | XML í¸ì§ ì 기존 ìì, ì¤íì¼, ë¤ìì¤íì´ì¤ë¥¼ ë³´ì¡´ |
| 3 | 모ë Phaseì ì¤ì¼ì¤í¸ë ì´ì ì¤í¬ íì© íì ëª ì |
| 4 | ìì´ì í¸ ìì ì 5í목 (TASK, EXPECTED OUTCOME, MUST DO, MUST NOT DO, CONTEXT) í¬í¨ |
MUST NOT ê·ì¹
| # | ê¸ì§ ì¬í |
|---|---|
| 1 | ì§ì ZIP íì¼ì ë°ì´ë리 ìì íì§ ìì (ë°ëì unpack/pack ì¬ì©) |
| 2 | XSD ê²ì¦ ìì´ ë¬¸ì ì ë¬ ê¸ì§ |
| 3 | ìì´ì í¸ì ë´ë¶ ì¬ê³ ë°©ìì´ë ë¨ê³ë³ ì 차를 ì¤í¬ìì 기ì íì§ ìì |
ê²ì¦ ì²´í¬ë¦¬ì¤í¸
- frontmatterì name, description í¬í¨
- ìì´ì í¸ í¸ì¶ ê·ì¹ ì¹ì í¬í¨ (FQN, í롬íí¸ ì¡°ë¦½ 4ë¨ê³, ì¤ì¼ì¤í¸ë ì´ì íì©)
- 모ë Phaseì ì¤í¬ ë¶ì¤í ëª ì
- ìë£ ì¡°ê±´, ê²ì¦ íë¡í ì½, ìí ì 리, ì·¨ì/ì¬ê° ì¹ì í¬í¨
- MUST ê·ì¹, MUST NOT ê·ì¹ ì¹ì í¬í¨
- Agent ìì ë¨ê³ì 5í목 í¬í¨