first-fluke/oma-hwp
> Convert HWP / HWPX / HWPML files to Markdown using kordoc. Extracts text, headings, tables, lists, images, footnotes, and hyperlinks. Use for Korean word processor files (Hangul), government documents, and AI-ready data preparation.
npx skills add https://github.com/first-fluke/oh-my-agent --skill oma-hwp
Convert Korean HWP-family documents into readable Markdown or structured JSON while preserving document structure for LLM context, RAG, government-document review, or enterprise document processing.
.hwp, .hwpx, or .hwpml..hwp, .hwpx, .hwpml) to Markdownoma-pdf (OCR + Tagged PDF specialization)bunx kordoc directly if needed (note: oma-docs is the documentation-drift skill, not a converter)generate / fill / seal / patch / redact / lint / validate / render subcommands; run bunx kordoc@latest <subcommand> directly if needed)input_path: .hwp, .hwpx, or .hwpml file pathoutput_path or output_dir: optional explicit output targetformat: optional output format — markdown (default), json (structured AST), or chunks (RAG-oriented structural chunk JSON with heading breadcrumbs and standalone table chunks)page_range: optional page or section rangekordoc_version: optional pinned kordoc versionbun and bunxbunx kordoc@latest or configured pinned kordoc versionresources/flatten-tables.ts for Markdown cleanupbunx and bun run.hwp, .hwpx, or .hwpml.bun is available.kordoc with explicit output target and requested options..pdf, stop and route to oma-pdf..xlsx or .docx, explain that this skill does not advertise those formats.bun is unavailable, stop and ask the user to install Bun.resources/flatten-tables.ts unless the caller explicitly needs HTML tables or PUA glyphs preserved.resources/troubleshooting.md.| Failure | Recovery |
|---------|----------|
| bun or bunx unavailable | Ask user to install Bun |
| Unsupported or mismatched format | Check extension and magic bytes, then route or stop |
| Encrypted or DRM-locked document | Report limitation and request an accessible copy when needed |
| Empty Markdown output | Treat as possible scanned-image content and recommend OCR outside this skill |
| Complex merged tables | Accept flattened Markdown or HTML fallback as best effort |
| Stale kordoc cache | Use bunx kordoc@latest or configured pinned version |
| Cannot find module "turndown" from flatten-tables.ts | Run bun install in this skill's resources/ directory (its node_modules is gitignored and absent on fresh clones) |
| Action | SSL primitive | Evidence |
|--------|---------------|----------|
| Validate file path and extension | VALIDATE | Input preflight in execution protocol |
| Check runtime availability | VALIDATE | bun --version |
| Select output target and format | SELECT | Output behavior and config |
| Run converter | CALL_TOOL | bunx kordoc@latest |
| Write output artifact | WRITE | Markdown or JSON output |
| Flatten tables and strip PUA glyphs | CALL_TOOL | resources/flatten-tables.ts |
| Inspect extraction quality | VALIDATE | Verification step |
| Report result | NOTIFY | Final user-facing summary |
kordoc: primary HWP-family conversion CLIflatten-tables.ts: post-processing for GFM tables and Hancom PUA cleanupbun / bunx: runtime and CLI executorbunx kordoc@latest "{input_path}" -o "{output_path}"
# fresh clone: run `bun install` in {skill_dir}/resources/ first (node_modules is gitignored)
bun "{skill_dir}/resources/flatten-tables.ts" "{output_path}"
# {skill_dir} = this skill's directory: .agents/skills/oma-hwp (project mode) or ~/.agents/skills/oma-hwp (global mode)
For batch conversion, use an explicit output directory:
bunx kordoc@latest "{input_pattern}" -d "{output_dir}"
| Scope | Resource target |
|-------|-----------------|
| LOCAL_FS | Input HWP-family files and generated outputs |
| PROCESS | bunx kordoc and bun run subprocesses |
| MEMORY | Format decisions, validation notes, and final report |
bun is installed.kordoc can parse the document or fail with a reportable error.@latest or an explicit pinned version to avoid stale bunx cache.resources/execution-protocol.md and troubleshooting branches in resources/troubleshooting.md.| Format | Extension | Notes |
|--------|-----------|-------|
| HWP 5.x binary | .hwp | Full support (incl. DRM-locked via kordoc's rhwp-algorithm port) |
| HWPX | .hwpx | Full support incl. nested tables, merged cells |
| HWPML | .hwp (XML variant) | Auto-detected by signature |
> kordoc also parses PDF / XLSX / DOCX and offers document-authoring subcommands (generate, fill, seal, patch, redact, lint, validate, render). All of those are intentionally outside this skill's scope; see "When NOT to use". Conversion-quality flags (--dedupe-headers, --keep-empty-cols, --inline-images) and the chunks format are documented in resources/execution-protocol.md.
resources/execution-protocol.mdresources/troubleshooting.mdconfig/hwp-config.yaml../oma-pdf/SKILL.md (use for .pdf inputs)Take first-fluke/oma-hwp from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.