Skip to content

airmang/hwpx-plugins

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

100 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“„ hwpx-plugins

AI ์—์ด์ „ํŠธ๊ฐ€ HWPX ๋ฌธ์„œ๋ฅผ ๋ฐ”๋กœ ์ฝ๊ณ , ์ฑ„์šฐ๊ณ , ๋งŒ๋“ค๊ณ , ์ ๊ฒ€ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ณต์‹ ์˜จ๋ณด๋”ฉ ์Šคํ‚ฌ

์ˆœ์ˆ˜ Python ยท ํ•œ์ปด์˜คํ”ผ์Šค ๋ถˆํ•„์š” ยท ํฌ๋กœ์Šค ํ”Œ๋žซํผ

PyPI Python Repo License


๐Ÿงฉ HWPX Stack (3์ข…)

๊ณ„์ธต ๋ ˆํฌ ์—ญํ• 
๐Ÿ“ฆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ python-hwpx ์ˆœ์ˆ˜ ํŒŒ์ด์ฌ HWPX ํŒŒ์‹ฑยทํŽธ์ง‘ยท์ƒ์„ฑ ์ฝ”์–ด
๐Ÿ”Œ MCP ์„œ๋ฒ„ hwpx-mcp-server MCP ํด๋ผ์ด์–ธํŠธ(Claude Desktop, VS Code ๋“ฑ)์—์„œ HWPX ์กฐ์ž‘
๐ŸŽฏ ์—์ด์ „ํŠธ ์Šคํ‚ฌ hwpx-plugins ์—์ด์ „ํŠธ๊ฐ€ HWPX๋ฅผ ๋ฐ”๋กœ ์“ฐ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ณต์‹ ์˜จ๋ณด๋”ฉ ์Šคํ‚ฌ

์™œ / ๋ฌด์—‡์„ ํ•˜๋‚˜

hwpx-plugins์€ python-hwpx ๊ธฐ๋ฐ˜์˜ ๊ณต์‹ ์—์ด์ „ํŠธ ์Šคํ‚ฌ์ด๋‹ค. HWPX๋ฅผ ์ž˜ ๋ชจ๋ฅด๋Š” ์‚ฌ์šฉ์ž๋„ ์Šคํ‚ฌ๋งŒ ์„ค์น˜ํ•˜๋ฉด ์—์ด์ „ํŠธ์—๊ฒŒ ์ž์—ฐ์–ด๋กœ ๋งํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ํ•œ๊ธ€ ๋ฌธ์„œ๋ฅผ ๋‹ค๋ฃจ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๋‹ค. ์—์ด์ „ํŠธ๋Š” SKILL.md์˜ ์˜์‚ฌ๊ฒฐ์ • ํŠธ๋ฆฌ๋ฅผ ๋”ฐ๋ผ ์•Œ๋งž์€ ์Šคํฌ๋ฆฝํŠธ๋‚˜ MCP ๋„๊ตฌ๋ฅผ ์Šค์Šค๋กœ ํ˜ธ์ถœํ•œ๋‹ค.

  • ์ฝ๊ธฐยท์ถ”์ถœ โ€” .hwpx ํ…์ŠคํŠธ, ํ‘œ, ๊ฐ์ฃผ๊นŒ์ง€ ์ถ”์ถœ (JSON/Markdown)
  • ์–‘์‹ ์ฑ„์›€ โ€” ์Šน์ธ๋œ ์–‘์‹์„ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ๋ฐ”์ดํŠธ ๋ณด์กด์œผ๋กœ ์…€๋งŒ ์ฑ„์šด๋‹ค
  • ๋ฌธ์„œ ์ƒ์„ฑ โ€” hwpx.builder๋กœ ๋จธ๋ฆฌ๊ธ€ยท์ชฝ๋ฒˆํ˜ธยทํ‘œยท์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š” ์ƒˆ ๋ฌธ์„œ๋ฅผ ์กฐ๋ฆฝ
  • ์ ๊ฒ€ยท๋ณต๊ตฌ โ€” ๊ตฌ์กฐ/ํ’ˆ์งˆ lint, ํ•œ์ปด์—์„œ ์•ˆ ์—ด๋ฆฌ๋Š” ํŒŒ์ผ repair
  • ๋Œ€์ƒ ํฌ๋งท์€ Open XML ๊ธฐ๋ฐ˜ .hwpx๋‹ค. ๋ ˆ๊ฑฐ์‹œ ๋ฐ”์ด๋„ˆ๋ฆฌ .hwp ์ง์ ‘ ํŽธ์ง‘์€ ๋ฒ”์œ„ ๋ฐ–์ด๋‹ค.

๋น ๋ฅธ ์‹œ์ž‘

์˜์กด์„ฑ ์„ค์น˜ (๋ชจ๋“  ํ˜ธ์ŠคํŠธ ๊ณตํ†ต):

python3 -m pip install -U python-hwpx lxml

๊ถŒ์žฅ ๊ธฐ์ค€: Python 3.10+ ยท python-hwpx >= 2.23.0 ยท hwpx-mcp-server >= 2.15.0 ยท ์Šคํ‚ฌ ๋ฒˆ๋“ค 0.1.20.

์„ค์น˜ ์งํ›„ ์ฒซ ์„ฑ๊ณต ๊ฒฝ๋กœ๋ฅผ ํ•œ ๋ฒˆ์— ํ™•์ธ:

python3 scripts/quickcheck.py
# [OK] basic hwpx skill workflow passed

์ด ์Šคํฌ๋ฆฝํŠธ๋Š” Python ๋ฒ„์ „ โ†’ python-hwpx/lxml import โ†’ ์˜ˆ์ œ ๋ฌธ์„œ ์ƒ์„ฑ โ†’ ๊ตฌ์กฐ ์ ๊ฒ€ โ†’ ํ…์ŠคํŠธ ์ถ”์ถœ์„ ํ•œ ๋ฒˆ์— ํ™•์ธํ•œ๋‹ค. ๊ฒฝ๋กœ๋ณ„๋กœ ๋” ๊ฒ€์ฆํ•˜๋ ค๋ฉด --builder, --document-plan, --operating-plan, --template-formfit, --visual-review ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ถ™์ธ๋‹ค.

์—์ด์ „ํŠธ์—๊ฒŒ ๋ง ๊ฑธ๊ธฐ (ํ•ต์‹ฌ ์‚ฌ์šฉ๋ฒ•)

์„ค์น˜ ํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํŒŒ์ด์ฌ์„ ์น  ์ผ์€ ๊ฑฐ์˜ ์—†๋‹ค. Claude CodeยทCursorยทCodex ๊ฐ™์€ ์—์ด์ „ํŠธ์—๊ฒŒ ์ž์—ฐ์–ด๋กœ ๋งํ•˜๋ฉด ์Šคํ‚ฌ์ด ํŠธ๋ฆฌ๊ฑฐ๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋งํ•˜๋ฉด ์—์ด์ „ํŠธ๊ฐ€ ํ•˜๋Š” ์ผ
"์ด hwpx ํ…์ŠคํŠธ ์ „๋ถ€ ๋ฝ‘์•„์ค˜" ํ‘œ ์•ˆ ๋ฌธ๋‹จยท๊ฐ์ฃผ ํฌํ•จ ํ…์ŠคํŠธ ์ถ”์ถœ
"{ํ•™๊ต๋ช…}ยท{๋‹ด๋‹น์ž} ์ž๋ฆฌํ‘œ์‹œ์ž ์ „๋ถ€ ๋ฐ”๊ฟ”์ค˜" ํ‘œ๊นŒ์ง€ ํฌํ•จํ•œ ํ”Œ๋ ˆ์ด์Šคํ™€๋” ์ „์—ญ ์น˜ํ™˜
"์ด ์–‘์‹์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ๋‚ด์šฉ๋งŒ ์ฑ„์›Œ์ค˜" ๋ฐ”์ดํŠธ ๋ณด์กด ์–‘์‹ form-fit (์…€ ์ฑ„์›€ยทํ–‰/์—ด ์กฐ์ •ยทํ•œ์ปด ๊ฒ€์ฆ)
"๋จธ๋ฆฌ๊ธ€ยท์ชฝ๋ฒˆํ˜ธ ๋“ค์–ด๊ฐ„ ์šด์˜ ๊ณ„ํš์„œ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ค˜" hwpx.builder๋กœ ๋ ˆ์ด์•„์›ƒ ๋ฏผ๊ฐ ๋ฌธ์„œ ์กฐ๋ฆฝ
"ํ•œ์ปด์—์„œ ์•ˆ ์—ด๋ฆฌ๋Š” hwpx์ธ๋ฐ ๋ณต๊ตฌํ•ด์ค˜" repair/recover ๋ณต๊ตฌ ๋ณต์‚ฌ๋ณธ ์ƒ์„ฑ
"์ด hwpx ๊ตฌ์กฐ๋ž‘ ํ‘œ ๊ฐœ์ˆ˜ ์ ๊ฒ€ํ•ด์ค˜" ๊ตฌ์กฐยทํ’ˆ์งˆ ์ ๊ฒ€

์˜ˆ์‹œ โ€” ์‚ฌ์šฉ์ž: "์ฒจ๋ถ€ํ•œ ๊ฐ€์ •ํ†ต์‹ ๋ฌธ ์–‘์‹์—์„œ ํ•™๊ต๋ช…์ด๋ž‘ ๋‚ ์งœ๋งŒ ์šฐ๋ฆฌ ํ•™๊ต ๊ฑธ๋กœ ๋ฐ”๊ฟ”์„œ ์ƒˆ ํŒŒ์ผ๋กœ ์ค˜." ์—์ด์ „ํŠธ: ์›๋ณธ์„ ๋ณด์กดํ•œ ์ฑ„ form-fit์œผ๋กœ ๊ฐ’์„ ์ฑ„์šฐ๊ณ , ํŒจํ‚ค์ง€ยท์Šคํ‚ค๋งˆ ๊ฒ€์ฆ์„ ๊ฑฐ์นœ ์ƒˆ ํŒŒ์ผ์„ ๋Œ๋ ค์ค€๋‹ค.

์—์ด์ „ํŠธ๋Š” ์š”์ฒญ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ builder / document-plan / form-fit / repair ์ค‘ ๋ฌด์—‡์„ ์“ธ์ง€ ์Šค์Šค๋กœ ํŒ๋‹จํ•œ๋‹ค. ๋จธ๋ฆฌ๊ธ€ยท์ชฝ๋ฒˆํ˜ธยทํ‘œ์ฒ˜๋Ÿผ ๋ ˆ์ด์•„์›ƒ์— ๋ฏผ๊ฐํ•œ ์ž‘์—…์—์„œ๋Š” visual_review_required๊ฐ€ ์ผœ์ง€๋ฏ€๋กœ, ์—์ด์ „ํŠธ๋Š” ์ตœ์ข… ์ œ์ถœ ์ „ ์—ด๋ฆฐ ๋ฌธ์„œ ์‹œ๊ฐ ๊ฒ€ํ†  evidence๊นŒ์ง€ ๊ฐ™์ด ๋‚จ๊ธด๋‹ค.

๋ฌด์—‡์„ ํ•˜๋‚˜

์—์ด์ „ํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ์„ ํ…Œ๋งˆ๋ณ„๋กœ ์ •๋ฆฌํ–ˆ๋‹ค. ์ „์ฒด ๋„๊ตฌยท์›Œํฌํ”Œ๋กœ ๋ชฉ๋ก์€ SKILL.md์™€ references/ ์ฐธ๊ณ .

  • ์ฝ๊ธฐ โ€” ํ…์ŠคํŠธ/ํ‘œ/๊ฐ์ฃผ ์ถ”์ถœ, JSONยทMarkdown ๋ณ€ํ™˜, ๋Ÿฐ์„œ์‹ ์ถฉ์‹ค ์ฝ๊ธฐ ยท workflows-reading.md
  • ์–‘์‹ โ€” ๋ˆ„๋ฆ„ํ‹€(list_form_fields/fill_form_field) 1๊ธ‰ ์ง€์›, ๋ฐ”์ดํŠธ ๋ณด์กด ๊ตฌ์กฐ์  form-fill(์…€ ์ฑ„์›€ยทํ–‰/์—ดยทํ‘œ ์‚ฝ์ž…/์‚ญ์ œยท์—ด๋„ˆ๋น„ ์ž๋™๋งž์ถคยทํฐํŠธ shrink-to-fitยท์‹คํ•œ์ปด ๊ฒ€์ฆ) ยท workflows-forms.md
  • ์ƒ์„ฑ โ€” hwpx.builder(๋จธ๋ฆฌ๊ธ€/๋ฐ”๋‹ฅ๊ธ€ยท์ชฝ๋ฒˆํ˜ธยท๋ฆฌ์น˜ ๋Ÿฐยท๋ชฉ๋กยท๋ณ‘ํ•ฉ/์Œ์˜/์—ด๋„ˆ๋น„ ํ‘œยท์ด๋ฏธ์ง€ยทํŽ˜์ด์ง€ ๋‚˜๋ˆ”), ์„ ์–ธํ˜• hwpx.document_plan.v1, ๊ณต๋ฌธยท๋ณด๊ณ ์„œยท์ œ์•ˆ์„œ ๋ ˆ์‹œํ”ผ ยท workflows-creation.md ยท workflows-authoring.md
  • ํŽธ์ง‘ โ€” ์›์ž ์ ์šฉ apply_edits(dry_runยทrevision ๊ฐ€๋“œยท๋ฉฑ๋“ฑํ‚ค)ยทundo_last_edit, ์ธ๊ฐ„ ๋‹จ์œ„ ์„œ์‹ ํŽธ์ง‘, ์ถ”์  ๋ณ€๊ฒฝ(redline) ยท workflows-editing.md ยท workflows-redline.md
  • ๊ณต๋ฌธ์„œ โ€” inspect_official_document_style lintยท๊ฒฐ์žฌ๋ž€ ํ”„๋ฆฌ์…‹ยท์žฅ๋ฅด ๋ ˆ์‹œํ”ผ, ์‹ ๊ตฌ๋Œ€์กฐํ‘œ(doc_diff/create_comparison_table_document) ยท official-document-rules.md
  • ์ž๋™ TOCยท์ƒํ˜ธ์ฐธ์กฐ โ€” ๋„ค์ดํ‹ฐ๋ธŒ ๋ชฉ์ฐจ ์ƒ์„ฑยทํŽ˜์ด์ง€ ์žฌ๊ณ„์‚ฐ ํŠธ๋ฆฌ๊ฑฐ ยท workflows-toc.md
  • ์ƒ์‚ฐ์„ฑ โ€” mail_merge ๋Œ€๋Ÿ‰ ์ƒ์‚ฐยทtable_compute, ์„œ์‹ ์ด์‹(extract_style_profile)ยทํ…œํ”Œ๋ฆฟ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ, ๊ณ ๊ธ‰ ์ƒ์„ฑ๊ธฐ(์‚ฌ์ง„๋Œ€์ง€ยท๋ช…ํŒจยท์กฐ์ง๋„) ยท workflows-bulk-compare.md
  • PII โ€” ๊ฐœ์ธ์ •๋ณด ๋งˆ์Šคํ‚น ๊ฒŒ์ดํŠธยทscan ยท workflows-pii.md
  • ์‹ ๋ขฐ ๋ฃจํ”„ โ€” render_preview(ํŽ˜์ด์ง€ PNG ์ž๊ธฐ๊ฒ€์ฆ), package/schema/text ๊ฒ€์ฆ, ์‹œ๊ฐ ๊ฒ€ํ†  evidence ๊ณ„์•ฝ ยท evidence-contract.md

์„ค์น˜ (ํ˜ธ์ŠคํŠธ๋ณ„)

์˜์กด์„ฑ(python-hwpx lxml)์€ ์œ„ ๋น ๋ฅธ ์‹œ์ž‘์—์„œ ํ•œ ๋ฒˆ๋งŒ ์„ค์น˜ํ•œ๋‹ค. ์•„๋ž˜๋Š” ํ˜ธ์ŠคํŠธ๋ณ„ ์ง„์ž…์ ์ด๋‹ค. ์„ค์น˜ยท์žฌ์„ค์น˜ ํ›„์—๋Š” ์ƒˆ ์—์ด์ „ํŠธ ์„ธ์…˜์„ ์‹œ์ž‘ํ•ด์•ผ ์ƒˆ skill๊ณผ MCP ๋„๊ตฌ๊ฐ€ ๋กœ๋“œ๋œ๋‹ค.

Claude Code

claude plugin marketplace add airmang/hwpx-plugins
claude plugin install hwpx-plugin@hwpx

์ˆ˜๋™ ์„ค์น˜๋ฅผ ์›ํ•˜๋ฉด ์ด ๋ ˆํฌ๋ฅผ hwpx-plugins ํด๋”์งธ ํ”„๋กœ์ ํŠธ ๋กœ์ปฌ .claude/skills/hwpx-plugins/ ๋˜๋Š” ๊ธ€๋กœ๋ฒŒ ~/.claude/skills/hwpx-plugins/์— ๋ณต์‚ฌํ•œ๋‹ค.

Codex CLI

codex plugin marketplace add airmang/hwpx-plugins
codex plugin add hwpx-plugin@hwpx

์ˆ˜๋™ ๊ฒฝ๋กœ๋Š” .agents/skills/hwpx-plugins/.

Cursor

์ด ๋ ˆํฌ๋ฅผ .cursor/skills/hwpx-plugins/(๋˜๋Š” ๊ธ€๋กœ๋ฒŒ ~/.cursor/skills/)์— ๋ณต์‚ฌํ•˜๊ณ , .cursor/rules/hwpx.mdc ํŠธ๋ฆฌ๊ฑฐ ๋ฃฐ์„ ๋‘”๋‹ค. ์Šคํ‚ฌ๊ณผ ๋ฃฐ์„ ํ•จ๊ป˜ ๋‘๋ฉด ์ž์—ฐ์–ด ์š”์ฒญ๊ณผ **/*.hwpx ํ™•์žฅ์ž ๋‘˜ ๋‹ค๋กœ ํŠธ๋ฆฌ๊ฑฐ๋œ๋‹ค.

---
description: HWPX/ํ•œ๊ธ€ ๋ฌธ์„œ ์ž‘์—… ์‹œ hwpx-plugins์„ ์‚ฌ์šฉ
globs:
  - "**/*.hwpx"
alwaysApply: false
---
ํ•œ๊ธ€ ๋ฌธ์„œ(.hwpx), ๊ฐ€์ •ํ†ต์‹ ๋ฌธ, ๊ณต๋ฌธ, ํ•œ๊ธ€ ์–‘์‹, OWPML, ํ”Œ๋ ˆ์ด์Šคํ™€๋” ์น˜ํ™˜, ๋ฌธ์„œ ์ž๋™ํ™” ์š”์ฒญ์ด๋ฉด `.cursor/skills/hwpx-plugins/`์˜ `SKILL.md`๋ฅผ ๋จผ์ € ์ฝ๊ณ  ๊ทธ ์›Œํฌํ”Œ๋กœ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

OpenClaw ยท Hermes

๊ฐ ํ˜ธ์ŠคํŠธ ๋ฒˆ๋“ค๊ณผ MCP ๋ฐฐ์„  ์•ˆ๋‚ด๊ฐ€ ํ•จ๊ป˜ ๋“ค์–ด ์žˆ๋‹ค.

Host Bundle Install entry point
OpenClaw plugins/openclaw/hwpx-plugin openclaw.plugin.json + INSTALL-mcp.md
Hermes Agent plugins/hermes/hwpx hermes skills publish + INSTALL-mcp.md

์ด ๋ ˆํฌ๋Š” HWPX ์Šคํ‚ฌ์˜ canonical ์†Œ์Šค๋กœ, ํ˜ธ์ŠคํŠธ๋ณ„ ๋ฒˆ๋“ค(Claude Code / Codex / OpenClaw / Hermes)์„ ํ•œ ์†Œ์Šค์—์„œ ๋นŒ๋“œํ•œ๋‹ค. canonical SKILL.md, references/, examples/, scripts/๋ฅผ ํŽธ์ง‘ํ•œ ๋’ค python3 scripts/build_hwpx_plugins.py๋กœ ์žฌ๋นŒ๋“œํ•˜๊ณ  python3 scripts/validate_hwpx_plugin.py๋กœ ๊ฒ€์ฆํ•œ๋‹ค. MCP ๋Ÿฐ์ฒ˜๋Š” ๋กœ์ปฌ sibling checkout(../hwpx-mcp-server, ../python-hwpx)์„ ์šฐ์„ ํ•˜๊ณ , ์—†์œผ๋ฉด ์ฒซ MCP ์‹œ์ž‘ ์‹œ hwpx-mcp-server==2.15.0์„ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋กœ์ปฌ venv์— ์„ค์น˜ํ•œ๋‹ค.

์ง์ ‘ ์‹คํ–‰ํ•˜๊ธฐ (์ˆ˜๋™ ๊ฒ€์ฆยท๊ณ ๊ธ‰ ์‚ฌ์šฉ)

ํ‰์†Œ์—” ์น  ํ•„์š” ์—†๋‹ค. ์—์ด์ „ํŠธ๊ฐ€ ๋‚ด๋ถ€์—์„œ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธยทMCP ๋„๊ตฌ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ์†์œผ๋กœ ํ™•์ธํ•˜๊ฑฐ๋‚˜ CI์—์„œ ๋Œ๋ฆด ๋•Œ๋งŒ ์ฐธ๊ณ ํ•œ๋‹ค. ์ „์ฒด ์˜ˆ์ œ๋Š” examples/ ์ฐธ๊ณ .

# ํ…์ŠคํŠธ ์ถ”์ถœ
python3 scripts/text_extract.py input.hwpx --format json --include-nested --out output.json

# ํ”Œ๋ ˆ์ด์Šคํ™€๋” ์ „์—ญ ์น˜ํ™˜ (ํ‘œ ์…€ ํฌํ•จ)
python3 scripts/zip_replace_all.py template.hwpx output.hwpx \
  --replace "{ํ•™๊ต๋ช…}=ํ…Œ์ŠคํŠธ์ดˆ" "{๋‹ด๋‹น์ž}=ํ™๊ธธ๋™" --auto-fix-ns

# ์ตœ์†Œ ์„ฑ๊ณต ๊ฒฝ๋กœ: ์ƒ์„ฑ โ†’ ์ถ”์ถœ
python3 examples/01_create_and_save.py
python3 scripts/text_extract.py examples/out/01_created.hwpx

zip_replace_all.py์™€ fix_namespaces.py๋Š” ์ž„์‹œ HWPX๊ฐ€ validate_editor_open_safety()๋ฅผ ํ†ต๊ณผํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋Œ€์ƒ ํŒŒ์ผ์„ ๊ต์ฒดํ•œ๋‹ค. ๊ฒ€์ฆ ์‹คํŒจ ์‹œ ๊ธฐ์กด output์€ ๋ณด์กด๋œ๋‹ค.

builder / document-plan / operating-plan / form-fit ๊ฒฝ๋กœ๋Š” ๊ฐ๊ฐ examples/10_create_with_builder.py, 06_create_from_document_plan.py, 07_create_operating_plan.py, 08_template_formfit.py๋กœ ํ™•์ธํ•˜๋ฉฐ, ๋Œ€์‘ํ•˜๋Š” quickcheck.py --builder/--document-plan/--operating-plan/--template-formfit ํ”Œ๋ž˜๊ทธ๋กœ ๊ฒŒ์ดํŠธ๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค. ์ž์„ธํ•œ ์ ˆ์ฐจ์™€ evidence ๊ณ„์•ฝ์€ references/์— ์žˆ๋‹ค.

์šด์˜ ๋ฉ”๋ชจ

  • save() ๋Œ€์‹  save_to_path()๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ƒˆ ๋ฌธ์„œ ์กฐ๋ฆฝ์—๋Š” hwpx.builder๋ฅผ ์šฐ์„ ํ•˜๊ณ , ์ €์žฅ ์งํ›„ BuilderSaveReport์˜ hard gates(package_validationยทdocument_errorsยทreopen)์™€ visual_review_required๋ฅผ ํ™•์ธํ•œ๋‹ค.
  • replace_text_in_runs()๋Š” ํ‘œ ์…€๊นŒ์ง€ ํ•ญ์ƒ ๋ณด์žฅํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์–‘์‹ ์ „์ฒด ์น˜ํ™˜์€ zip_replace_all.py(๋˜๋Š” form-fit)๋ฅผ ์šฐ์„ ํ•œ๋‹ค.
  • visual_review_required=true๋Š” package/schema/text ๊ฒ€์‚ฌ๋Š” ํ†ต๊ณผํ–ˆ์ง€๋งŒ ์—ด๋ฆฐ ๋ฌธ์„œ์˜ ํŽ˜์ด์ง€ ๋‚˜๋ˆ”ยทํ‘œ ๋งž์ถคยท์ž˜๋ฆผ์€ ์•„์ง ํ™•์ธ ์•ˆ ๋๋‹ค๋Š” ๋œป์ด๋‹ค. ์ตœ์ข… ์ œ์ถœ์„ ๋งํ•˜๋ ค๋ฉด HWPX viewer์—์„œ ์—ด์–ด๋ณธ ๋’ค scripts/visual_review.py๋กœ --screenshot์ด ํฌํ•จ๋œ observed_pass evidence๋ฅผ ๋‚จ๊ธด๋‹ค. viewer๊ฐ€ ์—†๋Š” CI/์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” --viewer none --status blocked fallback์„ ๋‚จ๊ธฐ๊ณ  handoffํ•œ๋‹ค.
  • ์˜ˆ์ œ/๋ฌธ์„œ์—๋Š” ์ด๋ฆ„ยท์ „ํ™”๋ฒˆํ˜ธยท์ด๋ฉ”์ผยท์ฃผ์†Œ ๋“ฑ PII๋ฅผ redaction ์—†์ด ๋„ฃ์ง€ ์•Š๋Š”๋‹ค.

๋” ๋ณด๊ธฐ

  • SKILL.md โ€” ์—์ด์ „ํŠธ์šฉ ์˜์‚ฌ๊ฒฐ์ • ํŠธ๋ฆฌ์™€ ์‹ค์ „ ์›Œํฌํ”Œ๋กœ
  • references/ โ€” API ๋ ˆํผ๋Ÿฐ์Šค(api.md)ยทํ…Œ๋งˆ๋ณ„ ์›Œํฌํ”Œ๋กœยท๊ณต๋ฌธ์„œ ๊ทœ์น™ยทevidence ๊ณ„์•ฝ
  • examples/ โ€” ์ƒ์„ฑยท์ถ”์ถœยท์น˜ํ™˜ยทform-fitยทdocument-planยทmail-merge ์˜ˆ์ œ
  • CHANGELOG.md โ€” ๋ฒ„์ „ ๋ณ€๊ฒฝ ์ด๋ ฅ

์„ค์น˜ ํ›„ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๋ฉด

python3 -m pip install -U python-hwpx lxml๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ณ  python3 scripts/quickcheck.py๊ฐ€ ํ†ต๊ณผํ•˜๋Š”์ง€, ๊ฒฐ๊ณผ ํŒŒ์ผ์ด examples/out/ ์•„๋ž˜ ์ƒ๊ธฐ๋Š”์ง€, ์ž…๋ ฅ์ด ์‹ค์ œ .hwpx ZIP ํŒจํ‚ค์ง€์ธ์ง€ ํ™•์ธํ•œ๋‹ค. ์žฌํ˜„๋˜๋ฉด quickcheck.py ์ถœ๋ ฅ๊ณผ ํ•จ๊ป˜ ์ด์Šˆ๋ฅผ ๋‚จ๊ธด๋‹ค.

์ž‘์„ฑ์ž

๊ณ ๊ทœํ˜„ (airmang) โ€” GitHub @airmang ยท Base Library python-hwpx

License

Apache License 2.0. See LICENSE and NOTICE.

About

Official onboarding skill for HWPX document automation with AI agents.

Topics

Resources

License

Stars

19 stars

Watchers

0 watching

Forks

Contributors