patina-cli 3.11.0 → 4.0.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 (193) hide show
  1. package/.patina.default.yaml +29 -29
  2. package/CHANGELOG.md +53 -0
  3. package/NOTICE +21 -0
  4. package/README.md +117 -224
  5. package/README_JA.md +134 -77
  6. package/README_KR.md +132 -74
  7. package/README_ZH.md +137 -80
  8. package/SKILL.md +11 -20
  9. package/artifacts/rebaseline-2025/README.md +147 -0
  10. package/artifacts/rebaseline-2025/human-controls.public.jsonl +250 -0
  11. package/artifacts/rebaseline-2025/intake.example.jsonl +2 -0
  12. package/artifacts/rebaseline-2025/intake.local.example.jsonl +25 -0
  13. package/artifacts/rebaseline-2025/prompts.template.jsonl +7 -0
  14. package/artifacts/rebaseline-2025/sources.ko-public.jsonl +39 -0
  15. package/assets/brand/patina-badge.svg +18 -0
  16. package/assets/brand/patina-mark.svg +8 -0
  17. package/assets/demo/README.md +79 -0
  18. package/core/scoring.md +12 -12
  19. package/core/standalone-prompt.md +3 -1
  20. package/core/stylometry.md +93 -22
  21. package/docs/API.md +1554 -0
  22. package/docs/AUTHENTICATION.md +50 -26
  23. package/docs/AUTHENTICATION_KR.md +54 -29
  24. package/docs/BRANDING.md +9 -8
  25. package/docs/CLI.md +55 -14
  26. package/docs/COOKBOOK.md +8 -21
  27. package/docs/DEMO.md +32 -5
  28. package/docs/EXIT-CODES.md +2 -3
  29. package/docs/FALSE-POSITIVES.md +63 -0
  30. package/docs/FAQ.md +9 -1
  31. package/docs/FAQ_KR.md +3 -1
  32. package/docs/FLAG-PARITY.md +33 -47
  33. package/docs/ISSUE-WAVES.md +57 -0
  34. package/docs/PATTERNS-EN.md +67 -3
  35. package/docs/PATTERNS-JA.md +68 -2
  36. package/docs/PATTERNS-KO.md +70 -7
  37. package/docs/PATTERNS-ZH.md +67 -3
  38. package/docs/PATTERNS.md +5 -5
  39. package/docs/RESEARCH-DOCS-PLATFORM.md +54 -0
  40. package/docs/ROADMAP.md +46 -66
  41. package/docs/TRANSLATIONESE-KO.md +51 -0
  42. package/docs/audits/2026-05-deep-research.md +3 -1
  43. package/docs/benchmarks/README.md +51 -0
  44. package/docs/benchmarks/detector-comparison.json +69 -9
  45. package/docs/benchmarks/detector-comparison.md +10 -5
  46. package/docs/benchmarks/katfish-ko-latest.json +657 -0
  47. package/docs/benchmarks/katfish-ko-latest.md +77 -0
  48. package/docs/benchmarks/latest.json +1183 -108
  49. package/docs/benchmarks/latest.md +84 -60
  50. package/docs/benchmarks/lexicon-freshness-en-2026-05-22.json +1121 -0
  51. package/docs/benchmarks/lexicon-freshness-en-2026-05-22.md +136 -0
  52. package/docs/benchmarks/rebaseline-latest.json +381 -0
  53. package/docs/benchmarks/rebaseline-latest.md +121 -0
  54. package/docs/benchmarks/register-stratified-latest.json +164 -0
  55. package/docs/benchmarks/register-stratified-latest.md +99 -0
  56. package/docs/benchmarks/register-stratified.md +43 -0
  57. package/docs/integrations/github-action.md +44 -11
  58. package/docs/integrations/playground.md +58 -0
  59. package/docs/integrations/pre-commit.md +5 -5
  60. package/docs/integrations/release.md +5 -3
  61. package/docs/integrations/static-sites.md +83 -0
  62. package/docs/research/2025-rebaseline-plan.md +71 -2
  63. package/docs/research/2026-rebaseline.md +102 -0
  64. package/docs/research/adversarial-mps.md +41 -0
  65. package/docs/research/ai-human-metrics.md +35 -23
  66. package/docs/research/human-eval-panel.md +42 -0
  67. package/docs/research/judge-agreement.md +24 -0
  68. package/docs/research/ko-2025-corpus-sources.md +135 -0
  69. package/docs/research/lexicon-freshness-audit.md +64 -0
  70. package/docs/research/zh-ja-lexicon-calibration.md +60 -0
  71. package/docs/social/patina-launch-copy.md +173 -100
  72. package/docs/social/patina-launch-execution.md +94 -0
  73. package/docs/social/patina-launch-korean-first.md +83 -0
  74. package/docs/social/signs-of-ai-writing.md +26 -0
  75. package/docs/social/signs-of-ai-writing_KR.md +26 -0
  76. package/lexicon/ai-en.md +21 -24
  77. package/lexicon/ai-ja.md +158 -0
  78. package/lexicon/ai-ko.md +9 -9
  79. package/lexicon/ai-zh.md +158 -0
  80. package/lexicon/provenance/ai-en.json +970 -0
  81. package/lexicon/provenance/ai-ja.json +542 -0
  82. package/lexicon/provenance/ai-ko.json +866 -0
  83. package/lexicon/provenance/ai-zh.json +542 -0
  84. package/package.json +49 -8
  85. package/patterns/en-communication.md +5 -0
  86. package/patterns/en-content.md +5 -0
  87. package/patterns/en-filler.md +5 -0
  88. package/patterns/en-language.md +29 -1
  89. package/patterns/en-structure.md +5 -0
  90. package/patterns/en-style.md +5 -0
  91. package/patterns/en-viral-hook.md +42 -2
  92. package/patterns/ja-communication.md +5 -0
  93. package/patterns/ja-content.md +5 -0
  94. package/patterns/ja-filler.md +5 -0
  95. package/patterns/ja-language.md +33 -1
  96. package/patterns/ja-structure.md +12 -0
  97. package/patterns/ja-style.md +5 -0
  98. package/patterns/ja-viral-hook.md +41 -2
  99. package/patterns/ko-communication.md +5 -0
  100. package/patterns/ko-content.md +5 -0
  101. package/patterns/ko-filler.md +5 -0
  102. package/patterns/ko-language.md +33 -1
  103. package/patterns/ko-structure.md +25 -6
  104. package/patterns/ko-style.md +5 -0
  105. package/patterns/ko-viral-hook.md +38 -2
  106. package/patterns/zh-communication.md +5 -0
  107. package/patterns/zh-content.md +5 -0
  108. package/patterns/zh-filler.md +5 -0
  109. package/patterns/zh-language.md +37 -1
  110. package/patterns/zh-structure.md +12 -0
  111. package/patterns/zh-style.md +5 -0
  112. package/patterns/zh-viral-hook.md +38 -2
  113. package/playground/README.md +55 -0
  114. package/playground/analytics.js +4 -0
  115. package/playground/analyzer.js +883 -0
  116. package/playground/app.js +157 -0
  117. package/playground/data/lexicons.js +343 -0
  118. package/playground/index.html +138 -0
  119. package/playground/styles.css +267 -0
  120. package/profiles/namuwiki.md +111 -0
  121. package/scripts/adversarial-mps-report.mjs +201 -0
  122. package/scripts/badge-json.mjs +79 -0
  123. package/scripts/benchmark-report.mjs +56 -9
  124. package/scripts/check-release-metadata.mjs +0 -2
  125. package/scripts/detector-comparison.mjs +7 -7
  126. package/scripts/generate-playground-data.mjs +77 -0
  127. package/scripts/katfish-calibration.mjs +464 -0
  128. package/scripts/lexicon-freshness.mjs +485 -0
  129. package/scripts/lint.mjs +1 -1
  130. package/scripts/precommit-score.mjs +4 -3
  131. package/scripts/prose-score.mjs +81 -5
  132. package/scripts/rebaseline-intake.mjs +242 -0
  133. package/scripts/rebaseline-score.mjs +268 -0
  134. package/scripts/rebaseline-summary.mjs +773 -0
  135. package/scripts/rebaseline-web-collect.mjs +410 -0
  136. package/scripts/update-benchmark-ranges.mjs +1 -0
  137. package/src/api.js +69 -105
  138. package/src/auth.js +50 -2
  139. package/src/backends/claude-cli.js +19 -4
  140. package/src/backends/codex-cli.js +19 -3
  141. package/src/backends/contract.js +230 -1
  142. package/src/backends/gemini-cli.js +18 -5
  143. package/src/backends/index.js +87 -12
  144. package/src/backends/kimi-cli.js +161 -0
  145. package/src/cli.js +577 -567
  146. package/src/commands/doctor.js +2 -2
  147. package/src/config.js +29 -0
  148. package/src/errors.js +53 -1
  149. package/src/features/discourse-tells.js +68 -0
  150. package/src/features/index.js +82 -8
  151. package/src/features/lexicon.js +40 -6
  152. package/src/features/markup-leakage.js +69 -0
  153. package/src/features/segment.js +41 -0
  154. package/src/features/signal-strength.js +81 -0
  155. package/src/features/stylometry.js +231 -1
  156. package/src/features/translationese.js +127 -0
  157. package/src/loader.js +76 -0
  158. package/src/logger.js +22 -23
  159. package/src/model-defaults.js +55 -0
  160. package/src/ouroboros.js +31 -0
  161. package/src/output.js +102 -90
  162. package/src/prompt-builder.js +103 -68
  163. package/src/providers.js +51 -4
  164. package/src/scoring.js +210 -2
  165. package/src/security.js +75 -0
  166. package/tests/fixtures/live-quality/en/public-docs-01.md +26 -0
  167. package/tests/fixtures/live-quality/ko/public-docs-01.md +26 -0
  168. package/tests/fixtures/suspect-zones/expected-ranges.json +207 -16
  169. package/tests/fixtures/suspect-zones/ja/ai/ja-ai-04-lexicon.md +11 -0
  170. package/tests/fixtures/suspect-zones/ja/natural/ja-nat-04-lexicon-cold.md +11 -0
  171. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-02.md +4 -5
  172. package/tests/fixtures/suspect-zones/ko/ai/ko-ai-07-ko-diagnostic.md +11 -0
  173. package/tests/fixtures/suspect-zones/zh/ai/zh-ai-04-lexicon.md +11 -0
  174. package/tests/fixtures/suspect-zones/zh/natural/zh-nat-04-lexicon-cold.md +11 -0
  175. package/tests/quality/README.md +188 -11
  176. package/tests/quality/adversarial-mps/fixtures.jsonl +10 -0
  177. package/tests/quality/benchmark.mjs +39 -1
  178. package/tests/quality/dogfood.mjs +5 -3
  179. package/tests/quality/live-fixtures.jsonl +2 -0
  180. package/tests/quality/live-quality.mjs +596 -0
  181. package/tests/quality/ranking-metrics.mjs +136 -0
  182. package/tests/quality/rebaseline-manifest.example.jsonl +5 -0
  183. package/vercel.json +53 -0
  184. package/SKILL-MAX.md +0 -455
  185. package/docs/internal/HARNESS.md +0 -14
  186. package/docs/internal/README.md +0 -14
  187. package/docs/internal/WARP.md +0 -23
  188. package/patina-max/SKILL.md +0 -523
  189. package/patina-max/composite.py +0 -457
  190. package/src/cache.js +0 -106
  191. package/src/commands/init.js +0 -208
  192. package/src/manifest.js +0 -162
  193. package/src/max-mode.js +0 -207
@@ -0,0 +1,83 @@
1
+ # Korean-first launch drafts
2
+
3
+ Status: ready for maintainer posting. Score each copied post again after any
4
+ channel-specific edit. Use the playground link in every post:
5
+ <https://patina.vibetip.help/>.
6
+
7
+ ## GeekNews
8
+
9
+ ### Title
10
+
11
+ AI가 쓴 티 나는 문장, 패턴으로 잡아서 고쳐주는 도구를 만들었습니다
12
+
13
+ ### Body
14
+
15
+ GPT로 초안을 만들면 글이 편해지는 대신 비슷한 티가 남습니다.
16
+ 한국어에서는 “~적인”, “~하고 있다”, 과하게 높아진 한자어, 너무 반듯한 목록이 자주 보입니다.
17
+
18
+ patina는 이런 버릇을 패턴으로 잡고, 바꾼 이유를 남기면서 문장을 다듬는 오픈소스 도구입니다. 한국어, 영어, 중국어, 일본어를 지원합니다.
19
+
20
+ 핵심은 저자 판정이 아니라 편집입니다. 어떤 표현을 잡았는지, 왜 바꿨는지, 원래 주장과 숫자가 살아 있는지를 audit, diff, score로 확인할 수 있게 만들었습니다.
21
+
22
+ 웹에서 먼저 써볼 수 있습니다.
23
+ <https://patina.vibetip.help/>
24
+
25
+ 레포는 여기입니다.
26
+ <https://github.com/devswha/patina>
27
+
28
+ 특히 한국어 오탐 사례가 궁금합니다. 사람이 직접 쓴 글인데 patina가 어색하다고 잡는 문장이 있으면 이 글 댓글로 편하게 붙여주셔도 됩니다.
29
+ 웹에서 바로 신고: 플레이그라운드(<https://patina.vibetip.help/>)에서 '오탐 신고' 버튼을 누르면 걸린 문장이 자동으로 채워진 GitHub 폼이 열립니다.
30
+
31
+ ## Velog
32
+
33
+ ### Title
34
+
35
+ 한국어 AI 티를 줄이는 오픈소스 편집 도구, patina
36
+
37
+ ### Body
38
+
39
+ AI가 쓴 초안은 바로 버리기엔 아깝고, 그대로 내보내기엔 어딘가 매끈합니다. 문제는 대개 내용보다 포장입니다. 같은 형용사가 반복되고, 목록은 너무 정돈되어 있고, 한국어 문장은 갑자기 격식체와 한자어 쪽으로 기웁니다.
40
+
41
+ patina는 그 지점을 편집 대상으로 봅니다. 한국어, 영어, 중국어, 일본어의 반복 패턴을 찾고, 해당 문장을 다시 쓰며, 변경 이유와 의미 보존 여부를 함께 보여줍니다.
42
+
43
+ Node CLI로도 쓰고, Claude Code, Codex, Cursor, OpenCode 스킬로도 쓸 수 있습니다. codex, claude, gemini CLI 중 하나에 이미 로그인돼 있다면 별도 API 키 없이도 돌릴 수 있습니다.
44
+
45
+ 먼저 웹 playground에서 문체 신호를 확인해볼 수 있습니다.
46
+ <https://patina.vibetip.help/>
47
+
48
+ 소스와 설치 방법은 GitHub에 정리했습니다.
49
+ <https://github.com/devswha/patina>
50
+
51
+ 제가 가장 보고 싶은 피드백은 오탐입니다. 사람이 쓴 글을 잘못 잡는 사례가 있어야 한국어 패턴을 더 조심스럽게 다듬을 수 있습니다. 댓글로 편하게 남겨주셔도 됩니다.
52
+ playground(<https://patina.vibetip.help/>)의 '오탐 신고' 버튼을 누르면 걸린 문장이 자동으로 채워진 GitHub 폼이 열립니다.
53
+
54
+ ## Clien-style short post
55
+
56
+ ### Title
57
+
58
+ 한국어 AI 티 잡는 오픈소스 도구를 만들었습니다
59
+
60
+ ### Body
61
+
62
+ AI로 초안을 만들다 보면 결국 사람이 다시 지우는 표현들이 있었습니다. “~적인”, “~하고 있다”, 필요 이상으로 격식 있는 표현, 너무 반듯한 문단 같은 것들입니다.
63
+
64
+ patina는 그런 부분을 패턴으로 찾고 문장을 다듬습니다. 그냥 바꿔 쓰고 끝내는 도구가 아니라, 어떤 표현을 왜 바꿨는지와 원래 의미가 남아 있는지를 같이 보여주려 했습니다.
65
+
66
+ 지원 언어는 한국어, 영어, 중국어, 일본어입니다. 웹에서 탐지만 먼저 해볼 수 있고, 실제 재작성은 CLI나 에디터 스킬로 실행합니다.
67
+
68
+ Playground:
69
+ <https://patina.vibetip.help/>
70
+
71
+ GitHub:
72
+ <https://github.com/devswha/patina>
73
+
74
+ 한국어 오탐 사례를 찾고 있습니다. 사람이 쓴 글인데 어색하다고 잡히는 문장이 있으면 이 글 댓글로 편하게 알려주세요. 그런 사례가 패턴을 줄이는 데 제일 도움이 됩니다.
75
+ playground(<https://patina.vibetip.help/>)의 '오탐 신고' 버튼으로도 걸린 문장이 자동으로 채워진 GitHub 폼을 열 수 있습니다.
76
+
77
+ ## Posting checklist
78
+
79
+ - Re-score the exact copied post after edits.
80
+ - Attach the score output to the internal launch note.
81
+ - Do not promise authorship proof.
82
+ - Capture false-positive examples with language, register, score output, and the paragraph that fired.
83
+ - Send public false-positive examples to <https://github.com/devswha/patina/issues/new?template=false_positive.yml>.
@@ -0,0 +1,26 @@
1
+ # 10 signs of AI writing
2
+
3
+ Use this as a shareable editing checklist, not an authorship test. Each item below comes from Patina's pattern catalog and cites the real before/after fixture it uses.
4
+
5
+ Keep it next to a draft while editing.
6
+
7
+ Copy one row into a social card if you want a short post.
8
+
9
+ If a row feels wrong, open the cited example before changing the rule.
10
+
11
+ | # | Tell | Real before → after | Trace |
12
+ |---:|---|---|---|
13
+ | 1 | Ordinary events get inflated into “groundbreaking” or “transformative” milestones. | “groundbreaking paradigm shift” → “launched a grocery delivery app” | Pattern 1, `patterns/en-content.md`; examples: [`en-01-failure`](../../examples/en-01-failure-01.md) → [`en-01-success`](../../examples/en-01-success-01.md) |
14
+ | 3 | A sentence chains `showcasing`, `highlighting`, and `underscoring` without explaining cause. | “showcasing the diversity… highlighting… underscoring…” → a concrete Tokyo/Lagos residency example | Pattern 3, `patterns/en-content.md`; examples: [`en-03-failure`](../../examples/en-03-failure-01.md) → [`en-03-success`](../../examples/en-03-success-01.md) |
15
+ | 7 | The paragraph leans on AI-favorite vocabulary: `delve`, `tapestry`, `multifaceted`, `pivotal`. | “delves into the multifaceted landscape” → “covers renewable energy policy from three angles” | Pattern 7, `patterns/en-language.md`; examples: [`en-07-failure`](../../examples/en-07-failure-01.md) → [`en-07-success`](../../examples/en-07-success-01.md) |
16
+ | 8 | Simple `is` sentences turn into `serves as`, `functions as`, or `acts as`. | “serves as a vital community hub” → “is the neighborhood's main public space” | Pattern 8, `patterns/en-language.md`; examples: [`en-08-failure`](../../examples/en-08-failure-01.md) → [`en-08-success`](../../examples/en-08-success-01.md) |
17
+ | 9 | The claim uses `not just X but Y` when a direct statement would do. | “not just a policy change” → “rezones 12 blocks” | Pattern 9, `patterns/en-language.md`; examples: [`en-09-failure`](../../examples/en-09-failure-01.md) → [`en-09-success`](../../examples/en-09-success-01.md) |
18
+ | 10 | Three-part lists appear because three sounds tidy, not because the evidence has three parts. | “creativity, innovation, and collaboration” → a 10-week mentor project with outcomes | Pattern 10, `patterns/en-language.md`; examples: [`en-10-failure`](../../examples/en-10-failure-01.md) → [`en-10-success`](../../examples/en-10-success-01.md) |
19
+ | 13 | Em dashes carry every aside until the sentence feels stitched together. | “policy — announced last Tuesday — aims…” → shorter sentences with commas and attribution | Pattern 13, `patterns/en-style.md`; examples: [`en-13-failure`](../../examples/en-13-failure-01.md) → [`en-13-success`](../../examples/en-13-success-01.md) |
20
+ | 15 | Bold inline headers make a paragraph look like a slide deck. | “**Accessibility:** The platform supports…” → one sentence that groups the actual changes | Pattern 15, `patterns/en-style.md`; examples: [`en-15-failure`](../../examples/en-15-failure-01.md) → [`en-15-success`](../../examples/en-15-success-01.md) |
21
+ | 22 | Filler phrases delay the point: `it's important to note`, `in order to`, `at the end of the day`. | “It's important to note that…” → “To reduce emissions…” | Pattern 22, `patterns/en-filler.md`; examples: [`en-22-failure`](../../examples/en-22-failure-01.md) → [`en-22-success`](../../examples/en-22-success-01.md) |
22
+ | 23 | Hedge stacks make the claim impossible to hold: `could potentially`, `to some extent`, `might vary`. | “It could potentially be argued…” → “This approach has advantages, but results vary.” | Pattern 23, `patterns/en-filler.md`; examples: [`en-23-failure`](../../examples/en-23-failure-01.md) → [`en-23-success`](../../examples/en-23-success-01.md) |
23
+
24
+ ## Use it
25
+
26
+ Paste a draft into the hosted playground, then run Patina locally when you want a rewrite: <https://patina.vibetip.help/>. Source and install notes live at <https://github.com/devswha/patina>.
@@ -0,0 +1,26 @@
1
+ # AI가 쓴 글처럼 보이는 신호 10가지
2
+
3
+ 이 문서는 작성자 판별기가 아니라 편집 체크리스트입니다. 아래 항목은 모두 patina 패턴 카탈로그와 실제 before/after fixture에서 가져왔습니다.
4
+
5
+ 초안을 고칠 때 옆에 두고 보세요.
6
+
7
+ 짧은 카드뉴스를 만들 때는 한 줄씩 떼어 쓰면 됩니다.
8
+
9
+ 이상한 항목이 보이면 먼저 연결된 예시를 확인하세요.
10
+
11
+ | # | 신호 | 실제 before → after | 출처 |
12
+ |---:|---|---|---|
13
+ | 1 | 평범한 사건을 `핵심적`, `획기적`, `전환점` 같은 말로 부풀립니다. | “핵심적인 역할… 획기적인 전환점” → “1983년 64K DRAM, 현재 시장 60%” | Pattern 1, `patterns/ko-content.md`; 예시: [`01-failure`](../../examples/01-failure-01.md) → [`01-success`](../../examples/01-success-01.md) |
14
+ | 3 | `~하며`, `~하고`, `~에 기여하며`가 이어지는데 인과가 없습니다. | “보여주며… 상징하고… 기여하며…” → 방문자 수와 매출 변화 | Pattern 3, `patterns/ko-content.md`; 예시: [`03-failure`](../../examples/03-failure-01.md) → [`03-success`](../../examples/03-success-01.md) |
15
+ | 7 | `다양한`, `혁신적인`, `체계적인`, `효과적인` 같은 AI 상투어가 몰립니다. | “다양한 혁신적인 기술들이…” → 배터리 칩과 NPU의 구체 수치 | Pattern 7, `patterns/ko-language.md`; 예시: [`07-failure`](../../examples/07-failure-01.md) → [`07-success`](../../examples/07-success-01.md) |
16
+ | 8 | `~적` 접미사가 문장마다 붙습니다. | “혁신적이고 체계적인… 효과적이고 효율적인…” → “승인 단계를 빼서 배포 시간을 절반으로 줄였다” | Pattern 8, `patterns/ko-language.md`; 예시: [`08-failure`](../../examples/08-failure-01.md) → [`08-success`](../../examples/08-success-01.md) |
17
+ | 9 | `~에 그치지 않고`, `비단 ~뿐만 아니라`로 말을 키웁니다. | “단순한 기술 발전에 그치지 않고…” → 제조, 물류, 고객 서비스 적용 순서 | Pattern 9, `patterns/ko-language.md`; 예시: [`09-failure`](../../examples/09-failure-01.md) → [`09-success`](../../examples/09-success-01.md) |
18
+ | 10 | 세 가지를 묶어야 할 이유 없이 3개 목록이 반복됩니다. | “창의성, 혁신성, 지속가능성” → 8주 실무 프로젝트 | Pattern 10, `patterns/ko-language.md`; 예시: [`10-failure`](../../examples/10-failure-01.md) → [`10-success`](../../examples/10-success-01.md) |
19
+ | 13 | `이를 통해`, `이러한 점에서`, `한편`, `이러한 맥락에서`가 문단을 밀어냅니다. | 연결 표현 네 번 → 수출 기업 영업이익과 중소기업 우려 | Pattern 13, `patterns/ko-style.md`; 예시: [`13-failure`](../../examples/13-failure-01.md) → [`13-success`](../../examples/13-success-01.md) |
20
+ | 15 | `**사용자 경험:**` 같은 인라인 헤더가 글을 카드뉴스처럼 만듭니다. | “**사용자 경험:** 새로운 인터페이스…” → 인터페이스, 속도, 암호화 변경을 한 문장으로 | Pattern 15, `patterns/ko-style.md`; 예시: [`15-failure`](../../examples/15-failure-01.md) → [`15-success`](../../examples/15-success-01.md) |
21
+ | 22 | `주목할 만한 점은`, `현 시점에서 볼 때`, `~라는 사실에 기인하여`가 의미 없이 길이를 늘립니다. | “주목할 만한 점은 현 시점에서 볼 때…” → “지금 경쟁사보다 기술력이 앞선다” | Pattern 22, `patterns/ko-filler.md`; 예시: [`22-failure`](../../examples/22-failure-01.md) → [`22-success`](../../examples/22-success-01.md) |
22
+ | 23 | `~일 수도`, `어느 정도`, `일정 부분`이 겹쳐서 책임 없는 문장이 됩니다. | “어느 정도의 효과를 가져올 수 있을 것으로…” → “이 정책은 효과가 있을 수 있다.” | Pattern 23, `patterns/ko-filler.md`; 예시: [`23-failure`](../../examples/23-failure-01.md) → [`23-success`](../../examples/23-success-01.md) |
23
+
24
+ ## 써보기
25
+
26
+ 초안을 웹 playground에 붙여 넣어 audit을 먼저 확인하세요: <https://patina.vibetip.help/>. 실제 rewrite가 필요하면 로컬 CLI나 에디터 스킬을 쓰면 됩니다. 소스와 설치 방법은 <https://github.com/devswha/patina>에 있습니다.
package/lexicon/ai-en.md CHANGED
@@ -2,7 +2,13 @@
2
2
  pack: ai-lexicon-en
3
3
  language: en
4
4
  version: 1.0.0
5
- entries: 108
5
+ entries: 88
6
+ entry-provenance: lexicon/provenance/ai-en.json
7
+ corpus-snapshot:
8
+ id: hape-en-gpt4o-vs-human-2026-05-22
9
+ status: current
10
+ source: HAP-E English paired corpus, GPT-4o 2024-08-06 continuations vs human chunk_2; see docs/benchmarks/lexicon-freshness-en-2026-05-22.md
11
+ last_validated: 2026-05-22
6
12
  ---
7
13
 
8
14
  # AI-favored vocabulary (English)
@@ -26,7 +32,6 @@ Match policy:
26
32
 
27
33
  - transformative
28
34
  - cutting-edge
29
- - state-of-the-art
30
35
  - bespoke
31
36
  - curated
32
37
  - dynamic
@@ -37,21 +42,16 @@ Match policy:
37
42
  - streamlined
38
43
  - empower
39
44
  - empowering
40
- - enable
41
45
  - enabling
42
46
  - align
43
47
  - alignment
44
48
  - pivot
45
49
  - ecosystem
46
- - workflow
47
50
  - skillset
48
51
  - toolkit
49
- - framework
50
52
  - modalities
51
- - dimensions
52
53
  - harness
53
54
  - unlock
54
- - unleash
55
55
  - bolster
56
56
  - amplify
57
57
  - accelerate
@@ -69,7 +69,6 @@ Match policy:
69
69
  - thrive
70
70
  - thriving
71
71
  - elevate
72
- - elevated
73
72
  - reimagine
74
73
  - rethink
75
74
  - envision
@@ -77,15 +76,12 @@ Match policy:
77
76
 
78
77
  ## Multi-word phrases (case-insensitive substring)
79
78
 
80
- - a wide range of
81
79
  - a wide array of
82
- - a host of
83
80
  - a plethora of
84
81
  - a myriad of
85
82
  - in today's
86
83
  - in the modern era
87
84
  - in the digital age
88
- - in the age of
89
85
  - ever-evolving
90
86
  - ever-changing
91
87
  - rapidly evolving
@@ -103,35 +99,25 @@ Match policy:
103
99
  - a new era
104
100
  - a new chapter
105
101
  - a new frontier
106
- - gain a deeper understanding
107
102
  - gain valuable insights
108
103
  - glean insights
109
104
  - valuable insights
110
105
  - key insights
111
106
  - key takeaways
112
- - key drivers
113
- - driving force
114
107
  - play a crucial role
115
- - play a key role
116
108
  - plays a vital role
117
109
  - pave the path
118
110
  - bridge the gap
119
- - close the gap
120
111
  - at the forefront
121
112
  - at the heart of
122
113
  - at its core
123
- - end-to-end
124
114
  - holistic approach
125
115
  - comprehensive approach
126
116
  - best practices
127
117
  - continuous improvement
128
- - to ensure that
129
- - it is essential to
130
118
  - a deeper dive
131
- - under the hood
132
119
  - the bigger picture
133
120
  - a robust framework
134
- - on the other hand
135
121
  - the digital landscape
136
122
  - the regulatory landscape
137
123
  - the competitive landscape
@@ -139,9 +125,9 @@ Match policy:
139
125
  ## Notes on each entry (why AI-favored)
140
126
 
141
127
  Single words above cluster around three habits the catalog under-covers:
142
- modal scaffolding ("empower", "enable", "harness", "unlock"), abstraction
143
- nouns AI defaults to over concrete ones ("ecosystem", "workflow", "toolkit",
144
- "framework", "modalities", "dimensions"), and self-flattering quality
128
+ modal scaffolding ("empower", "harness", "unlock"), abstraction
129
+ nouns AI defaults to over concrete ones ("ecosystem", "toolkit",
130
+ "modalities"), and self-flattering quality
145
131
  adjectives ("meaningful", "impactful", "thoughtful", "compelling"). None
146
132
  duplicate `en-language.md` Pattern 7's word list — they extend it.
147
133
 
@@ -151,6 +137,17 @@ Calibration drop list (v3.7 eval, see core/stylometry.md §16):
151
137
  "in conjunction with", "the power of" — fired more on Wikipedia/HC3 human
152
138
  than on HC3 ChatGPT. Do not re-add without re-running the eval.
153
139
 
140
+ Freshness drop list (2026-05-22 HAP-E re-mine, see
141
+ `docs/benchmarks/lexicon-freshness-en-2026-05-22.md`):
142
+ "state-of-the-art", "enable", "workflow", "framework", "dimensions",
143
+ "unleash", "elevated", "a wide range of", "a host of", "in the age of",
144
+ "gain a deeper understanding", "key drivers", "driving force",
145
+ "play a key role", "close the gap", "end-to-end", "to ensure that",
146
+ "it is essential to", "under the hood", "on the other hand" — missed the
147
+ ≥4× hot-vs-cold document-frequency lift or zero-hot floor against 8,290
148
+ GPT-4o continuations and 8,290 paired human controls. Do not re-add without
149
+ a newer paired-corpus lift report.
150
+
154
151
  The phrases above are templated openers and closers AI uses to package
155
152
  ordinary content as significant: "in today's [adjective] world", "the
156
153
  ever-evolving landscape of X", "unlock the potential of Y", "play a crucial
@@ -0,0 +1,158 @@
1
+ ---
2
+ pack: ai-lexicon-ja
3
+ language: ja
4
+ version: 1.0.0
5
+ entries: 60
6
+ entry-provenance: lexicon/provenance/ai-ja.json
7
+ corpus-snapshot:
8
+ id: ja-v1.0-2026-05-20-starter
9
+ status: needs-external-calibration
10
+ source: phrase-only starter lexicon from PR #287; curated ja 200-paragraph calibration pending
11
+ last_validated: null
12
+ ---
13
+
14
+ # AI-favored vocabulary (Japanese)
15
+
16
+ High-precision Japanese phrases that AI assistants often use to package neutral explanation as polished guidance.
17
+ The list avoids domain nouns and common particles; density, not a single hit, is the signal.
18
+
19
+ Match policy:
20
+ - CJK entries live in `Multi-word phrases` so the character-token fallback can still match substring phrases.
21
+ - `~` means up to 40 characters between the two sides of a templated phrase.
22
+ - A single hit is a weak hint; high density across a paragraph is the detection signal.
23
+
24
+ ## Strict matches (case-insensitive whole word)
25
+
26
+ _None. CJK entries are phrase/substrings because the default tokenizer uses character fallback._
27
+
28
+ ## Multi-word phrases (case-insensitive substring)
29
+
30
+ - まとめると
31
+ - 結論として
32
+ - 要するに
33
+ - 総じて
34
+ - 言い換えれば
35
+ - 重要なのは
36
+ - 注目すべきは
37
+ - 特筆すべきは
38
+ - 現代社会において
39
+ - デジタル時代において
40
+ - テクノロジーの進化により
41
+ - 社会の変化に伴い
42
+ - 多角的に見ると
43
+ - 長期的に見ると
44
+ - 一方で~他方で
45
+ - ~することが重要です
46
+ - ~と言えるでしょう
47
+ - ~と言えます
48
+ - ~が求められます
49
+ - ~につながります
50
+ - ~を実現します
51
+ - ~を促進します
52
+ - ~を支える重要な要素
53
+ - 重要な役割を果たします
54
+ - 新たな可能性を切り開く
55
+ - 新しい価値を生み出す
56
+ - さらなる発展が期待されます
57
+ - 今後ますます重要になる
58
+ - 持続可能な成長
59
+ - ユーザー体験を向上させる
60
+ - より良い未来
61
+ - 課題解決に貢献する
62
+ - 多様なニーズに応える
63
+ - 柔軟に対応する
64
+ - 効果的に活用する
65
+ - 最大限に引き出す
66
+ - 価値を最大化する
67
+ - 本記事では
68
+ - この記事では
69
+ - ここでは~について解説します
70
+ - ぜひ参考にしてください
71
+ - 理解を深める
72
+ - 具体的に見ていきましょう
73
+ - さまざまな場面で活用できます
74
+ - 幅広い分野で注目されています
75
+ - 新たな選択肢
76
+ - 大きなメリットがあります
77
+ - 重要なポイントです
78
+ - 欠かせない存在
79
+ - ますます注目を集めています
80
+ - 未来を切り拓く
81
+ - 一歩踏み出すきっかけ
82
+ - 可能性を広げる
83
+ - 安心して利用できます
84
+ - より効果的な
85
+ - 最適な方法
86
+ - 本質的な価値
87
+ - これからの時代に求められる
88
+ - 単なる~ではなく
89
+ - 重要な鍵となります
90
+
91
+ ## Entry examples and counterexamples
92
+
93
+ | Entry | AI-tell example | Counterexample |
94
+ |---|---|---|
95
+ | `まとめると` | まとめると、使い方を整理して説明します。 | 見出しや引用語「まとめると」を説明するだけなら単独では AI 判定しない。 |
96
+ | `結論として` | 結論として、使い方を整理して説明します。 | 見出しや引用語「結論として」を説明するだけなら単独では AI 判定しない。 |
97
+ | `要するに` | 要するに、使い方を整理して説明します。 | 見出しや引用語「要するに」を説明するだけなら単独では AI 判定しない。 |
98
+ | `総じて` | 総じて、使い方を整理して説明します。 | 見出しや引用語「総じて」を説明するだけなら単独では AI 判定しない。 |
99
+ | `言い換えれば` | 言い換えれば、使い方を整理して説明します。 | 見出しや引用語「言い換えれば」を説明するだけなら単独では AI 判定しない。 |
100
+ | `重要なのは` | 重要なのは、使い方を整理して説明します。 | 見出しや引用語「重要なのは」を説明するだけなら単独では AI 判定しない。 |
101
+ | `注目すべきは` | 注目すべきは、使い方を整理して説明します。 | 見出しや引用語「注目すべきは」を説明するだけなら単独では AI 判定しない。 |
102
+ | `特筆すべきは` | 特筆すべきは、使い方を整理して説明します。 | 見出しや引用語「特筆すべきは」を説明するだけなら単独では AI 判定しない。 |
103
+ | `現代社会において` | 現代社会において、使い方を整理して説明します。 | 見出しや引用語「現代社会において」を説明するだけなら単独では AI 判定しない。 |
104
+ | `デジタル時代において` | デジタル時代において、使い方を整理して説明します。 | 見出しや引用語「デジタル時代において」を説明するだけなら単独では AI 判定しない。 |
105
+ | `テクノロジーの進化により` | テクノロジーの進化により、使い方を整理して説明します。 | 見出しや引用語「テクノロジーの進化により」を説明するだけなら単独では AI 判定しない。 |
106
+ | `社会の変化に伴い` | 社会の変化に伴い、使い方を整理して説明します。 | 見出しや引用語「社会の変化に伴い」を説明するだけなら単独では AI 判定しない。 |
107
+ | `多角的に見ると` | 多角的に見ると、使い方を整理して説明します。 | 見出しや引用語「多角的に見ると」を説明するだけなら単独では AI 判定しない。 |
108
+ | `長期的に見ると` | 長期的に見ると、使い方を整理して説明します。 | 見出しや引用語「長期的に見ると」を説明するだけなら単独では AI 判定しない。 |
109
+ | `一方で~他方で` | 一方で効率を高め、他方で体験を整えます。 | 見出しや引用語「一方で項目他方で」を説明するだけなら単独では AI 判定しない。 |
110
+ | `~することが重要です` | 目的を確認することが重要です。 | 見出しや引用語「項目することが重要です」を説明するだけなら単独では AI 判定しない。 |
111
+ | `~と言えるでしょう` | 学び方を広げると言えるでしょう。 | 見出しや引用語「項目と言えるでしょう」を説明するだけなら単独では AI 判定しない。 |
112
+ | `~と言えます` | 新しい選択肢だと言えます。 | 見出しや引用語「項目と言えます」を説明するだけなら単独では AI 判定しない。 |
113
+ | `~が求められます` | 継続的な改善が求められます。 | 見出しや引用語「項目が求められます」を説明するだけなら単独では AI 判定しない。 |
114
+ | `~につながります` | 小さな工夫が安心につながります。 | 見出しや引用語「項目につながります」を説明するだけなら単独では AI 判定しない。 |
115
+ | `~を実現します` | より滑らかな手続きを実現します。 | 見出しや引用語「項目を実現します」を説明するだけなら単独では AI 判定しない。 |
116
+ | `~を促進します` | チーム内の共有を促進します。 | 見出しや引用語「項目を促進します」を説明するだけなら単独では AI 判定しない。 |
117
+ | `~を支える重要な要素` | 信頼を支える重要な要素です。 | 見出しや引用語「項目を支える重要な要素」を説明するだけなら単独では AI 判定しない。 |
118
+ | `重要な役割を果たします` | 重要な役割を果たします、使い方を整理して説明します。 | 見出しや引用語「重要な役割を果たします」を説明するだけなら単独では AI 判定しない。 |
119
+ | `新たな可能性を切り開く` | 新たな可能性を切り開く、使い方を整理して説明します。 | 見出しや引用語「新たな可能性を切り開く」を説明するだけなら単独では AI 判定しない。 |
120
+ | `新しい価値を生み出す` | 新しい価値を生み出す、使い方を整理して説明します。 | 見出しや引用語「新しい価値を生み出す」を説明するだけなら単独では AI 判定しない。 |
121
+ | `さらなる発展が期待されます` | さらなる発展が期待されます、使い方を整理して説明します。 | 見出しや引用語「さらなる発展が期待されます」を説明するだけなら単独では AI 判定しない。 |
122
+ | `今後ますます重要になる` | 今後ますます重要になる、使い方を整理して説明します。 | 見出しや引用語「今後ますます重要になる」を説明するだけなら単独では AI 判定しない。 |
123
+ | `持続可能な成長` | 持続可能な成長、使い方を整理して説明します。 | 見出しや引用語「持続可能な成長」を説明するだけなら単独では AI 判定しない。 |
124
+ | `ユーザー体験を向上させる` | ユーザー体験を向上させる、使い方を整理して説明します。 | 見出しや引用語「ユーザー体験を向上させる」を説明するだけなら単独では AI 判定しない。 |
125
+ | `より良い未来` | より良い未来、使い方を整理して説明します。 | 見出しや引用語「より良い未来」を説明するだけなら単独では AI 判定しない。 |
126
+ | `課題解決に貢献する` | 課題解決に貢献する、使い方を整理して説明します。 | 見出しや引用語「課題解決に貢献する」を説明するだけなら単独では AI 判定しない。 |
127
+ | `多様なニーズに応える` | 多様なニーズに応える、使い方を整理して説明します。 | 見出しや引用語「多様なニーズに応える」を説明するだけなら単独では AI 判定しない。 |
128
+ | `柔軟に対応する` | 柔軟に対応する、使い方を整理して説明します。 | 見出しや引用語「柔軟に対応する」を説明するだけなら単独では AI 判定しない。 |
129
+ | `効果的に活用する` | 効果的に活用する、使い方を整理して説明します。 | 見出しや引用語「効果的に活用する」を説明するだけなら単独では AI 判定しない。 |
130
+ | `最大限に引き出す` | 最大限に引き出す、使い方を整理して説明します。 | 見出しや引用語「最大限に引き出す」を説明するだけなら単独では AI 判定しない。 |
131
+ | `価値を最大化する` | 価値を最大化する、使い方を整理して説明します。 | 見出しや引用語「価値を最大化する」を説明するだけなら単独では AI 判定しない。 |
132
+ | `本記事では` | 本記事では、使い方を整理して説明します。 | 見出しや引用語「本記事では」を説明するだけなら単独では AI 判定しない。 |
133
+ | `この記事では` | この記事では、使い方を整理して説明します。 | 見出しや引用語「この記事では」を説明するだけなら単独では AI 判定しない。 |
134
+ | `ここでは~について解説します` | ここでは導入時の注意点について解説します。 | 見出しや引用語「ここでは項目について解説します」を説明するだけなら単独では AI 判定しない。 |
135
+ | `ぜひ参考にしてください` | ぜひ参考にしてください、使い方を整理して説明します。 | 見出しや引用語「ぜひ参考にしてください」を説明するだけなら単独では AI 判定しない。 |
136
+ | `理解を深める` | 理解を深める、使い方を整理して説明します。 | 見出しや引用語「理解を深める」を説明するだけなら単独では AI 判定しない。 |
137
+ | `具体的に見ていきましょう` | 具体的に見ていきましょう、使い方を整理して説明します。 | 見出しや引用語「具体的に見ていきましょう」を説明するだけなら単独では AI 判定しない。 |
138
+ | `さまざまな場面で活用できます` | さまざまな場面で活用できます、使い方を整理して説明します。 | 見出しや引用語「さまざまな場面で活用できます」を説明するだけなら単独では AI 判定しない。 |
139
+ | `幅広い分野で注目されています` | 幅広い分野で注目されています、使い方を整理して説明します。 | 見出しや引用語「幅広い分野で注目されています」を説明するだけなら単独では AI 判定しない。 |
140
+ | `新たな選択肢` | 新たな選択肢、使い方を整理して説明します。 | 見出しや引用語「新たな選択肢」を説明するだけなら単独では AI 判定しない。 |
141
+ | `大きなメリットがあります` | 大きなメリットがあります、使い方を整理して説明します。 | 見出しや引用語「大きなメリットがあります」を説明するだけなら単独では AI 判定しない。 |
142
+ | `重要なポイントです` | 重要なポイントです、使い方を整理して説明します。 | 見出しや引用語「重要なポイントです」を説明するだけなら単独では AI 判定しない。 |
143
+ | `欠かせない存在` | 欠かせない存在、使い方を整理して説明します。 | 見出しや引用語「欠かせない存在」を説明するだけなら単独では AI 判定しない。 |
144
+ | `ますます注目を集めています` | ますます注目を集めています、使い方を整理して説明します。 | 見出しや引用語「ますます注目を集めています」を説明するだけなら単独では AI 判定しない。 |
145
+ | `未来を切り拓く` | 未来を切り拓く、使い方を整理して説明します。 | 見出しや引用語「未来を切り拓く」を説明するだけなら単独では AI 判定しない。 |
146
+ | `一歩踏み出すきっかけ` | 一歩踏み出すきっかけ、使い方を整理して説明します。 | 見出しや引用語「一歩踏み出すきっかけ」を説明するだけなら単独では AI 判定しない。 |
147
+ | `可能性を広げる` | 可能性を広げる、使い方を整理して説明します。 | 見出しや引用語「可能性を広げる」を説明するだけなら単独では AI 判定しない。 |
148
+ | `安心して利用できます` | 安心して利用できます、使い方を整理して説明します。 | 見出しや引用語「安心して利用できます」を説明するだけなら単独では AI 判定しない。 |
149
+ | `より効果的な` | より効果的な、使い方を整理して説明します。 | 見出しや引用語「より効果的な」を説明するだけなら単独では AI 判定しない。 |
150
+ | `最適な方法` | 最適な方法、使い方を整理して説明します。 | 見出しや引用語「最適な方法」を説明するだけなら単独では AI 判定しない。 |
151
+ | `本質的な価値` | 本質的な価値、使い方を整理して説明します。 | 見出しや引用語「本質的な価値」を説明するだけなら単独では AI 判定しない。 |
152
+ | `これからの時代に求められる` | これからの時代に求められる、使い方を整理して説明します。 | 見出しや引用語「これからの時代に求められる」を説明するだけなら単独では AI 判定しない。 |
153
+ | `単なる~ではなく` | 単なる道具ではなく、習慣を変える入口です。 | 見出しや引用語「単なる項目ではなく」を説明するだけなら単独では AI 判定しない。 |
154
+ | `重要な鍵となります` | 重要な鍵となります、使い方を整理して説明します。 | 見出しや引用語「重要な鍵となります」を説明するだけなら単独では AI 判定しない。 |
155
+
156
+ ## Curation notes
157
+
158
+ These entries cluster around summary scaffolds, polite explanatory closures, future-facing optimism, and generalized product/process claims. Drop any entry that fires at similar frequency in encyclopedia or news prose before expanding this pack.
package/lexicon/ai-ko.md CHANGED
@@ -2,7 +2,13 @@
2
2
  pack: ai-lexicon-ko
3
3
  language: ko
4
4
  version: 1.1.0
5
- entries: 102
5
+ entries: 96
6
+ entry-provenance: lexicon/provenance/ai-ko.json
7
+ corpus-snapshot:
8
+ id: ko-v1.1-2026-05-04-claude-namu-wiki
9
+ status: partial
10
+ source: ko/AI 100 Claude-generated paragraphs vs NamuWiki human 100 paragraphs; see inline v1.1 notes
11
+ last_validated: 2026-05-04
6
12
  ---
7
13
 
8
14
  # AI-favored 어휘 (Korean)
@@ -55,18 +61,13 @@ entries: 102
55
61
  - 행보
56
62
  - 양상
57
63
  - 면모
58
- - 측면
59
64
  - 양립
60
65
  - 추세
61
- - 흐름
62
66
  - 한편으로는
63
67
  - 더 나아가
64
68
  - 한걸음 더
65
69
  - 핵심
66
70
  - 본질
67
- - 토대
68
- - 기반
69
- - 환경
70
71
  - 생태계
71
72
  - 패러다임
72
73
 
@@ -75,7 +76,6 @@ entries: 102
75
76
  # 어절 단위 doc-frequency 비율이 ≥4×, 그리고 도메인 아티팩트(가면라이더, 한국, 시리즈 등)가 아닌 register marker 만 채택.
76
77
  - 평가된다
77
78
  - 꼽힌다
78
- - 가리킨다
79
79
  - 사례로
80
80
  - 다수의
81
81
  - 알려져
@@ -144,8 +144,8 @@ entries: 102
144
144
  ## Notes on each entry (why AI-favored)
145
145
 
146
146
  위 단어들은 한국어 AI 글이 "구체 묘사" 대신 "추상 명명"으로 도피할 때 쓰는 어휘다.
147
- 사람은 행동·수치·일화로 쓰지만, AI 는 `자리매김`, `부각`, `행보`, `면모`, `양상`,
148
- `측면`, `토대`, `기반`, `환경`, `생태계` 같은 추상명사로 채운다. `~화` 접미사
147
+ 사람은 행동·수치·일화로 쓰지만, AI 는 `자리매김`, `부각`, `행보`, `양상`,
148
+ `면모`, `생태계`, `패러다임` 같은 추상명사로 채운다. `~화` 접미사
149
149
  (`고도화`, `본격화`, `활성화`, `정교화`, `차별화`, `다변화`, `가시화`)도 동일 — 동작을
150
150
  명사로 굳혀 무게감을 만든다. 28-패턴 #8 `~적` 접미사와는 다른 축이다.
151
151