> 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)Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Publish Markdown articles to X (Twitter) Articles editor with proper formatting. Use when user wants to publish a Markdown file/URL to X Articles, or mentions "publish to X", "post article to Twitter", "X article", or wants help with X Premium article publishing. Handles cover image upload and converts Markdown to rich text automatically.
AI-powered PPT generation with document analysis and styled images
Self-hosted, open-source alternative to Google NotebookLM for AI-powered research and document analysis. Use when organizing research materials into notebooks, ingesting diverse content sources (PDFs, videos, audio, web pages, Office documents), generating AI-powered notes and summaries, creating multi-speaker podcasts from research, chatting with documents using context-aware AI, searching across materials with full-text and vector search, or running custom content transformations. Supports 16+ AI providers including OpenAI, Anthropic, Google, Ollama, Groq, and Mistral with complete data privacy through self-hosting.
Cell (Cell Press) figure preparation: resolution (300-1000 DPI), formats (TIFF/PDF), RGB color, Avenir/Arial fonts, uppercase panel labels, strict image manipulation policies.
Self-hosted, open-source alternative to Google NotebookLM for AI-powered research and document analysis. Use when organizing research materials into notebooks, ingesting diverse content sources (PDFs, videos, audio, web pages, Office documents), generating AI-powered notes and summaries, creating multi-speaker podcasts from research, chatting with documents using context-aware AI, searching across materials with full-text and vector search, or running custom content transformations. Supports 16+ AI providers including OpenAI, Anthropic, Google, Ollama, Groq, and Mistral with complete data privacy through self-hosting.
Use when creating, editing, formatting, exporting, or extracting LibreOffice Writer (.odt) documents via UNO, including session-based edits, structured text targets, tables, images, lists, patch workflows, and snapshots.
Publish Markdown articles to X (Twitter) Articles editor with proper formatting. Use when user wants to publish a Markdown file/URL to X Articles, or mentions "publish to X", "post article to Twitter", "X article", or wants help with X Premium article publishing. Handles cover image upload and converts Markdown to rich text automatically.
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.