GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - devswha/patina: AI-writing humanizer for KO/EN/ZH/JA

BranchesTags
Open more actions menu

Latest commit

 

History

1,545 Commits
1,545 Commits

Folders and files

NameName
Last commit message
Last commit date
.claude-plugin
.claude-plugin
 
 
.cursor/rules
.cursor/rules
 
 
.github
.github
 
 
agents
agents
 
 
api
api
 
 
artifacts
artifacts
 
 
assets
assets
 
 
bin
bin
 
 
core
core
 
 
custom/patterns
custom/patterns
 
 
docs
docs
 
 
document-types
document-types
 
 
examples
examples
 
 
lexicon
lexicon
 
 
packages/patina-humanizer
packages/patina-humanizer
 
 
patterns
patterns
 
 
personas
personas
 
 
playground
playground
 
 
process
process
 
 
scripts
scripts
 
 
services/log-query
services/log-query
 
 
src
src
 
 
tests
tests
 
 
.coderabbit.yaml
.coderabbit.yaml
 
 
.dockerignore
.dockerignore
 
 
.env.example
.env.example
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.mailmap
.mailmap
 
 
.patina.default.yaml
.patina.default.yaml
 
 
.pre-commit-hooks.yaml
.pre-commit-hooks.yaml
 
 
.vercelignore
.vercelignore
 
 
AGENTS.md
AGENTS.md
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
CONTRIBUTING_KR.md
CONTRIBUTING_KR.md
 
 
DESIGN.md
DESIGN.md
 
 
Dockerfile
Dockerfile
 
 
GOVERNANCE.md
GOVERNANCE.md
 
 
INSTALLATION.md
INSTALLATION.md
 
 
LICENSE
LICENSE
 
 
MAINTAINERS.md
MAINTAINERS.md
 
 
NOTICE
NOTICE
 
 
README.md
README.md
 
 
README_JA.md
README_JA.md
 
 
README_KR.md
README_KR.md
 
 
README_ZH.md
README_ZH.md
 
 
SECURITY.md
SECURITY.md
 
 
SKILL.md
SKILL.md
 
 
SUPPORT.md
SUPPORT.md
 
 
cspell.json
cspell.json
 
 
eslint.config.js
eslint.config.js
 
 
install.sh
install.sh
 
 
package-lock.json
package-lock.json
 
 
package.json
package.json
 
 
tsconfig.json
tsconfig.json
 
 
uninstall.sh
uninstall.sh
 
 
vercel.json
vercel.json
 
 

Repository files navigation

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.

Axis Controls Does not control Select with
Document Type Genre, purpose, structural conventions, pattern policy Voice, casual/professional delivery, meaning floors --document-type · config document-type · Playground "Document Type"
Persona Reusable voice fingerprint: vocabulary, rhythm, explanation habits Genre, pattern policy, register, meaning floors --persona · config persona · Playground "Persona"
Register casual or professional delivery Genre, 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 patterns 41 rewrite-capable (KO) / 38 (EN) / 37 (ZH, JA) + 9 score-only viral-hook per language — see the full 189-pattern catalog in PATTERNS.md
Modes rewrite · verify · audit · score · diff
Calibration 67.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)
License MIT

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.

  • Cookbook — common recipes · CLI contract — flags, gates, exit codes
  • Before/After gallery (한국어) · Pattern catalog
  • Architecture · Configuration & authentication
  • Benchmarks · Research · FAQ (한국어)
  • Contributing (한국어) · Changelog

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

patina.vibetip.help/

Topics

ai-detectionai-humanizerai-writingclaudeclaude-codecodexcursorhumanizerkoreankorean-nlpllmllm-humanizermulti-agentnlpnodejs-cliprompt-engineeringstylometrytext-humanizertext-processingwriting-tools

Resources

Readme
MIT license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity

Stars

388 stars

Watchers

1 watching

Forks

36 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.