Install any skill in seconds. Free to start, no credit card required.
Get Started Free →AI(ChatGPT·Claude·Gemini 등)가 쓴 한글 텍스트를 "사람이 쓴 글처럼" 윤문해주는 오케스트레이터 스킬. 번역투·영어 인용 과다·기계적 병렬·관용구·피동태 남용·접속사 남발·리듬 균일성·이모지/불릿 과다 등 10대 카테고리 40+ AI 티 패턴을 탐지·분류해 내용은 한 글자도 건드리지 않고 문체·리듬·표현만 자연스러운 한국어로 재작성한다. 트리거 — "AI 티 없애줘", "AI 같은 글 자연스럽게", "GPT/ChatGPT 문체", "AI 번역투 고쳐", "사람이 쓴 것처럼 윤문", "AI 윤문", "ChatGPT 티 제거", "한글 AI 탐지·윤문", "AI 글 사람처럼", "번역투 제거", "영어 인용 많은 글 윤문", "AI 글 티 안 나게", "휴머나이저", "humanize Korean", "AI detector bypass 한글". 후속 작업 — "특정 카테고리만 다시", "윤문 강도 조정", "장르 바꿔서", "이 문단만", "2차 윤문" 도 모두 이
.claude/skills/bam-bam-2-humanize-korean/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 229% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 254% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 193% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 236% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 61% | 0% |
> v1.5 변경 고지 (2026-04-26) — v1.1 베이스라인 + Monolith Fast Path > v1.2(voice profile)·v1.3(candidate pool)·v1.4(역할별 모델 분산)는 모두 핫패스 비용을 잡지 못해 5,000자 입력에 25분이 걸렸습니다. v1.5는 v1.1 단순 구조로 롤백한 뒤 단일 호출 monolith 에이전트만 추가한 설계입니다. > > - Fast 모드(디폴트) — humanize-monolith 에이전트가 한 콜에서 탐지·윤문·자체검증 일괄 처리. 도구 호출 4~5회. 5,000자 이하 wall-clock 2~3분 목표. > - Strict 모드(--strict) — v1.1 5인 파이프라인 그대로(detector·rewriter·auditor·reviewer + taxonomist 분류 자산 유지). 정밀 검증·장문(8,000자+) 처리·etc. > - 삭제됨: voice profile·candidate pool·promotion-checklist·sample-collection·권한 위계 §1~§6. > - 유지됨: 분류 체계 본진(C-9·C-10·D-7·H-3·I-3·I-4 등 v1.2~v1.3.1 신규 패턴)·rewriting-playbook·5인 에이전트 정의(strict 모드 백본).
작업 시작 시 가장 먼저 다음 한 줄을 사용자에게 출력한다.
humanize-korean v1.5 — {fast|strict} 모드 / run_id: {YYYY-MM-DD-NNN}--strict·"정밀 모드"·"5인 파이프라인" 명시 → strict_workspace/{YYYY-MM-DD-NNN}/에 만든다.Glob 도구로 표지 파일을 매칭해 간접 조회.올바른 사용법: Glob(pattern="_workspace/YYYY-MM-DD-*/01_input.txt") → 결과에서 폴더명 추출 후 NNN 최댓값 + 1. 주의: Glob은 디렉토리 자체는 매칭하지 못한다. 반드시 그 안의 표지 파일(01_input.txt)을 매칭할 것. Bash ls는 OS·셸 환경에 따라 경로 해석이 달라지므로 사용 금지.
_workspace/{run_id}/ 생성01_input.txt에 저장humanize-monolith 에이전트를 Agent 도구로 1회 호출.
입력:
input_path: <abs path>/_workspace/{run_id}/01_input.txt
quick_rules_path: ${CLAUDE_SKILL_DIR}/references/quick-rules.md
genre_hint: 칼럼 | 리포트 | 블로그 | 공적 | null출력 (에이전트가 직접 작성):
_workspace/{run_id}/final.md — 윤문본_workspace/{run_id}/summary.md — 메트릭·자체검증·하이라이트monolith는 단일 호출 안에서 다음을 모두 수행 (자세히는 에이전트 정의 참조):
사용자에게 다음 4개를 반환:
완료. 변경률 X% / 등급 Y / 자체검증 N/6 통과--strict로 5인 파이프라인" 안내디폴트 wall-clock 목표: 5,000자 이하 2~3분, 8,000자 5~7분.
--strict 또는 자동 승급)v1.1 5인 파이프라인 그대로. 검증 분리·재윤문 루프가 의미 있을 때만 사용.
ai-tell-detector 호출 → 02_detection.json
korean-style-rewriter 호출 → 03_rewrite.md + 03_rewrite_diff.json
TeamCreate로 humanize-review-team 구성:
content-fidelity-auditor → 04_fidelity_audit.json (의미 동등성)naturalness-reviewer → 05_naturalness_review.json (잔존·과윤문)TeamDelete 후 종합 판정 매트릭스에 따라 분기:
| fidelity | naturalness | 종합 | 후속 | |---|---|---|---| | full_pass | accept / accept_with_note | 최종 승인 | Phase D | | full_pass | rewrite_round_2 | 2차 윤문 | Phase B 재호출 (target finding) | | full_pass | rollback_and_rewrite | 롤백 후 재윤문 | 윤문가에 edit 롤백 지시 | | conditional_pass | - | 롤백된 edit만 재시도 | Phase B 재호출 | | fail | - | 전면 재작업 | Phase B 전면 재호출 |
2차/3차 윤문 진입 시 03_rewrite_v2.md·v3.md로 버전 분리. 최대 3회 후 미해결이면 hold_and_report로 사람 개입.
final.md에 최종 윤문본 복사summary.md 생성 (fast 모드와 동일 포맷)| 사용자 신호 | 처리 | |---|---| | "특정 카테고리만 다시" | strict 모드로 자동 전환, 해당 카테고리 finding만 Phase B 재실행 | | "이 문단만" | strict 모드, 해당 문단만 입력으로 새 run_id 생성 | | "2차 윤문"·"/humanize-redo" | 기존 run_id의 final.md를 새 입력으로 strict Phase B 재실행 | | "윤문 강도 조정" | strict 모드, min_severity 옵션 변경 후 Phase A부터 재실행 | | "장르 바꿔서" | genre_hint 변경 후 Phase A부터 재실행 |
장르: 칼럼|리포트|블로그|공적 — 장르 명시 (생략 시 자동 추정)강도: 보수|기본|적극 — 윤문 강도 (기본값: 기본)최소심각도: S1|S2|S3 — 탐지 임계값 (기본값: S2)--strict — 5인 파이프라인 강제 사용01_input.txt
↓ [humanize-monolith — 단일 호출]
├ 메모리: quick-rules 로드 → 탐지 → 윤문 → 자체검증
└→ final.md + summary.md01_input.txt
↓ [ai-tell-detector]
02_detection.json
↓ [korean-style-rewriter]
03_rewrite.md + 03_rewrite_diff.json
↓ [병렬 팀]
├→ [content-fidelity-auditor] → 04_fidelity_audit.json
└→ [naturalness-reviewer] → 05_naturalness_review.json
↓ [오케스트레이터 종합]
├→ (재작업) Phase B로 복귀 (최대 3회)
└→ (승인) final.md + summary.md모델: 모두 model: opus 통일 (v1.1 베이스라인). 모델 다운그레이드는 v1.4에서 시도했으나 도구 호출 chain이 진짜 병목이라 효과 미미했음.
에이전트 정의 위치: 저장소 루트 agents/에 12종 정의(플러그인 컨벤션). Claude Code 탐색 경로:
humanize-korean 플러그인이 agents/를 번들로 제공(전역).install.sh가 agents/*.md를 ~/.claude/agents/에 심링크(전역).필요 에이전트 6종:
humanize-monolith (v1.5 신규, fast 전용)ai-tell-detector · korean-style-rewriter · content-fidelity-auditor · naturalness-reviewer (strict 5인 중 4명)korean-ai-tell-taxonomist (분류 체계 유지·확장 — 본 스킬 실행 중에는 호출 안 됨, 별도 명령으로만 트리거)--strict 또는 8,000자+ 입력--strict로 강제 검증 가능references/quick-rules.md — S1·S2 핵심 패턴 + 자체검증 체크리스트references/ai-tell-taxonomy.md — 10대분류 × 40+ 패턴 전수references/rewriting-playbook.md — 카테고리별 치환 레시피·장르별 허용 표references/web-service-spec.md — 웹 확장 시 로드이 스킬의 분류 체계는 내가 만든 것이 아니다. 외부 연구를 가져와 세운 것이다.
이영옥(2001) 「무생물 주어 타동사구문의 영한번역」 번역학연구 2(1): 53-76 을 비롯해 윤미선·김택민·임진주·홍승연(2018), 이상빈(2017·2018a·2018b), 마승혜(2018), 김혜림(2022), 김혜영(2019) 등.
수치 임계값은 이 보고서에서 가져왔다. (예: 에세이 평균 어절 인간 4.35 vs AI 8.56)
학자 이름·연도·저널·페이지는 references/scholarship.md에 원문 그대로 보존돼 있다. 자체 추정이나 확장 없이 옮겼다.
내가 더한 부분은 이것뿐이다 — 한국어 실무에서 반복적으로 지적받은 표현 (~가 아니라 대조 구문, 여정, 굴러가다, 방어적 안심 문장 등)을 금지어로 추가하고, 윤문 강도를 Fast/Strict로 나눠 실제 원고에 돌 수 있게 절차화한 것.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 12,271 | 12,149 | -1% | 1 | 1 | 0% | 2,010 | 5,357 | +167% | 0 | 0 | — |
case-02 | fail→pass | 17,129 | 19,694 | +15% | 1 | 1 | 0% | 2,097 | 6,900 | +229% | 0 | 0 | — |
case-03 | fail→fail | 11,838 | 19,434 | +64% | 1 | 1 | 0% | 1,865 | 5,882 | +215% | 0 | 0 | — |
case-04 | pass→pass | 16,664 | 51,936 | +212% | 1 | 1 | 0% | 2,612 | 7,548 | +189% | 0 | 0 | — |
case-05 | pass→pass | 5,847 | 5,961 | +2% | 1 | 1 | 0% | 872 | 4,272 | +390% | 0 | 0 | — |
case-06 | pass→pass | 5,602 | 6,022 | +7% | 1 | 1 | 0% | 744 | 4,219 | +467% | 0 | 0 | — |
case-07 | fail→fail | 12,059 | 12,773 | +6% | 1 | 1 | 0% | 1,877 | 3,822 | +104% | 0 | 0 | — |
case-08 | fail→fail | 9,126 | 16,405 | +80% | 1 | 1 | 0% | 1,473 | 4,116 | +179% | 0 | 0 | — |
case-09 | fail→fail | 9,469 | 11,092 | +17% | 1 | 1 | 0% | 1,271 | 4,392 | +246% | 0 | 0 | — |
case-10 | fail→fail | 15,852 | 9,256 | -42% | 1 | 1 | 0% | 2,695 | 4,060 | +51% | 0 | 0 | — |
case-11 | fail→pass | 8,002 | 7,072 | -12% | 1 | 1 | 0% | 1,239 | 4,381 | +254% | 0 | 0 | — |
case-12 | fail→pass | 11,696 | 16,409 | +40% | 1 | 1 | 0% | 1,744 | 5,106 | +193% | 0 | 0 | — |
case-13 | pass→pass | 13,903 | 13,498 | -3% | 1 | 1 | 0% | 1,846 | 5,310 | +188% | 0 | 0 | — |
case-14 | fail→pass | 9,113 | 12,528 | +37% | 1 | 1 | 0% | 1,488 | 5,003 | +236% | 0 | 0 | — |
case-15 | pass→pass | 14,676 | 11,425 | -22% | 1 | 1 | 0% | 2,206 | 5,583 | +153% | 0 | 0 | — |
case-16 | pass→pass | 15,939 | 15,194 | -5% | 1 | 1 | 0% | 2,178 | 5,326 | +145% | 0 | 0 | — |
case-17 | pass→pass | 9,735 | 7,464 | -23% | 1 | 1 | 0% | 1,490 | 4,492 | +201% | 0 | 0 | — |
case-18 | pass→pass | 20,324 | 8,595 | -58% | 1 | 1 | 0% | 2,139 | 4,699 | +120% | 0 | 0 | — |
case-19 | pass→pass | 11,790 | 15,386 | +31% | 1 | 1 | 0% | 1,534 | 4,949 | +223% | 0 | 0 | — |
case-20 | fail→pass | 15,441 | 7,296 | -53% | 1 | 1 | 0% | 2,825 | 4,556 | +61% | 0 | 0 | — |
case-21 | pass→pass | 18,903 | 18,035 | -5% | 1 | 1 | 0% | 2,821 | 6,099 | +116% | 0 | 0 | — |
case-22 | fail→pass | 19,531 | 8,209 | -58% | 1 | 1 | 0% | 2,492 | 4,754 | +91% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.