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
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# False-positive Gallery
|
|
2
|
+
|
|
3
|
+
Patina is an editing signal, not an authorship detector. A high score means "this passage contains signals that often make text read AI-like"; it does not prove that a person did not write it.
|
|
4
|
+
|
|
5
|
+
The examples below are safe, redistributable false-positive **risk** examples. They avoid private people, real accusations, and proprietary text. Use them to decide whether to soften a pattern, add an exclusion, or lower severity for a register.
|
|
6
|
+
|
|
7
|
+
## 1. Encyclopedic register
|
|
8
|
+
|
|
9
|
+
> The observatory opened to the public in 1912 and was expanded twice before the end of the decade. Its main dome housed a refracting telescope, while the east wing contained classrooms, storage cabinets, and a small photographic darkroom. Local newspapers described the building as a civic improvement rather than a research facility.
|
|
10
|
+
|
|
11
|
+
**Why it may be flagged:** encyclopedic prose often has low emotional texture, compact factual density, and repeated institutional nouns.
|
|
12
|
+
|
|
13
|
+
**How to read the score:** check whether the passage is merely neutral and factual. Do not rewrite it into first-person voice just to lower a score.
|
|
14
|
+
|
|
15
|
+
## 2. Academic Korean `~다` prose
|
|
16
|
+
|
|
17
|
+
> 본 연구는 지역 기록물의 분류 기준이 검색 정확도에 미치는 영향을 검토한다. 분석 대상은 2010년부터 2020년까지 생산된 공개 행정 문서 240건이다. 문서 유형, 발행 기관, 보존 기간을 독립 변수로 설정하고, 검색 실패 사례를 오류 유형별로 분류하였다.
|
|
18
|
+
|
|
19
|
+
**Why it may be flagged:** Korean academic prose naturally uses `~다` endings, abstract nouns, and regular sentence cadence. Those are also signals Patina watches in generic AI prose.
|
|
20
|
+
|
|
21
|
+
**How to read the score:** for academic/register-bound prose, treat highlighted phrases as review prompts. Preserve the required formal ending style unless the target publication permits a different register.
|
|
22
|
+
|
|
23
|
+
## 3. Legal or compliance policy
|
|
24
|
+
|
|
25
|
+
> Employees must retain expense records for five years after the reimbursement date. Requests submitted without a receipt may be approved only when the department head confirms that the expense was necessary, reasonable, and incurred on behalf of the organization.
|
|
26
|
+
|
|
27
|
+
**Why it may be flagged:** policy text repeats obligations, uses modal verbs, and avoids personal voice. That can resemble templated AI output even when it is normal compliance drafting.
|
|
28
|
+
|
|
29
|
+
**How to read the score:** ask whether the wording is legally or operationally required. Prefer tightening ambiguity over adding casual language.
|
|
30
|
+
|
|
31
|
+
## 4. Corporate release note
|
|
32
|
+
|
|
33
|
+
> The update improves import reliability for large CSV files, adds retry logging for failed background jobs, and reduces memory use during preview generation. Administrators can enable the new queue setting from the workspace configuration page.
|
|
34
|
+
|
|
35
|
+
**Why it may be flagged:** release notes often stack benefits in parallel clauses and use product nouns repeatedly. The structure may look polished rather than personal.
|
|
36
|
+
|
|
37
|
+
**How to read the score:** keep exact feature names and behavior. If rewriting, reduce vague praise; do not remove operational details.
|
|
38
|
+
|
|
39
|
+
## 5. Government report summary
|
|
40
|
+
|
|
41
|
+
> The program served 18 rural clinics during the reporting period. Most participating sites requested additional training on intake forms, referral tracking, and data-retention rules. The department will review those requests before the next grant cycle.
|
|
42
|
+
|
|
43
|
+
**Why it may be flagged:** report summaries use institutional subjects, measured claims, and cautious future-tense commitments. That register is intentionally restrained.
|
|
44
|
+
|
|
45
|
+
**How to read the score:** check for over-smoothing, but do not punish public-sector caution or required measurement language.
|
|
46
|
+
|
|
47
|
+
## 6. CJK punctuation cleanup that creates translationese
|
|
48
|
+
|
|
49
|
+
> 완전 자율, 무 TUI 세팅을 원한다면 자율 모드 플래그를 추가합니다.
|
|
50
|
+
|
|
51
|
+
**Why it may be flagged:** the source may contain real AI-like punctuation rhythm or calques, but a token-level fix can make Korean, Chinese, or Japanese worse. Replacing punctuation or isolated words without reading the sentence can create literal phrasing such as `무 TUI`.
|
|
52
|
+
|
|
53
|
+
**How to read the score:** treat the flagged punctuation as a prompt to rewrite the clause, not the mark. A safer Korean rewrite is `TUI 없이 완전 자율로 설치하려면 자율 모드 플래그를 추가하세요.` Preserve the condition and action while rebuilding the clause boundary.
|
|
54
|
+
|
|
55
|
+
## Reporting a false positive
|
|
56
|
+
|
|
57
|
+
Open a false-positive issue with:
|
|
58
|
+
|
|
59
|
+
1. language and register;
|
|
60
|
+
2. a safe sample you are allowed to share;
|
|
61
|
+
3. the Patina score or audit output;
|
|
62
|
+
4. why the passage should remain acceptable in that register;
|
|
63
|
+
5. whether the fix should be an exclusion, lower severity, profile override, or benchmark fixture.
|
package/docs/FAQ.md
CHANGED
|
@@ -36,10 +36,12 @@ It is not a truth machine. The scoring formula is deterministic, but severity as
|
|
|
36
36
|
|
|
37
37
|
## How accurate is it?
|
|
38
38
|
|
|
39
|
-
Current calibration reports
|
|
39
|
+
Current calibration (2026-05-22) reports 67.3% editing-hotspot catch [63.5-71.0%] across GPT-5.5, Claude Sonnet 4.6, and Gemini 2.5 Pro CLI samples (n=600, Korean+English). Human-control false positives are 16.0% [11.6-21.7%] (n=200). See [2026-rebaseline.md](research/2026-rebaseline.md) for per-language/model cells.
|
|
40
40
|
|
|
41
41
|
False positives are expected, especially for encyclopedic, corporate, academic, or heavily edited prose. patina is meant to help edit suspicious passages, not to accuse a writer.
|
|
42
42
|
|
|
43
|
+
See the [False-positive Gallery](FALSE-POSITIVES.md) for safe examples of registers that should be treated as editing hints rather than authorship accusations.
|
|
44
|
+
|
|
43
45
|
See [ETHICS.md](ETHICS.md) for the intended-use position statement.
|
|
44
46
|
|
|
45
47
|
## Does it work without an API key?
|
|
@@ -48,6 +50,12 @@ Yes, if you already have the Codex CLI installed and logged in. The installer ca
|
|
|
48
50
|
|
|
49
51
|
Other providers can be configured through the documented backend and provider settings.
|
|
50
52
|
|
|
53
|
+
## Does patina send my text anywhere?
|
|
54
|
+
|
|
55
|
+
The web playground runs entirely in your browser. It makes no network calls and loads no analytics or trackers, so text you paste into it never leaves the page.
|
|
56
|
+
|
|
57
|
+
The CLI runs its deterministic analysis (the audit and the score) locally. The only step that sends text off your machine is the rewrite, and it goes to the backend you choose: a CLI you are already logged into, such as Codex, Claude, Gemini, or Kimi, under your own account, or an OpenAI-compatible API using your own key and base URL (the default is the official OpenAI endpoint, but you can point it at a local or self-hosted model). patina runs no server of its own, ships no telemetry, and never sends your text to a patina-owned endpoint.
|
|
58
|
+
|
|
51
59
|
## Does it only work in Claude Code?
|
|
52
60
|
|
|
53
61
|
No. patina runs as a skill for Claude Code, Codex CLI, Cursor, and OpenCode, and it also works as a standalone Node.js CLI.
|
package/docs/FAQ_KR.md
CHANGED
|
@@ -34,10 +34,12 @@ score는 0부터 100까지의 대략적인 편집 신호입니다. 낮을수록
|
|
|
34
34
|
|
|
35
35
|
## 정확도는 어느 정도인가요?
|
|
36
36
|
|
|
37
|
-
현재 calibration은
|
|
37
|
+
현재 calibration(2026-05-22)은 GPT-5.5, Claude Sonnet 4.6, Gemini 2.5 Pro CLI 샘플에서 67.3% editing-hotspot catch [63.5-71.0%] (n=600, 한국어+영어)를 보고합니다. 사람 글 컨트롤 오탐은 16.0% [11.6-21.7%] (n=200)입니다. 언어×모델별 수치는 [2026-rebaseline.md](research/2026-rebaseline.md)를 참고하세요.
|
|
38
38
|
|
|
39
39
|
오탐은 예상되는 일입니다. 특히 백과사전식, 기업 문서, 학술 문서, 강하게 편집된 글에서 그렇습니다. patina는 수상한 구간을 편집하는 데 쓰는 도구이지, 작성자를 비난하는 도구가 아닙니다.
|
|
40
40
|
|
|
41
|
+
작성자 비난이 아니라 편집 힌트로 보아야 하는 register 예시는 [False-positive Gallery](FALSE-POSITIVES.md)를 참고하세요.
|
|
42
|
+
|
|
41
43
|
의도한 사용 입장은 [ETHICS.md](ETHICS.md)를 참고하세요.
|
|
42
44
|
|
|
43
45
|
## API key 없이도 동작하나요?
|
package/docs/FLAG-PARITY.md
CHANGED
|
@@ -1,53 +1,39 @@
|
|
|
1
1
|
# CLI / Skill Flag Parity
|
|
2
2
|
|
|
3
|
-
Basis: local checkout
|
|
3
|
+
Basis: local checkout plus `node bin/patina.js --help` and `SKILL.md` reviewed on 2026-06-04. This table separates the standalone CLI surface from the prompt-based `/patina` skill; a missing check is not always a bug when the flag is backend-, auth-, or CLI-automation-only.
|
|
4
4
|
|
|
5
|
-
| Flag / command | Standalone CLI | `/patina` (`SKILL.md`) |
|
|
6
|
-
|
|
7
|
-
| *(default rewrite)* | ✓ | ✓ |
|
|
8
|
-
| `--diff` | ✓ | ✓ |
|
|
9
|
-
| `--audit` | ✓ | ✓ |
|
|
10
|
-
| `--score` | ✓ | ✓ |
|
|
11
|
-
| `--
|
|
12
|
-
| `--
|
|
13
|
-
| `--
|
|
14
|
-
| `--
|
|
15
|
-
| `--
|
|
16
|
-
| `--
|
|
17
|
-
| `--
|
|
18
|
-
| `--
|
|
19
|
-
| `--
|
|
20
|
-
| `--
|
|
21
|
-
| `--
|
|
22
|
-
| `--
|
|
23
|
-
| `--
|
|
24
|
-
| `--
|
|
25
|
-
| `--
|
|
26
|
-
| `--
|
|
27
|
-
| `--
|
|
28
|
-
| `--
|
|
29
|
-
| `--
|
|
30
|
-
| `--
|
|
31
|
-
| `--
|
|
32
|
-
| `--
|
|
33
|
-
| `--
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
| `--list-providers` | ✓ | — | — | CLI diagnostics. |
|
|
37
|
-
| `--config <path>` | ✓ | — | — | CLI config override. |
|
|
38
|
-
| `--prompt-mode <strict\|minimal\|auto>` | ✓ | ✓ | — | User-visible v3.11 prompt loading control. |
|
|
39
|
-
| `--variants <n>` | ✓ | ✓ | — | User-visible v3.11 rewrite variants; not supported with CLI MAX mode. |
|
|
40
|
-
| `--allow-insecure-base-url` | ✓ | — | — | CLI network safety override. |
|
|
41
|
-
| `--allow-private-base-url` | ✓ | — | — | CLI SSRF/metadata-address safety override. |
|
|
42
|
-
| `-h`, `--help` | ✓ | — | — | CLI help. |
|
|
43
|
-
| `-v`, `--version` | ✓ | — | — | CLI version. |
|
|
44
|
-
| `patina init` | ✓ | — | — | CLI project config writer. |
|
|
45
|
-
| `patina doctor` | ✓ | — | — | CLI environment diagnostic. |
|
|
46
|
-
| `patina auth status/login` | ✓ | — | — | CLI authentication guidance. |
|
|
47
|
-
| `--dispatch <omc\|direct>` | — | — | ✓ | `/patina-max` dispatch selection; not a standalone CLI flag. |
|
|
5
|
+
| Flag / command | Standalone CLI | `/patina` (`SKILL.md`) | Notes |
|
|
6
|
+
|---|:---:|:---:|---|
|
|
7
|
+
| *(default rewrite)* | ✓ | ✓ | Both rewrite one candidate. |
|
|
8
|
+
| `--diff` | ✓ | ✓ | Single-candidate pattern-by-pattern diff. |
|
|
9
|
+
| `--audit` | ✓ | ✓ | Detection-only mode. |
|
|
10
|
+
| `--score` | ✓ | ✓ | Score mode is available on both surfaces. |
|
|
11
|
+
| `--exit-on <n>` | ✓ | — | CLI score-gate spelling for CI. |
|
|
12
|
+
| `--ouroboros` | ✓ | ✓ | Iterative rewrite / score convergence loop. |
|
|
13
|
+
| `--format <markdown\|text\|json>` | ✓ | — | CLI output-envelope feature. |
|
|
14
|
+
| `--quiet` | ✓ | — | CLI stderr log suppression for scripts. |
|
|
15
|
+
| `--batch` | ✓ | ✓ | Multi-file CLI/skill rewrite flow. |
|
|
16
|
+
| `--in-place` | ✓ | ✓ | Batch-only write mode. |
|
|
17
|
+
| `--suffix <ext>` | ✓ | ✓ | Batch-only alternate output naming. |
|
|
18
|
+
| `--outdir <dir>` | ✓ | ✓ | Batch-only output directory. |
|
|
19
|
+
| `--no-interactive` | ✓ | — | CLI input safety for non-TTY automation. |
|
|
20
|
+
| `--lang <code>` | ✓ | ✓ | `ko`, `en`, `zh`, `ja`. |
|
|
21
|
+
| `--profile <name>` | ✓ | ✓ | Profile override. |
|
|
22
|
+
| `--tone <name>` | ✓ | ✓ | Shared tone surface. |
|
|
23
|
+
| `--model <id>` | ✓ | — | CLI single-backend model selection. |
|
|
24
|
+
| `--api-key-file <path>` | ✓ | — | CLI auth. |
|
|
25
|
+
| `--base-url <url>` | ✓ | — | CLI provider/backend config. |
|
|
26
|
+
| `--backend <name[,name]>` | ✓ | — | CLI backend selection and explicit fallback chains (`openai-http`, `codex-cli`, `claude-cli`, `gemini-cli`, `kimi-cli`). |
|
|
27
|
+
| `--list-backends` | ✓ | — | CLI diagnostics with selectors and auth state. |
|
|
28
|
+
| `--provider <name>` | ✓ | — | CLI provider preset. |
|
|
29
|
+
| `--config <path>` | ✓ | — | CLI config override. |
|
|
30
|
+
| `--allow-insecure-base-url` | ✓ | — | CLI network safety override. |
|
|
31
|
+
| `--allow-private-base-url` | ✓ | — | CLI SSRF/metadata-address safety override. |
|
|
32
|
+
| `-h`, `--help` | ✓ | — | CLI help. |
|
|
33
|
+
| `-v`, `--version` | ✓ | — | CLI version. |
|
|
34
|
+
| `patina doctor` | ✓ | — | CLI environment diagnostic. |
|
|
35
|
+
| `patina auth status/login` | ✓ | — | CLI authentication guidance. |
|
|
48
36
|
|
|
49
37
|
## Audit notes
|
|
50
38
|
|
|
51
|
-
-
|
|
52
|
-
- `--save-run`, `--max-concurrency`, auth/provider/base-url flags, and `doctor`/`auth` commands are CLI automation or transport controls; they do not map cleanly to prompt-only skills.
|
|
53
|
-
- `/patina-max` intentionally exposes only the flags needed for local multi-model dispatch: language/profile, model list, and dispatch mode.
|
|
39
|
+
- Auth/provider/base-url flags and `doctor`/`auth` commands are CLI automation or transport controls; they do not map cleanly to prompt-only skills.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Open Issue Wave Plan
|
|
2
|
+
|
|
3
|
+
Last synced: 2026-06-05. Source of truth is GitHub issues; this file records the current execution grouping so follow-up waves do not re-triage from scratch.
|
|
4
|
+
|
|
5
|
+
## Wave A — growth execution
|
|
6
|
+
|
|
7
|
+
| issue | status | next action |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| #307 awesome-list discovery | ready, external-submission owned | Prepare a short candidate-list/submission checklist for relevant awesome lists; maintainer submits where external account or repo ownership is required. |
|
|
10
|
+
|
|
11
|
+
Current score proof:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
node scripts/precommit-score.mjs docs/social/patina-launch-copy.md docs/social/patina-launch-korean-first.md docs/social/signs-of-ai-writing.md docs/social/signs-of-ai-writing_KR.md
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Latest local result: launch copy 6.3%, Korean-first copy 0.0%, EN guide 0.0%, KR guide 20.0%.
|
|
18
|
+
|
|
19
|
+
## Wave B — implementable product/profile work
|
|
20
|
+
|
|
21
|
+
Closed in the latest waves: #304 NamuWiki profile, via `83675bc`; #305
|
|
22
|
+
one-time install/CLI star nudge; #306 first-screen README terminal demo GIF;
|
|
23
|
+
#308 language-suffixed README demo GIFs via `e8ba041`; #156 adversarial
|
|
24
|
+
MPS repo-owned 10-fixture gate; #157 KO register FP coverage gate via
|
|
25
|
+
`987995f`; #303 KO diagnostics calibration via the KatFish aggregate report;
|
|
26
|
+
#155 sanitized 2025+ rebaseline claim report; #160 lexicon freshness audit.
|
|
27
|
+
|
|
28
|
+
| issue | status | next action |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
|
|
31
|
+
## Wave C — evaluation-gated research
|
|
32
|
+
|
|
33
|
+
| issue | status | next action |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| #158 cross-judge matrix | CLI shortcut removed during surface simplification; full matrix blocked on evaluator budget | Run 3×3×30 agreement after a stable sample set exists. See `docs/research/judge-agreement.md`. |
|
|
36
|
+
| #159 blinded human panel | study design ready; panel blocked on reviewer pool | Recruit 5 raters × 30 paired samples with consent/redistribution rules. See `docs/research/human-eval-panel.md`. |
|
|
37
|
+
|
|
38
|
+
## Wave D — ecosystem/integration expansion
|
|
39
|
+
|
|
40
|
+
| issue | status | next action |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| #206 VS Code extension | parked | Needs extension scope, auth model, marketplace ownership, and shared analyzer packaging. |
|
|
43
|
+
| #207 Obsidian plugin | parked | Needs plugin scope and local-file privacy model. |
|
|
44
|
+
| #211 pattern marketplace | parked | Needs governance, signing/trust model, and pack schema stability. |
|
|
45
|
+
| #212 HuggingFace dataset | parked | Needs redistributable corpus rows; do not publish private/no-redistribution text. |
|
|
46
|
+
| #284 browser extension | parked | Needs content-script privacy model and review of store policies before implementation. |
|
|
47
|
+
|
|
48
|
+
## Operating rules
|
|
49
|
+
|
|
50
|
+
This is a queue, not a promise to post or publish. When a prerequisite is
|
|
51
|
+
missing, keep the issue open and point to the blocker instead of inventing a
|
|
52
|
+
claim.
|
|
53
|
+
|
|
54
|
+
- Keep launch posts and public claims separate: launch copy can cite checked-in benchmark reports and the sanitized rebaseline report, but must not claim broader 2025+ performance than the checked-in reports support.
|
|
55
|
+
- Any scoring-threshold change must update benchmark ranges and dogfood evidence in the same change.
|
|
56
|
+
- For KO/2025+ corpus work, keep raw text in `artifacts/rebaseline-2025/` or another private store and commit only redistributable examples, hashes, metadata, and aggregate reports.
|
|
57
|
+
- For external-account actions (HN, Product Hunt, Reddit, X, Threads, LinkedIn), prepare copy and evidence; the maintainer posts or explicitly delegates posting.
|
package/docs/PATTERNS-EN.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
This page expands the English pattern packs into a browsable reference. It is generated from `patterns/en-*.md`, so the numbers, names, watch words, fire conditions, and examples mirror the source pattern files.
|
|
4
4
|
|
|
5
|
-
- Rewrite-capable patterns:
|
|
6
|
-
- Score/audit-only viral-hook patterns:
|
|
5
|
+
- Rewrite-capable patterns: 33
|
|
6
|
+
- Score/audit-only viral-hook patterns: 9
|
|
7
7
|
- Main selector: [PATTERNS.md](PATTERNS.md)
|
|
8
8
|
|
|
9
9
|
## Pattern Index
|
|
@@ -23,6 +23,7 @@ This page expands the English pattern packs into a browsable reference. It is ge
|
|
|
23
23
|
| 11 | rewrite | Elegant Variation (Synonym Cycling) | [en-language.md](../patterns/en-language.md) |
|
|
24
24
|
| 12 | rewrite | False Ranges | [en-language.md](../patterns/en-language.md) |
|
|
25
25
|
| 32 | rewrite | Comparison Adverb Overuse ("more" without target) | [en-language.md](../patterns/en-language.md) |
|
|
26
|
+
| 33 | rewrite | Definitional-Metaphor Equation ("X is the architecture of Z") | [en-language.md](../patterns/en-language.md) |
|
|
26
27
|
| 13 | rewrite | Em Dash Overuse | [en-style.md](../patterns/en-style.md) |
|
|
27
28
|
| 14 | rewrite | Boldface Overuse | [en-style.md](../patterns/en-style.md) |
|
|
28
29
|
| 15 | rewrite | Inline-Header Vertical Lists | [en-style.md](../patterns/en-style.md) |
|
|
@@ -50,6 +51,7 @@ This page expands the English pattern packs into a browsable reference. It is ge
|
|
|
50
51
|
| VH-6 | score/audit only | Fake Statistic Citation | [en-viral-hook.md](../patterns/en-viral-hook.md) |
|
|
51
52
|
| VH-7 | score/audit only | Manufactured Authority Stacking | [en-viral-hook.md](../patterns/en-viral-hook.md) |
|
|
52
53
|
| VH-8 | score/audit only | Future-Self / Parasocial Promise | [en-viral-hook.md](../patterns/en-viral-hook.md) |
|
|
54
|
+
| VH-9 | score/audit only | Aphoristic Punchline / Standalone Declarative | [en-viral-hook.md](../patterns/en-viral-hook.md) |
|
|
53
55
|
|
|
54
56
|
## Content Patterns
|
|
55
57
|
|
|
@@ -252,7 +254,7 @@ Example after:
|
|
|
252
254
|
- Source: [en-language.md](../patterns/en-language.md)
|
|
253
255
|
- Type: rewrite-capable pattern
|
|
254
256
|
- Watch words: more specific, more concrete, more efficient, more effective, more comprehensive, more robust, more seamless, more meaningful, more strategic, more impactful, more nuanced, more proactive, more sustainable, more scalable
|
|
255
|
-
- Fire condition: 2+ "more + adjective/adverb" comparative phrases appear in one document without a clear target, baseline, or metric.
|
|
257
|
+
- Fire condition: 2+ "more + adjective/adverb" comparative phrases appear in one document without a clear target, baseline, or metric. A single instance can fire when it appears in the same paragraph as other formal AI markers such as "comprehensive", "strategic", "framework", "stakeholder", or "in-depth".
|
|
256
258
|
- Example files: [failure](../examples/en-32-failure-01.md) · [success](../examples/en-32-success-01.md)
|
|
257
259
|
|
|
258
260
|
Example before:
|
|
@@ -263,6 +265,33 @@ Example after:
|
|
|
263
265
|
|
|
264
266
|
> 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.
|
|
265
267
|
|
|
268
|
+
### 33. Definitional-Metaphor Equation ("X is the architecture of Z")
|
|
269
|
+
|
|
270
|
+
- Source: [en-language.md](../patterns/en-language.md)
|
|
271
|
+
- Type: rewrite-capable pattern
|
|
272
|
+
|
|
273
|
+
**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
|
|
274
|
+
|
|
275
|
+
**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.
|
|
276
|
+
|
|
277
|
+
- Example files: [failure](../examples/en-33-failure-01.md) · [success](../examples/en-33-success-01.md)
|
|
278
|
+
**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.
|
|
279
|
+
|
|
280
|
+
**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.
|
|
281
|
+
|
|
282
|
+
**Semantic Risk:** MEDIUM
|
|
283
|
+
**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.
|
|
284
|
+
|
|
285
|
+
**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.
|
|
286
|
+
|
|
287
|
+
**Before:**
|
|
288
|
+
> 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.
|
|
289
|
+
|
|
290
|
+
**After:**
|
|
291
|
+
> 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.
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
266
295
|
## Style Patterns
|
|
267
296
|
|
|
268
297
|
### 13. Em Dash Overuse
|
|
@@ -716,3 +745,38 @@ Before / after example:
|
|
|
716
745
|
> Before: Listen, friend — your future self will thank you for saving this.
|
|
717
746
|
>
|
|
718
747
|
> After: Save this if you need a checklist for next month's planning.
|
|
748
|
+
|
|
749
|
+
### Viral 9. Aphoristic Punchline / Standalone Declarative
|
|
750
|
+
|
|
751
|
+
- Source: [en-viral-hook.md](../patterns/en-viral-hook.md)
|
|
752
|
+
|
|
753
|
+
**Watch words:** (structural pattern — judged by form, not vocabulary)
|
|
754
|
+
|
|
755
|
+
**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.
|
|
756
|
+
|
|
757
|
+
**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.
|
|
758
|
+
|
|
759
|
+
**Severity rubric:**
|
|
760
|
+
- Low: One standalone aphorism appears in the piece.
|
|
761
|
+
- Medium: Two standalone aphorisms appear.
|
|
762
|
+
- High: Three or more appear, or nearly every paragraph is capped with one.
|
|
763
|
+
|
|
764
|
+
**Exclusion:**
|
|
765
|
+
- Poetry, song lyrics, verse
|
|
766
|
+
- Genuinely short notes, answers, alerts, or one-line replies
|
|
767
|
+
- A deliberate aphorism backed by concrete support in the same passage
|
|
768
|
+
- Quoted speech or dialogue
|
|
769
|
+
- Headings and section titles
|
|
770
|
+
|
|
771
|
+
**Semantic Risk:** LOW — score-only; the isolated line may be intentional rhetoric.
|
|
772
|
+
**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.
|
|
773
|
+
**Before / after examples (manual lower-signal rewrite):**
|
|
774
|
+
> Before: We rebuilt the onboarding flow over two sprints.
|
|
775
|
+
>
|
|
776
|
+
> Symmetry becomes a trap.
|
|
777
|
+
>
|
|
778
|
+
> The team learned to ship smaller.
|
|
779
|
+
>
|
|
780
|
+
> Constraints are a gift.
|
|
781
|
+
>
|
|
782
|
+
> 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.
|
package/docs/PATTERNS-JA.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
This page expands the Japanese pattern packs into a browsable reference. It is generated from `patterns/ja-*.md`, so the numbers, names, watch words, fire conditions, and examples mirror the source pattern files.
|
|
4
4
|
|
|
5
|
-
- Rewrite-capable patterns:
|
|
6
|
-
- Score/audit-only viral-hook patterns:
|
|
5
|
+
- Rewrite-capable patterns: 33
|
|
6
|
+
- Score/audit-only viral-hook patterns: 9
|
|
7
7
|
- Main selector: [PATTERNS.md](PATTERNS.md)
|
|
8
8
|
|
|
9
9
|
## Pattern Index
|
|
@@ -23,6 +23,7 @@ This page expands the Japanese pattern packs into a browsable reference. It is g
|
|
|
23
23
|
| 11 | rewrite | 類義語の循環 | [ja-language.md](../patterns/ja-language.md) |
|
|
24
24
|
| 12 | rewrite | カタカナ外来語の多用 | [ja-language.md](../patterns/ja-language.md) |
|
|
25
25
|
| 32 | rewrite | 「より」比較副詞の濫用 | [ja-language.md](../patterns/ja-language.md) |
|
|
26
|
+
| 33 | rewrite | 定義的メタファー等式(「XはZの〜だ」構文) | [ja-language.md](../patterns/ja-language.md) |
|
|
26
27
|
| 13 | rewrite | 接続表現の過剰使用 | [ja-style.md](../patterns/ja-style.md) |
|
|
27
28
|
| 14 | rewrite | 太字の多用 | [ja-style.md](../patterns/ja-style.md) |
|
|
28
29
|
| 15 | rewrite | インラインヘッダーリスト | [ja-style.md](../patterns/ja-style.md) |
|
|
@@ -50,6 +51,7 @@ This page expands the Japanese pattern packs into a browsable reference. It is g
|
|
|
50
51
|
| VH-6 | score/audit only | 偽統計引用 | [ja-viral-hook.md](../patterns/ja-viral-hook.md) |
|
|
51
52
|
| VH-7 | score/audit only | 肩書き積み上げ型の権威付け | [ja-viral-hook.md](../patterns/ja-viral-hook.md) |
|
|
52
53
|
| VH-8 | score/audit only | 未来の自分 / 親密な二人称の約束 | [ja-viral-hook.md](../patterns/ja-viral-hook.md) |
|
|
54
|
+
| VH-9 | score/audit only | 箴言オチ/独立した断定文(疑似深遠なドヤ締め) | [ja-viral-hook.md](../patterns/ja-viral-hook.md) |
|
|
53
55
|
|
|
54
56
|
## コンテンツパターン
|
|
55
57
|
|
|
@@ -263,6 +265,35 @@ Example after:
|
|
|
263
265
|
|
|
264
266
|
> プロジェクトの日程は、もっと具体的なマイルストーンが必要そうです。予算の使い方についても、一度見直したほうがよさそうです。来週、もう少しじっくり話せる時間を取れたら助かります。
|
|
265
267
|
|
|
268
|
+
### 33. 定義的メタファー等式(「XはZの〜だ」構文)
|
|
269
|
+
|
|
270
|
+
- Source: [ja-language.md](../patterns/ja-language.md)
|
|
271
|
+
- Type: rewrite-capable pattern
|
|
272
|
+
|
|
273
|
+
**注意語彙:**(コピュラ「〜だ/である」+抽象名詞)署名、痕跡、シグナル、形、輪郭、言語、通貨、設計図、屋台骨、背骨、エンジン、原動力、心臓、鼓動、DNA、礎、要、生命線、土台、地図、文法、レンズ
|
|
274
|
+
|
|
275
|
+
**問題:** 「XはZの〔抽象名詞〕だ」という断定文で壮大なメタファー的等価を主張し、深遠さを人工的に演出する。具体的な裏付けがないまま「〜は〜の署名だ」「〜は〜の設計図だ」のように抽象名詞へ等号で結びつけると、思索の見かけだけが残り、検証可能な内容が抜け落ちる。SNSの格言調・ビジネス書のキャッチコピー・自己啓発系エッセイに頻出する。英語の "Cringe is the visible signature of moving along a gradient you chose."「Symmetry is the architecture of trust.」と同型の現象で、JAでも「〜は〜の署名だ/設計図だ/通貨だ」として現れる。
|
|
276
|
+
|
|
277
|
+
**発火条件:** 同一文書/セクション内で「XはZの〔抽象名詞〕だ/である」というコピュラ構文が2回以上現れ、どれも具体的な根拠・機序・例示に支えられていない場合。単独1回の出現は audit hint にとどめ、同型の膨らんだ等式が反復するときだけ rewrite 対象にする。
|
|
278
|
+
|
|
279
|
+
- Example files: [failure](../examples/ja-33-failure-01.md) · [success](../examples/ja-33-success-01.md)
|
|
280
|
+
**除外条件:**
|
|
281
|
+
- 字義どおりの定義・専門的定義(「水は万能溶媒だ」「ミトコンドリアは細胞の発電所だ」「東京は日本の首都だ」のような事実陳述・定着した教科書的比喩)
|
|
282
|
+
- 慣用句・ことわざとして定着した表現(「時は金なり」など)
|
|
283
|
+
- 具体例・データ・機序で等価が実際に支えられている場合(「このAPIは認証基盤の心臓だ――全リクエストがここを通り、月3億回呼ばれる」のように直後で実体を示すもの)
|
|
284
|
+
- 比喩であることを明示し、その射程を限定している場合
|
|
285
|
+
|
|
286
|
+
**Semantic Risk:** MEDIUM
|
|
287
|
+
**Preservation Note:** メタファー等式をほどく際に、書き手が本当に伝えたい主張(XがZにとって重要だ、という関係性)まで消さないよう注意。比喩を外したら、その比喩が指していた具体的な役割・機能・因果を平叙文で言い換えて補う。
|
|
288
|
+
|
|
289
|
+
**修正前:**
|
|
290
|
+
> 対称性は信頼の設計図だ。一貫性は、ブランドが顧客と交わす無言の通貨である。そしてデザインの細部こそ、その企業の価値観の署名にほかならない。
|
|
291
|
+
|
|
292
|
+
**修正後:**
|
|
293
|
+
> ボタンの位置や余白を画面ごとに揃えておくと、ユーザーは次の操作を迷わず予測できる。実際、レイアウトを統一したあとはサポートへの「どこを押せばいい?」という問い合わせが3割減った。
|
|
294
|
+
|
|
295
|
+
**このパターンではないもの:** コピュラ「だ/である」そのものを**避けて**「〜の役割を果たす」「〜として機能する」と書く回避癖 → Pattern 8(コピュラ回避)で扱う。#8 は「だ」を避ける癖を「だ」に戻す方向、#33 は逆に「Xは Z の〔抽象名詞〕だ」という**膨らんだメタファー等式**そのものを縮める方向で、両者を混同しない。字義どおり・専門的な定義文(「東京は日本の首都だ」)は #33 では発火しない。
|
|
296
|
+
|
|
266
297
|
## スタイルパターン
|
|
267
298
|
|
|
268
299
|
### 13. 接続表現の過剰使用
|
|
@@ -528,6 +559,7 @@ Example after:
|
|
|
528
559
|
- Type: rewrite-capable pattern
|
|
529
560
|
- Watch words: 〜という事実、〜することが可能である、〜によって〜される、〜に関して、〜に基づいて、〜の観点から、〜する傾向がある
|
|
530
561
|
- Fire condition: 同一段落に翻訳調の表現が2つ以上出現する場合。単独1回は許容。
|
|
562
|
+
- Context guard: issue #352 — 翻訳調が em dash、コロン、スラッシュ、読点接続と一緒に出る場合、記号だけを置き換えず、`無 TUI 設定` → `TUIなしで完全自律インストールにしたい場合は...` のように節構造を自然な日本語に組み直す。
|
|
531
563
|
- Example files: [failure](../examples/ja-26-failure-01.md) · [success](../examples/ja-26-success-01.md)
|
|
532
564
|
|
|
533
565
|
Example before:
|
|
@@ -704,3 +736,37 @@ Detection example:
|
|
|
704
736
|
> 変更前:友よ、これは保存して。1年後のあなたが必ず感謝する。
|
|
705
737
|
>
|
|
706
738
|
> 変更後:来月の計画に使うチェックリストが必要なら保存しておくとよい。
|
|
739
|
+
|
|
740
|
+
### Viral 9. 箴言オチ/独立した断定文(疑似深遠なドヤ締め)
|
|
741
|
+
|
|
742
|
+
- Source: [ja-viral-hook.md](../patterns/ja-viral-hook.md)
|
|
743
|
+
|
|
744
|
+
**注意語彙:**(構造的パターン——語彙ではなく形で判断)短い(おおむね10語/20字以内)、文法的に完結した断定文を、1行・1段落として単独で置く。各段落の末尾を一文の格言で締める、あるいは本文の途中に短い断定文がぽつんと挟まる配置。「対称性は罠になる。」「すべては設計だ。」のような言い切り。
|
|
745
|
+
|
|
746
|
+
**問題:** 短い完結文を独立行・独立段落に置き、語の選択ではなく**配置**で重みを演出する。読者に「深いことを言った」と錯覚させる疑似深遠なマイクドロップで、1本の文章に2つ以上、または各段落をこの形の一文で締めると、AIが整えた格言調コピーの典型シグナルになる。語彙が普通でも、形だけで発火する点が他のフックと異なる。
|
|
747
|
+
|
|
748
|
+
**発火条件:** 短い(おおむね20字以内)文法的に完結した断定文が、前後と切り離されて単独の行・段落に置かれ、修辞的な締め/オチとして機能している場合。1本の文章に複数、または各段落の末尾がこの形で揃っているとシグナルが強い。
|
|
749
|
+
|
|
750
|
+
**重大度の目安:**
|
|
751
|
+
- Low:単独の箴言オチが文章全体で1回だけ。
|
|
752
|
+
- Medium:2回出現。
|
|
753
|
+
- High:3回以上、または各段落がこの形の一文で締められている。
|
|
754
|
+
|
|
755
|
+
**除外条件:**
|
|
756
|
+
- 詩・歌詞・韻文
|
|
757
|
+
- 元々短いメモ・お知らせ・告知・アラート、質問への一行返答
|
|
758
|
+
- 具体的な裏付けと地続きで置かれた意図的な箴言(直前直後で実例・データを示しているもの)
|
|
759
|
+
- 引用・対話のセリフ
|
|
760
|
+
- 見出し・小見出し
|
|
761
|
+
|
|
762
|
+
**Semantic Risk:** LOW —— スコア専用、リライト時に変更しない。
|
|
763
|
+
**Preservation Note:** この模式は既定ではスコア専用で、リライトしない。形を崩す場合も、書き手が本当に強調したかった一文や締めのテンポは残し、空疎な言い切りだけを本文に溶かす。意味のある要点まで削らない。
|
|
764
|
+
|
|
765
|
+
**変更前 / 変更後例(手動で低信号化):**
|
|
766
|
+
> 変更前:完璧を目指すほど、人は動けなくなる。
|
|
767
|
+
>
|
|
768
|
+
> 対称性は罠になる。
|
|
769
|
+
>
|
|
770
|
+
> 結局、迷いを生むのは選択肢の多さだ。
|
|
771
|
+
>
|
|
772
|
+
> 変更後:レイアウト案を3パターンに絞ったら、レビューが半日で終わった。選択肢を増やすほど判断が止まりやすいので、最初から候補を狭めておくと進みが速い。
|
package/docs/PATTERNS-KO.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
This page expands the Korean pattern packs into a browsable reference. It is generated from `patterns/ko-*.md`, so the numbers, names, watch words, fire conditions, and examples mirror the source pattern files.
|
|
4
4
|
|
|
5
|
-
- Rewrite-capable patterns:
|
|
6
|
-
- Score/audit-only viral-hook patterns:
|
|
5
|
+
- Rewrite-capable patterns: 33
|
|
6
|
+
- Score/audit-only viral-hook patterns: 9
|
|
7
7
|
- Main selector: [PATTERNS.md](PATTERNS.md)
|
|
8
8
|
|
|
9
9
|
## Pattern Index
|
|
@@ -23,6 +23,7 @@ This page expands the Korean pattern packs into a browsable reference. It is gen
|
|
|
23
23
|
| 11 | rewrite | 유의어 순환 | [ko-language.md](../patterns/ko-language.md) |
|
|
24
24
|
| 12 | rewrite | ~에 있어서/~함에 있어 장황한 조사 사용 | [ko-language.md](../patterns/ko-language.md) |
|
|
25
25
|
| 32 | rewrite | "보다" 비교부사 남용 | [ko-language.md](../patterns/ko-language.md) |
|
|
26
|
+
| 33 | rewrite | 정의형 은유 등식 | [ko-language.md](../patterns/ko-language.md) |
|
|
26
27
|
| 13 | rewrite | 과도한 연결 표현 | [ko-style.md](../patterns/ko-style.md) |
|
|
27
28
|
| 14 | rewrite | 볼드체 남발 | [ko-style.md](../patterns/ko-style.md) |
|
|
28
29
|
| 15 | rewrite | 인라인 헤더 목록 | [ko-style.md](../patterns/ko-style.md) |
|
|
@@ -50,6 +51,7 @@ This page expands the Korean pattern packs into a browsable reference. It is gen
|
|
|
50
51
|
| VH-6 | score/audit only | 가짜 통계 인용 | [ko-viral-hook.md](../patterns/ko-viral-hook.md) |
|
|
51
52
|
| VH-7 | score/audit only | 권위 타이틀 쌓기 | [ko-viral-hook.md](../patterns/ko-viral-hook.md) |
|
|
52
53
|
| VH-8 | score/audit only | 미래의 나 / 친밀한 2인칭 약속 | [ko-viral-hook.md](../patterns/ko-viral-hook.md) |
|
|
54
|
+
| VH-9 | score/audit only | 잠언형 펀치라인 / 독립 단문 선언 | [ko-viral-hook.md](../patterns/ko-viral-hook.md) |
|
|
53
55
|
|
|
54
56
|
## 콘텐츠 패턴
|
|
55
57
|
|
|
@@ -263,6 +265,35 @@ Example after:
|
|
|
263
265
|
|
|
264
266
|
> 프로젝트 일정에 더 구체적인 마일스톤이 있어야 할 것 같습니다. 예산 운영 방안도 한 번 점검이 필요해 보입니다. 다음 주에 자세히 이야기 나누면 좋겠습니다.
|
|
265
267
|
|
|
268
|
+
### 33. 정의형 은유 등식
|
|
269
|
+
|
|
270
|
+
- Source: [ko-language.md](../patterns/ko-language.md)
|
|
271
|
+
- Type: rewrite-capable pattern
|
|
272
|
+
|
|
273
|
+
**주의 어휘:** X는 Z의 [추상명사]다 / X는 Z의 [추상명사]이다 — 추상명사 자리에 오는 신호어: 시그니처, 서명, 형태, 언어, 통화, 화폐, 건축물, 설계도, 골격, 척추, 엔진, 심장박동, 맥박, DNA, 초석, 주춧돌, 생명선, 혈류, 문법, 풍경
|
|
274
|
+
|
|
275
|
+
**문제:** "X는 Z의 시그니처다", "대칭은 신뢰의 건축물이다"처럼 계사("~다/~이다")로 추상적 은유 등식을 단언해 깊이 있어 보이게 만든다. 구체적 근거 없이 거창한 동일시만으로 통찰을 가장하는 AI 특유의 수사다. 비유 자체가 검증되지 않고, 어떤 명사에든 끼워 넣어도 그럴듯하게 들리기 때문에 실제 정보량은 거의 없다.
|
|
276
|
+
|
|
277
|
+
**발화 조건:** "A는 B의 [추상명사]다/이다" 형태의 계사 문장이 같은 글/섹션 안에 2회 이상 등장하고, 그 등식을 뒷받침하는 구체적 근거(데이터·사례·메커니즘)가 없는 경우. 단일 1회 사용은 audit hint로만 취급하고, 같은 부풀린 은유 등식이 반복될 때만 rewrite 대상으로 본다.
|
|
278
|
+
|
|
279
|
+
- Example files: [failure](../examples/33-failure-01.md) · [success](../examples/33-success-01.md)
|
|
280
|
+
**제외 조건:**
|
|
281
|
+
- 사전적·기술적 정의 — "물은 만능 용매다", "미토콘드리아는 세포의 발전소다"처럼 교과서적으로 확립된 정의·관용 비유
|
|
282
|
+
- "서울은 한국의 수도다"처럼 지명·직함 등 사실 등식
|
|
283
|
+
- 구체적 근거로 뒷받침된 진짜 동일시 — 바로 뒤에 메커니즘·사례·데이터가 이어져 그 비유가 실제로 성립함을 보여주는 경우 ("재고 회전율은 이 회사의 심장박동이다 — 회전율이 2주만 늦어져도 현금이 마르고 발주가 멈춘다")
|
|
284
|
+
- 인용·대화체 안에서의 등장
|
|
285
|
+
|
|
286
|
+
**의미 위험도:** MEDIUM
|
|
287
|
+
**보존 주의사항:** 은유 등식을 풀어쓸 때 원문이 전달하려던 실제 주장(X와 Z가 어떤 관계라는 것)을 잃지 않도록 주의. 비유를 걷어내되 글쓴이가 말하려던 인과·기능 관계는 구체적 서술로 남긴다. 비유가 사실 아무 내용도 담고 있지 않다면 문장을 통째로 삭제하는 것이 가장 정직한 교정이다.
|
|
288
|
+
|
|
289
|
+
**이 패턴이 아닌 것:** 패턴 8(계사 회피)은 "~의 역할을 한다", "~로 기능한다"처럼 "~다/이다"를 **피하는** 것을 잡아 계사로 되돌린다. 반대로 패턴 33은 계사를 써서 만든 **부풀린 "X는 Z의 OO다" 은유 등식**을 잡는다. 둘은 정반대 방향이므로 혼동하지 말 것 — 8은 계사 복원, 33은 과장된 계사 등식 해체.
|
|
290
|
+
|
|
291
|
+
**수정 전:**
|
|
292
|
+
> 침묵은 권력의 언어다. 회의실에서 누가 말하지 않는가를 보면 조직의 진짜 위계가 드러난다. 신뢰는 모든 협업의 통화이며, 투명성은 그 신뢰의 건축물이다.
|
|
293
|
+
|
|
294
|
+
**수정 후:**
|
|
295
|
+
> 회의에서 누가 말하지 않는지를 보면 조직의 실제 위계가 보인다. 발언권은 대개 직급이 아니라 평가 권한을 쥔 사람에게 쏠린다. 협업이 굴러가려면 서로 정보를 숨기지 않아야 하고, 그건 진행 상황을 공개적으로 공유하는 습관에서 나온다.
|
|
296
|
+
|
|
266
297
|
## 스타일 패턴
|
|
267
298
|
|
|
268
299
|
### 13. 과도한 연결 표현
|
|
@@ -527,8 +558,9 @@ Example after:
|
|
|
527
558
|
|
|
528
559
|
- Source: [ko-structure.md](../patterns/ko-structure.md)
|
|
529
560
|
- Type: rewrite-capable pattern
|
|
530
|
-
- Watch words: ~것은 사실이다, ~라고 할 수 있다, ~하는 것이 가능하다, ~에 의해 ~되다, ~에 대해 ~하다 (영어 "about"의 직역), ~하는 경향이 있다 (tend to), ~에 기반하여 (based on), ~를 통해서 (through), 그것은 ~이다 (It is ~)
|
|
531
|
-
- Fire condition: 한 문단 내에 번역체 표현이 2개 이상 등장할 때. 단독 1회 사용은 허용 — 정상적인 한국어에서도 간혹 나타나는 표현이므로.
|
|
561
|
+
- Watch words: ~것은 사실이다, ~라고 할 수 있다, ~하는 것이 가능하다, ~에 의해 ~되다, ~에 대해 ~하다 (영어 "about"의 직역), ~하는 경향이 있다 (tend to), ~에 기반하여 (based on), ~를 통해서 (through), 그것은 ~이다 (It is ~), 탐지기 우회 약속, detector-bypass 약속, ~보존 여부를 보여주다
|
|
562
|
+
- Fire condition: 한 문단 내에 번역체 표현이 2개 이상 등장할 때. 단독 1회 사용은 허용 — 정상적인 한국어에서도 간혹 나타나는 표현이므로. 단, README·제품 소개·랜딩 카피처럼 첫인상이 중요한 문장에서는 뜻이 압축된 영어식 명사구가 독자의 이해를 막으면 1회만 있어도 교정한다.
|
|
563
|
+
- Context guard: issue #352 — 구두점이나 단어만 1:1로 바꾸지 말고, `무 TUI` → `TUI 없이 완전 자율로 설치하려면 ...`, `"끝난 것 같아요"로는 부족한 열린 작업` → `"끝난 것 같아요"만으로는 부족한, 결과를 끝까지 확인해야 하는 열린 작업`처럼 절 관계를 한국어로 다시 짠다.
|
|
532
564
|
- Example files: [failure](../examples/26-failure-01.md) · [success](../examples/26-success-01.md)
|
|
533
565
|
|
|
534
566
|
Example before:
|
|
@@ -559,9 +591,9 @@ Example after:
|
|
|
559
591
|
|
|
560
592
|
- Source: [ko-structure.md](../patterns/ko-structure.md)
|
|
561
593
|
- Type: rewrite-capable pattern
|
|
562
|
-
- Watch words: 인사이트, 임팩트, 레버리지, 이노베이션, 솔루션, 퍼포먼스, 거버넌스, 컨센서스, 시너지, 모멘텀, 마일스톤, 트리거, 매니징, 스케일업, 온보딩, 피드백 루프, 페인 포인트, 디시전
|
|
563
|
-
- Fire condition: 한 문단 내에 한국어 대안이 있는 외래어가 3개 이상 등장할 때. 업계에서 정착된 전문 용어(예: 마케팅, 브랜딩)는 제외.
|
|
564
|
-
- Example files: [failure](../examples/28-failure-01.md) · [success](../examples/28-success-01.md)
|
|
594
|
+
- Watch words: 인사이트, 임팩트, 레버리지, 이노베이션, 솔루션, 퍼포먼스, 거버넌스, 컨센서스, 시너지, 모멘텀, 마일스톤, 트리거, 매니징, 스케일업, 온보딩, 피드백 루프, 페인 포인트, 디시전 메이킹, 패러프레이저, 바이패스, 휴먼라이저, 제너레이터, 옵티마이저
|
|
595
|
+
- Fire condition: 한 문단 내에 한국어 대안이 있는 외래어가 3개 이상 등장할 때. 업계에서 정착된 전문 용어(예: 마케팅, 브랜딩)는 제외. 공개 README·제품 소개·랜딩 카피에서는 "패러프레이저"처럼 독자층 밖에서는 바로 뜻이 안 잡히는 외래어가 첫 설명에 쓰이면 단독 1회도 교정 대상이다.
|
|
596
|
+
- Example files: [failure](../examples/28-failure-01.md) · [success](../examples/28-success-01.md) · [success 02](../examples/28-success-02.md)
|
|
565
597
|
|
|
566
598
|
Example before:
|
|
567
599
|
|
|
@@ -705,3 +737,34 @@ Detection example:
|
|
|
705
737
|
> 이전: 친구야, 이건 저장해. 1년 뒤의 당신이 분명 고마워할 거다.
|
|
706
738
|
>
|
|
707
739
|
> 이후: 다음 달 계획을 세울 때 쓸 체크리스트가 필요하면 저장해 두자.
|
|
740
|
+
|
|
741
|
+
### Viral 9. 잠언형 펀치라인 / 독립 단문 선언
|
|
742
|
+
|
|
743
|
+
- Source: [ko-viral-hook.md](../patterns/ko-viral-hook.md)
|
|
744
|
+
|
|
745
|
+
**주의 어휘:** (구조적 패턴 — 어휘가 아니라 형태로 판단)
|
|
746
|
+
|
|
747
|
+
**문제:** 문법적으로 완결된 짧은 선언문(대략 10어절 이하)을 한 줄·한 단락에 독립시켜 무게감을 연출한다. "대칭은 함정이 된다." 같은 식으로, 근거 없이 격언처럼 떨어뜨려 깊이 있어 보이게 만드는 가짜 통찰 마이크드롭이다. 특히 한 글에 이런 단독 선언이 2개 이상 나오거나, 문단마다 끝을 이런 한 줄로 봉인하면 SNS·블로그용 AI 콘텐츠의 잠언 톤이 된다. 어휘가 아니라 **형태**(짧음 + 완결 + 독립 배치 + 단정)로 판단한다.
|
|
748
|
+
|
|
749
|
+
**발화 조건:** 앞뒤 문장과 분리되어 독립된 줄·단락에 놓인, 문법적으로 완결된 짧은 단정 선언문(약 10어절 이하)이 등장하는 경우. 단발이면 약한 신호, 같은 글에 2개 이상이거나 문단마다 한 줄씩 봉인하면 강한 신호다.
|
|
750
|
+
|
|
751
|
+
**심각도 기준:**
|
|
752
|
+
- Low: 독립 잠언이 글 전체에 1개 등장.
|
|
753
|
+
- Medium: 2개 등장.
|
|
754
|
+
- High: 3개 이상 등장하거나, 거의 모든 문단이 이런 한 줄 선언으로 마무리되는 경우.
|
|
755
|
+
|
|
756
|
+
**제외 조건:**
|
|
757
|
+
- 시·운문·노래 가사
|
|
758
|
+
- 본질적으로 짧은 메모·답변·공지·알림
|
|
759
|
+
- 구체적 근거가 뒤따르는 의도된 잠언 (바로 다음 문장이 그 선언을 사례·데이터로 뒷받침)
|
|
760
|
+
- 인용·대화체 안에서의 등장
|
|
761
|
+
- 제목·소제목·헤딩
|
|
762
|
+
|
|
763
|
+
**의미 위험도:** LOW — score-only
|
|
764
|
+
**보존 메모:** 기본적으로 점수만 반영한다. 사용자가 톤을 낮추라고 요청하면, 단독으로 떠 있던 선언을 앞뒤 맥락에 다시 붙이고 구체적 근거를 덧대 평범한 서술로 흡수한다. 글쓴이가 말하려던 핵심 주장 자체는 보존하고, 마이크드롭 연출과 격언 톤만 낮춘다.
|
|
765
|
+
**이전 / 이후 예시(수동 저신호 rewrite):**
|
|
766
|
+
> 이전: 완벽주의는 결국 멈춤이다.
|
|
767
|
+
>
|
|
768
|
+
> 모든 선택은 비용이다.
|
|
769
|
+
>
|
|
770
|
+
> 이후: 완벽하게 다듬으려다 출시를 미루는 동안, 경쟁사는 거친 버전이라도 먼저 내놓고 사용자 반응을 모았다. 어느 쪽을 택하든 포기하는 것이 생기는 셈이다.
|