patina-cli 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/.patina.default.yaml +211 -0
  2. package/CHANGELOG.md +265 -0
  3. package/LICENSE +21 -0
  4. package/README.md +319 -0
  5. package/README_JA.md +254 -0
  6. package/README_KR.md +253 -0
  7. package/README_ZH.md +254 -0
  8. package/SKILL-MAX.md +455 -0
  9. package/SKILL.md +730 -0
  10. package/assets/brand/patina-icon.svg +9 -0
  11. package/assets/brand/patina-logo.svg +17 -0
  12. package/assets/social/patina-before-after.svg +46 -0
  13. package/assets/social/patina-og.svg +31 -0
  14. package/bin/patina.js +9 -0
  15. package/core/scoring.md +657 -0
  16. package/core/standalone-prompt.md +364 -0
  17. package/core/stylometry.md +754 -0
  18. package/core/voice.md +163 -0
  19. package/docs/AUTHENTICATION.md +105 -0
  20. package/docs/AUTHENTICATION_KR.md +105 -0
  21. package/docs/BRANDING.md +37 -0
  22. package/docs/CLI.md +80 -0
  23. package/docs/COMPARISON.md +38 -0
  24. package/docs/COOKBOOK.md +173 -0
  25. package/docs/DEMO.md +40 -0
  26. package/docs/ETHICS.md +27 -0
  27. package/docs/EXAMPLES.md +130 -0
  28. package/docs/EXAMPLES_KR.md +130 -0
  29. package/docs/EXIT-CODES.md +25 -0
  30. package/docs/FAQ.md +67 -0
  31. package/docs/FAQ_KR.md +65 -0
  32. package/docs/FLAG-PARITY.md +53 -0
  33. package/docs/GLOSSARY.md +123 -0
  34. package/docs/PATTERNS-EN.md +718 -0
  35. package/docs/PATTERNS-JA.md +706 -0
  36. package/docs/PATTERNS-KO.md +707 -0
  37. package/docs/PATTERNS-ZH.md +706 -0
  38. package/docs/PATTERNS.md +22 -0
  39. package/docs/ROADMAP.md +315 -0
  40. package/docs/audits/2026-05-deep-research.md +290 -0
  41. package/docs/benchmarks/detector-comparison.json +442 -0
  42. package/docs/benchmarks/detector-comparison.md +65 -0
  43. package/docs/benchmarks/latest.json +988 -0
  44. package/docs/benchmarks/latest.md +112 -0
  45. package/docs/integrations/docker.md +19 -0
  46. package/docs/integrations/github-action.md +59 -0
  47. package/docs/integrations/pre-commit.md +77 -0
  48. package/docs/integrations/release.md +43 -0
  49. package/docs/internal/HARNESS.md +14 -0
  50. package/docs/internal/README.md +14 -0
  51. package/docs/internal/WARP.md +23 -0
  52. package/docs/research/2025-rebaseline-plan.md +89 -0
  53. package/docs/research/ai-human-metrics.md +380 -0
  54. package/docs/social/gstack-cardnews.html +236 -0
  55. package/docs/social/gstack-cardnews.md +88 -0
  56. package/docs/social/gstack-thread.md +106 -0
  57. package/docs/social/patina-launch-copy.md +227 -0
  58. package/docs/superpowers/specs/2026-04-03-meaning-preservation-design.md +299 -0
  59. package/lexicon/ai-en.md +162 -0
  60. package/lexicon/ai-ko.md +159 -0
  61. package/package.json +100 -0
  62. package/patina-max/SKILL.md +523 -0
  63. package/patina-max/composite.py +457 -0
  64. package/patterns/en-communication.md +89 -0
  65. package/patterns/en-content.md +133 -0
  66. package/patterns/en-filler.md +113 -0
  67. package/patterns/en-language.md +163 -0
  68. package/patterns/en-structure.md +173 -0
  69. package/patterns/en-style.md +139 -0
  70. package/patterns/en-viral-hook.md +211 -0
  71. package/patterns/ja-communication.md +101 -0
  72. package/patterns/ja-content.md +153 -0
  73. package/patterns/ja-filler.md +123 -0
  74. package/patterns/ja-language.md +190 -0
  75. package/patterns/ja-structure.md +142 -0
  76. package/patterns/ja-style.md +147 -0
  77. package/patterns/ja-viral-hook.md +216 -0
  78. package/patterns/ko-communication.md +98 -0
  79. package/patterns/ko-content.md +154 -0
  80. package/patterns/ko-filler.md +105 -0
  81. package/patterns/ko-language.md +182 -0
  82. package/patterns/ko-structure.md +147 -0
  83. package/patterns/ko-style.md +146 -0
  84. package/patterns/ko-viral-hook.md +211 -0
  85. package/patterns/zh-communication.md +101 -0
  86. package/patterns/zh-content.md +153 -0
  87. package/patterns/zh-filler.md +118 -0
  88. package/patterns/zh-language.md +173 -0
  89. package/patterns/zh-structure.md +145 -0
  90. package/patterns/zh-style.md +159 -0
  91. package/patterns/zh-viral-hook.md +216 -0
  92. package/profiles/academic.md +53 -0
  93. package/profiles/blog.md +81 -0
  94. package/profiles/casual-conversation.md +105 -0
  95. package/profiles/code-comment.md +104 -0
  96. package/profiles/commit-message.md +99 -0
  97. package/profiles/default.md +62 -0
  98. package/profiles/email.md +52 -0
  99. package/profiles/formal.md +98 -0
  100. package/profiles/instructional.md +80 -0
  101. package/profiles/legal.md +57 -0
  102. package/profiles/marketing.md +56 -0
  103. package/profiles/medical.md +53 -0
  104. package/profiles/narrative.md +79 -0
  105. package/profiles/release-notes.md +98 -0
  106. package/profiles/social.md +56 -0
  107. package/profiles/technical.md +53 -0
  108. package/scripts/benchmark-report.mjs +252 -0
  109. package/scripts/check-release-metadata.mjs +48 -0
  110. package/scripts/detector-comparison.mjs +267 -0
  111. package/scripts/lint.mjs +40 -0
  112. package/scripts/precommit-score.mjs +31 -0
  113. package/scripts/prose-score.mjs +186 -0
  114. package/scripts/update-benchmark-ranges.mjs +108 -0
  115. package/src/api.js +330 -0
  116. package/src/auth.js +105 -0
  117. package/src/backends/claude-cli.js +112 -0
  118. package/src/backends/codex-cli.js +121 -0
  119. package/src/backends/contract.js +21 -0
  120. package/src/backends/gemini-cli.js +135 -0
  121. package/src/backends/index.js +159 -0
  122. package/src/cache.js +106 -0
  123. package/src/cli.js +1280 -0
  124. package/src/commands/doctor.js +229 -0
  125. package/src/commands/init.js +208 -0
  126. package/src/config.js +126 -0
  127. package/src/errors.js +53 -0
  128. package/src/features/index.js +96 -0
  129. package/src/features/lexicon.js +90 -0
  130. package/src/features/segment.js +49 -0
  131. package/src/features/stylometry.js +50 -0
  132. package/src/loader.js +103 -0
  133. package/src/logger.js +70 -0
  134. package/src/manifest.js +162 -0
  135. package/src/max-mode.js +207 -0
  136. package/src/ouroboros.js +233 -0
  137. package/src/output.js +480 -0
  138. package/src/prompt-builder.js +409 -0
  139. package/src/providers.js +100 -0
  140. package/src/scoring.js +531 -0
  141. package/src/security.js +133 -0
  142. package/tests/fixtures/suspect-zones/en/ai/en-ai-01.md +16 -0
  143. package/tests/fixtures/suspect-zones/en/ai/en-ai-02.md +16 -0
  144. package/tests/fixtures/suspect-zones/en/ai/en-ai-03.md +17 -0
  145. package/tests/fixtures/suspect-zones/en/ai/en-ai-04.md +15 -0
  146. package/tests/fixtures/suspect-zones/en/ai/en-ai-05.md +16 -0
  147. package/tests/fixtures/suspect-zones/en/ai/en-ai-06-chat-register.md +16 -0
  148. package/tests/fixtures/suspect-zones/en/natural/en-nat-01.md +15 -0
  149. package/tests/fixtures/suspect-zones/en/natural/en-nat-02.md +15 -0
  150. package/tests/fixtures/suspect-zones/en/natural/en-nat-03.md +15 -0
  151. package/tests/fixtures/suspect-zones/en/natural/en-nat-04.md +15 -0
  152. package/tests/fixtures/suspect-zones/en/natural/en-nat-05.md +15 -0
  153. package/tests/fixtures/suspect-zones/expected-ranges.json +939 -0
  154. package/tests/fixtures/suspect-zones/ja/ai/ja-ai-01.md +11 -0
  155. package/tests/fixtures/suspect-zones/ja/ai/ja-ai-02.md +11 -0
  156. package/tests/fixtures/suspect-zones/ja/ai/ja-ai-03.md +11 -0
  157. package/tests/fixtures/suspect-zones/ja/natural/ja-nat-01.md +11 -0
  158. package/tests/fixtures/suspect-zones/ja/natural/ja-nat-02.md +11 -0
  159. package/tests/fixtures/suspect-zones/ja/natural/ja-nat-03.md +11 -0
  160. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-01.md +14 -0
  161. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-02.md +16 -0
  162. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-03.md +15 -0
  163. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-04.md +15 -0
  164. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-05.md +16 -0
  165. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-06-chat-register.md +16 -0
  166. package/tests/fixtures/suspect-zones/ko/natural/ko-nat-01.md +15 -0
  167. package/tests/fixtures/suspect-zones/ko/natural/ko-nat-02.md +15 -0
  168. package/tests/fixtures/suspect-zones/ko/natural/ko-nat-03.md +15 -0
  169. package/tests/fixtures/suspect-zones/ko/natural/ko-nat-04.md +14 -0
  170. package/tests/fixtures/suspect-zones/ko/natural/ko-nat-05.md +15 -0
  171. package/tests/fixtures/suspect-zones/zh/ai/zh-ai-01.md +11 -0
  172. package/tests/fixtures/suspect-zones/zh/ai/zh-ai-02.md +11 -0
  173. package/tests/fixtures/suspect-zones/zh/ai/zh-ai-03.md +11 -0
  174. package/tests/fixtures/suspect-zones/zh/natural/zh-nat-01.md +11 -0
  175. package/tests/fixtures/suspect-zones/zh/natural/zh-nat-02.md +11 -0
  176. package/tests/fixtures/suspect-zones/zh/natural/zh-nat-03.md +11 -0
  177. package/tests/quality/README.md +121 -0
  178. package/tests/quality/benchmark.mjs +306 -0
  179. package/tests/quality/detectors.manual.example.json +31 -0
  180. package/tests/quality/dogfood.mjs +44 -0
@@ -0,0 +1,182 @@
1
+ ---
2
+ pack: ko-language
3
+ language: ko
4
+ name: 언어/문법 패턴
5
+ version: 1.1.0
6
+ patterns: 7
7
+ dedupe-with:
8
+ - source: "ko-language:7"
9
+ target: "ko-style:13"
10
+ owner: "ko-style:13"
11
+ reason: "연결 표현은 style #13이 canonical owner이고, language #7에서는 다른 AI 어휘와 함께 군집으로 나타날 때만 보조 신호로 본다."
12
+ - source: "ko-language:7"
13
+ target: "ko-language:8"
14
+ owner: "ko-language:8"
15
+ reason: "\"~적\" 한자어 형용사 연쇄는 language #8이 canonical owner이고, language #7은 다른 AI 고빈도 어휘와 함께 나타나는 넓은 군집 신호로만 본다."
16
+ ---
17
+
18
+ # 언어/문법 패턴
19
+
20
+ ### 7. AI 특유 어휘 남발
21
+
22
+ **고빈도 AI 어휘:** 다양한, 활발한, 주목할 만한, 혁신적인, 체계적인, 지속적인, 효과적인, 적극적인, 심층적인, 유기적인, 종합적인, 선도적인, 아울러, 나아가, 이를 통해, 이러한 맥락에서, 도모하다, 촉진하다, 극대화하다
23
+
24
+ **문제:** 이 단어들은 2023년 이후 텍스트에서 훨씬 높은 빈도로 나타난다. 자주 함께 쓰인다.
25
+
26
+ **발화 조건:** 한 문단에 고빈도 AI 어휘가 3개 이상 등장하는 경우.
27
+
28
+ **제외 조건:**
29
+ - 개별 단어가 단독으로 1-2회 사용된 경우(일반 한국어에서도 나타나는 단어들이므로)
30
+ - allowlist에 포함된 표현
31
+
32
+ **의미 위험도:** LOW
33
+
34
+ **수정 전:**
35
+ > 아울러, 다양한 혁신적인 기술들이 활발하게 개발되고 있으며, 이를 통해 체계적이고 효과적인 솔루션을 제공하고 있다. 나아가, 이러한 지속적인 노력은 주목할 만한 성과를 거두고 있다.
36
+
37
+ **수정 후:**
38
+ > 올해 나온 기술 중에는 배터리 수명을 20% 늘린 전력 관리 칩과, 처리 속도가 기존보다 두 배 빠른 NPU가 있다.
39
+
40
+ ---
41
+
42
+ ### 8. ~적(的) 접미사 남발
43
+
44
+ **주의 어휘:** 혁신적, 체계적, 효과적, 효율적, 선도적, 진취적, 종합적, 핵심적, 전략적, 실질적, 근본적, 획기적
45
+
46
+ **문제:** 한국어 AI 글쓰기에서 가장 두드러지는 패턴 중 하나. "~적" 한자어 형용사를 한 문장에 여러 개 쌓아 올린다.
47
+
48
+ **발화 조건:** 한 문장에 "~적" 형용사가 3개 이상 등장하거나, 연속 2문장에 걸쳐 4개 이상 사용된 경우.
49
+
50
+ **제외 조건:**
51
+ - 학술 논문·보고서에서 정의상 필요한 전문 용어("체계적 문헌 고찰", "효과적 세율")
52
+ - 단독 1개 사용은 정상 한국어이므로 교정 대상 아님
53
+
54
+ **의미 위험도:** MEDIUM
55
+ **보존 주의사항:** "~적" 형용사를 풀어쓸 때 원래 표현이 담고 있던 강도나 범위가 희석되지 않도록 주의. "근본적인 변화"를 단순히 "변화"로 축약하면 의미가 약해진다.
56
+
57
+ **Burstiness 지침:** "~적" 형용사를 교정할 때, 모든 형용사를 기계적으로 풀어쓰지 않는다. 일부는 구체적 서술로 바꾸고("혁신적인" → "기존과 다른"), 일부는 아예 삭제하고, 일부는 다른 품사로 전환("효율적인 처리" → "빠르게 처리")해서 문장 리듬을 다양하게 만든다.
58
+
59
+ **수정 전:**
60
+ > 혁신적이고 체계적인 접근 방식을 통해, 효과적이고 효율적인 결과를 도출하며, 선도적이고 진취적인 자세로 종합적인 발전을 추구하고 있다.
61
+
62
+ **수정 후:**
63
+ > 팀은 기존 프로세스를 단순화하고, 불필요한 승인 단계를 빼서 배포 시간을 절반으로 줄였다.
64
+
65
+ ---
66
+
67
+ ### 9. 부정 병렬구조
68
+
69
+ **주의 어휘:** ~에 그치지 않고, ~뿐만 아니라 ~도, 비단 ~뿐 아니라, ~을 넘어
70
+
71
+ **문제:** "단순히 A가 아니라 B이다", "A뿐만 아니라 B도" 구조를 과도하게 사용한다.
72
+
73
+ **발화 조건:** 같은 문서에 "~뿐만 아니라", "~에 그치지 않고" 등의 부정 병렬 구조가 2회 이상 등장하거나, 긍정 서술만으로 더 간결하게 표현할 수 있는 곳에 단일 사용된 경우.
74
+
75
+ **제외 조건:**
76
+ - 오해를 바로잡기 위한 실질적 대비("이 행사는 컨퍼런스가 아니라 워크숍이다 — 기조연설 없이 실습만 진행")
77
+ - 두 요소의 대조가 논리적으로 필수적인 경우
78
+
79
+ **의미 위험도:** MEDIUM
80
+ **보존 주의사항:** 부정 병렬 구조를 긍정문으로 바꿀 때 원문이 강조하려던 A와 B의 대비 관계가 사라지지 않도록 주의. 특히 "A가 아니라 B"에서 A를 명시적으로 부정하는 것이 핵심인 경우 해당 부정 의미를 유지해야 한다.
81
+
82
+ **Burstiness 지침:** 부정 병렬 구조를 풀 때, 모든 문장을 "A이다. B도 있다." 식의 균일한 긍정문으로 바꾸지 않는다. 일부는 직접 서술하고, 일부는 사례로 보여주고, 일부는 문장 구조 자체를 바꿔서 단조로움을 피한다.
83
+
84
+ **수정 전:**
85
+ > 이것은 단순한 기술 발전에 그치지 않고, 우리 사회 전반에 걸친 근본적인 변화를 의미한다. 이는 비단 경제적 측면뿐만 아니라, 사회적·문화적 측면에서도 중대한 함의를 지닌다.
86
+
87
+ **수정 후:**
88
+ > 이 기술은 처음에 제조 공정에 적용됐고, 이후 물류와 고객 서비스에도 쓰이기 시작했다.
89
+
90
+ ---
91
+
92
+ ### 10. 3의 법칙 남발
93
+
94
+ **문제:** AI는 포괄적으로 보이려고 아이디어를 무조건 셋으로 묶는다.
95
+
96
+ **발화 조건:** 같은 문서에 3개 항목 나열이 2회 이상 등장하거나, 셋으로 묶은 근거가 자의적이어서 다른 개수도 동등하게 성립하는 경우.
97
+
98
+ **제외 조건:**
99
+ - 본질적으로 3요소인 구조(과거/현재/미래, 입력/처리/출력, 서론/본론/결론)
100
+ - 실제로 3개인 항목을 나열하는 경우
101
+
102
+ **의미 위험도:** MEDIUM
103
+ **보존 주의사항:** 3개 항목 나열을 줄일 때 삭제되는 항목이 실질적 내용을 담고 있는지 확인. 자의적으로 묶인 항목이라도 각각이 독립적 의미를 가진다면 모두 유지해야 한다.
104
+
105
+ **Burstiness 지침:** 수정 시 자연스러운 개수를 사용한다. 포인트가 하나뿐이면 하나만, 둘이면 둘, 넷이면 넷으로 쓴다. 문서 전체에서 목록 길이가 다양해야 사람이 쓴 글처럼 보인다.
106
+
107
+ **수정 전:**
108
+ > 이 프로그램은 창의성, 혁신성, 그리고 지속가능성을 추구합니다. 참가자들은 영감, 통찰, 그리고 실질적인 경험을 얻을 수 있습니다.
109
+
110
+ **수정 후:**
111
+ > 이 프로그램은 실무 프로젝트 중심으로 운영되며, 참가자들은 8주간 실제 제품 개발에 참여한다.
112
+
113
+ ---
114
+
115
+ ### 11. 유의어 순환
116
+
117
+ **문제:** AI는 반복을 피하려고 같은 대상을 계속 다른 말로 바꿔 부른다.
118
+
119
+ **발화 조건:** 같은 문단에서 동일 대상이 3개 이상의 다른 명칭·동의어로 지칭되는 경우.
120
+
121
+ **제외 조건:**
122
+ - 의도적 구분 목적(예: "삼성전자"와 "삼성그룹"을 모회사·자회사로 구별)
123
+ - 정밀도를 위한 변형("이 연구"와 "2023년 스탠퍼드 논문"처럼 구체성이 달라지는 경우)
124
+
125
+ **의미 위험도:** LOW
126
+
127
+ **수정 전:**
128
+ > 이 도시는 많은 관광객을 끌어모으고 있다. 이 지역은 다양한 문화 행사로 유명하다. 해당 지자체는 관광 인프라를 확충 중이다. 이곳은 연간 방문객이 100만 명에 달한다.
129
+
130
+ **수정 후:**
131
+ > 이 도시에는 연간 100만 명이 방문한다. 문화 행사가 많고, 시는 관광 인프라에 500억 원을 투자하고 있다.
132
+
133
+ ---
134
+
135
+ ### 12. ~에 있어서/~함에 있어 장황한 조사 사용
136
+
137
+ **주의 어휘:** ~에 있어서, ~함에 있어, ~(으)로서, ~(이)라는 점에서, ~의 관점에서 볼 때
138
+
139
+ **문제:** 한국어 AI는 불필요하게 장황한 조사와 연결 표현으로 문장을 늘린다.
140
+
141
+ **발화 조건:** 같은 문단에 장황한 조사 표현이 2개 이상 등장하거나, "~에서"로 충분한 곳에 "~에 있어서"가 사용된 경우.
142
+
143
+ **제외 조건:**
144
+ - 법률·계약 문서에서 관례적으로 사용되는 표현("~(으)로서의 의무")
145
+ - "~(으)로서"가 자격·역할을 명확히 구분하기 위해 필요한 경우("교사로서" vs "교사로")
146
+
147
+ **의미 위험도:** LOW
148
+
149
+ **수정 전:**
150
+ > 교육에 있어서 가장 중요한 것은 학생들의 참여를 이끌어 내는 것이며, 이를 달성함에 있어 교사의 역할이 핵심적이다. 학습 효과를 극대화함에 있어서는 개별화된 접근이 필요하다.
151
+
152
+ **수정 후:**
153
+ > 교육에서 가장 중요한 것은 학생 참여다. 교사들은 학생별로 다른 과제를 내는 방식을 시도하고 있다.
154
+
155
+ ---
156
+
157
+ ### 32. "보다" 비교부사 남용
158
+
159
+ **주의 어휘:** 보다 + 형용사/부사 형태 — "보다 구체적인", "보다 효율적인", "보다 심도 있는", "보다 다양한", "보다 명확한", "보다 적극적인", "보다 체계적인", "보다 효과적인", "보다 신중한", "보다 폭넓은"
160
+
161
+ **문제:** 한국어 비교부사 "보다"는 일상에서 거의 쓰지 않는다. "더"가 자연스럽다. AI는 격식적으로 들리려고 "보다 X한"을 남발하는데, 한 문서 안에 여러 번 나오면 즉시 AI 텍스트로 인식된다. 이는 일본어 "より"의 직역체에 영향받은 표현이기도 하다.
162
+
163
+ **발화 조건:** 한 문서 안에 "보다 [형용사/부사 + 한]" 형태가 2회 이상 등장. 또는 한 단락 안에 "보다 X" 표현이 1회 등장하면서 같은 단락에 다른 격식체 마커("~을 위한", "~에 있어서", "~사료됩니다", "~할 것으로 보입니다")가 함께 있는 경우.
164
+
165
+ **제외 조건:**
166
+ - "X보다 Y" 형태의 실제 비교 — "한국이 일본보다 빠르다" 같은 문장
167
+ - "보다"가 동사로 쓰인 경우 — "영화를 보다", "뉴스를 보다"
168
+ - 학술 논문, 법률 문서, 공식 보도자료에서 의도적인 격식체 사용
169
+ - 한 문서에 1회만 등장하는 단발 사용 (격식체가 아닌 다른 마커가 동반되지 않은 경우)
170
+
171
+ **의미 위험도:** LOW
172
+ **보존 주의사항:** "보다 X한"을 무조건 "더 X한"으로 단순 치환하면 또 다른 기계적 패턴이 된다. 문맥에 따라 다양화 — 일부는 "더 X한", 일부는 형용사만 남기고("X한"), 일부는 다른 표현으로 풀어 쓴다.
173
+
174
+ **Burstiness 지침:** 같은 문서 안의 모든 "보다 X" 표현을 동일한 방식으로 바꾸지 말 것. 첫 번째는 "더 X한", 두 번째는 "X한", 세 번째는 아예 다른 표현 식으로 변주.
175
+
176
+ **수정 전:**
177
+ > 프로젝트 일정과 관련하여 보다 구체적인 마일스톤 설정이 필요할 것으로 보입니다. 예산 배분에 있어서도 보다 효율적인 운영 방안에 대한 검토가 이루어져야 할 것으로 사료됩니다. 가능하시다면 다음 주 중 보다 심도 있는 논의를 진행하는 것이 어떨까 싶습니다.
178
+
179
+ **수정 후:**
180
+ > 프로젝트 일정에 더 구체적인 마일스톤이 있어야 할 것 같습니다. 예산 운영 방안도 한 번 점검이 필요해 보입니다. 다음 주에 자세히 이야기 나누면 좋겠습니다.
181
+
182
+ **이 패턴이 아닌 것:** "보다"가 동사인 경우(예: "오늘은 영화를 보다") → 발화하지 않음. "X에 비해 Y" 같은 비교 구문도 → 패턴 26(번역체)에서 처리.
@@ -0,0 +1,147 @@
1
+ ---
2
+ pack: ko-structure
3
+ language: ko
4
+ name: 구조 패턴
5
+ version: 1.1.0
6
+ patterns: 5
7
+ phase: structure
8
+ ---
9
+
10
+ # 구조 패턴
11
+
12
+ ### 25. 구조적 반복
13
+
14
+ **문제:** AI는 모든 단락을 동일한 틀(주장 → 근거 → 결론)로 찍어낸다. 사람이 쓴 글은 단락마다 구조가 다르다. 어떤 단락은 질문으로 시작하고, 어떤 단락은 사례부터 들고, 어떤 단락은 결론 없이 끝난다.
15
+
16
+ **발화 조건:** 연속 3개 이상의 단락이 동일한 구조적 틀을 반복할 때. 예: 모든 단락이 "일반 진술 → 구체 사례/수치 → 의의/전망"으로 끝나는 경우. 또는 모든 단락이 "주제문 → 부연 → 요약" 동일 패턴.
17
+
18
+ **제외 조건:**
19
+ - 논문 초록, 보고서 요약 등 정형화된 문서 양식
20
+ - 비교/대조 구조가 의도적으로 반복되는 경우 (예: "A 제품 vs B 제품" 각각 동일 기준 비교)
21
+ - 단락이 2개 이하인 짧은 텍스트
22
+
23
+ **의미 위험도:** MEDIUM
24
+ **보존 주의사항:** 단락 구조를 재편할 때 각 단락의 핵심 주장과 근거가 모두 유지되는지 확인. 구조 다양화를 위해 단락을 합치거나 쪼갤 때 논리적 흐름이 끊기지 않도록 주의.
25
+
26
+ **Burstiness 지침:** 단락 길이를 의도적으로 불규칙하게 만든다. 1-2문장짜리 짧은 단락과 5-6문장짜리 긴 단락을 섞는다. 연속 3개 이상의 단락이 비슷한 문장 수를 가지면 안 된다.
27
+
28
+ **수정 전:**
29
+ > 한국의 반도체 산업은 1980년대부터 본격적으로 성장했다. 삼성전자는 1983년 64K DRAM 개발에 성공했으며, 이후 세계 시장에서 두각을 나타냈다. 이러한 성과는 한국 경제 발전의 중요한 토대가 되었다.
30
+ >
31
+ > 한국의 자동차 산업도 비약적인 발전을 이루었다. 현대자동차는 1976년 포니를 출시하며 국산 자동차 시대를 열었고, 현재 글로벌 5위권의 자동차 제조사로 성장했다. 이는 한국 제조업의 경쟁력을 보여주는 대표적인 사례이다.
32
+ >
33
+ > 한국의 조선 산업 역시 세계적인 수준에 도달했다. 현대중공업은 1972년 설립 이후 꾸준히 기술력을 축적했으며, 세계 최대 조선소로 자리매김했다. 이러한 발전은 한국의 산업 다각화에 크게 기여하였다.
34
+
35
+ **수정 후:**
36
+ > 한국 반도체의 시작은 의외로 단순하다. 1983년, 삼성전자가 64K DRAM을 만들었다. 40년 뒤인 지금, 메모리 반도체 세계 시장의 60%가 한국 것이다.
37
+ >
38
+ > 자동차는 좀 다른 길을 걸었다. 현대차 포니가 1976년에 나왔을 때 아무도 진지하게 안 봤다. 솔직히 품질이 안 좋았으니까. 근데 지금은 글로벌 5위다.
39
+ >
40
+ > 조선은? 이건 거의 기적에 가깝다. 바다도 안 보이는 울산 벌판에 1972년 조선소를 세웠는데, 배 한 척 안 만들어 본 사람들이 시작했다.
41
+
42
+ ---
43
+
44
+ ### 26. 번역체
45
+
46
+ **문제:** AI는 영어 구문을 직역한 듯한 한국어를 생성한다. "~것은 사실이다"(It is a fact that), "~라고 할 수 있다"(It can be said that), "~하는 것이 가능하다"(It is possible to) 같은 표현은 한국어 원어민이 자연스럽게 쓰는 표현이 아니다.
47
+
48
+ **주의 어휘:** ~것은 사실이다, ~라고 할 수 있다, ~하는 것이 가능하다, ~에 의해 ~되다, ~에 대해 ~하다 (영어 "about"의 직역), ~하는 경향이 있다 (tend to), ~에 기반하여 (based on), ~를 통해서 (through), 그것은 ~이다 (It is ~)
49
+
50
+ **발화 조건:** 한 문단 내에 번역체 표현이 2개 이상 등장할 때. 단독 1회 사용은 허용 — 정상적인 한국어에서도 간혹 나타나는 표현이므로.
51
+
52
+ **제외 조건:**
53
+ - 실제 번역 문서 (영어 원문이 있는 번역물)
54
+ - 학술 논문 (일부 번역체 표현이 학술 관행으로 정착)
55
+ - 법률/계약 문서 (법률 용어의 특수성)
56
+ - allowlist에 포함된 표현
57
+
58
+ **의미 위험도:** LOW
59
+
60
+ **Burstiness 지침:** 번역체를 교정할 때, 대체 표현의 문장 길이를 일정하게 맞추지 않는다. 짧게 끊거나 길게 늘려서 리듬을 깬다.
61
+
62
+ **수정 전:**
63
+ > 이 기술이 유망하다는 것은 사실이다. 이 기술에 의해 많은 문제가 해결될 수 있다고 할 수 있다. 이 기술에 대해 관심을 갖는 것이 필요하며, 이 기술을 활용하는 것이 가능하다면 큰 성과를 거두는 것이 가능할 것이다.
64
+
65
+ **수정 후:**
66
+ > 이 기술은 유망하다. 실제로 A사는 이걸로 불량률을 30% 줄였다. 관심 가질 만하고, 쓸 수 있으면 써보는 게 좋다.
67
+
68
+ ---
69
+
70
+ ### 27. 수동태 남용
71
+
72
+ **문제:** AI는 한국어에서 불필요한 이중 수동태("~되어지다")를 남발한다. "~되어지다"는 "~되다"에 "~지다"를 또 붙인 이중 피동으로, 문법적으로 잘못된 표현이거나 불필요하게 장황하다. 또한 행위자가 분명한 상황에서도 수동태를 쓰는 경향이 있다.
73
+
74
+ **주의 어휘:** ~되어지다, ~되어질 수 있다, ~되어져야 한다, ~되어지고 있다, ~되어진, ~에 의해 ~되다 (행위자가 분명한 경우)
75
+
76
+ **발화 조건:** 이중 피동("~되어지다" 계열) 1회 이상 사용, 또는 "~에 의해 ~되다" 수동 구문이 2회 이상 반복될 때.
77
+
78
+ **제외 조건:**
79
+ - 법령/규정문에서의 관례적 수동 표현 ("~에 의하여 정해진다")
80
+ - 행위자를 의도적으로 숨겨야 하는 맥락 (피해자 보호 등)
81
+ - 단일 "~되다" 수동태는 정상 한국어이므로 교정 대상이 아님
82
+
83
+ **의미 위험도:** MEDIUM
84
+ **보존 주의사항:** 수동태를 능동태로 바꿀 때 행위 주체가 달라지지 않도록 주의
85
+
86
+ **Burstiness 지침:** 수동태를 능동태로 바꿀 때, 모든 문장을 균일하게 "주어+목적어+동사" 능동 구조로 바꾸지 않는다. 일부는 명사형("~한 결과"), 일부는 생략형으로 다양하게 변환한다.
87
+
88
+ **수정 전:**
89
+ > 이 정책은 정부에 의해 시행되어지고 있다. 많은 변화가 이루어져야 한다고 판단되어진다. 국민의 의견이 반영되어져야 하며, 새로운 방안이 마련되어져야 할 것이다.
90
+
91
+ **수정 후:**
92
+ > 정부가 이 정책을 시행하고 있다. 바꿀 게 많다. 국민 의견을 반영해야 하고, 새 방안도 필요하다.
93
+
94
+ ---
95
+
96
+ ### 28. 불필요한 외래어 남발
97
+
98
+ **문제:** AI는 한국어 대안이 있는데도 영어 외래어를 남발한다. 전문 용어로서 정착된 외래어(예: 컴퓨터, 인터넷, 데이터베이스)는 괜찮지만, 한국어로 충분히 표현 가능한 것들까지 외래어로 바꾼다. 특히 비즈니스/경영 맥락에서 심하다.
99
+
100
+ **주의 어휘:** 인사이트, 임팩트, 레버리지, 이노베이션, 솔루션, 퍼포먼스, 거버넌스, 컨센서스, 시너지, 모멘텀, 마일스톤, 트리거, 매니징, 스케일업, 온보딩, 피드백 루프, 페인 포인트, 디시전 메이킹
101
+
102
+ **발화 조건:** 한 문단 내에 한국어 대안이 있는 외래어가 3개 이상 등장할 때. 업계에서 정착된 전문 용어(예: 마케팅, 브랜딩)는 제외.
103
+
104
+ **제외 조건:**
105
+ - IT/개발 전문 용어로 정착된 외래어 (API, 서버, 클라우드, 프레임워크 등)
106
+ - 고유명사 또는 제품/서비스명
107
+ - 한국어 대안이 오히려 부자연스러운 경우 (예: "피드백" → "회환" 같은 과도한 순화)
108
+ - allowlist에 포함된 표현
109
+
110
+ **의미 위험도:** LOW
111
+
112
+ **Burstiness 지침:** 외래어를 한국어로 바꿀 때, 모든 외래어를 기계적으로 치환하지 않는다. 문맥에 따라 일부는 남기고, 일부는 풀어서 설명하고, 일부는 단순 한국어로 바꾼다.
113
+
114
+ **수정 전:**
115
+ > 이번 프로젝트의 인사이트를 레버리지하여 시너지를 극대화하고, 지속 가능한 모멘텀을 확보하는 것이 핵심 마일스톤이다. 팀의 퍼포먼스를 높이기 위해 온보딩 프로세스를 개선하고, 페인 포인트를 해결하는 솔루션을 도입해야 한다.
116
+
117
+ **수정 후:**
118
+ > 이번 프로젝트에서 얻은 교훈을 활용해서 협력 효과를 높이고, 추진력을 유지하는 것이 핵심 목표다. 팀 성과를 높이려면 신규 합류자 적응 과정을 개선하고, 현장의 문제를 해결할 방법을 찾아야 한다.
119
+
120
+ ---
121
+
122
+ ### 30. 수사적 질문 단락 시작
123
+
124
+ **문제:** AI는 단락을 수사적 질문(rhetorical question)으로 자주 시작한다. "그렇다면 ~일까?", "왜 이런 변화가 일어났을까?", "과연 ~은 무엇일까?" 같은 질문은 답을 이미 알고 있으면서 "독자를 이끌기 위해" 던지는 장치다. 사람이 쓴 글에서는 진짜 모르거나 진짜 의문일 때만 질문을 쓴다. AI는 단락 구조 채우기 용도로 남용한다.
125
+
126
+ **발화 조건:** 단락의 첫 문장이 의문형(`-까?`, `-는가?`, `-일까?`, `-는지?`)이고, 그 질문에 대한 답이 같은 단락 안에서 즉시 제시되는 경우. 또는 문서 전체에 단락 첫 문장으로 등장하는 수사적 질문이 2회 이상.
127
+
128
+ **제외 조건:**
129
+ - 인터뷰, FAQ, Q&A 형식의 글
130
+ - 작가가 진짜 답을 모르는 진정한 의문 (수사가 아닌)
131
+ - 강연/연설문에서 청중 참여를 유도하는 단일 사용
132
+ - 학술 논문의 연구 질문 정의 섹션
133
+
134
+ **의미 위험도:** LOW
135
+ **보존 주의사항:** 수사적 질문이 단순 구조 채우기인지, 글의 논점을 강조하는 진짜 의도가 있는지 구분. 후자라면 평서문으로 바꿔도 강조가 살아 있는지 확인.
136
+
137
+ **Burstiness 지침:** 수사적 질문을 평서문으로 바꿀 때 모두 같은 길이/구조로 바꾸지 않는다. 짧고 단정적인 한 줄과 더 긴 설명문을 섞어서 새로운 기계적 반복이 생기지 않도록 한다.
138
+
139
+ **수정 전:**
140
+ > 그렇다면 한국 커피 문화는 왜 이렇게 빠르게 성장했을까? 답은 의외로 단순하다. 카페가 단순한 음료 판매 공간을 넘어 사회적 거점으로 자리잡았기 때문이다.
141
+ >
142
+ > 그렇다면 앞으로의 전망은 어떨까? 전문가들은 이 트렌드가 당분간 지속될 것으로 보고 있다.
143
+
144
+ **수정 후:**
145
+ > 한국 커피 문화가 이렇게 빨리 자란 이유는 의외로 단순하다. 카페가 음료를 파는 곳을 넘어 사람들이 모이는 거점이 됐다.
146
+ >
147
+ > 이 흐름은 당분간 이어질 것 같다. 전문가들도 같은 의견이다.
@@ -0,0 +1,146 @@
1
+ ---
2
+ pack: ko-style
3
+ language: ko
4
+ name: 스타일 패턴
5
+ version: 1.0.0
6
+ patterns: 6
7
+ ---
8
+
9
+ # 스타일 패턴
10
+
11
+ ### 13. 과도한 연결 표현
12
+
13
+ **주의 어휘:** 이를 통해, 이러한 점에서, 이러한 맥락에서, 한편, 또한, 더불어, 아울러, 이에 따라, 이와 관련하여, 이를 바탕으로
14
+
15
+ **문제:** AI는 문장마다 연결 표현을 붙여서 논리적으로 보이게 하지만, 실제로는 내용 없이 줄만 늘린다.
16
+
17
+ **발화 조건:** 연속 3문장 이상에서 매 문장 앞에 연결 표현이 붙는 경우, 또는 같은 문단에 주의 어휘가 3개 이상 등장하는 경우.
18
+
19
+ **제외 조건:**
20
+ - 논문·보고서에서 논리 흐름을 위해 단락 전환점에 1회 사용하는 경우
21
+ - 실제로 인과·대비·보충 관계를 나타내는 적절한 연결어 사용(예: "다만", "반면")
22
+
23
+ **의미 위험도:** MEDIUM
24
+ **보존 주의사항:** 연결 표현을 제거할 때 논리적 흐름(인과, 대비, 보충)이 끊어지지 않도록 주의
25
+
26
+ **Burstiness 지침:** 연결 표현을 제거할 때, 모든 문장을 짧게 끊기만 하지 않는다. 일부는 연결 없이 이어 쓰고, 일부는 새 단락으로 분리하고, 일부는 앞 문장에 합쳐서 리듬을 다양하게 만든다.
27
+
28
+ **수정 전:**
29
+ > 이를 통해 기업의 경쟁력이 강화되었다. 이러한 점에서 이번 정책은 큰 의미를 지닌다. 한편, 일부에서는 우려의 목소리도 나오고 있다. 이러한 맥락에서 향후 정책 방향에 대한 논의가 필요하다.
30
+
31
+ **수정 후:**
32
+ > 이번 정책 이후 수출 기업 10곳 중 7곳이 영업이익이 늘었다. 다만 중소기업연합회는 원자재 가격 상승 부담이 여전하다고 밝혔다.
33
+
34
+ ---
35
+
36
+ ### 14. 볼드체 남발
37
+
38
+ **문제:** AI는 키워드를 기계적으로 볼드 처리한다.
39
+
40
+ **발화 조건:** 한 문단에 볼드 처리된 단어/구가 3개 이상이거나, 문서 전체에 5개 이상인 경우.
41
+
42
+ **제외 조건:**
43
+ - UI 문서에서 버튼명·필드명 표시(예: **저장**, **취소**)
44
+ - 안전 경고("**삭제하지 마세요**")
45
+ - 참고 자료·용어집에서 핵심 용어를 표시하는 경우
46
+
47
+ **의미 위험도:** LOW
48
+
49
+ **수정 전:**
50
+ > **OKR(목표 및 핵심 결과)**, **KPI(핵심 성과 지표)**, 그리고 **BSC(균형 성과표)** 등 **다양한 성과 관리 프레임워크**를 통합적으로 활용합니다.
51
+
52
+ **수정 후:**
53
+ > OKR, KPI, BSC 등 성과 관리 도구를 함께 활용한다.
54
+
55
+ ---
56
+
57
+ ### 15. 인라인 헤더 목록
58
+
59
+ **문제:** AI는 목록 항목마다 볼드 헤더와 콜론으로 시작하는 형식을 좋아한다.
60
+
61
+ **발화 조건:** 같은 목록에 "**레이블:** 설명" 형식의 항목이 2개 이상인 경우.
62
+
63
+ **제외 조건:**
64
+ - API 파라미터 표, 변경 로그, 기능 비교표 등 레이블-설명 구조가 표준 양식인 참고 문서
65
+ - 기술 명세서·사양표
66
+
67
+ **의미 위험도:** LOW
68
+
69
+ **Burstiness 지침:** 수정 시 모든 항목을 하나의 연속 문장으로 합치지 않는다. 일부는 산문으로 통합하고, 순서가 중요한 항목은 번호 목록으로 바꾸고, 짧은 항목은 볼드 없이 일반 목록으로 남긴다.
70
+
71
+ **수정 전:**
72
+ > - **사용자 경험:** 새로운 인터페이스로 사용자 경험이 크게 개선되었습니다.
73
+ > - **성능:** 알고리즘 최적화를 통해 성능이 향상되었습니다.
74
+ > - **보안:** 종단간 암호화로 보안이 강화되었습니다.
75
+
76
+ **수정 후:**
77
+ > 이번 업데이트는 인터페이스를 개선하고, 알고리즘 최적화로 속도를 높였으며, 종단간 암호화를 추가했다.
78
+
79
+ ---
80
+
81
+ ### 16. ~고 있다 진행형 남발
82
+
83
+ **주의 어휘:** ~하고 있다, ~해 나가고 있다, ~을 추진하고 있다, ~을 이어가고 있다, ~에 박차를 가하고 있다
84
+
85
+ **문제:** 한국어 AI는 현재 진행형 "~고 있다"를 과도하게 사용한다. 모든 문장이 진행 중인 것처럼 쓴다.
86
+
87
+ **발화 조건:** 같은 문단에서 "~고 있다" 계열 진행형이 3회 이상 사용된 경우, 또는 연속 2문장이 모두 "~고 있다"로 끝나는 경우.
88
+
89
+ **제외 조건:**
90
+ - 실제로 현재 진행 중인 단일 동작을 묘사하는 경우(예: "시는 현재 도로 확장 공사를 진행하고 있다")
91
+ - 시제 대비가 필요한 맥락("작년에 시작했고, 지금도 이어가고 있다")
92
+
93
+ **의미 위험도:** MEDIUM
94
+ **보존 주의사항:** 진행형을 과거형이나 현재형으로 바꿀 때 동작의 현재성(아직 진행 중임)이 핵심 의미인 경우 해당 시제 정보를 다른 방식으로 보존해야 한다.
95
+
96
+ **Burstiness 지침:** "~고 있다"를 교정할 때 모든 문장을 과거형이나 현재형으로 균일하게 바꾸지 않는다. 일부는 "~했다", 일부는 "~한다", 일부는 명사형 종결("~할 계획")로 다양하게 변환한다.
97
+
98
+ **수정 전:**
99
+ > 기업들은 새로운 시장을 개척하고 있으며, 기술 혁신을 추진하고 있고, 글로벌 파트너십을 확대하고 있다. 이를 통해 지속적인 성장을 이루어 나가고 있다.
100
+
101
+ **수정 후:**
102
+ > 기업들은 올해 동남아 시장에 진출했고, 내년에는 유럽 진출을 계획 중이다.
103
+
104
+ ---
105
+
106
+ ### 17. 이모지
107
+
108
+ **문제:** AI는 제목이나 목록에 이모지를 장식한다.
109
+
110
+ **발화 조건:** 전문적·학술적·편집 텍스트에 이모지가 1개라도 등장하는 경우.
111
+
112
+ **제외 조건:**
113
+ - 개인 블로그, SNS 카피, 캐주얼 뉴스레터 등 이모지가 의도적 스타일인 문맥
114
+ - 분석 대상인 인용문 안의 이모지
115
+
116
+ **의미 위험도:** LOW
117
+
118
+ **수정 전:**
119
+ > 🚀 **출시 단계:** 제품은 3분기에 출시됩니다
120
+ > 💡 **핵심 인사이트:** 사용자는 단순함을 선호합니다
121
+ > ✅ **다음 단계:** 후속 미팅을 잡으세요
122
+
123
+ **수정 후:**
124
+ > 제품은 3분기에 출시된다. 사용자 조사 결과 단순한 인터페이스를 선호했다. 다음 단계는 후속 미팅이다.
125
+
126
+ ---
127
+
128
+ ### 18. 과도한 한자어/공식어 사용
129
+
130
+ **주의 어휘:** 도모하다, 기하다, 수립하다, 강구하다, 추진하다, 이행하다, 상기, 전술한, 본 사업, 관계 기관, 유기적, 복리 증진
131
+
132
+ **문제:** AI는 보도자료나 공문서 투의 딱딱한 한자어를 남발하여 글이 관료적으로 변한다.
133
+
134
+ **발화 조건:** 같은 문단에 공식어·관료적 한자어가 3개 이상 등장하거나, "본 사업", "전술한", "상기" 같은 공문서 전용 표현이 일반 산문에 사용된 경우.
135
+
136
+ **제외 조건:**
137
+ - 실제 공문서·법률문·보도자료 등 공식어가 관례인 문서
138
+ - 역사적 문서 인용 또는 패러디 목적
139
+
140
+ **의미 위험도:** LOW
141
+
142
+ **수정 전:**
143
+ > 본 사업은 지역 경제 활성화 및 주민 복리 증진을 도모하기 위한 것으로, 관계 기관 간 유기적 협력 체계를 구축하여 효율적인 사업 추진을 기하고자 한다.
144
+
145
+ **수정 후:**
146
+ > 이 사업은 지역 경제를 살리고 주민 생활을 개선하려는 것이다. 시청과 구청이 함께 진행한다.