Skip to content
Back to skills

Document Organizer

ASecurity

한국 공공기관 공문서 파일들을 공문 번호별로 자동 분류하여 폴더로 정리합니다. 같은 공문 번호를 가진 파일들(본문 + 첨부파일)을 하나의 폴더에 모아주며, 폴더명은 본문 파일명을 사용합니다. Use when: (1) 공문서 정리, (2) 공문 분류, (3) 공문 파일 정리, (4) 공문 정리 되돌리기가 필요할 때. 파일명 패턴은 references/pattern_examples.md 참조.

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
toolsbashnodegit

Security analysis

A100/100

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

Scanned November 7, 2026

npx -y skills add 1000ssam/skills-for-teachers --skill document-organizer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Document Organizer?

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

Security grade badge for Document Organizer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/1000ssam-document-organizer/badge)](https://www.skillsdirectory.com/skills/1000ssam-document-organizer)

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: document-organizer
description: "한국 공공기관 공문서 파일들을 공문 번호별로 자동 분류하여 폴더로 정리합니다. 같은 공문 번호를 가진 파일들(본문 + 첨부파일)을 하나의 폴더에 모아주며, 폴더명은 본문 파일명을 사용합니다. Use when: (1) 공문서 정리, (2) 공문 분류, (3) 공문 파일 정리, (4) 공문 정리 되돌리기가 필요할 때. 파일명 패턴은 references/pattern_examples.md 참조."
allowed-tools: Bash(node *), Read, Write, Glob, Grep
---

# Document Organizer

## Overview
Windows 환경에서 한국 공공기관 공문서 파일을 공문 번호별로 자동 분류합니다.

**런타임:** Node.js (필수)

## Workflow

Claude는 아래 순서를 **반드시** 따른다.

### Step 1. Config 확인

이 스킬 디렉토리 내 `config.json`을 읽는다.

**config.json이 없는 경우 (최초 실행):**

사용자에게 공문서가 저장된 폴더 경로를 질문한다:

```
"공문서 파일이 들어있는 폴더의 경로를 알려주세요."
```

사용자가 경로를 알려주면, **그 경로를 기본값으로** config.json을 자동 생성한다:

```json
{
  "version": "1.0",
  "default_profile": "work",
  "profiles": {
    "work": {
      "name": "기본 공문 폴더",
      "path": "{사용자가 알려준 경로}",
      "last_used": null
    }
  }
}
```

**중요:**
- 경로 작성 시 반드시 **Windows 절대경로** + **역슬래시 이스케이프(`\\`)**를 사용한다.
- 사용자가 `바탕화면의 공문 모음 폴더` 등 자연어로 말하거나, 현재 세션 작업 디렉토리에서 실행하는 경우에도 절대경로로 변환하여 저장한다.
- **예시 경로를 제시하지 않는다.** 사용자가 지정한 경로가 곧 기본값이 된다.

**config.json이 있는 경우:**

`profiles.<default_profile>.path`를 추출하고 바로 Step 2로 진행한다.

### Step 2. 스크립트 실행

```bash
node "<이 스킬의 디렉토리>/scripts/organize.mjs"
```

- 스킬 디렉토리는 `~/.claude/skills/document-organizer` (설치 위치에 따라 다를 수 있음)
- 프로필 지정 시: `node organize.mjs <config_path> <profile_name>`
- 스크립트가 config.json을 직접 읽고, 대상 폴더를 스캔하고, 정리까지 한번에 수행
- 정리할 때마다 어떤 파일을 어디로 옮겼는지 `config.json`과 같은 폴더의 `.last-organize.json`에 기록한다 (되돌리기에 사용)

### Step 3. 결과 보고

스크립트 출력을 사용자에게 전달 (생성 폴더 수, 이동 파일 수)

- 출력에 `옮기지 않음 (정리 폴더에 같은 이름의 파일이 이미 있음)` 항목이 있으면, 공문번호별 파일 목록을 그대로 보여 주고 "정리 폴더에 같은 이름의 파일이 이미 있어 원래 자리에 남겨 두었습니다. 두 파일을 비교해 필요 없는 쪽을 지워 주세요."라고 안내한다. 어느 파일을 남길지 AI가 임의로 정하거나 덮어쓰지 않는다.

### 공문 정리 되돌리기

사용자가 `"공문 정리 되돌리기"`라고 하면 아래를 실행한다.

```bash
node "<이 스킬의 디렉토리>/scripts/organize.mjs" --undo
```

- 다른 위치의 config를 쓰고 있다면: `node organize.mjs --undo <config_path>`
- 마지막으로 정리한 1회분만 되돌린다. 옮긴 파일을 원래 자리로 돌려놓고, 그때 새로 만든 폴더는 비어 있을 때만 지운다.
- 원래 자리에 같은 이름의 파일이 새로 생겼다면 그 파일은 건드리지 않고 `건너뜀`으로 알린다.
- 한 번 되돌리면 기록이 지워지므로, 같은 정리를 두 번 되돌릴 수는 없다.
- 결과(복원한 파일 수, 건너뛴 파일)를 사용자에게 전달한다.

**최초 실행은 경로 질문 1턴 + config 생성 & 스크립트 실행 1턴 = 최대 2턴.**
**이후 실행은 config 읽기 + 스크립트 실행 = 1턴으로 완료해야 한다.**

## 파일명 패턴

```
(기관명-공문번호 (본문) 발신기관명) [제출] 제목.확장자
(기관명-공문번호 (첨부) 발신기관명) [붙임N] 제목.확장자
(기관명-공문번호 (본문)) [제출] 제목.확장자          ← 발신기관 없는 경우도 지원
```

정규표현식:
```
/\(([^-]+)-(\d+)\s+\((본문|첨부)\)[^)]*\)/
```

`[^)]*`로 괄호 닫기 전까지의 모든 내용(발신기관명 등)을 허용합니다.

상세 예시 → `references/pattern_examples.md`

## Configuration

**위치:** 이 스킬 디렉토리 내 `config.json`

**최초 실행 시:** AI가 사용자에게 경로를 질문하고, 사용자가 지정한 경로를 기본값으로 하여 config.json을 자동 생성한다. 사용자가 직접 편집할 필요 없음.

**구조 예시:**

```json
{
  "version": "1.0",
  "default_profile": "work",
  "profiles": {
    "work": {
      "name": "기본 공문 폴더",
      "path": "(사용자가 최초 실행 시 지정한 경로)",
      "last_used": null
    }
  }
}
```

**경로 규칙:**
- 반드시 Windows 절대경로 사용 (`C:\\...`)
- JSON 내 역슬래시는 이스케이프 (`\\`)
- `/c/Users/...` 같은 Git Bash 스타일 경로 사용 금지
- **기본값 없음:** 사용자가 최초 실행 시 지정한 경로가 곧 기본값

**정리한 폴더를 다른 곳에 두기 (`destination`, 선택):**

기본적으로 공문 폴더는 `path` 안에 만들어진다. 사용자가 "정리한 공문은 다른 폴더에 모아 줘"라고 하면, 그 폴더 경로를 물어 프로필에 `destination`을 추가한다. 이후 `path`에서 파일을 찾아 `destination` 안에 공문별 폴더를 만든다. `destination` 폴더가 없으면 자동으로 만든다.

```json
"work": {
  "name": "기본 공문 폴더",
  "path": "(공문 파일을 내려받는 폴더)",
  "destination": "(정리한 공문 폴더를 모아 둘 폴더)",
  "last_used": null
}
```

`destination`을 지우면 다시 `path` 안에 정리한다. 경로 규칙은 `path`와 같다.

상세 구조 → `references/config_structure.md`

## Commands

| 사용자 입력 | 동작 |
|---|---|
| `"공문서 정리"` / `"공문 정리"` / `"공문 분류"` | 기본 프로필로 정리 |
| `"personal 프로필로 공문 정리"` | 특정 프로필 사용 |
| `"공문 경로 변경"` / `"다른 폴더로 공문 정리"` | 새 경로를 질문하고 config.json 업데이트 |
| `"공문 정리 설정 초기화"` | config.json 삭제 (다음 실행 시 경로 재질문) |
| `"공문 정리 되돌리기"` / `"공문 undo"` | 마지막 정리 1회분 되돌리기 (`organize.mjs --undo`) |
| `"정리한 공문은 다른 폴더에 모아 줘"` | 경로를 묻고 프로필에 `destination` 추가 |

## Output Example

```
공문 모음\
├── (OO고등학교-22206 (본문) 경기도구리남양주교육지원청 초등교육지원과) [제출] AI 중점학교 운영 신청\
│   ├── (OO고등학교-22206 (본문) 경기도구리남양주교육지원청 초등교육지원과) [제출] AI 중점학교.pdf
│   ├── (OO고등학교-22206 (첨부) 경기도구리남양주교육지원청 초등교육지원과) [붙임1] 신청서.hwpx
│   └── (OO고등학교-22206 (첨부) 경기도구리남양주교육지원청 초등교육지원과) [붙임2] 계획서.hwpx
└── (OO고등학교-568 (본문) 경기도구리남양주교육지원청 초등교육지원과) [제출] 디지털튜터\
    ├── (OO고등학교-568 (본문) 경기도구리남양주교육지원청 초등교육지원과) [제출] 디지털튜터.pdf
    └── (OO고등학교-568 (첨부) 경기도구리남양주교육지원청 초등교육지원과) [붙임1] 명단.xlsx
```

## Scripts

- `scripts/organize.mjs` — 메인 정리 스크립트 (Node.js)

## Notes
- 본문 파일이 없는 공문은 `공문_기관명-번호` 폴더명 사용
- 패턴 미매칭 파일은 이동하지 않고 원본 위치 유지
- 이미 폴더가 존재하면 기존 폴더에 파일 추가
- 정리 폴더에 같은 이름의 파일이 이미 있으면 덮어쓰지 않고 원래 자리에 남겨 둔 뒤 목록으로 알림
- 되돌리기 기록 `.last-organize.json`은 개인 경로가 들어 있으므로 공유하거나 커밋하지 않는다

Files in this skill

  • README.md4.2 KB
  • SKILL.md8.1 KB
  • config.example.json204 B
  • install.ps11.8 KB
  • references/config_structure.md2 KB
  • references/pattern_examples.md2.1 KB
  • scripts/organize.mjs7.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.