oma-hwp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited oma-hwp (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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 thechunksformat are documented inresources/execution-protocol.md.
resources/execution-protocol.mdresources/troubleshooting.mdhwp: section of .agents/oma-config.yaml first, then fall back to config/hwp-config.yaml for any key it does not set (supported_formats lives only in the skill config). User overrides belong in .agents/oma-config.yaml, since oma update overwrites the skill config.../oma-pdf/SKILL.md (use for .pdf inputs)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.