oma-hwp
Skill223 starsChanged 28 days agoMITView on GitHub
Convert Hangul HWP, HWPX, or HWPML documents to Markdown with kordoc. Use for text, table, and image extraction from these formats.
We split this skill into the rules it gives an agent
12 rules. About 0 are common, 3 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 61
Check that bun is available.
- Very specific: line 66
ACT: Run kordoc with explicit output target and requested options.
- Very specific: line 71
If the input is .pdf, stop and route to oma-pdf.
- Very specific: line 72
If the input is .xlsx or .docx, explain that this skill does not advertise those formats.
- Very specific: line 73
If bun is unavailable, stop and ask the user to install Bun.
- Very specific: line 74
If Markdown is produced, run resources/flatten-tables.ts unless the caller explicitly needs HTML tables or PUA glyphs preserved.
- Very specific: line 75
If output is empty or garbled, consult resources/troubleshooting.md.
- Distinctive: line 142
Does not intentionally modify the source HWP-family document.
- Very specific: line 145
Always pass @latest or an explicit pinned version to avoid stale bunx cache.
- Distinctive: line 146
Always pass an explicit output target when the user expects a file.
- Distinctive: line 147
Do not add custom security defenses around kordoc's ZIP, XML, SSRF, or XSS defenses.
- Very specific: line 149
Keep full CLI details in resources/execution-protocol.md and troubleshooting branches in resources/troubleshooting.md.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
HWP Skill - HWP / HWPX / HWPML to Markdown Conversion
Scheduling
Goal
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.
Intent signature
- User asks to convert, parse, read, extract, or transform
.hwp,.hwpx, or.hwpml. - User mentions Korean word processor files, Hangul documents, government forms, or "한글 파일".
- User needs headings, tables, nested tables, lists, images, footnotes, or hyperlinks extracted from HWP-family files.
When to use
- Converting Korean HWP documents (
.hwp,.hwpx,.hwpml) to Markdown - Preparing Korean government/enterprise documents for LLM context or RAG
- Extracting structured content (tables, headings, lists, images) from HWP
- User says "convert this HWP", "parse hwpx", "HWP to markdown", "한글 파일"
When NOT to use
- PDF files -> use
oma-pdf(OCR + Tagged PDF specialization) - XLSX / DOCX files -> out of scope; run
bunx kordocdirectly if needed (note:oma-docsis the documentation-drift skill, not a converter) - Generating or editing HWP documents -> out of scope (kordoc itself supports
generate/fill/seal/patch/redact/lint/validate/rendersubcommands; runbunx kordoc@latest <subcommand>directly if needed) - Already-text files -> use Read tool directly
Expected inputs
input_path:.hwp,.hwpx, or.hwpmlfile pathoutput_pathoroutput_dir: optional explicit output targetformat: optional output format —markdown(default),json(structured AST), orchunks(RAG-oriented structural chunk JSON with heading breadcrumbs and standalone table chunks)page_range: optional page or section rangekordoc_version: optional pinned kordoc version
Expected outputs
- Markdown output next to the input file or in the requested directory
- Optional JSON or RAG-chunks output when requested
- Post-processed Markdown with flattened GFM tables and stripped Private Use Area glyphs by default
- A short report with output path, detected source format, and conversion issues
Dependencies
bunandbunxbunx kordoc@latestor configured pinned kordoc versionresources/flatten-tables.tsfor Markdown cleanup- Local filesystem access to input and output paths
Control-flow features
- Branches by file extension, output target, format, page range, encryption/DRM state, and post-processing requirements
- Calls external CLI tools through
bunxandbun run - Reads local HWP-family files and writes local Markdown or JSON output
- Routes non-HWP inputs to other skills instead of stretching this skill's scope
Structural Flow
Entry
- Confirm the input path exists.
- Confirm the extension is
.hwp,.hwpx, or.hwpml. - Resolve output path or directory and default filename.
- Check that
bunis available.
Scenes
- PREPARE: Validate path, extension, size, output target, and requested format.
- ACQUIRE: Detect source format and runtime availability.
- ACT: Run
kordocwith explicit output target and requested options. - VERIFY: Post-process Markdown and inspect structure for headings, tables, lists, images, and footnotes.
- FINALIZE: Report output path, source format, and any conversion limitations.
Transitions
- If the input is
.pdf, stop and route tooma-pdf. - If the input is
.xlsxor.docx, explain that this skill does not advertise those formats. - If
bunis unavailable, stop and ask the user to install Bun. - If Markdown is produced, run
resources/flatten-tables.tsunless the caller explicitly needs HTML tables or PUA glyphs preserved. - If output is empty or garbled, consult
resources/troubleshooting.md.
Failure and recovery
| 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) |
Exit
- Success: output file exists and structure is readable after post-processing.
- Partial success: output exists with explicitly reported table, glyph, encryption, or fidelity limitations.
- Failure: no reliable output is produced and the blocking cause is reported.
Logical Operations
Actions
| 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 |
Tools and instruments
kordoc: primary HWP-family conversion CLIflatten-tables.ts: post-processing for GFM tables and Hancom PUA cleanupbun/bunx: runtime and CLI executor
Canonical command path
bunx 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}"Resource scope
| 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 |
Preconditions
- Input file exists and is readable.
- Output location is writable or can be created.
bunis installed.kordoccan parse the document or fail with a reportable error.
Effects and side effects
- Creates Markdown or JSON output files.
- May flatten merged-cell tables, trading cell fidelity for Markdown compatibility.
- Strips Private Use Area characters by default because they render as blanks without Hancom fonts.
- Does not intentionally modify the source HWP-family document.
Guardrails
- Always pass
@latestor an explicit pinned version to avoid stalebunxcache. - Always pass an explicit output target when the user expects a file.
- Do not add custom security defenses around kordoc's ZIP, XML, SSRF, or XSS defenses.
- Report missing tables, garbled text, empty output, encrypted segments, and best-effort DRM extraction.
- Keep full CLI details in
resources/execution-protocol.mdand troubleshooting branches inresources/troubleshooting.md.
Supported Formats
| 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 thechunksformat are documented inresources/execution-protocol.md.
References
- Execution protocol:
resources/execution-protocol.md - Troubleshooting:
resources/troubleshooting.md - Configuration: read the
hwp:section of.agents/oma-config.yamlfirst, then fall back toconfig/hwp-config.yamlfor any key it does not set (supported_formatslives only in the skill config). User overrides belong in.agents/oma-config.yaml, sinceoma updateoverwrites the skill config. - Upstream: https://github.com/chrisryugj/kordoc
- Related:
../oma-pdf/SKILL.md(use for.pdfinputs)
Other versions3 projects use a version of this.
Word for word · 2
- first-fluke/oh-my-ag★ 1.3k100% same
- first-fluke/oh-my-agent★ 1.3k100% same
Edited · 1
- deathrashed/agents★ 196% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository131 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .cursor/rules/backend.mdcCursor rule
- .cursor/rules/branching-strategy.mdcCursor rule
- .cursor/rules/build-guide.mdcCursor rule
- .cursor/rules/commit.mdcCursor rule
- .cursor/rules/database.mdcCursor rule
- .cursor/rules/debug.mdcCursor rule
- .cursor/rules/design.mdcCursor rule
- .cursor/rules/design-tokens-guide.mdcCursor rule
- .cursor/rules/dev-workflow.mdcCursor rule
- .cursor/rules/frontend.mdcCursor rule
- .cursor/rules/i18n-arb.mdcCursor rule
- .cursor/rules/i18n-guide.mdcCursor rule
- .cursor/rules/infrastructure.mdcCursor rule
- .cursor/rules/lint-format-guide.mdcCursor rule
- .cursor/rules/market.mdcCursor rule
- .cursor/rules/mobile.mdcCursor rule
- .cursor/rules/preferred-editing-tools.mdcCursor rule
- .cursor/rules/quality.mdcCursor rule
- .cursor/rules/test-guide.mdcCursor rule
- oma-academic-writingSkill
- oma-architectureSkill
- oma-backendSkill
- oma-brainstormSkill
- oma-coordinationSkill
- oma-dbSkill
- oma-debugSkill
- oma-deepsecSkill
- oma-designSkill
- oma-dev-workflowSkill
- oma-docsSkill
- oma-explanationSkill
- oma-frontendSkill
- oma-imageSkill
- oma-marketSkill
- oma-mobileSkill
- oma-observabilitySkill
- oma-orchestrationSkill
- oma-pdfSkill
- oma-pmSkill
- oma-qaSkill
- oma-recapSkill
- oma-refactorSkill
- oma-scholarSkill
- oma-scmSkill
- oma-searchSkill
- oma-skill-creationSkill
- oma-slideSkill
- oma-tf-infraSkill
- oma-translationSkill
- oma-videoSkill
- oma-voiceSkill
- architectureSkill
- brainstormSkill
- commitSkill
- convertSkill
- coordinate-proSkill
- coordinateSkill
- debugSkill
- deepinitSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

