From k-skill
Parses and converts .hwp/.hwpx documents to Markdown or JSON, with diffing, form-field extraction, and Markdown→HWPX reverse conversion using kordoc. Read-only; for binary editing use the rhwp-edit skill.
How this skill is triggered — by the user, by Claude, or both
Slash command
/k-skill:hwpThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
`kordoc`으로 `.hwp` / `.hwpx` / `.hwpml` 문서를 AI가 읽기 좋은 Markdown 또는 JSON으로 바꾸고,
kordoc으로 .hwp / .hwpx / .hwpml 문서를 AI가 읽기 좋은 Markdown 또는 JSON으로 바꾸고,
필요하면 문서 비교, 양식 필드 추출, Markdown→HWPX 역변환까지 수행한다.
이 스킬의 기본 엔진은 항상 kordoc 이다. 문서 변환, 비교, 필드 추출, 역변환까지 같은 도구로 일관되게 처리한다.
스킬 라우팅 — 이
hwp스킬은 조회/변환(read-only) 전용이다. HWP 바이너리 편집(본문 텍스트 삽입/삭제, 표 생성, 셀 수정, replace-all)은rhwp-edit스킬이, 레이아웃 디버깅·IR 덤프·썸네일·배포용 문서 잠금 해제 같은 고급 검사는rhwp-advanced스킬이 맡는다.
.docx, .xlsx, .pdf 만 다루더라도 문서 파싱 자체가 아니라 편집기 GUI 자동화가 필요한 경우rhwp-edit 스킬의 k-skill-rhwp CLI 를 사용한다.rhwp-advanced 스킬의 업스트림 rhwp CLI 를 사용한다.kordoc과 pdfjs-dist를 같은 전역/로컬 환경에 설치했거나, 둘 다 포함된 npx --yes --package kordoc --package pdfjs-dist kordoc ... 실행 환경kordoc CLI는 시작 시 pdfjs-dist를 바로 로드하므로 PDF를 안 써도 함께 설치해야 한다.hwp, .hwpx, .hwpml 파일 경로 또는 폴더/글롭 경로markdown, json, hwpxkordoc다음 작업은 모두 기본적으로 kordoc으로 처리한다.
blocks, metadata)watch)CLI만으로 부족하면 Node API를 사용한다.
parse() — Markdown + 구조화 블록compare() — 신구 문서 비교extractFormFields() — 파싱된 블록에서 양식 필드 추출markdownToHwpx() — Markdown→HWPX 역변환일회성 변환이면 둘 다 포함한 npx 형태를 바로 쓴다.
npx --yes --package kordoc --package pdfjs-dist kordoc --help
반복 실행용 전역 설치가 필요하면:
npm install -g kordoc pdfjs-dist
현재 배포된 kordoc CLI는 pdfjs-dist가 없으면 kordoc --help 단계부터 실패하므로
깨끗한 환경에서는 두 패키지를 같이 설치한 뒤 실행한다.
parse(), compare(), extractFormFields(), markdownToHwpx() 같은 ESM 예시는
전역 NODE_PATH가 아니라 로컬 프로젝트 설치 기준으로 실행한다.
mkdir -p ./kordoc-local && cd ./kordoc-local
npm init -y
npm install kordoc pdfjs-dist
이미 package.json이 있는 작업 디렉터리라면 npm install kordoc pdfjs-dist만 추가로 실행하면 된다.
npx --yes --package kordoc --package pdfjs-dist kordoc 보고서.hwp -o 보고서.md
여러 문서를 한 번에 처리하려면:
npx --yes --package kordoc --package pdfjs-dist kordoc ./문서함/* -d ./변환결과
특정 페이지 범위만 읽고 싶으면:
npx --yes --package kordoc --package pdfjs-dist kordoc 보고서.hwp --pages 1-3
npx --yes --package kordoc --package pdfjs-dist kordoc 검토서.hwpx --format json > 검토서.json
JSON 결과에서는 success, markdown, blocks, metadata를 우선 확인한다.
표나 이미지가 중요하면 blocks 안의 table, image 타입을 확인한다.
node --input-type=module - <<'EOF'
import { parse, extractFormFields } from "kordoc";
const result = await parse("신청서.hwpx");
if (!result.success) {
console.error(result.error);
process.exit(1);
}
const fields = extractFormFields(result.blocks);
console.log(JSON.stringify(fields, null, 2));
EOF
자동 변환이 계속 들어오는 폴더면 CLI의 watch 명령을 쓴다.
npx --yes --package kordoc --package pdfjs-dist kordoc watch ./문서함
node --input-type=module - <<'EOF'
import { markdownToHwpx } from "kordoc";
import { writeFileSync } from "node:fs";
const hwpx = await markdownToHwpx("# 제목\n\n본문\n\n| 항목 | 값 |\n| --- | --- |\n| 성명 | 홍길동 |");
writeFileSync("출력.hwpx", Buffer.from(hwpx));
EOF
node --input-type=module - <<'EOF'
import { compare } from "kordoc";
import { readFileSync } from "node:fs";
const before = readFileSync("이전버전.hwp");
const after = readFileSync("최신버전.hwpx");
const diff = await compare(before, after);
console.log(diff.stats);
EOF
success: true 와 blocks / metadata 존재 여부 확인extractFormFields(result.blocks) 결과가 비어 있지 않은지 확인.hwpx 파일이 열리고 기본 서식/테이블 구조가 유지되는지 확인diff.stats 에 added / removed / modified 값이 합리적인지 확인kordoc은 HWP/HWPX뿐 아니라 HWPML, PDF, XLSX, DOCX도 함께 다룬다.watch 이며, 양식 처리는 extractFormFields() 같은 Node API로 연결한다.npx claudepluginhub nomadamas/k-skill --plugin k-skillEdits HWP documents (insert/delete text, replace-all, create tables, set cell text) via the k-skill-rhwp CLI wrapping @rhwp/core WASM engine. Use for round-trip safe binary HWP editing without format conversion.
Edits, extracts, and automates Korean HWPX/OWPML documents. Handles template placeholder replacement, document creation, and operating plan generation.
Creates, edits, reads, and validates HWPX Korean documents via XML extraction from section0.xml/header.xml, Python script assembly, and page drift checks to preserve layout.