# Noslop Ko

> noslop-ko — AI티는 빼는 게 아니라 안 쓰는 것

- Skill: `jkf87/noslop-ko` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add jkf87/noslop-ko`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jkf87/noslop-ko/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jkf87 (https://skillmd.com/u/jkf87)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jkf87/noslop-ko

---


# noslop-ko — AI티는 빼는 게 아니라 안 쓰는 것

AI티 제거 윤문은 언제나 의미 훼손 리스크를 동반한다. 그러니 원칙은 하나다.

**예방이 최선이고, 수술은 후퇴지점이다.**

- 예방 비용: 프롬프트 장전 한 번.
- 수술 비용: 슬롭 생성 + 탐지 + 윤문 + 의미 훼손 리스크 + 두 번 일.

## 모드 판정 (가장 먼저)

| 상황 | 모드 |
|---|---|
| 글을 *쓰려 한다* (쓰기 요청, 초안 생성, 번역 후 재작성) | **씨앗** — 아래 1번 |
| 초안을 막 *썼다* (이번 세션에서 내가 생성) | **자가점검** — 아래 2번 |
| *이미 쓴 글*을 사용자가 가져옴 (윤문·AI티 제거 요청) | **수술** — 아래 3번 |

판정이 애매하면 씨앗으로 시작한다. 어차피 자가점검·수술 규칙은 씨앗 안에 들어 있다.

## 1. 씨앗 모드 — 쓰기 전에 프롬프트를 무장시킨다

글 쓰기 요청을 받으면 바로 쓰지 않는다. 먼저 세 가지를 정한다. 사용자가 정하지 않았으면 **질문은 한 번에 하나**만.

1. **레지스터** — 해라체(~한다) / 합쇼체(~합니다) / 구어(~해요) 중 하나. 문서 전체에서 바꾸지 않는다.
2. **독자와 장르** — 누가 어디서 읽나. (블로그인지 보고서인지에 따라 허용되는 흐트러짐이 다르다)
3. **재료** — 쓸 내용의 사실(수치·이름·날짜·인용)이 있는가. 없으면 지어내지 않는다 — 빈 채로 두거나 사용자에게 물어야 한다.

정했으면 생성 프롬프트에 씨앗을 장전한다. 전체 템플릿과 장르별 변형은
[references/seed-prompts.md](references/seed-prompts.md). 뼈대는 이것이다:

```
[쓰는 법]
- 재료에 있는 사실만 쓴다. 없는 수치·인용은 채우지 않는다.
- 문장 길이를 섞는다. 문단마다 짧은 단문 하나 + 60자 넘는 긴 문장 하나.
- 종결어미를 ~다로만 끝내지 않는다.
- 첫 문단은 결론이나 장면으로 시작한다.

[금지 — 발견 즉시 그 자리에서 고쳐라]
- 결론적으로, 요약하면, ~라고 할 수 있다, 시사하는 바가 크다, 주목할 만하다
- "A인가, B인가" / "A가 아니라 B" 대구 (문서 전체 1회 이하)
- ~에 대해, ~에 있어서, ~되어진다, ~에 기반하여
- 콜론 부제 헤딩("제목: 부제"), 이모지, 본문 볼드 강조
- 연결어미 뒤 쉼표("-고,", "-지만,")
- "먼저/반면/결국" 3연속 문단 시작, "즉", "이는 ~을 의미한다"

[출력 후] 위 금지 목록에 걸리는 게 하나라도 남았는지 스스로 훑고 고친 뒤 출력한다.
```

한 번의 생성 안에서 "쓰고 → 스스로 훑고 → 고치고"가 끝나야 한다. 초안을 내놓고
"수정이 필요하면 말씀해 주세요"로 끝내는 건 이 스킬의 실패다.

## 2. 검문 게이트 — 2층 (1차 grep · 2차 noslop-qa 에이전트)

내가 방금 쓴 글·수술한 글을 반환하기 전에 게이트를 통과시킨다. 감으로 세면 늘어진다
(실측: 스스로 "2회"라 본 대구가 grep으로는 3건). 그래서 게이트는 이 2층이다.

### 1차 — grep 게이트 (결정적, 0원가)

```bash
bash "${NOSLOP_HOME}/scripts/grep_gate.sh" <파일>
```

`NOSLOP_HOME`은 이 스킬의 루트 디렉터리다. 런타임별 해석 — Claude Code는
`${CLAUDE_SKILL_DIR}`, 가재(GJC)는 디스커버리된 스킬 경로, 직접 실행 시 이 파일이
있는 디렉터리. 경로를 못 찾으면 절대경로로 해결한다(추측으로 건너뛰지 않는다).

- exit 0 — 통과. 판단 항목(리듬·호흡·결말 공식)이 걱정되면 2차로.
- exit 1 — 경고. 2차 QA 에이전트 검문 필수.
- exit 2 — 중단. 슬롭이 문서를 지배한다. 수술 말고 씨앗 프롬프트로 재생성을 권고.

출력된 정량 앵커 블록(KEY=VALUE)은 2차에 그대로 넘긴다 — 코드가 센 수치는 확정 증거다.

### 2차 — noslop-qa 에이전트 (판단이 필요한 것)

grep은 리듬 균일성, 문단 호흡, 종결어미 단조, 사람 목소리 부재, 과윤문을 못 잡는다.
이건 LLM 판단 영역이다. 역할 정의(SSOT)는 스킬 패키지 안의 `agent/noslop-qa.md` —
어느 런타임에서 설치해도 `${NOSLOP_HOME}/agent/noslop-qa.md`로 항상 함께 따라온다.
런타임별 호출:

- **가재(GJC)**: `task` 도구로 서브에이전트를 띄운다. 과제에 `${NOSLOP_HOME}/agent/noslop-qa.md`
  절대경로("먼저 읽고 그대로 따르라"고 지시) + 아래 입력 4개를 넘긴다. 검문원은
  파일을 고치지 않고 응답으로만 판정을 반환한다.
- **Claude Code**: `~/.claude/agents/noslop-qa.md` 서브에이전트 정의로 호출.
- **에이전트 수단 없음**: 아래 30초 체크리스트로 대체.

공통 입력 계약:

- `target_path`(검사 대상), `checklist_path`=[references/slop-checklist.md](references/slop-checklist.md),
  `original_path`(윤문본일 때 — 파트 4 역방향 검사), `anchors`=1차 게이트 출력 블록.
- 출력 계약: 판정 A/B/C/D + 위반(본문 인용 + 조항) + 문장 단위 재작성 지시.
- **검문원 보고를 최종 사실로 취급하지 않는다.** 위반 인용이 실제 본문에 있는지
  직접 확인한 뒤 반영한다. 재작성 지시 중 서법·내용을 바꾸는 지시는 거른다.

### 발동 조건

| 상황 | 게이트 |
|---|---|
| 씨앗 모드 초안 (일반 블로그·메모 성격) | 1차 grep. exit 0이면 통과 |
| 게시용 산문 (블로그 발행, 칼럼, 보고서) | 1차 + 2차 에이전트 |
| 수술 모드 결과물 | 1차 + 2차 에이전트(원문 쌍) |
| 사용자가 "검수해줘"·"QA 돌려" | 1차 + 2차 에이전트 |

에이전트 호출 수단이 없는 환경이면 1차 앵커 + 아래 30초 체크리스트로 대체한다:

- [ ] "A인가, B인가" / "A가 아니라 B" 대구 2회+? → 1개만 남기고 직접 서술. (사람 글 실측 0건)
- [ ] 연결어미 뒤 쉼표("-고," "-지만,")? → 쉼표 삭제.
- [ ] "결론적으로 / ~라고 할 수 있다"? → 삭제하거나 본문 서술로.
- [ ] 문장 길이가 전부 비슷? → 인접 문장 이어 붙여 장문 하나. (내용 추가 금지)
- [ ] 종결어미 "~다" 4연속? → 변주.
- [ ] 콜론 부제 헤딩·이모지·볼드·3연속 불릿? → 압축·삭제·산문화.
- [ ] 마지막 문단이 "~할 때입니다" / 요약 반복? → 마지막 구체적 사실로 끝내기.
- [ ] 광고성 영어(robust/seamless/leverage)? → 한국어로. API·token 류는 그대로.

## 3. 수술 모드 — 이미 쓴 글을 고친다

사용자가 글을 가져왔다. 이때부터 최우선 규칙은 바뀐다: **문체보다 의미.**

### 불변 조건 (위반하면 그 문장은 롤백)

1. **내용 앵커.** 윤문 전에 문장별 핵심 명사·개념어를 내부 목록으로 잡는다. 조사·어미는 바꿀 수 있어도 이 원형 어휘는 결과에 최소 한 번 그대로 남는다.
2. **서법 보존.** 당위("~해야 한다")를 단정("~한다")으로, 추측("~일 수 있다")을 단정으로 바꾸지 않는다. 주장의 강도는 저자의 것이다.
3. **레지스터 보존.** 격식체 입력 → 격식체 출력. 구어("~거든요", "— 그랬다니까") → 구어. 격식 상향은 윤문이 아니라 훼손이다.
4. **역방향 삽입 금지.** 원문에 없던 상투구("기록적인 성과를 거두었다" 류)를 새로 넣지 않는다. 살아있는 표현을 상투구로 갈아끼우는 건 역주행이다.
5. **사실 불가침.** 수치·고유명사·날짜·큰따옴표 안 직접 인용·법령 조문은 탐지·수정 대상이 아니다.
6. **최소유효편집.** 패턴을 고치고, 잘 쓴 문장은 그대로 둔다. 모든 문단을 같은 치수로 다듬으면 그것도 기계문체다.

### 절차

1. 전문을 읽는다. 핵심 주장 하나와 필자 목소리 신호 3개(어휘, 호흡, 무뚝뚝함, 유머)를 내부 노트로 잡는다.
2. 패턴을 찾는다 — [references/patterns.md](references/patterns.md). 찾은 것만 고친다. "AI가 썼는지" 추측하지 않는다. 패턴이 증거다.
3. 고친다. 문장 단위 봉합이 어색하면 그 문단을 주제 중심으로 다시 쓴다(사실은 그대로).
4. 다시 읽고 두 질문에 답한다: "아직 어디가 기계문체인가", "사실 하나라도 더해지거나 사라졌나". 둘 중 하나라도 걸리면 고친다.
5. 결과물을 2층 게이트에 통과시킨다 — 1차 grep + 2차 noslop-qa(원문 쌍, 파트 4 과윤문 검사 포함). 등급 B 이상이 나올 때까지 3~5를 반복한다.
6. 결과 + "무엇을 고쳤는가" 두세 줄 + 게이트 판정을 반환한다.

### 과속 신호

내가 원문을 절반 이상 다시 써고 있다면 멈춘다. 그건 윤문이 아니라 재작성이고,
재작성은 사용자 승인 아래 별도 작업이다. 사용자에게 "이 글은 고침보다 재작성이
맞는 상태"라고 보고한다.

## 4. 오탐 방지 — 사람 글의 증거는 보존한다

윤문 도구가 사람 글을 훼손하는 사고가 실측으로 있었다. 아래는 불가침이다.

- **원문에 이미 있던** 대시·감탄·반문("그래서? — 그게 문제인데")은 사람 흔적이다. 지우지 않는다.
- **일부러 한 반복.** 리듬을 만들려고 반복한 문장 시작("왔다. 봤다. 이겼다")은 유지한다.
- **인용·제목·고유명사 안의 패턴.** 패턴어를 논하는 자리("'결론적으로'를 지워라")에서 그 단어를 지우면 안 된다.
- **학술·보고서의 실제 절 제목**(Ⅱ., (3), 장 제목)은 헤딩 처방의 대상이 아니다.
- **하나의 신호는 증거가 아니다.** 대시 하나, "however" 하나, 정돈된 문법만으로 손대지 않는다. 여러 상투패턴이 겹칠 때만 다룬다.
- **사람이 오히려 더 쓰는 것.** "~것이다" 종결(사람이 2배 더 씀), "~를 통해"(비번역 한국어가 더 자주 씀), 자생 한국어 산문의 "그는/그의"는 기본 보존. 남발·편중일 때만 리듬 조정.
- **구어 강조·필자의 육성**("정말 그랬다니까")은 보존한다. 지우는 건 AI가 기계적으로 얹은 정도부사만.

## 5. 영어 트랙

영어 텍스트(영문 이메일, README, 해외 발표 초록)에는 영어용 규칙을 쓴다:
[references/english.md](references/english.md). em dash 규칙, 잘라낼 어휘 목록,
binary contrast, title case 같은 한국어에 없는 패턴이 거기 있다.

## 참고

- 패턴 전체 목록(한국어, 증류본): [references/patterns.md](references/patterns.md)
- 슬롭 검문 체크리스트(noslop-qa 판정 기준): [references/slop-checklist.md](references/slop-checklist.md)
- 씨앗 프롬프트 라이브러리(장르별): [references/seed-prompts.md](references/seed-prompts.md)
- 1차 게이트 스크립트: [scripts/grep_gate.sh](scripts/grep_gate.sh) — 정량 앵커 산출
- QA 에이전트 정의: [agent/noslop-qa.md](agent/noslop-qa.md) — Claude Code 설치 시 `~/.claude/agents/noslop-qa.md`로 심링크
- 계보: 이 스킬은 stop-slop·no-ai-slop·unslop·humanizer·im-not-ai 다섯 레포를 분해해
  다시 만들었다. 무엇을 취하고 무엇을 죽였는지는 프로젝트 루트의 `ANALYSIS.md`.

