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.
- package/.patina.default.yaml +29 -29
- package/CHANGELOG.md +53 -0
- package/NOTICE +21 -0
- package/README.md +117 -224
- package/README_JA.md +134 -77
- package/README_KR.md +132 -74
- package/README_ZH.md +137 -80
- package/SKILL.md +11 -20
- package/artifacts/rebaseline-2025/README.md +147 -0
- package/artifacts/rebaseline-2025/human-controls.public.jsonl +250 -0
- package/artifacts/rebaseline-2025/intake.example.jsonl +2 -0
- package/artifacts/rebaseline-2025/intake.local.example.jsonl +25 -0
- package/artifacts/rebaseline-2025/prompts.template.jsonl +7 -0
- package/artifacts/rebaseline-2025/sources.ko-public.jsonl +39 -0
- package/assets/brand/patina-badge.svg +18 -0
- package/assets/brand/patina-mark.svg +8 -0
- package/assets/demo/README.md +79 -0
- package/core/scoring.md +12 -12
- package/core/standalone-prompt.md +3 -1
- package/core/stylometry.md +93 -22
- package/docs/API.md +1554 -0
- package/docs/AUTHENTICATION.md +50 -26
- package/docs/AUTHENTICATION_KR.md +54 -29
- package/docs/BRANDING.md +9 -8
- package/docs/CLI.md +55 -14
- package/docs/COOKBOOK.md +8 -21
- package/docs/DEMO.md +32 -5
- package/docs/EXIT-CODES.md +2 -3
- package/docs/FALSE-POSITIVES.md +63 -0
- package/docs/FAQ.md +9 -1
- package/docs/FAQ_KR.md +3 -1
- package/docs/FLAG-PARITY.md +33 -47
- package/docs/ISSUE-WAVES.md +57 -0
- package/docs/PATTERNS-EN.md +67 -3
- package/docs/PATTERNS-JA.md +68 -2
- package/docs/PATTERNS-KO.md +70 -7
- package/docs/PATTERNS-ZH.md +67 -3
- package/docs/PATTERNS.md +5 -5
- package/docs/RESEARCH-DOCS-PLATFORM.md +54 -0
- package/docs/ROADMAP.md +46 -66
- package/docs/TRANSLATIONESE-KO.md +51 -0
- package/docs/audits/2026-05-deep-research.md +3 -1
- package/docs/benchmarks/README.md +51 -0
- package/docs/benchmarks/detector-comparison.json +69 -9
- package/docs/benchmarks/detector-comparison.md +10 -5
- package/docs/benchmarks/katfish-ko-latest.json +657 -0
- package/docs/benchmarks/katfish-ko-latest.md +77 -0
- package/docs/benchmarks/latest.json +1183 -108
- package/docs/benchmarks/latest.md +84 -60
- package/docs/benchmarks/lexicon-freshness-en-2026-05-22.json +1121 -0
- package/docs/benchmarks/lexicon-freshness-en-2026-05-22.md +136 -0
- package/docs/benchmarks/rebaseline-latest.json +381 -0
- package/docs/benchmarks/rebaseline-latest.md +121 -0
- package/docs/benchmarks/register-stratified-latest.json +164 -0
- package/docs/benchmarks/register-stratified-latest.md +99 -0
- package/docs/benchmarks/register-stratified.md +43 -0
- package/docs/integrations/github-action.md +44 -11
- package/docs/integrations/playground.md +58 -0
- package/docs/integrations/pre-commit.md +5 -5
- package/docs/integrations/release.md +5 -3
- package/docs/integrations/static-sites.md +83 -0
- package/docs/research/2025-rebaseline-plan.md +71 -2
- package/docs/research/2026-rebaseline.md +102 -0
- package/docs/research/adversarial-mps.md +41 -0
- package/docs/research/ai-human-metrics.md +35 -23
- package/docs/research/human-eval-panel.md +42 -0
- package/docs/research/judge-agreement.md +24 -0
- package/docs/research/ko-2025-corpus-sources.md +135 -0
- package/docs/research/lexicon-freshness-audit.md +64 -0
- package/docs/research/zh-ja-lexicon-calibration.md +60 -0
- package/docs/social/patina-launch-copy.md +173 -100
- package/docs/social/patina-launch-execution.md +94 -0
- package/docs/social/patina-launch-korean-first.md +83 -0
- package/docs/social/signs-of-ai-writing.md +26 -0
- package/docs/social/signs-of-ai-writing_KR.md +26 -0
- package/lexicon/ai-en.md +21 -24
- package/lexicon/ai-ja.md +158 -0
- package/lexicon/ai-ko.md +9 -9
- package/lexicon/ai-zh.md +158 -0
- package/lexicon/provenance/ai-en.json +970 -0
- package/lexicon/provenance/ai-ja.json +542 -0
- package/lexicon/provenance/ai-ko.json +866 -0
- package/lexicon/provenance/ai-zh.json +542 -0
- package/package.json +49 -8
- package/patterns/en-communication.md +5 -0
- package/patterns/en-content.md +5 -0
- package/patterns/en-filler.md +5 -0
- package/patterns/en-language.md +29 -1
- package/patterns/en-structure.md +5 -0
- package/patterns/en-style.md +5 -0
- package/patterns/en-viral-hook.md +42 -2
- package/patterns/ja-communication.md +5 -0
- package/patterns/ja-content.md +5 -0
- package/patterns/ja-filler.md +5 -0
- package/patterns/ja-language.md +33 -1
- package/patterns/ja-structure.md +12 -0
- package/patterns/ja-style.md +5 -0
- package/patterns/ja-viral-hook.md +41 -2
- package/patterns/ko-communication.md +5 -0
- package/patterns/ko-content.md +5 -0
- package/patterns/ko-filler.md +5 -0
- package/patterns/ko-language.md +33 -1
- package/patterns/ko-structure.md +25 -6
- package/patterns/ko-style.md +5 -0
- package/patterns/ko-viral-hook.md +38 -2
- package/patterns/zh-communication.md +5 -0
- package/patterns/zh-content.md +5 -0
- package/patterns/zh-filler.md +5 -0
- package/patterns/zh-language.md +37 -1
- package/patterns/zh-structure.md +12 -0
- package/patterns/zh-style.md +5 -0
- package/patterns/zh-viral-hook.md +38 -2
- package/playground/README.md +55 -0
- package/playground/analytics.js +4 -0
- package/playground/analyzer.js +883 -0
- package/playground/app.js +157 -0
- package/playground/data/lexicons.js +343 -0
- package/playground/index.html +138 -0
- package/playground/styles.css +267 -0
- package/profiles/namuwiki.md +111 -0
- package/scripts/adversarial-mps-report.mjs +201 -0
- package/scripts/badge-json.mjs +79 -0
- package/scripts/benchmark-report.mjs +56 -9
- package/scripts/check-release-metadata.mjs +0 -2
- package/scripts/detector-comparison.mjs +7 -7
- package/scripts/generate-playground-data.mjs +77 -0
- package/scripts/katfish-calibration.mjs +464 -0
- package/scripts/lexicon-freshness.mjs +485 -0
- package/scripts/lint.mjs +1 -1
- package/scripts/precommit-score.mjs +4 -3
- package/scripts/prose-score.mjs +81 -5
- package/scripts/rebaseline-intake.mjs +242 -0
- package/scripts/rebaseline-score.mjs +268 -0
- package/scripts/rebaseline-summary.mjs +773 -0
- package/scripts/rebaseline-web-collect.mjs +410 -0
- package/scripts/update-benchmark-ranges.mjs +1 -0
- package/src/api.js +69 -105
- package/src/auth.js +50 -2
- package/src/backends/claude-cli.js +19 -4
- package/src/backends/codex-cli.js +19 -3
- package/src/backends/contract.js +230 -1
- package/src/backends/gemini-cli.js +18 -5
- package/src/backends/index.js +87 -12
- package/src/backends/kimi-cli.js +161 -0
- package/src/cli.js +577 -567
- package/src/commands/doctor.js +2 -2
- package/src/config.js +29 -0
- package/src/errors.js +53 -1
- package/src/features/discourse-tells.js +68 -0
- package/src/features/index.js +82 -8
- package/src/features/lexicon.js +40 -6
- package/src/features/markup-leakage.js +69 -0
- package/src/features/segment.js +41 -0
- package/src/features/signal-strength.js +81 -0
- package/src/features/stylometry.js +231 -1
- package/src/features/translationese.js +127 -0
- package/src/loader.js +76 -0
- package/src/logger.js +22 -23
- package/src/model-defaults.js +55 -0
- package/src/ouroboros.js +31 -0
- package/src/output.js +102 -90
- package/src/prompt-builder.js +103 -68
- package/src/providers.js +51 -4
- package/src/scoring.js +210 -2
- package/src/security.js +75 -0
- package/tests/fixtures/live-quality/en/public-docs-01.md +26 -0
- package/tests/fixtures/live-quality/ko/public-docs-01.md +26 -0
- package/tests/fixtures/suspect-zones/expected-ranges.json +207 -16
- package/tests/fixtures/suspect-zones/ja/ai/ja-ai-04-lexicon.md +11 -0
- package/tests/fixtures/suspect-zones/ja/natural/ja-nat-04-lexicon-cold.md +11 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-02.md +4 -5
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-07-ko-diagnostic.md +11 -0
- package/tests/fixtures/suspect-zones/zh/ai/zh-ai-04-lexicon.md +11 -0
- package/tests/fixtures/suspect-zones/zh/natural/zh-nat-04-lexicon-cold.md +11 -0
- package/tests/quality/README.md +188 -11
- package/tests/quality/adversarial-mps/fixtures.jsonl +10 -0
- package/tests/quality/benchmark.mjs +39 -1
- package/tests/quality/dogfood.mjs +5 -3
- package/tests/quality/live-fixtures.jsonl +2 -0
- package/tests/quality/live-quality.mjs +596 -0
- package/tests/quality/ranking-metrics.mjs +136 -0
- package/tests/quality/rebaseline-manifest.example.jsonl +5 -0
- package/vercel.json +53 -0
- package/SKILL-MAX.md +0 -455
- package/docs/internal/HARNESS.md +0 -14
- package/docs/internal/README.md +0 -14
- package/docs/internal/WARP.md +0 -23
- package/patina-max/SKILL.md +0 -523
- package/patina-max/composite.py +0 -457
- package/src/cache.js +0 -106
- package/src/commands/init.js +0 -208
- package/src/manifest.js +0 -162
- package/src/max-mode.js +0 -207
package/patterns/en-language.md
CHANGED
|
@@ -3,7 +3,12 @@ pack: en-language
|
|
|
3
3
|
language: en
|
|
4
4
|
name: Language Patterns
|
|
5
5
|
version: 1.0.0
|
|
6
|
-
patterns:
|
|
6
|
+
patterns: 8
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
dedupe-with:
|
|
8
13
|
- source: "en-language:7"
|
|
9
14
|
target: "en-filler:24"
|
|
@@ -161,3 +166,26 @@ dedupe-with:
|
|
|
161
166
|
|
|
162
167
|
**After:**
|
|
163
168
|
> The initiative needs dated milestones, named owners, and a budget review. The team also needs one shared plan for partner handoffs, because the current spreadsheet has three conflicting owners for the same launch tasks.
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
### 33. Definitional-Metaphor Equation ("X is the architecture of Z")
|
|
173
|
+
|
|
174
|
+
**Watch words:** is the signature of, is the shape of, is the language of, is the currency of, is the architecture of, is the backbone of, is the engine of, is the heartbeat of, is the DNA of, is the cornerstone of, is the lifeblood of
|
|
175
|
+
|
|
176
|
+
**Fire condition:** 2+ copula sentences of the form "X is the [abstract noun] of Z" appear in the same document/section without concrete support for the equation. A single instance is an audit hint only: do not rewrite unless the same inflated metaphor pattern recurs.
|
|
177
|
+
|
|
178
|
+
**Exclusion:** Literal or technical definitions ("water is the universal solvent"), established idioms and textbook metaphors ("the mitochondria is the powerhouse of the cell"), factual "X is the capital/center of Z" statements, and genuine equivalences backed by concrete support in the same passage are not this pattern.
|
|
179
|
+
|
|
180
|
+
**Disambiguation from #8 (Copula Avoidance):** #8 fires on text that *avoids* "is" ("serves as", "functions as" → rewrite to "is"). #33 is the opposite: the sentence already uses "is", but inflates it into an "is the [abstract noun] of [abstraction]" metaphor-equation to manufacture profundity. Do not conflate them — #8 wants the copula restored, #33 wants the empty metaphor-equation dismantled.
|
|
181
|
+
|
|
182
|
+
**Semantic Risk:** MEDIUM
|
|
183
|
+
**Preservation Note:** The metaphor sometimes points at a real claim ("trust depends on consistent behavior"); when rewriting, recover and state that underlying claim concretely rather than deleting it, so a genuine point is not lost along with the inflated framing.
|
|
184
|
+
|
|
185
|
+
**Problem:** AI manufactures depth by equating one abstraction with another through a borrowed structural noun — "signature", "architecture", "currency". The sentence sounds like an insight but asserts nothing testable; swapping the abstract noun ("is the *language* of" → "is the *currency* of") barely changes the meaning, which exposes the equation as decorative rather than substantive.
|
|
186
|
+
|
|
187
|
+
**Before:**
|
|
188
|
+
> Symmetry is the architecture of trust. Cringe is the visible signature of moving along a gradient you chose. Consistency is the currency of every relationship that lasts.
|
|
189
|
+
|
|
190
|
+
**After:**
|
|
191
|
+
> People trust a process more when it behaves the same way every time, so they can predict it. That predictability is what makes a relationship hold up: you keep doing what you said you would, and the other side stops bracing for surprises.
|
package/patterns/en-structure.md
CHANGED
|
@@ -4,6 +4,11 @@ language: en
|
|
|
4
4
|
name: Structure Patterns
|
|
5
5
|
version: 1.2.0
|
|
6
6
|
patterns: 5
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
phase: structure
|
|
8
13
|
---
|
|
9
14
|
|
package/patterns/en-style.md
CHANGED
|
@@ -4,6 +4,11 @@ language: en
|
|
|
4
4
|
name: Style Patterns
|
|
5
5
|
version: 1.0.0
|
|
6
6
|
patterns: 6
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# Style Patterns
|
|
@@ -3,13 +3,18 @@ pack: en-viral-hook
|
|
|
3
3
|
language: en
|
|
4
4
|
name: Viral Hook Patterns
|
|
5
5
|
version: 1.0.0
|
|
6
|
-
patterns:
|
|
6
|
+
patterns: 9
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
score_only: true
|
|
8
13
|
---
|
|
9
14
|
|
|
10
15
|
# Viral Hook Patterns (score-only)
|
|
11
16
|
|
|
12
|
-
This pack is **score- and audit-only**. It catches "AI marketing influencer" signals — shock-number hooks, clickbait closings, source-skipping authority claims, breath-optimized short-sentence stacking, hyperbolic engagement vocabulary, fake-stat citations, stacked credentials,
|
|
17
|
+
This pack is **score- and audit-only**. It catches "AI marketing influencer" signals — shock-number hooks, clickbait closings, source-skipping authority claims, breath-optimized short-sentence stacking, hyperbolic engagement vocabulary, fake-stat citations, stacked credentials, future-self promises, and aphoristic standalone punchlines — that are common in SNS and blog marketing copy. Rewrite mode does not touch them because they may be intentional rhetoric; the user decides.
|
|
13
18
|
|
|
14
19
|
A hit here does not mean the text is AI-generated. Humans use these patterns too. But when several appear together, the score aligns with the reader's intuition that "this reads like AI-polished marketing."
|
|
15
20
|
|
|
@@ -209,3 +214,38 @@ A hit here does not mean the text is AI-generated. Humans use these patterns too
|
|
|
209
214
|
> Before: Listen, friend — your future self will thank you for saving this.
|
|
210
215
|
>
|
|
211
216
|
> After: Save this if you need a checklist for next month's planning.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
### 9. Aphoristic Punchline / Standalone Declarative
|
|
221
|
+
|
|
222
|
+
**Watch words:** (structural pattern — judged by form, not vocabulary)
|
|
223
|
+
|
|
224
|
+
**Problem:** A short, grammatically complete declarative sentence (roughly ten words or fewer) is set on its own line or paragraph for rhetorical gravitas — a pseudo-profound mic-drop. One can be a stylistic choice; several across a piece, or one capping each paragraph, is a hallmark of AI-polished thought-leadership copy that gestures at depth without earning it. The judgment is about form and placement, not the words used.
|
|
225
|
+
|
|
226
|
+
**Fire condition:** A standalone, grammatically complete declarative sentence of about ten words or fewer is isolated on its own line or paragraph as a punchline, and the piece contains two or more such isolated aphorisms or caps successive paragraphs with them.
|
|
227
|
+
|
|
228
|
+
**Severity rubric:**
|
|
229
|
+
- Low: One standalone aphorism appears in the piece.
|
|
230
|
+
- Medium: Two standalone aphorisms appear.
|
|
231
|
+
- High: Three or more appear, or nearly every paragraph is capped with one.
|
|
232
|
+
|
|
233
|
+
**Exclusion:**
|
|
234
|
+
- Poetry, song lyrics, verse
|
|
235
|
+
- Genuinely short notes, answers, alerts, or one-line replies
|
|
236
|
+
- A deliberate aphorism backed by concrete support in the same passage
|
|
237
|
+
- Quoted speech or dialogue
|
|
238
|
+
- Headings and section titles
|
|
239
|
+
|
|
240
|
+
**Semantic Risk:** LOW — score-only; the isolated line may be intentional rhetoric.
|
|
241
|
+
**Preservation Note:** Score-only by default; if the user asks to lower the hook, fold the standalone line back into the surrounding paragraph or attach the concrete reason it points at, so the claim survives without the staged mic-drop.
|
|
242
|
+
**Before / after examples (manual lower-signal rewrite):**
|
|
243
|
+
> Before: We rebuilt the onboarding flow over two sprints.
|
|
244
|
+
>
|
|
245
|
+
> Symmetry becomes a trap.
|
|
246
|
+
>
|
|
247
|
+
> The team learned to ship smaller.
|
|
248
|
+
>
|
|
249
|
+
> Constraints are a gift.
|
|
250
|
+
>
|
|
251
|
+
> After: We rebuilt the onboarding flow over two sprints, and matching every screen to the old layout slowed us down — chasing visual symmetry became a trap. The team learned to ship smaller pieces, and the tight scope each sprint actually helped more than it hurt.
|
|
@@ -4,6 +4,11 @@ language: ja
|
|
|
4
4
|
name: コミュニケーションパターン
|
|
5
5
|
version: 1.1.0
|
|
6
6
|
patterns: 4
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# コミュニケーションパターン
|
package/patterns/ja-content.md
CHANGED
|
@@ -4,6 +4,11 @@ language: ja
|
|
|
4
4
|
name: コンテンツパターン
|
|
5
5
|
version: 1.0.0
|
|
6
6
|
patterns: 6
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# コンテンツパターン
|
package/patterns/ja-filler.md
CHANGED
|
@@ -4,6 +4,11 @@ language: ja
|
|
|
4
4
|
name: フィラー・ヘッジングパターン
|
|
5
5
|
version: 1.1.0
|
|
6
6
|
patterns: 4
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
dedupe-with:
|
|
8
13
|
- source: "ja-filler:22"
|
|
9
14
|
target: "ja-filler:31"
|
package/patterns/ja-language.md
CHANGED
|
@@ -3,7 +3,12 @@ pack: ja-language
|
|
|
3
3
|
language: ja
|
|
4
4
|
name: 言語・文法パターン
|
|
5
5
|
version: 1.1.0
|
|
6
|
-
patterns:
|
|
6
|
+
patterns: 8
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
dedupe-with:
|
|
8
13
|
- source: "ja-language:7"
|
|
9
14
|
target: "ja-style:13"
|
|
@@ -188,3 +193,30 @@ dedupe-with:
|
|
|
188
193
|
> プロジェクトの日程は、もっと具体的なマイルストーンが必要そうです。予算の使い方についても、一度見直したほうがよさそうです。来週、もう少しじっくり話せる時間を取れたら助かります。
|
|
189
194
|
|
|
190
195
|
**このパターンではないもの:** 「より」が格助詞として比較を表す場合(「東京より大阪が暖かい」)→ 発火しない。「Aに比べて B」のような比較構文 → Pattern 26(翻訳調)で扱う。
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
### 33. 定義的メタファー等式(「XはZの〜だ」構文)
|
|
200
|
+
|
|
201
|
+
**注意語彙:**(コピュラ「〜だ/である」+抽象名詞)署名、痕跡、シグナル、形、輪郭、言語、通貨、設計図、屋台骨、背骨、エンジン、原動力、心臓、鼓動、DNA、礎、要、生命線、土台、地図、文法、レンズ
|
|
202
|
+
|
|
203
|
+
**問題:** 「XはZの〔抽象名詞〕だ」という断定文で壮大なメタファー的等価を主張し、深遠さを人工的に演出する。具体的な裏付けがないまま「〜は〜の署名だ」「〜は〜の設計図だ」のように抽象名詞へ等号で結びつけると、思索の見かけだけが残り、検証可能な内容が抜け落ちる。SNSの格言調・ビジネス書のキャッチコピー・自己啓発系エッセイに頻出する。英語の "Cringe is the visible signature of moving along a gradient you chose."「Symmetry is the architecture of trust.」と同型の現象で、JAでも「〜は〜の署名だ/設計図だ/通貨だ」として現れる。
|
|
204
|
+
|
|
205
|
+
**発火条件:** 同一文書/セクション内で「XはZの〔抽象名詞〕だ/である」というコピュラ構文が2回以上現れ、どれも具体的な根拠・機序・例示に支えられていない場合。単独1回の出現は audit hint にとどめ、同型の膨らんだ等式が反復するときだけ rewrite 対象にする。
|
|
206
|
+
|
|
207
|
+
**除外条件:**
|
|
208
|
+
- 字義どおりの定義・専門的定義(「水は万能溶媒だ」「ミトコンドリアは細胞の発電所だ」「東京は日本の首都だ」のような事実陳述・定着した教科書的比喩)
|
|
209
|
+
- 慣用句・ことわざとして定着した表現(「時は金なり」など)
|
|
210
|
+
- 具体例・データ・機序で等価が実際に支えられている場合(「このAPIは認証基盤の心臓だ――全リクエストがここを通り、月3億回呼ばれる」のように直後で実体を示すもの)
|
|
211
|
+
- 比喩であることを明示し、その射程を限定している場合
|
|
212
|
+
|
|
213
|
+
**Semantic Risk:** MEDIUM
|
|
214
|
+
**Preservation Note:** メタファー等式をほどく際に、書き手が本当に伝えたい主張(XがZにとって重要だ、という関係性)まで消さないよう注意。比喩を外したら、その比喩が指していた具体的な役割・機能・因果を平叙文で言い換えて補う。
|
|
215
|
+
|
|
216
|
+
**修正前:**
|
|
217
|
+
> 対称性は信頼の設計図だ。一貫性は、ブランドが顧客と交わす無言の通貨である。そしてデザインの細部こそ、その企業の価値観の署名にほかならない。
|
|
218
|
+
|
|
219
|
+
**修正後:**
|
|
220
|
+
> ボタンの位置や余白を画面ごとに揃えておくと、ユーザーは次の操作を迷わず予測できる。実際、レイアウトを統一したあとはサポートへの「どこを押せばいい?」という問い合わせが3割減った。
|
|
221
|
+
|
|
222
|
+
**このパターンではないもの:** コピュラ「だ/である」そのものを**避けて**「〜の役割を果たす」「〜として機能する」と書く回避癖 → Pattern 8(コピュラ回避)で扱う。#8 は「だ」を避ける癖を「だ」に戻す方向、#33 は逆に「Xは Z の〔抽象名詞〕だ」という**膨らんだメタファー等式**そのものを縮める方向で、両者を混同しない。字義どおり・専門的な定義文(「東京は日本の首都だ」)は #33 では発火しない。
|
package/patterns/ja-structure.md
CHANGED
|
@@ -4,6 +4,11 @@ language: ja
|
|
|
4
4
|
name: 構造パターン
|
|
5
5
|
version: 1.1.0
|
|
6
6
|
patterns: 5
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
phase: structure
|
|
8
13
|
---
|
|
9
14
|
|
|
@@ -57,6 +62,13 @@ phase: structure
|
|
|
57
62
|
**Semantic Risk:** LOW
|
|
58
63
|
**Preservation Note:** 翻訳調を自然な日本語に直す際、施事、受け手、因果、比較、条件を保つ。読みやすさのために誰が何をしたかを変えない。
|
|
59
64
|
|
|
65
|
+
**Context rewrite guard (issue #352):** 翻訳調が em dash、コロン、スラッシュ、読点でつないだ節、括弧の挿入句と一緒に出る場合、記号だけを置き換えない。文全体を読み、自然な日本語の節構造・文分割・接続表現に組み直す。直訳の「無 TUI 設定」は、意図が条件なら「TUIなしで完全自律インストールにしたい場合は...」のように節で説明する。
|
|
66
|
+
|
|
67
|
+
**Context rewrite example:**
|
|
68
|
+
> 完全自律、無 TUI 設定を望む場合は自律モードフラグを追加します。
|
|
69
|
+
>
|
|
70
|
+
> → TUIなしで完全自律インストールにしたい場合は、自律モードフラグを追加します。
|
|
71
|
+
|
|
60
72
|
**修正前:**
|
|
61
73
|
> この技術が有望であるという事実は否定できない。この技術によって多くの問題が解決されることが可能であり、この技術に関して関心を持つことが必要である。
|
|
62
74
|
|
package/patterns/ja-style.md
CHANGED
|
@@ -4,6 +4,11 @@ language: ja
|
|
|
4
4
|
name: スタイルパターン
|
|
5
5
|
version: 1.0.0
|
|
6
6
|
patterns: 6
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# スタイルパターン
|
|
@@ -3,13 +3,18 @@ pack: ja-viral-hook
|
|
|
3
3
|
language: ja
|
|
4
4
|
name: バイラルフックパターン
|
|
5
5
|
version: 1.0.0
|
|
6
|
-
patterns:
|
|
6
|
+
patterns: 9
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
score_only: true
|
|
8
13
|
---
|
|
9
14
|
|
|
10
15
|
# バイラルフックパターン(スコア専用)
|
|
11
16
|
|
|
12
|
-
このパックは**スコア(`--score`)と監査(`--audit`)専用**で、リライトでは触らない。X(旧Twitter)、note、Instagram、TikTok などのSNSマーケティング文によく見られる「AI
|
|
17
|
+
このパックは**スコア(`--score`)と監査(`--audit`)専用**で、リライトでは触らない。X(旧Twitter)、note、Instagram、TikTok などのSNSマーケティング文によく見られる「AIインフルエンサー風」シグナル——数字ショックフック、クリックベイト末尾、出典回避の権威主張、息継ぎ最適化の短文羅列、誇張エンゲージメント語彙、偽統計引用、肩書き積み上げ、未来の自分への約束、そして箴言オチ(独立した断定文による疑似深遠なドヤ締め)——を捕捉する。
|
|
13
18
|
|
|
14
19
|
このパックがヒットしても、文章がAI生成であるとは限らない。人間も使うパターンだが、複数同時に出現するとスコアが「これはAIが整えたマーケティングコピーっぽい」という読者の直感と一致するようになる。
|
|
15
20
|
|
|
@@ -214,3 +219,37 @@ score_only: true
|
|
|
214
219
|
> 変更前:友よ、これは保存して。1年後のあなたが必ず感謝する。
|
|
215
220
|
>
|
|
216
221
|
> 変更後:来月の計画に使うチェックリストが必要なら保存しておくとよい。
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### 9. 箴言オチ/独立した断定文(疑似深遠なドヤ締め)
|
|
226
|
+
|
|
227
|
+
**注意語彙:**(構造的パターン——語彙ではなく形で判断)短い(おおむね10語/20字以内)、文法的に完結した断定文を、1行・1段落として単独で置く。各段落の末尾を一文の格言で締める、あるいは本文の途中に短い断定文がぽつんと挟まる配置。「対称性は罠になる。」「すべては設計だ。」のような言い切り。
|
|
228
|
+
|
|
229
|
+
**問題:** 短い完結文を独立行・独立段落に置き、語の選択ではなく**配置**で重みを演出する。読者に「深いことを言った」と錯覚させる疑似深遠なマイクドロップで、1本の文章に2つ以上、または各段落をこの形の一文で締めると、AIが整えた格言調コピーの典型シグナルになる。語彙が普通でも、形だけで発火する点が他のフックと異なる。
|
|
230
|
+
|
|
231
|
+
**発火条件:** 短い(おおむね20字以内)文法的に完結した断定文が、前後と切り離されて単独の行・段落に置かれ、修辞的な締め/オチとして機能している場合。1本の文章に複数、または各段落の末尾がこの形で揃っているとシグナルが強い。
|
|
232
|
+
|
|
233
|
+
**重大度の目安:**
|
|
234
|
+
- Low:単独の箴言オチが文章全体で1回だけ。
|
|
235
|
+
- Medium:2回出現。
|
|
236
|
+
- High:3回以上、または各段落がこの形の一文で締められている。
|
|
237
|
+
|
|
238
|
+
**除外条件:**
|
|
239
|
+
- 詩・歌詞・韻文
|
|
240
|
+
- 元々短いメモ・お知らせ・告知・アラート、質問への一行返答
|
|
241
|
+
- 具体的な裏付けと地続きで置かれた意図的な箴言(直前直後で実例・データを示しているもの)
|
|
242
|
+
- 引用・対話のセリフ
|
|
243
|
+
- 見出し・小見出し
|
|
244
|
+
|
|
245
|
+
**Semantic Risk:** LOW —— スコア専用、リライト時に変更しない。
|
|
246
|
+
**Preservation Note:** この模式は既定ではスコア専用で、リライトしない。形を崩す場合も、書き手が本当に強調したかった一文や締めのテンポは残し、空疎な言い切りだけを本文に溶かす。意味のある要点まで削らない。
|
|
247
|
+
|
|
248
|
+
**変更前 / 変更後例(手動で低信号化):**
|
|
249
|
+
> 変更前:完璧を目指すほど、人は動けなくなる。
|
|
250
|
+
>
|
|
251
|
+
> 対称性は罠になる。
|
|
252
|
+
>
|
|
253
|
+
> 結局、迷いを生むのは選択肢の多さだ。
|
|
254
|
+
>
|
|
255
|
+
> 変更後:レイアウト案を3パターンに絞ったら、レビューが半日で終わった。選択肢を増やすほど判断が止まりやすいので、最初から候補を狭めておくと進みが速い。
|
|
@@ -4,6 +4,11 @@ language: ko
|
|
|
4
4
|
name: 소통 패턴
|
|
5
5
|
version: 1.1.0
|
|
6
6
|
patterns: 4
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# 소통 패턴
|
package/patterns/ko-content.md
CHANGED
|
@@ -4,6 +4,11 @@ language: ko
|
|
|
4
4
|
name: 콘텐츠 패턴
|
|
5
5
|
version: 1.1.0
|
|
6
6
|
patterns: 6
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# 콘텐츠 패턴
|
package/patterns/ko-filler.md
CHANGED
|
@@ -4,6 +4,11 @@ language: ko
|
|
|
4
4
|
name: 채움/완화 패턴
|
|
5
5
|
version: 1.2.0
|
|
6
6
|
patterns: 4
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# 채움/완화 패턴
|
package/patterns/ko-language.md
CHANGED
|
@@ -3,7 +3,12 @@ pack: ko-language
|
|
|
3
3
|
language: ko
|
|
4
4
|
name: 언어/문법 패턴
|
|
5
5
|
version: 1.1.0
|
|
6
|
-
patterns:
|
|
6
|
+
patterns: 8
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
dedupe-with:
|
|
8
13
|
- source: "ko-language:7"
|
|
9
14
|
target: "ko-style:13"
|
|
@@ -180,3 +185,30 @@ dedupe-with:
|
|
|
180
185
|
> 프로젝트 일정에 더 구체적인 마일스톤이 있어야 할 것 같습니다. 예산 운영 방안도 한 번 점검이 필요해 보입니다. 다음 주에 자세히 이야기 나누면 좋겠습니다.
|
|
181
186
|
|
|
182
187
|
**이 패턴이 아닌 것:** "보다"가 동사인 경우(예: "오늘은 영화를 보다") → 발화하지 않음. "X에 비해 Y" 같은 비교 구문도 → 패턴 26(번역체)에서 처리.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
### 33. 정의형 은유 등식
|
|
192
|
+
|
|
193
|
+
**주의 어휘:** X는 Z의 [추상명사]다 / X는 Z의 [추상명사]이다 — 추상명사 자리에 오는 신호어: 시그니처, 서명, 형태, 언어, 통화, 화폐, 건축물, 설계도, 골격, 척추, 엔진, 심장박동, 맥박, DNA, 초석, 주춧돌, 생명선, 혈류, 문법, 풍경
|
|
194
|
+
|
|
195
|
+
**문제:** "X는 Z의 시그니처다", "대칭은 신뢰의 건축물이다"처럼 계사("~다/~이다")로 추상적 은유 등식을 단언해 깊이 있어 보이게 만든다. 구체적 근거 없이 거창한 동일시만으로 통찰을 가장하는 AI 특유의 수사다. 비유 자체가 검증되지 않고, 어떤 명사에든 끼워 넣어도 그럴듯하게 들리기 때문에 실제 정보량은 거의 없다.
|
|
196
|
+
|
|
197
|
+
**발화 조건:** "A는 B의 [추상명사]다/이다" 형태의 계사 문장이 같은 글/섹션 안에 2회 이상 등장하고, 그 등식을 뒷받침하는 구체적 근거(데이터·사례·메커니즘)가 없는 경우. 단일 1회 사용은 audit hint로만 취급하고, 같은 부풀린 은유 등식이 반복될 때만 rewrite 대상으로 본다.
|
|
198
|
+
|
|
199
|
+
**제외 조건:**
|
|
200
|
+
- 사전적·기술적 정의 — "물은 만능 용매다", "미토콘드리아는 세포의 발전소다"처럼 교과서적으로 확립된 정의·관용 비유
|
|
201
|
+
- "서울은 한국의 수도다"처럼 지명·직함 등 사실 등식
|
|
202
|
+
- 구체적 근거로 뒷받침된 진짜 동일시 — 바로 뒤에 메커니즘·사례·데이터가 이어져 그 비유가 실제로 성립함을 보여주는 경우 ("재고 회전율은 이 회사의 심장박동이다 — 회전율이 2주만 늦어져도 현금이 마르고 발주가 멈춘다")
|
|
203
|
+
- 인용·대화체 안에서의 등장
|
|
204
|
+
|
|
205
|
+
**의미 위험도:** MEDIUM
|
|
206
|
+
**보존 주의사항:** 은유 등식을 풀어쓸 때 원문이 전달하려던 실제 주장(X와 Z가 어떤 관계라는 것)을 잃지 않도록 주의. 비유를 걷어내되 글쓴이가 말하려던 인과·기능 관계는 구체적 서술로 남긴다. 비유가 사실 아무 내용도 담고 있지 않다면 문장을 통째로 삭제하는 것이 가장 정직한 교정이다.
|
|
207
|
+
|
|
208
|
+
**이 패턴이 아닌 것:** 패턴 8(계사 회피)은 "~의 역할을 한다", "~로 기능한다"처럼 "~다/이다"를 **피하는** 것을 잡아 계사로 되돌린다. 반대로 패턴 33은 계사를 써서 만든 **부풀린 "X는 Z의 OO다" 은유 등식**을 잡는다. 둘은 정반대 방향이므로 혼동하지 말 것 — 8은 계사 복원, 33은 과장된 계사 등식 해체.
|
|
209
|
+
|
|
210
|
+
**수정 전:**
|
|
211
|
+
> 침묵은 권력의 언어다. 회의실에서 누가 말하지 않는가를 보면 조직의 진짜 위계가 드러난다. 신뢰는 모든 협업의 통화이며, 투명성은 그 신뢰의 건축물이다.
|
|
212
|
+
|
|
213
|
+
**수정 후:**
|
|
214
|
+
> 회의에서 누가 말하지 않는지를 보면 조직의 실제 위계가 보인다. 발언권은 대개 직급이 아니라 평가 권한을 쥔 사람에게 쏠린다. 협업이 굴러가려면 서로 정보를 숨기지 않아야 하고, 그건 진행 상황을 공개적으로 공유하는 습관에서 나온다.
|
package/patterns/ko-structure.md
CHANGED
|
@@ -2,8 +2,13 @@
|
|
|
2
2
|
pack: ko-structure
|
|
3
3
|
language: ko
|
|
4
4
|
name: 구조 패턴
|
|
5
|
-
version: 1.
|
|
5
|
+
version: 1.2.0
|
|
6
6
|
patterns: 5
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
phase: structure
|
|
8
13
|
---
|
|
9
14
|
|
|
@@ -43,11 +48,11 @@ phase: structure
|
|
|
43
48
|
|
|
44
49
|
### 26. 번역체
|
|
45
50
|
|
|
46
|
-
**문제:** AI는 영어 구문을 직역한 듯한 한국어를 생성한다. "~것은 사실이다"(It is a fact that), "~라고 할 수 있다"(It can be said that), "~하는 것이 가능하다"(It is possible to) 같은 표현은 한국어 원어민이 자연스럽게 쓰는 표현이 아니다.
|
|
51
|
+
**문제:** AI는 영어 구문을 직역한 듯한 한국어를 생성한다. "~것은 사실이다"(It is a fact that), "~라고 할 수 있다"(It can be said that), "~하는 것이 가능하다"(It is possible to) 같은 표현은 한국어 원어민이 자연스럽게 쓰는 표현이 아니다. 공개 README나 제품 소개에서는 "detector-bypass promise"를 "탐지기 우회 약속"처럼 옮긴 압축 명사구도 같은 문제를 만든다.
|
|
47
52
|
|
|
48
|
-
**주의 어휘:** ~것은 사실이다, ~라고 할 수 있다, ~하는 것이 가능하다, ~에 의해 ~되다, ~에 대해 ~하다 (영어 "about"의 직역), ~하는 경향이 있다 (tend to), ~에 기반하여 (based on), ~를 통해서 (through), 그것은 ~이다 (It is ~)
|
|
53
|
+
**주의 어휘:** ~것은 사실이다, ~라고 할 수 있다, ~하는 것이 가능하다, ~에 의해 ~되다, ~에 대해 ~하다 (영어 "about"의 직역), ~하는 경향이 있다 (tend to), ~에 기반하여 (based on), ~를 통해서 (through), 그것은 ~이다 (It is ~), 탐지기 우회 약속, detector-bypass 약속, ~보존 여부를 보여주다
|
|
49
54
|
|
|
50
|
-
**발화 조건:** 한 문단 내에 번역체 표현이 2개 이상 등장할 때. 단독 1회 사용은 허용 — 정상적인 한국어에서도 간혹 나타나는 표현이므로.
|
|
55
|
+
**발화 조건:** 한 문단 내에 번역체 표현이 2개 이상 등장할 때. 단독 1회 사용은 허용 — 정상적인 한국어에서도 간혹 나타나는 표현이므로. 단, README·제품 소개·랜딩 카피처럼 첫인상이 중요한 문장에서는 뜻이 압축된 영어식 명사구가 독자의 이해를 막으면 1회만 있어도 교정한다.
|
|
51
56
|
|
|
52
57
|
**제외 조건:**
|
|
53
58
|
- 실제 번역 문서 (영어 원문이 있는 번역물)
|
|
@@ -56,6 +61,18 @@ phase: structure
|
|
|
56
61
|
- allowlist에 포함된 표현
|
|
57
62
|
|
|
58
63
|
**의미 위험도:** LOW
|
|
64
|
+
**보존 주의사항:** "우회가 아니다", "보증이 아니다" 같은 부정·윤리 메시지는 약화하지 않는다. 직역 명사구를 풀어쓰되, 우회/보증을 약속하지 않는다는 원문의 안전 장치는 그대로 유지한다.
|
|
65
|
+
**교정 예:** "탐지기 우회 약속"처럼 영어식으로 뭉친 표현은 "AI 탐지기 우회 도구"처럼 독자가 바로 아는 말로 푼다.
|
|
66
|
+
**문맥 교정 가드 (issue #352):** 번역체가 em dash, 콜론, 슬래시, 쉼표 접속 같은 구두점과 함께 보이면 구두점만 바꾸지 않는다. 문장 전체를 읽고 절 관계를 한국어로 다시 짠다. `무 TUI` 같은 직역 명사구는 `TUI 없이 ...`처럼 풀고, `"끝난 것 같아요"로는 부족한 열린 작업`처럼 인용+조사만 붙인 표현은 `"끝난 것 같아요"만으로는 부족한, 결과를 끝까지 확인해야 하는 열린 작업`처럼 부족한 이유를 드러낸다.
|
|
67
|
+
|
|
68
|
+
**문맥 교정 예:**
|
|
69
|
+
> 완전 자율, 무 TUI 세팅을 원한다면 자율 모드 플래그를 추가합니다.
|
|
70
|
+
>
|
|
71
|
+
> → TUI 없이 완전 자율로 설치하려면 자율 모드 플래그를 추가하세요.
|
|
72
|
+
|
|
73
|
+
> `"끝난 것 같아요"로는 부족한 열린 작업에 쓰세요.`
|
|
74
|
+
>
|
|
75
|
+
> → `"끝난 것 같아요"만으로는 부족한, 결과를 끝까지 확인해야 하는 열린 작업에 쓰세요.`
|
|
59
76
|
|
|
60
77
|
**Burstiness 지침:** 번역체를 교정할 때, 대체 표현의 문장 길이를 일정하게 맞추지 않는다. 짧게 끊거나 길게 늘려서 리듬을 깬다.
|
|
61
78
|
|
|
@@ -97,17 +114,19 @@ phase: structure
|
|
|
97
114
|
|
|
98
115
|
**문제:** AI는 한국어 대안이 있는데도 영어 외래어를 남발한다. 전문 용어로서 정착된 외래어(예: 컴퓨터, 인터넷, 데이터베이스)는 괜찮지만, 한국어로 충분히 표현 가능한 것들까지 외래어로 바꾼다. 특히 비즈니스/경영 맥락에서 심하다.
|
|
99
116
|
|
|
100
|
-
**주의 어휘:** 인사이트, 임팩트, 레버리지, 이노베이션, 솔루션, 퍼포먼스, 거버넌스, 컨센서스, 시너지, 모멘텀, 마일스톤, 트리거, 매니징, 스케일업, 온보딩, 피드백 루프, 페인 포인트, 디시전
|
|
117
|
+
**주의 어휘:** 인사이트, 임팩트, 레버리지, 이노베이션, 솔루션, 퍼포먼스, 거버넌스, 컨센서스, 시너지, 모멘텀, 마일스톤, 트리거, 매니징, 스케일업, 온보딩, 피드백 루프, 페인 포인트, 디시전 메이킹, 패러프레이저, 바이패스, 휴먼라이저, 제너레이터, 옵티마이저
|
|
101
118
|
|
|
102
|
-
**발화 조건:** 한 문단 내에 한국어 대안이 있는 외래어가 3개 이상 등장할 때. 업계에서 정착된 전문 용어(예: 마케팅, 브랜딩)는 제외.
|
|
119
|
+
**발화 조건:** 한 문단 내에 한국어 대안이 있는 외래어가 3개 이상 등장할 때. 업계에서 정착된 전문 용어(예: 마케팅, 브랜딩)는 제외. 공개 README·제품 소개·랜딩 카피에서는 "패러프레이저"처럼 독자층 밖에서는 바로 뜻이 안 잡히는 외래어가 첫 설명에 쓰이면 단독 1회도 교정 대상이다.
|
|
103
120
|
|
|
104
121
|
**제외 조건:**
|
|
105
122
|
- IT/개발 전문 용어로 정착된 외래어 (API, 서버, 클라우드, 프레임워크 등)
|
|
106
123
|
- 고유명사 또는 제품/서비스명
|
|
107
124
|
- 한국어 대안이 오히려 부자연스러운 경우 (예: "피드백" → "회환" 같은 과도한 순화)
|
|
125
|
+
- 대상 독자가 해당 외래어를 정확한 전문 용어로 기대하는 문서 (예: NLP 논문에서 paraphraser 모델을 지칭)
|
|
108
126
|
- allowlist에 포함된 표현
|
|
109
127
|
|
|
110
128
|
**의미 위험도:** LOW
|
|
129
|
+
**교정 예:** 공개 README의 "패러프레이저"는 필요하면 "재작성 도구"로 푼다. 단, NLP 논문에서 모델 유형을 가리키면 남긴다.
|
|
111
130
|
|
|
112
131
|
**Burstiness 지침:** 외래어를 한국어로 바꿀 때, 모든 외래어를 기계적으로 치환하지 않는다. 문맥에 따라 일부는 남기고, 일부는 풀어서 설명하고, 일부는 단순 한국어로 바꾼다.
|
|
113
132
|
|
package/patterns/ko-style.md
CHANGED
|
@@ -4,6 +4,11 @@ language: ko
|
|
|
4
4
|
name: 스타일 패턴
|
|
5
5
|
version: 1.0.0
|
|
6
6
|
patterns: 6
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# 스타일 패턴
|
|
@@ -3,13 +3,18 @@ pack: ko-viral-hook
|
|
|
3
3
|
language: ko
|
|
4
4
|
name: 바이럴 훅 패턴
|
|
5
5
|
version: 1.0.0
|
|
6
|
-
patterns:
|
|
6
|
+
patterns: 9
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
score_only: true
|
|
8
13
|
---
|
|
9
14
|
|
|
10
15
|
# 바이럴 훅 패턴 (score-only)
|
|
11
16
|
|
|
12
|
-
이 팩은 **점수(`--score`)와 감사(`--audit`) 전용**이다. SNS·블로그 마케팅 글에서 자주 보이는 "AI 인플루언서 콘텐츠 톤" 신호를 잡는다. 이번 범위에는 가짜 통계 인용, 권위 타이틀 쌓기, 미래의 나/친밀한 2인칭
|
|
17
|
+
이 팩은 **점수(`--score`)와 감사(`--audit`) 전용**이다. SNS·블로그 마케팅 글에서 자주 보이는 "AI 인플루언서 콘텐츠 톤" 신호를 잡는다. 이번 범위에는 가짜 통계 인용, 권위 타이틀 쌓기, 미래의 나/친밀한 2인칭 약속, 그리고 근거 없이 한 줄로 떨어뜨리는 잠언형 펀치라인(독립 단문 선언)도 포함한다. rewrite 모드에서는 의도적 수사일 가능성이 있어 자동 교정하지 않는다 — 사용자가 직접 판단하도록 점수에만 반영한다.
|
|
13
18
|
|
|
14
19
|
이 팩이 적중한다고 해서 글이 무조건 AI 생성이라는 뜻은 아니다. 사람도 쓰는 패턴이지만, 다수가 함께 등장하면 "AI 같다"는 직관과 강하게 일치한다.
|
|
15
20
|
|
|
@@ -209,3 +214,34 @@ score_only: true
|
|
|
209
214
|
> 이전: 친구야, 이건 저장해. 1년 뒤의 당신이 분명 고마워할 거다.
|
|
210
215
|
>
|
|
211
216
|
> 이후: 다음 달 계획을 세울 때 쓸 체크리스트가 필요하면 저장해 두자.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
### 9. 잠언형 펀치라인 / 독립 단문 선언
|
|
221
|
+
|
|
222
|
+
**주의 어휘:** (구조적 패턴 — 어휘가 아니라 형태로 판단)
|
|
223
|
+
|
|
224
|
+
**문제:** 문법적으로 완결된 짧은 선언문(대략 10어절 이하)을 한 줄·한 단락에 독립시켜 무게감을 연출한다. "대칭은 함정이 된다." 같은 식으로, 근거 없이 격언처럼 떨어뜨려 깊이 있어 보이게 만드는 가짜 통찰 마이크드롭이다. 특히 한 글에 이런 단독 선언이 2개 이상 나오거나, 문단마다 끝을 이런 한 줄로 봉인하면 SNS·블로그용 AI 콘텐츠의 잠언 톤이 된다. 어휘가 아니라 **형태**(짧음 + 완결 + 독립 배치 + 단정)로 판단한다.
|
|
225
|
+
|
|
226
|
+
**발화 조건:** 앞뒤 문장과 분리되어 독립된 줄·단락에 놓인, 문법적으로 완결된 짧은 단정 선언문(약 10어절 이하)이 등장하는 경우. 단발이면 약한 신호, 같은 글에 2개 이상이거나 문단마다 한 줄씩 봉인하면 강한 신호다.
|
|
227
|
+
|
|
228
|
+
**심각도 기준:**
|
|
229
|
+
- Low: 독립 잠언이 글 전체에 1개 등장.
|
|
230
|
+
- Medium: 2개 등장.
|
|
231
|
+
- High: 3개 이상 등장하거나, 거의 모든 문단이 이런 한 줄 선언으로 마무리되는 경우.
|
|
232
|
+
|
|
233
|
+
**제외 조건:**
|
|
234
|
+
- 시·운문·노래 가사
|
|
235
|
+
- 본질적으로 짧은 메모·답변·공지·알림
|
|
236
|
+
- 구체적 근거가 뒤따르는 의도된 잠언 (바로 다음 문장이 그 선언을 사례·데이터로 뒷받침)
|
|
237
|
+
- 인용·대화체 안에서의 등장
|
|
238
|
+
- 제목·소제목·헤딩
|
|
239
|
+
|
|
240
|
+
**의미 위험도:** LOW — score-only
|
|
241
|
+
**보존 메모:** 기본적으로 점수만 반영한다. 사용자가 톤을 낮추라고 요청하면, 단독으로 떠 있던 선언을 앞뒤 맥락에 다시 붙이고 구체적 근거를 덧대 평범한 서술로 흡수한다. 글쓴이가 말하려던 핵심 주장 자체는 보존하고, 마이크드롭 연출과 격언 톤만 낮춘다.
|
|
242
|
+
**이전 / 이후 예시(수동 저신호 rewrite):**
|
|
243
|
+
> 이전: 완벽주의는 결국 멈춤이다.
|
|
244
|
+
>
|
|
245
|
+
> 모든 선택은 비용이다.
|
|
246
|
+
>
|
|
247
|
+
> 이후: 완벽하게 다듬으려다 출시를 미루는 동안, 경쟁사는 거친 버전이라도 먼저 내놓고 사용자 반응을 모았다. 어느 쪽을 택하든 포기하는 것이 생기는 셈이다.
|
|
@@ -4,6 +4,11 @@ language: zh
|
|
|
4
4
|
name: 沟通模式
|
|
5
5
|
version: 1.1.0
|
|
6
6
|
patterns: 4
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# 沟通模式
|
package/patterns/zh-content.md
CHANGED
|
@@ -4,6 +4,11 @@ language: zh
|
|
|
4
4
|
name: 内容模式
|
|
5
5
|
version: 1.0.0
|
|
6
6
|
patterns: 6
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# 内容模式
|
package/patterns/zh-filler.md
CHANGED
|
@@ -4,6 +4,11 @@ language: zh
|
|
|
4
4
|
name: 填充/弱化模式
|
|
5
5
|
version: 1.1.0
|
|
6
6
|
patterns: 4
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# 填充/弱化模式
|
package/patterns/zh-language.md
CHANGED
|
@@ -3,7 +3,17 @@ pack: zh-language
|
|
|
3
3
|
language: zh
|
|
4
4
|
name: 语言/语法模式
|
|
5
5
|
version: 1.0.0
|
|
6
|
-
patterns:
|
|
6
|
+
patterns: 8
|
|
7
|
+
corpus-snapshot:
|
|
8
|
+
id: bootstrap-patterns-pre-provenance
|
|
9
|
+
status: needs-quarterly-refresh
|
|
10
|
+
source: maintainer-curated pattern packs before quarterly corpus snapshot tracking
|
|
11
|
+
last_validated: null
|
|
12
|
+
dedupe-with:
|
|
13
|
+
- source: "zh-language:7"
|
|
14
|
+
target: "zh-language:33"
|
|
15
|
+
owner: "zh-language:33"
|
|
16
|
+
reason: "“底层逻辑”既是 #7 的AI高频堆砌词,又可充当 #33 “X 是 Z 的[抽象名词]”隐喻等式的尾词。出现在该判断句框架内时由 #33 负责拆解隐喻等式;作为独立堆砌的流行词时仍归 #7。"
|
|
7
17
|
---
|
|
8
18
|
|
|
9
19
|
# 语言/语法模式
|
|
@@ -171,3 +181,29 @@ patterns: 7
|
|
|
171
181
|
|
|
172
182
|
**修改后:**
|
|
173
183
|
> 下一阶段先做三件事:把里程碑拆到每周,给每个任务指定负责人,重新核对预算表。产品、运营和法务每周二开30分钟会,专门处理跨部门卡住的事项。
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
### 33. 定义式隐喻等式("X 是 Z 的[抽象名词]")
|
|
188
|
+
|
|
189
|
+
**注意词汇(抽象名词标记):** 签名、印记、注脚、形状、轮廓、语言、货币、架构、骨架、引擎、心跳、脉搏、命脉、底色、基石、基因/DNA、底层逻辑、本质、缩影
|
|
190
|
+
|
|
191
|
+
**问题:** AI 中文喜欢用一个系动词判断句把两个东西强行划等号——"X 是 Z 的[抽象名词]"——借宏大的隐喻制造深刻感。"对称是信任的架构""尴尬是你主动选择的那条梯度留下的可见印记"之类的句子听上去很有哲理,实则只是把一个抽象概念套在另一个上面,没有给出任何可验证的支撑。它常常单独成句,充当段落的"金句"。
|
|
192
|
+
|
|
193
|
+
**与 #8(系动词回避)的区分(务必不要混淆):** #8 标记的是**回避"是"**——把"X 是 Y"写成"X 充当 Y""X 起到 Y 的作用""X 相当于 Y",修改方向是**改回"是"**。#33 恰好相反:它标记的是已经用了"是"、却把"是"膨胀成"X 是 Z 的[抽象名词]"这种**夸张的隐喻等式**,修改方向是**拆掉这个等式、换成具体陈述**。一个是缺"是",一个是"是"被滥用造句,两者不是同一回事。
|
|
194
|
+
|
|
195
|
+
**触发条件:** 同一文档/段落中出现 2 处以上“X 是 Z 的[抽象名词]”形式的判断句(抽象名词取自上方标记词或同类),这些等式依赖宏大隐喻而不是具体证据成立。单次出现只记作 audit 提示,不直接进入 rewrite。
|
|
196
|
+
|
|
197
|
+
**排除条件:**
|
|
198
|
+
- 字面或技术性定义("水是万能溶剂""线粒体是细胞的能量工厂""哈希表是一种以键值映射为基础的数据结构")
|
|
199
|
+
- 约定俗成的固定说法或事实性等同("北京是中国的首都""黄河是中华民族的母亲河"作为既有惯用语)
|
|
200
|
+
- 后文用具体事实、数据或机制真正撑起这个等式的等同关系(不是空泛比喻,而是有论据的论断)
|
|
201
|
+
|
|
202
|
+
**Semantic Risk:** MEDIUM
|
|
203
|
+
**Preservation Note:** 拆解隐喻等式时,先判断作者到底想说什么真实主张:是"Z 依赖 X"、"X 能预测 Z",还是"X 是 Z 的前提条件"?保留这个真实关系和它的方向、强度,只去掉"是…的[抽象名词]"这层装饰;若原文除了比喻之外没有任何可保留的信息,就改成一个具体的事实、动作或观察。
|
|
204
|
+
|
|
205
|
+
**修改前:**
|
|
206
|
+
> 对称是信任的架构。在产品设计里,一致性是用户体验的命脉,而留白则是高级感的语言。
|
|
207
|
+
|
|
208
|
+
**修改后:**
|
|
209
|
+
> 界面左右对齐、控件间距统一时,用户更容易预判下一步操作,投诉里"找不到按钮"的比例下降了。我们在两版改版里都验证过这一点。
|