patina-cli 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.patina.default.yaml +211 -0
- package/CHANGELOG.md +265 -0
- package/LICENSE +21 -0
- package/README.md +319 -0
- package/README_JA.md +254 -0
- package/README_KR.md +253 -0
- package/README_ZH.md +254 -0
- package/SKILL-MAX.md +455 -0
- package/SKILL.md +730 -0
- package/assets/brand/patina-icon.svg +9 -0
- package/assets/brand/patina-logo.svg +17 -0
- package/assets/social/patina-before-after.svg +46 -0
- package/assets/social/patina-og.svg +31 -0
- package/bin/patina.js +9 -0
- package/core/scoring.md +657 -0
- package/core/standalone-prompt.md +364 -0
- package/core/stylometry.md +754 -0
- package/core/voice.md +163 -0
- package/docs/AUTHENTICATION.md +105 -0
- package/docs/AUTHENTICATION_KR.md +105 -0
- package/docs/BRANDING.md +37 -0
- package/docs/CLI.md +80 -0
- package/docs/COMPARISON.md +38 -0
- package/docs/COOKBOOK.md +173 -0
- package/docs/DEMO.md +40 -0
- package/docs/ETHICS.md +27 -0
- package/docs/EXAMPLES.md +130 -0
- package/docs/EXAMPLES_KR.md +130 -0
- package/docs/EXIT-CODES.md +25 -0
- package/docs/FAQ.md +67 -0
- package/docs/FAQ_KR.md +65 -0
- package/docs/FLAG-PARITY.md +53 -0
- package/docs/GLOSSARY.md +123 -0
- package/docs/PATTERNS-EN.md +718 -0
- package/docs/PATTERNS-JA.md +706 -0
- package/docs/PATTERNS-KO.md +707 -0
- package/docs/PATTERNS-ZH.md +706 -0
- package/docs/PATTERNS.md +22 -0
- package/docs/ROADMAP.md +315 -0
- package/docs/audits/2026-05-deep-research.md +290 -0
- package/docs/benchmarks/detector-comparison.json +442 -0
- package/docs/benchmarks/detector-comparison.md +65 -0
- package/docs/benchmarks/latest.json +988 -0
- package/docs/benchmarks/latest.md +112 -0
- package/docs/integrations/docker.md +19 -0
- package/docs/integrations/github-action.md +59 -0
- package/docs/integrations/pre-commit.md +77 -0
- package/docs/integrations/release.md +43 -0
- package/docs/internal/HARNESS.md +14 -0
- package/docs/internal/README.md +14 -0
- package/docs/internal/WARP.md +23 -0
- package/docs/research/2025-rebaseline-plan.md +89 -0
- package/docs/research/ai-human-metrics.md +380 -0
- package/docs/social/gstack-cardnews.html +236 -0
- package/docs/social/gstack-cardnews.md +88 -0
- package/docs/social/gstack-thread.md +106 -0
- package/docs/social/patina-launch-copy.md +227 -0
- package/docs/superpowers/specs/2026-04-03-meaning-preservation-design.md +299 -0
- package/lexicon/ai-en.md +162 -0
- package/lexicon/ai-ko.md +159 -0
- package/package.json +100 -0
- package/patina-max/SKILL.md +523 -0
- package/patina-max/composite.py +457 -0
- package/patterns/en-communication.md +89 -0
- package/patterns/en-content.md +133 -0
- package/patterns/en-filler.md +113 -0
- package/patterns/en-language.md +163 -0
- package/patterns/en-structure.md +173 -0
- package/patterns/en-style.md +139 -0
- package/patterns/en-viral-hook.md +211 -0
- package/patterns/ja-communication.md +101 -0
- package/patterns/ja-content.md +153 -0
- package/patterns/ja-filler.md +123 -0
- package/patterns/ja-language.md +190 -0
- package/patterns/ja-structure.md +142 -0
- package/patterns/ja-style.md +147 -0
- package/patterns/ja-viral-hook.md +216 -0
- package/patterns/ko-communication.md +98 -0
- package/patterns/ko-content.md +154 -0
- package/patterns/ko-filler.md +105 -0
- package/patterns/ko-language.md +182 -0
- package/patterns/ko-structure.md +147 -0
- package/patterns/ko-style.md +146 -0
- package/patterns/ko-viral-hook.md +211 -0
- package/patterns/zh-communication.md +101 -0
- package/patterns/zh-content.md +153 -0
- package/patterns/zh-filler.md +118 -0
- package/patterns/zh-language.md +173 -0
- package/patterns/zh-structure.md +145 -0
- package/patterns/zh-style.md +159 -0
- package/patterns/zh-viral-hook.md +216 -0
- package/profiles/academic.md +53 -0
- package/profiles/blog.md +81 -0
- package/profiles/casual-conversation.md +105 -0
- package/profiles/code-comment.md +104 -0
- package/profiles/commit-message.md +99 -0
- package/profiles/default.md +62 -0
- package/profiles/email.md +52 -0
- package/profiles/formal.md +98 -0
- package/profiles/instructional.md +80 -0
- package/profiles/legal.md +57 -0
- package/profiles/marketing.md +56 -0
- package/profiles/medical.md +53 -0
- package/profiles/narrative.md +79 -0
- package/profiles/release-notes.md +98 -0
- package/profiles/social.md +56 -0
- package/profiles/technical.md +53 -0
- package/scripts/benchmark-report.mjs +252 -0
- package/scripts/check-release-metadata.mjs +48 -0
- package/scripts/detector-comparison.mjs +267 -0
- package/scripts/lint.mjs +40 -0
- package/scripts/precommit-score.mjs +31 -0
- package/scripts/prose-score.mjs +186 -0
- package/scripts/update-benchmark-ranges.mjs +108 -0
- package/src/api.js +330 -0
- package/src/auth.js +105 -0
- package/src/backends/claude-cli.js +112 -0
- package/src/backends/codex-cli.js +121 -0
- package/src/backends/contract.js +21 -0
- package/src/backends/gemini-cli.js +135 -0
- package/src/backends/index.js +159 -0
- package/src/cache.js +106 -0
- package/src/cli.js +1280 -0
- package/src/commands/doctor.js +229 -0
- package/src/commands/init.js +208 -0
- package/src/config.js +126 -0
- package/src/errors.js +53 -0
- package/src/features/index.js +96 -0
- package/src/features/lexicon.js +90 -0
- package/src/features/segment.js +49 -0
- package/src/features/stylometry.js +50 -0
- package/src/loader.js +103 -0
- package/src/logger.js +70 -0
- package/src/manifest.js +162 -0
- package/src/max-mode.js +207 -0
- package/src/ouroboros.js +233 -0
- package/src/output.js +480 -0
- package/src/prompt-builder.js +409 -0
- package/src/providers.js +100 -0
- package/src/scoring.js +531 -0
- package/src/security.js +133 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-01.md +16 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-02.md +16 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-03.md +17 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-04.md +15 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-05.md +16 -0
- package/tests/fixtures/suspect-zones/en/ai/en-ai-06-chat-register.md +16 -0
- package/tests/fixtures/suspect-zones/en/natural/en-nat-01.md +15 -0
- package/tests/fixtures/suspect-zones/en/natural/en-nat-02.md +15 -0
- package/tests/fixtures/suspect-zones/en/natural/en-nat-03.md +15 -0
- package/tests/fixtures/suspect-zones/en/natural/en-nat-04.md +15 -0
- package/tests/fixtures/suspect-zones/en/natural/en-nat-05.md +15 -0
- package/tests/fixtures/suspect-zones/expected-ranges.json +939 -0
- package/tests/fixtures/suspect-zones/ja/ai/ja-ai-01.md +11 -0
- package/tests/fixtures/suspect-zones/ja/ai/ja-ai-02.md +11 -0
- package/tests/fixtures/suspect-zones/ja/ai/ja-ai-03.md +11 -0
- package/tests/fixtures/suspect-zones/ja/natural/ja-nat-01.md +11 -0
- package/tests/fixtures/suspect-zones/ja/natural/ja-nat-02.md +11 -0
- package/tests/fixtures/suspect-zones/ja/natural/ja-nat-03.md +11 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-01.md +14 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-02.md +16 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-03.md +15 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-04.md +15 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-05.md +16 -0
- package/tests/fixtures/suspect-zones/ko/ai/ko-ai-06-chat-register.md +16 -0
- package/tests/fixtures/suspect-zones/ko/natural/ko-nat-01.md +15 -0
- package/tests/fixtures/suspect-zones/ko/natural/ko-nat-02.md +15 -0
- package/tests/fixtures/suspect-zones/ko/natural/ko-nat-03.md +15 -0
- package/tests/fixtures/suspect-zones/ko/natural/ko-nat-04.md +14 -0
- package/tests/fixtures/suspect-zones/ko/natural/ko-nat-05.md +15 -0
- package/tests/fixtures/suspect-zones/zh/ai/zh-ai-01.md +11 -0
- package/tests/fixtures/suspect-zones/zh/ai/zh-ai-02.md +11 -0
- package/tests/fixtures/suspect-zones/zh/ai/zh-ai-03.md +11 -0
- package/tests/fixtures/suspect-zones/zh/natural/zh-nat-01.md +11 -0
- package/tests/fixtures/suspect-zones/zh/natural/zh-nat-02.md +11 -0
- package/tests/fixtures/suspect-zones/zh/natural/zh-nat-03.md +11 -0
- package/tests/quality/README.md +121 -0
- package/tests/quality/benchmark.mjs +306 -0
- package/tests/quality/detectors.manual.example.json +31 -0
- package/tests/quality/dogfood.mjs +44 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">patina icon</title>
|
|
3
|
+
<desc id="desc">A flat dark icon: copper transforms into patina teal around a warm preserved-meaning core.</desc>
|
|
4
|
+
|
|
5
|
+
<rect width="512" height="512" rx="112" fill="#020617"/>
|
|
6
|
+
<path d="M92 196C160 86 320 74 420 164L346 238C288 190 218 198 174 258Z" fill="#c46a2a"/>
|
|
7
|
+
<path d="M420 316C352 426 192 438 92 348L160 270C224 322 294 314 338 254Z" fill="#2dd4bf"/>
|
|
8
|
+
<circle cx="252" cy="248" r="54" fill="#ffe6a8" stroke="#020617" stroke-width="10"/>
|
|
9
|
+
</svg>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 190" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">patina logo</title>
|
|
3
|
+
<desc id="desc">patina wordmark with a flat copper-to-teal preserved-core mark.</desc>
|
|
4
|
+
|
|
5
|
+
<rect x="1" y="1" width="718" height="188" rx="48" fill="#020617" stroke="#1e293b" stroke-width="2"/>
|
|
6
|
+
<g transform="translate(24 24) scale(0.27734375)" aria-hidden="true">
|
|
7
|
+
<rect width="512" height="512" rx="112" fill="#020617"/>
|
|
8
|
+
<path d="M92 196C160 86 320 74 420 164L346 238C288 190 218 198 174 258Z" fill="#c46a2a"/>
|
|
9
|
+
<path d="M420 316C352 426 192 438 92 348L160 270C224 322 294 314 338 254Z" fill="#2dd4bf"/>
|
|
10
|
+
<circle cx="252" cy="248" r="54" fill="#ffe6a8" stroke="#020617" stroke-width="10"/>
|
|
11
|
+
</g>
|
|
12
|
+
|
|
13
|
+
<text x="212" y="102" fill="#f8fafc" font-family="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif" font-size="82" font-weight="800" letter-spacing="-3">patina</text>
|
|
14
|
+
<text x="218" y="145" fill="#94a3b8" font-family="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif" font-size="22" font-weight="600" letter-spacing="0.8">Strip the AI packaging. Keep the meaning.</text>
|
|
15
|
+
<path d="M214 164h348" stroke="#34d399" stroke-width="3" stroke-linecap="round"/>
|
|
16
|
+
<path d="M578 164h112" stroke="#c46a2a" stroke-width="3" stroke-linecap="round"/>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="630" viewBox="0 0 1200 630" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">patina before and after example</title>
|
|
3
|
+
<desc id="desc">A social card comparing AI-sounding coffee prose before and a cleaner meaning-preserving rewrite after.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0%" stop-color="#0b1020"/>
|
|
7
|
+
<stop offset="55%" stop-color="#111827"/>
|
|
8
|
+
<stop offset="100%" stop-color="#1f2937"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
11
|
+
<feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#000" flood-opacity="0.35"/>
|
|
12
|
+
</filter>
|
|
13
|
+
</defs>
|
|
14
|
+
<rect width="1200" height="630" fill="url(#bg)"/>
|
|
15
|
+
<text x="72" y="78" fill="#f9fafb" font-family="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif" font-size="46" font-weight="800">patina</text>
|
|
16
|
+
<text x="72" y="118" fill="#a7f3d0" font-family="Inter, ui-sans-serif, system-ui, sans-serif" font-size="24" font-weight="600">Strip the AI packaging. Keep the meaning.</text>
|
|
17
|
+
|
|
18
|
+
<g filter="url(#shadow)">
|
|
19
|
+
<rect x="72" y="158" width="500" height="330" rx="26" fill="#111827" stroke="#374151" stroke-width="2"/>
|
|
20
|
+
<text x="104" y="210" fill="#fca5a5" font-family="Inter, ui-sans-serif, system-ui, sans-serif" font-size="24" font-weight="800">Before</text>
|
|
21
|
+
<text x="104" y="258" fill="#e5e7eb" font-family="Inter, ui-sans-serif, system-ui, sans-serif" font-size="25">
|
|
22
|
+
<tspan x="104" dy="0">Coffee has emerged as a pivotal</tspan>
|
|
23
|
+
<tspan x="104" dy="38">cultural phenomenon that has</tspan>
|
|
24
|
+
<tspan x="104" dy="38">fundamentally transformed</tspan>
|
|
25
|
+
<tspan x="104" dy="38">social interactions across the</tspan>
|
|
26
|
+
<tspan x="104" dy="38">globe.</tspan>
|
|
27
|
+
</text>
|
|
28
|
+
</g>
|
|
29
|
+
|
|
30
|
+
<text x="596" y="332" fill="#93c5fd" font-family="Inter, ui-sans-serif, system-ui, sans-serif" font-size="42" font-weight="800">→</text>
|
|
31
|
+
|
|
32
|
+
<g filter="url(#shadow)">
|
|
33
|
+
<rect x="628" y="158" width="500" height="330" rx="26" fill="#ecfdf5" stroke="#34d399" stroke-width="2"/>
|
|
34
|
+
<text x="660" y="210" fill="#047857" font-family="Inter, ui-sans-serif, system-ui, sans-serif" font-size="24" font-weight="800">After</text>
|
|
35
|
+
<text x="660" y="258" fill="#064e3b" font-family="Inter, ui-sans-serif, system-ui, sans-serif" font-size="25">
|
|
36
|
+
<tspan x="660" dy="0">Coffee has quietly changed how</tspan>
|
|
37
|
+
<tspan x="660" dy="38">people meet. Sit across from</tspan>
|
|
38
|
+
<tspan x="660" dy="38">someone long enough, and</tspan>
|
|
39
|
+
<tspan x="660" dy="38">something like a real connection</tspan>
|
|
40
|
+
<tspan x="660" dy="38">tends to form.</tspan>
|
|
41
|
+
</text>
|
|
42
|
+
</g>
|
|
43
|
+
|
|
44
|
+
<text x="72" y="548" fill="#d1d5db" font-family="Inter, ui-sans-serif, system-ui, sans-serif" font-size="23">Pattern-based · auditable · KO/EN/ZH/JA · Claude Code · Codex CLI · Cursor · OpenCode · Node CLI</text>
|
|
45
|
+
<text x="72" y="586" fill="#93c5fd" font-family="Inter, ui-sans-serif, system-ui, sans-serif" font-size="22" font-weight="700">github.com/devswha/patina</text>
|
|
46
|
+
</svg>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">patina social preview</title>
|
|
3
|
+
<desc id="desc">patina social card with a flat copper-to-teal preserved-core mark and the tagline Strip the AI packaging. Keep the meaning.</desc>
|
|
4
|
+
|
|
5
|
+
<rect width="1200" height="630" fill="#020617"/>
|
|
6
|
+
<rect x="48" y="48" width="1104" height="534" rx="42" fill="#0b1120" stroke="#1e293b"/>
|
|
7
|
+
|
|
8
|
+
<g transform="translate(112 122) scale(0.5078125)" aria-hidden="true">
|
|
9
|
+
<rect width="512" height="512" rx="112" fill="#020617"/>
|
|
10
|
+
<path d="M92 196C160 86 320 74 420 164L346 238C288 190 218 198 174 258Z" fill="#c46a2a"/>
|
|
11
|
+
<path d="M420 316C352 426 192 438 92 348L160 270C224 322 294 314 338 254Z" fill="#2dd4bf"/>
|
|
12
|
+
<circle cx="252" cy="248" r="54" fill="#ffe6a8" stroke="#020617" stroke-width="10"/>
|
|
13
|
+
</g>
|
|
14
|
+
|
|
15
|
+
<text x="430" y="205" fill="#f8fafc" font-family="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif" font-size="112" font-weight="850" letter-spacing="-7">patina</text>
|
|
16
|
+
<text x="436" y="276" fill="#f8fafc" font-family="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif" font-size="38" font-weight="720" letter-spacing="-0.9">Strip the AI packaging. Keep the meaning.</text>
|
|
17
|
+
<text x="438" y="334" fill="#94a3b8" font-family="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif" font-size="25" font-weight="530">Pattern-based cleanup for AI-sounding prose in KO / EN / ZH / JA.</text>
|
|
18
|
+
|
|
19
|
+
<g font-family="Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif" font-size="23" font-weight="680">
|
|
20
|
+
<rect x="438" y="392" width="196" height="58" rx="29" fill="#064e3b" stroke="#34d399"/>
|
|
21
|
+
<text x="466" y="429" fill="#d1fae5">audit + diff</text>
|
|
22
|
+
<rect x="654" y="392" width="248" height="58" rx="29" fill="#0f172a" stroke="#475569"/>
|
|
23
|
+
<text x="682" y="429" fill="#e2e8f0">meaning checks</text>
|
|
24
|
+
<rect x="922" y="392" width="160" height="58" rx="29" fill="#451a03" stroke="#c46a2a"/>
|
|
25
|
+
<text x="950" y="429" fill="#fed7aa">CLI skill</text>
|
|
26
|
+
</g>
|
|
27
|
+
|
|
28
|
+
<path d="M438 494h330" stroke="#34d399" stroke-width="5" stroke-linecap="round"/>
|
|
29
|
+
<path d="M790 494h126" stroke="#c46a2a" stroke-width="5" stroke-linecap="round"/>
|
|
30
|
+
<text x="438" y="540" fill="#64748b" font-family="ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace" font-size="22" font-weight="650">github.com/devswha/patina</text>
|
|
31
|
+
</svg>
|
package/bin/patina.js
ADDED