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
Skill

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
All reasons and checks

devswha/patina

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/patina

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended 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.

Skills

A skill for Claude Code, Codex and Cursor: strips signs of AI writing and checks the result against human-writing ranges.

SkillExtended access66Repository stars

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

SkillExtended access6.5KRepository stars

A de-AI writing skill: it repairs the narrative architecture of fiction and edits professional documents by their venue rules

SkillMinimal access3.8KRepository stars

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

SkillMinimal access132Repository stars

A skill that finds AI writing tells, rewrites the text in a chosen voice, and optionally scores it from 0 to 100

SkillMinimal access308Repository stars

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

SkillMinimal access1KRepository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialRepository starsMain difference
patina (this card)no388
unslopno1,048edits English prose only and learns the author's voice through a teach command
Stop Slopno18,896a short skill with strict rules for cleaning templated AI phrasing out of prose

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`뿐이다. 모드 플래그를 겹쳐 쓰면 사용법 오류로 거부된다. 여기 없는 옵션은 존재하지 않으므로 새로 만들어 내지 않는다.

Report a problem