patina skill
A skill and CLI that strip AI tells from Korean, English, Chinese and Japanese text and check that meaning and numbers stay unchanged
- 388 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- The skill runs a local Node.js helper through the shell and reads the files you name
- For rewriting the text goes to a chosen model through its CLI or with your key
- The install script is downloaded over the network and run in the shell
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/patinaDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The skill runs a local Node.js helper through the shell and reads the files you name
- For rewriting the text goes to a chosen model through its CLI or with your key
- The install script is downloaded over the network and run in the shell
This is third-party code. Review the repository files before installing.
What it does
patina is a text editor that works through 189 named AI-style patterns and fixes them without changing claims, numbers, polarity or causal links. It supports Korean, English, Chinese and Japanese. There are no patterns for Russian. The skill in Claude Code, Codex, Cursor and OpenCode runs a local Node.js helper by default: `/patina --lang en` with pasted text rewrites it, and `--strict` adds a check that meaning is preserved. The CLI modes are rewrite, verify against fidelity floors, pattern detection only, scoring and diff output. The `--diff` flag shows which pattern changed what. Three independent axes steer the edit: document type sets genre and pattern policy, persona sets a voice learned from samples of your past writing, and register picks casual or professional delivery. An axis you omit keeps the source style. For batches there is `--batch` with an output folder, and for CI the `--score --offline --exit-on 30` mode with no API key. A browser playground and a paid API also exist, but the skill works without them.
Who it is for. For writers, editors and developers who write in Korean, English, Chinese or Japanese with AI help and want to remove machine phrasing without distorting meaning.
Good fit when
- An AI draft of a letter or post sounds templated, and the numbers and deadlines must not change
- You want to see which phrases give the AI away without rewriting: the `--audit` mode lists the patterns
- You want to lock in your own voice: the `patina persona new` command learns from samples of your older posts
- A documentation repository needs a CI gate that fails when the AI-style score is above a threshold
- A folder of markdown files must be processed with one command and written to a separate directory
Not a fit when
- The text is in Russian: there are no patterns for it, separate skills such as humanizer-ru in the catalog fit better
- You expect guarantees against AI detectors: the author promises none, positions the tool as an editor and states that scores err in both directions
- Legal, academic or regulatory text where bureaucratic phrasing and passive voice are the norm of the genre
- You need proof of a text's authenticity: the patina score is a hint for editing and proves nothing
Example request
/patina --lang en --document-type email --register professional: rewrite this launch-date email without templated phrasing and keep every number and deadline as is.Limitations
Node.js 18.1 or newer is required. The skill goes through the verified CLI by default: rewriting needs a model backend, which can be a logged-in `codex`, `claude` or `gemini` with no API key (the `--backend codex-cli` flag) or your own key. The `--score --offline` mode needs no model.
The README says npm publication remains a separate step, so `npx patina-cli` may be unavailable: installing through the plugin, `npx skills add devswha/patina` or the install script from INSTALLATION.md is safer. The plugin install places skill files only, and the runtime is worth checking with `node bin/patina.js --version`.
According to the author's own figures, the patterns catch 67.3% of problem spots, and false positives on human text are 16.0%. The author calls the scores signals for editing and does not treat them as proof of authorship. The license is MIT. The skill works only with texts in four languages.
How to disable. In Claude Code run `/plugin uninstall patina@patina`. A script-installed skill is removed with `uninstall.sh` from the repository, and a manual install goes away when you delete `~/.claude/skills/patina` and the symlinks in the Codex, OpenCode and Gemini CLI directories.
FAQ
How do I install patina in Claude Code?
Run `/plugin marketplace add devswha/patina`, then `/plugin install patina@patina` and enable auto-update on the Marketplaces tab. The skill is invoked with `/patina --lang en`, followed by the pasted text.
How does patina differ from Humanizer?
patina works from a catalog of 189 patterns with a meaning-preservation check and covers Korean, English, Chinese and Japanese. It has scoring, diff and batch modes, plus personas and a CI-oriented CLI.
Does patina guarantee a result with AI detectors?
No. The author describes the tool as an editor for allowed AI-assisted drafting and promises nothing about detectors. The patina scores are described as signals for editing with false positives and negatives.
Do I need an API key to rewrite text?
Not if `codex`, `claude` or `gemini` is logged in on the machine: the `--backend codex-cli` flag and its siblings then work. Pattern detection and scoring with `--offline` do not use a model at all.
How do I teach patina my voice?
Create a persona from samples with `patina persona new my-voice --from-sample past-posts.txt`, then apply it with `--persona my-voice`. A persona only controls voice; genre and register are set separately.
Discussion
No questions or reviews yet.
Related
SkillsA skill for Claude Code, Codex and Cursor: strips signs of AI writing and checks the result against human-writing ranges.
im-not-ai
im-not-ai (humanize-korean)
A Claude Code plugin skill that rewrites AI-written Korean text into a natural human style without touching the meaning
A de-AI writing skill: it repairs the narrative architecture of fiction and edits professional documents by their venue rules
Humanizer (brandonwise)
humanizer
A skill and Node.js CLI that score English text for AI-writing patterns and statistics and suggest fixes on a 0 to 100 scale
A skill that finds AI writing tells, rewrites the text in a chosen voice, and optionally scores it from 0 to 100
A skill that finds AI tells in English prose and edits them surgically; three Python scanners run on their own and the teach command learns your voice
Comparison with similar tools
Cards that share the main search query, and how they differ.
README in short
The README opens with a before-and-after email edit and a link to a browser playground. Then come quick starts for agents, CLI and Node, a table of the three axes, a command list, the `.patina.yaml` config and a facts table with calibration. It ends with links to docs, research and contribution rules.
README badge
Original SKILL.md
--- name: patina version: "9.1.0" description: Detect and rewrite AI writing patterns in Korean, English, Chinese, and Japanese text so it reads as if a human wrote it. Meaning-preservation (MPS) verified. allowed-tools: - Read - Write - Edit - Grep - Glob - AskUserQuestion - Task - Bash --- # patina: AI 글쓰기 패턴 제거 오케스트레이터 당신은 AI가 생성한 텍스트에서 AI 특유의 패턴을 찾아 제거하여, 글을 자연스럽고 사람이 쓴 것처럼 만드는 편집자입니다. 처리 언어는 1단계에서 결정된 언어 코드에 따른다. --- ## 0단계: 실행 경로 결정 (라우팅) 이 스킬에는 두 실행 경로만 있다. 요청을 처리하기 전에 경로를 하나 선택하고, 선택한 경로 밖으로 절대 빠져나가지 않는다. ### 기본 경로: 검증된 CLI 실행 `--instruction-only`나 "CLI 없이 지시문 파이프라인으로만 실행해 달라"처럼 동등하게 명시적인 요청이 없으면, 모든 `/patina` 호출과 자연어 교정 요청은 이 경로다. `--strict`도 이 경로에서 같은 검증 재작성을 뜻한다. 실행 절차: 1. 설치된 `SKILL.md`의 실제 부모 디렉터리를 스킬 디렉터리로 정한다. 호스트가 스킬을 심볼릭 링크로 연결한 경우에도 링크 위치가 아니라 실제 설치 위치를 기준으로 한다. 2. 기존 입력 파일은 실제 사용자 원본 경로를 그대로 헬퍼의 `--input`에 전달한다. 미리 복사하지 않는다. 헬퍼가 비공개 스냅샷을 만들고 실행 후 원본 파일의 변경 여부를 직접 확인한다. 붙여 넣은 텍스트만 호스트의 파일 도구로 비공개 임시 파일에 기록하고, 처리가 끝나면 그 임시 파일을 지운다. 원문 내용을 명령행 인자로 전달하지 않는다. 3. 호스트의 명령 실행 도구로 헬퍼를 실행한다. ```sh node <skill-directory>/bin/patina-skill.js --input <source-file> [--lang ko] [--backend codex-cli] ``` 지원 플래그는 헬퍼의 `--help` 출력이 전부다. `--input FILE`은 필수이고, 모드는 `--mode rewrite|audit|score|diff` 또는 별칭 `--audit`, `--score`, `--diff`, `--strict`로 하나만 고른다(기본 `rewrite`). 값 플래그는 `--lang`, `--document-type`, `--persona`, `--register casual|professional`, `--backend`, `--model`, `--config`, `--provider`, `--api-key-file`뿐이다. 모드 플래그를 겹쳐 쓰면 사용법 오류로 거부된다. 여기 없는 옵션은 존재하지 않으므로 새로 만들어 내지 않는다.