Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

patina mark

patina

Strip the AI packaging. Keep the meaning.

한국어 · 中文 · 日本語 · English

Tests License: MIT Skill: Claude Code | Codex | Cursor | OpenCode Languages: KO | EN | ZH | JA Version

Try it in the browser — no install

An illustrative email edit

Before

I'm writing to let you know that the launch review is scheduled for Friday at 2 p.m. The draft is 6 pages long, and two questions about pricing are still open.

After

The launch review is Friday at 2 p.m. The draft has 6 pages and two open pricing questions.

A curated excerpt from the English email showcase. This is a synthetic example, not a live run or a measured score.

patina is a deterministic, pattern-based humanizer for Korean, English, Chinese, and Japanese. It finds AI-sounding phrasing and rewrites it without changing the claim, numbers, polarity, or causation — built for allowed AI-assisted drafting, not for evading detectors.

  • Auditable, not a black box — 189 named patterns drive every edit; --diff shows exactly what changed and why.
  • Meaning verified on the web — web gates each rewrite with MPS/fidelity floors, rejecting drift; CLI --verify and /patina --strict add checks.
  • Three independent axes — Document Type owns genre, Persona owns voice, Register owns delivery. Omit any axis to preserve the source.
  • Every surface — agent skill (Claude Code · Codex · Cursor · OpenCode), Node CLI, and a browser playground.
  • Honest about limits — scores are editing signals, not authorship proof; our own pre-registered study publishes where rewriting fails alongside where it works.

Quick Start

Version: 9.1.0. npm publication is a separate, explicitly authorized step. See release channels.

Browser — nothing to install. Open patina.vibetip.help and paste text. Rewrites run server-side with the MPS/fidelity gates; API mode forwards your own key per request (never stored or logged).

Hosted API (Pro)

Agent skill — paste this into Claude Code, Codex CLI, Cursor, or any agent:

Install patina by following https://raw.githubusercontent.com/devswha/patina/main/INSTALLATION.md

Agent skill — already using the skills.sh CLI: npx skills add devswha/patina (installs the whole checkout for 75+ agents; entries on skills.sh come from install telemetry — no listing to submit). patina is a meaning-preserving editor (MPS-verified; KO·EN·ZH·JA), not a detector bypass.

Then use it:

/patina --lang en

[paste your text here]

CLI — Node >= 18:

npx patina-cli --lang en input.txt          # rewrite
npx patina-cli doctor                       # check backends and keys

A logged-in codex, claude, or gemini CLI works with no API key: add --backend codex-cli. Full install options: INSTALLATION.md.

Three Independent Axes

patina does not infer one axis from another. Omit Persona and Register to keep the source voice and register.

AxisControlsDoes not controlSelect with
Document TypeGenre, purpose, structural conventions, pattern policyVoice, casual/professional delivery, meaning floors--document-type · config document-type · Playground "Document Type"
PersonaReusable voice fingerprint: vocabulary, rhythm, explanation habitsGenre, pattern policy, register, meaning floors--persona · config persona · Playground "Persona"
Registercasual or professional deliveryGenre, persona identity, pattern policy--register · config register · Playground "Register"

Meaning preservation is the outer guard; an explicit value never fills an omitted axis.

Commands

patina input.txt                                          # rewrite with defaults
patina --audit input.txt                                  # detect patterns only
patina --score --offline --exit-on 30 input.txt           # deterministic CI gate, no API key
patina --diff input.txt                                   # pattern-by-pattern changes
patina --verify input.txt                                 # rewrite + MPS/fidelity floor check
patina --document-type email --register professional input.txt
patina persona new my-voice --from-sample past-posts.txt  # learn a reusable voice
patina --persona my-voice draft.md
patina --batch docs/*.md --outdir cleaned/

patina --help prints the full flag list. CI wrapper for GitHub Actions: devswha/patina-action — plus pre-commit, Docker, and release guides.

Editor clients: the VS Code, Obsidian and Gmail preview clients are retired. See the historical record.

Model evidence: writing/scoring guide (Korean), rewrite confirmation, and live scoring diagnostics.

Project config lives in .patina.yaml:

version: "9.1.0"
language: ko              # ko | en | zh | ja
document-type: default    # genre/purpose + pattern policy
persona:                  # optional reusable voice; omit to preserve source
register:                 # casual | professional; omit to preserve source

Facts

189 patterns41 rewrite-capable (KO) / 38 (EN) / 37 (ZH, JA) + 9 score-only viral-hook per language — see the full 189-pattern catalog in PATTERNS.md
Modesrewrite · verify · audit · score · diff
Calibration67.3% editing-hotspot catch [63.5–71.0%] across GPT-5.5 / Claude Sonnet 4.6 / Gemini 2.5 Pro (n=600, KO+EN); 16.0% false positives [11.6–21.7%] on KO+EN human controls (n=200)
LicenseMIT

Scores are editing signals with false positives and false negatives, not proof of authorship. See Ethics.

Documentation

Historical English playground recording · recording context. The recording is an earlier run, separate from the curated examples above.

To submit a pattern, use CONTRIBUTING.md. Open a pattern proposal (.github/ISSUE_TEMPLATE/pattern_proposal.yml), then add the pack from the template in patterns/{lang}-*.md. See pattern of the week for one worked pair.

License

MIT. See LICENSE and NOTICE. Inspired by oh-my-zsh, Wikipedia's "Signs of AI writing", and blader/humanizer.

关于 About

AI-writing humanizer for KO/EN/ZH/JA
ai-detectionai-humanizerai-writingclaudeclaude-codecodexcursorhumanizerkoreankorean-nlpllmllm-humanizermulti-agentnlpnodejs-cliprompt-engineeringstylometrytext-humanizertext-processingwriting-tools

语言 Languages

JavaScript98.1%
CSS1.0%
HTML0.5%
Shell0.4%
Dockerfile0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
1545
Total Commits
峰值: 191次/周
Less
More

核心贡献者 Contributors