Skip to content
Back to skills

form-tailor

ASecurity

기관 양식 샘플이나 이전 자료를 넣으면 그 틀·문체·서식을 학습해 새 내용을 같은 양식으로 만들어 주는 문서 생성 스킬. 고정 템플릿을 탑재하지 않고, 사용자가 런타임에 제공한 샘플(.hwp/.hwpx/.docx)에서 구조·글머리 체계(□ㅇ-*①Ⅰ)·개조식 문체·표 관행·제목/서명/날짜 형식을 추출(프로파일)한 뒤, 새 원고 내용을 그 프로파일에 맞춰 재구성하고 동일 형식으로 출력한다. 생성 후에는 샘플 대비 서식 충실도(섹션 순서·기호체계·문체 준수)를 점검해 보고한다. 다음 상황에서 반드시 사용한다: '기관 양식대로 만들어줘', '이 샘플처럼 작성', '양식 맞춰서', '이전 보고서 형식으로', '한글 보고서 양식', '보고서 서식 맞춤', '기관 서식 적용', '샘플 문서 틀 재사용' 등의 요청. 백지에서 자유 형식 문서를 쓰는 것이 아니라, 주어진 양식에 정확히 맞추는 작업에 적용한다. 내용 자체의 조사·집필은 별도 스킬/작업으로 하고, 이 스킬은 '양식 이식'에 집중한다.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 22, 2026
ai-agentspythonapi

Works with

  • api
  • mcp

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned September 22, 2026

npx -y skills add parkjui92/form-tailor --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of form-tailor?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for form-tailor
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/parkjui92-form-tailor/badge)](https://www.skillsdirectory.com/skills/parkjui92-form-tailor)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: form-tailor
description: "기관 양식 샘플이나 이전 자료를 넣으면 그 틀·문체·서식을 학습해 새 내용을 같은 양식으로 만들어 주는 문서 생성 스킬. 고정 템플릿을 탑재하지 않고, 사용자가 런타임에 제공한 샘플(.hwp/.hwpx/.docx)에서 구조·글머리 체계(□ㅇ-*①Ⅰ)·개조식 문체·표 관행·제목/서명/날짜 형식을 추출(프로파일)한 뒤, 새 원고 내용을 그 프로파일에 맞춰 재구성하고 동일 형식으로 출력한다. 생성 후에는 샘플 대비 서식 충실도(섹션 순서·기호체계·문체 준수)를 점검해 보고한다. 다음 상황에서 반드시 사용한다: '기관 양식대로 만들어줘', '이 샘플처럼 작성', '양식 맞춰서', '이전 보고서 형식으로', '한글 보고서 양식', '보고서 서식 맞춤', '기관 서식 적용', '샘플 문서 틀 재사용' 등의 요청. 백지에서 자유 형식 문서를 쓰는 것이 아니라, 주어진 양식에 정확히 맞추는 작업에 적용한다. 내용 자체의 조사·집필은 별도 스킬/작업으로 하고, 이 스킬은 '양식 이식'에 집중한다."
---

# form-tailor — 기관 양식 맞춤 제작

**핵심 아이디어:** 이 스킬은 특정 기관의 템플릿을 내장하지 않는다. 대신 **사용자가 제공한 샘플에서 "양식"을 데이터로 추출**하고, 새 내용을 그 틀에 부어 같은 형식으로 출력한다. 즉 양식은 코드가 아니라 **런타임 입력**이다 — 그래서 어느 기관 양식에도 적용되고, 저장소에는 어떤 기관의 자산도 담기지 않는다.

```
[샘플 양식] ──파싱──▶ [양식 프로파일] ──┐
                                       ├──▶ [양식에 맞춘 새 문서] ──▶ [충실도 점검]
[새 내용/원고] ────정리──────────────────┘
```

---

## 입력 두 가지

1. **양식 샘플(필수)**: 따라 할 틀. 기관 배포 서식, 지난번 보고서/계획서, 빈 양식 폼 등. `.hwp` / `.hwpx` / `.docx` / (`.pdf`는 구조 참고용).
2. **채울 내용(필수)**: 새로 담을 원고·메모·요점. 이미 다른 형식으로 쓴 초안이어도 되고, 항목만 나열한 메모여도 된다.

둘 중 하나라도 없으면 사용자에게 요청한다. 특히 샘플 없이 "기관 양식"만 언급되면, "따라 할 샘플 파일을 주시면 그 틀대로 맞춰 드립니다"라고 안내한다(임의로 지어낸 양식을 쓰지 않는다).

---

## Phase 1: 양식 프로파일 추출 (learn-from-sample)

샘플을 파싱해 **양식 프로파일**을 만든다. 도구 우선순위:

| 형식 | 파싱 도구 (우선순위) |
|------|---------------------|
| `.hwp` / `.hwpx` | **kordoc MCP** — `parse_document`(구조), `parse_form`(폼필드), `extract_profile`(스타일), `parse_table`(표), `detect_format` |
| `.docx` | **python-docx** (아래 레시피) → 또는 docx 스킬 |
| `.pdf` | pdf 스킬로 텍스트·레이아웃 참고(정밀 서식은 제한적) |

> **도구 부재 시**: kordoc·pandoc·soffice가 모두 없고 입력이 `.docx`면 **python-docx가 유일 경로**다. 이때 아래 레시피를 반드시 따른다. 입력이 `.hwp/.hwpx`인데 kordoc이 없으면, 사용자에게 kordoc 설치를 안내하거나 `.docx`로 저장해 달라고 요청한다(LibreOffice 변환은 표가 평탄화될 수 있음을 알림).

### .docx 파싱 레시피 (python-docx)

python-docx는 고수준 API가 스타일 상속을 해석하지 않으므로, 아래 폴백을 지켜야 프로파일이 반쪽으로 비지 않는다:

- **글머리 레벨 감지**: 각 문단 텍스트의 **선행 글머리 글자**(□ ㅇ - * ① Ⅰ)와, 그 앞의 **선행 공백 수**(`text[:len(text)-len(text.lstrip())]`의 길이) 또는 `paragraph_format.left_indent`로 레벨을 판정. 둘 중 관측되는 것을 기록(둘 다 없으면 미관측).
- **본문 글꼴**: `run.font.name/size`가 `None`이면 → `styles['Normal'].font` → 그래도 None이면 docDefaults 상속(미해석)으로 보고 **"미관측"** 표기. ("본문 15pt"식 단정은 관측될 때만.)
- **표 헤더 음영**: 고수준 API 없음. 셀 XML의 `tcPr/w:shd@w:fill`(예: `D9D9D9`)을 직접 읽는다.
- **여백·용지**: `section.page_width/height`, `*_margin`은 EMU로 **정확 관측·복제 가능**(신뢰 필드).
- **줄간격**: `paragraph_format.line_spacing`이 None이면 미관측.

> 원칙: **관측된 것만 프로파일에 적고, 못 읽은 필드는 `UNOBSERVED`로 명시**한다(지어내지 않는다). 무엇이 관측되고 무엇이 안 되는지를 사용자에게 알린다.

추출할 프로파일 항목(→ `references/profile-schema.md`의 스키마로 기록):

- **문서 유형·용도**, **섹션 골격**(대제목→절→항목→번호 계층·순서, 필수 섹션), **글머리 기호 체계**(레벨별 기호·들여쓰기), **문체**(개조식 어미/시제), **머리 정보**(제목·부제·날짜표기·서명형식·문서번호), **표 관행**(열 구성·헤더·정렬·음영), **강조**, **분량**, **글꼴·여백**(관측 가능한 것만; hwpx는 원본 스타일 공여 보존).

### 프로파일 승인 게이트

프로파일을 사용자에게 요약 보고하고 확인받는다 — "이 샘플에서 이런 틀을 읽었습니다(관측 못 한 항목: …). 이대로 맞출까요?" 잘못 읽은 틀로 전체를 생성하는 낭비를 막는다.

> **비대화형·단발 실행(배치·서브에이전트 등) 폴백**: 확인을 기다릴 수 없으면 **프로파일(UNOBSERVED 포함)을 산출물로 남기고 진행**한다. 확인이 필요한 항목은 Phase 4 점검표에 ⚠️로 집약한다. 중단하지 않는다.

## Phase 2: 내용 매핑

새 내용을 프로파일의 골격에 배치한다.

1. 새 원고를 섹션 골격에 매핑한다. 프로파일에 있는 **필수 섹션**이 비면 사용자에게 물어 채운다.
2. **머리 정보 결측 처리**: 새 내용에 날짜·서명자 등 머리 정보가 없으면, **지어내지 말고** 형식만 적용한 placeholder(예: 날짜 형식 유지 + "(작성일)", 서명 "직책 (이름)")를 넣고 Phase 4 점검표에 ⚠️로 표시해 확인을 요청한다.
3. 각 항목을 프로파일의 **글머리 레벨**에 할당한다(기호·선행공백은 텍스트에 넣지 않는다 — Phase 3 생성기가 부착. 이중부착 금지).
4. 프로파일의 **문체 규칙**을 적용한다: 개조식이면 `references/korean-form-conventions.md`의 **명사구→개조식 변환표**(섹션 성격별 시제 매핑)를 따라 어미를 정규화. 제목·날짜·시간도 관행에 맞춰 정규화.
5. **표 스키마 충돌 규칙(중요)**: 새 데이터의 자연스러운 열 수가 샘플 표의 열 수와 **다르면**, 샘플 열에 **무단 편입하지 않는다**(빈 칸을 "-"로 메우거나 한 값을 반복해 채우면 데이터가 왜곡됨). 사용자에게 "샘플 표 열(구분/현황/계획/비고)에 맞출지, 데이터에 맞는 열로 새 표를 만들지"를 묻는다. 비대화형이면 **데이터 형상에 맞는 표로 생성하고** 그 사실을 Phase 4에 ⚠️로 표시한다.
6. 내용의 사실·수치는 **바꾸지 않는다.** 양식만 이식한다. (문체 변환 중 의미가 바뀌면 안 됨 — 애매하면 원문 유지 후 플래그.)

산출 중간물: `profile-schema.md` 형식의 **채워진 spec(JSON/YAML)**.

## Phase 3: 생성

프로파일에 맞는 형식으로 출력한다. **글머리 기호·선행공백은 이 단계에서 부착**한다(레벨별 기호 + 관측된 들여쓰기).

- **hwpx 샘플 → hwpx 출력**: 폼필드 양식이면 kordoc `fill_form`. **완성 문서형 샘플이면 "스타일 클론" 방식**을 쓴다 — 샘플 패키지의 스타일 시스템(명명 스타일·문단/글자 모양·표 서식 `borderFill`·판형·머리말·masterpage)을 통째 상속하고 본문(`section0.xml`)만 원고에서 재구성하는 것으로, 프리셋 생성보다 서식 충실도가 월등하다. 절차는 ①샘플 스타일 프로파일링 → ②상속 빌드 → ③검증(고아 스타일 참조 0·표 행렬 1:1·왕복 대조). 샘플이 `.hwp`면 한글에서 `.hwpx`로 저장을 요청한 뒤 사용한다.
  - 함정: ●형 글머리는 문단 모양에 붙은 이미지라 텍스트로 중복 입력하지 말 것 · 장/절 제목이 그림+글상자 묶음이면 통째로 복제 · 여백 지정이 `hc:switch` 안에 있을 수 있음 · HWPUNIT = px×75 · 네임스페이스 접두사는 원본 그대로 보존.
- **docx 샘플 → docx 출력**: python-docx로 생성. **원본에서 관측한 서식을 명시적으로 재적용**한다(제목 글꼴·크기·정렬, □절 볼드, 셀 음영 `w:shd`, 여백 EMU, 본문 Normal 스타일). docx 스킬이 있으면 활용.
- 사용자가 원하면 마크다운 초안도 병행 출력(검토용).

출력 경로는 사용자 지정 또는 작업 디렉터리. 원본 샘플을 덮어쓰지 않는다(새 파일명).

## Phase 4: 충실도 점검 (검증 내장 — 이 스킬의 차별점)

생성물을 **샘플 프로파일과 대조**해 서식 충실도를 점검하고 보고한다. `references/fidelity-checklist.md`를 사용한다(hwpx·docx 각각의 서식 보존 항목 포함). hwpx는 kordoc `compare_documents`로 구조 비교 가능.

```
## 양식 충실도 점검

| 항목 | 샘플 | 생성물 | 판정 |
|------|------|--------|------|
| 섹션 골격·순서 | Ⅰ□ㅇ- 계층 | 동일 | ✅ |
| 글머리 기호체계 | ㅇ1/-3/*5칸 | 동일 | ✅ |
| 기호 이중부착 | — | 0건 | ✅ |
| 개조식 문체 | ~함/~임 | 3개 항목 서술체 잔존 | ⚠️ 위치 명시 |
| 날짜 표기 | '26. 5. 7.(목) | 형식 일치, 값 placeholder | ⚠️ 확인요청 |
| 표 열 구성 | 4열 | 데이터 형상에 맞춰 2열 생성 | ⚠️ 사유 명시 |
| 서명 실명 | (샘플 실명) | 미복제 | ✅(확인요청) |
| 필수 섹션 | 붙임 포함 | 누락 | 🔴 |

→ ⚠️/🔴 항목은 수정 위치를 명시하고, 승인 시 반영.
```

충실도 점검은 "양식을 지켰다는 착각"을 막는다 — 생성 자체보다 이 대조가 이 스킬의 값이다.

---

## 안전·범위 원칙

1. **독점 템플릿 미탑재**: 이 스킬은 어떤 기관의 템플릿·서식 파일도 내장하지 않는다. 양식은 항상 사용자가 런타임에 제공하며, 그 샘플은 사용자의 것이다.
2. **양식 이식에 집중**: 내용의 조사·집필·사실 생성은 이 스킬의 일이 아니다. 내용이 부족하면 지어내지 말고 사용자에게 요청한다.
3. **사실 불변**: 문체·서식 변환이 수치·고유명사·주장을 바꾸지 않는다. 애매하면 원문 유지 후 플래그.
4. **샘플 개인정보 미복제**: 샘플의 실명 서명·연락처가 새 문서에 그대로 복제되지 않도록, 머리 정보는 새 내용 기준으로 채우고 남은 잔여는 점검에서 표시한다.
5. **관측만 기록**: 못 읽은 서식은 지어내지 않고 `UNOBSERVED`로 남긴다.
6. **경량 승인 게이트**: 프로파일 요약(Phase 1)과 충실도 점검(Phase 4)에서 확인. 비대화형이면 산출물로 남기고 진행.

## 관련 도구·레퍼런스

- 양식 프로파일 스키마: `references/profile-schema.md`
- 한국 공문서 일반 작성 관행 + **명사구→개조식 변환표**: `references/korean-form-conventions.md`
- 충실도 점검 항목(hwpx·docx): `references/fidelity-checklist.md`
- hwpx 심화(스타일 공여 빌드, 폼필드 채움)는 kordoc MCP 문서 참조. kordoc 미설치 시 위 .docx 레시피로 폴백하되 hwpx 고유 서식 보존은 제한됨을 알린다.

Files in this skill

  • CHANGELOG.md3.5 KB
  • README.en.md7.8 KB
  • SKILL.md11.6 KB
  • docs/why.md29.5 KB
  • examples/example-walkthrough.md2.1 KB
  • form-tailor.skill35.1 KB
  • references/fidelity-checklist.md2.5 KB
  • references/korean-form-conventions.md3.9 KB
  • references/profile-schema.md4.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.