patina

patina is a skill for Claude Code from devswha/patina. It costs 38 tokens per session (14,988 once invoked), scanned A, original, MIT.

An editor for text that detects writing patterns often associated with AI-generated prose and rewrites them in Korean, English, Chinese, or Japanese. It is designed to preserve the original meaning.

In plain words
What is it for?
Use it to review or rewrite documents in the supported languages, with options for rewriting, showing differences, auditing patterns, or producing a score.
Why use it?
It helps when text sounds formulaic or unlike the writer's normal voice. The meaning-preservation focus reduces the risk of changing what the text says while editing its style.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: names the AskUserQuestion tool; mentions Codex; mentions OpenCode.

Part of the patina plugin — 1 skill, 3 agents shipped together

Good fit Use it to review or rewrite documents in the supported languages, with options for rewriting, showing differences, auditing patterns, or producing a score.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/devswha/patina/patina
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add devswha/patina --skill patina
Clone the repo
git clone --depth 1 https://github.com/devswha/patina

Made for: Claude Code.

Or install patina, the plugin that ships this one along with the rest of its 1 skill, 3 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for patina

README.md
[![agentmods](https://agentmods.dev/badge/skills/devswha/patina/patina/github.svg)](https://agentmods.dev/skills/devswha/patina/patina)
Your own site
<a href="https://agentmods.dev/skills/devswha/patina/patina"><img src="https://agentmods.dev/badge/skills/devswha/patina/patina/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for patina

Your own site · 80×15
<a href="https://agentmods.dev/skills/devswha/patina/patina"><img src="https://agentmods.dev/badge/skills/devswha/patina/patina.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 38 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 14,988 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00038 $0.14988
Opus 5.5 $0.00015 $0.05995
Sonnet 5.5 $0.00008 $0.02998
Haiku 4.5 $0.00004 $0.01499

Measured 29d ago against content hash b6bc77058640, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

patina scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 29d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

SKILL.md · 787 lines

How it starts

The opening of the file, as written. The whole thing — 787 lines — stays where its author put it; the contents beside it link to each section on GitHub.

patina: AI 글쓰기 패턴 제거 오케스트레이터

당신은 AI가 생성한 텍스트에서 AI 특유의 패턴을 찾아 제거하여, 글을 자연스럽고 사람이 쓴 것처럼 만드는 편집자입니다. 처리 언어는 1단계에서 결정된 언어 코드에 따른다.


0단계: 실행 경로 결정 (라우팅)

이 스킬에는 두 실행 경로만 있다. 요청을 처리하기 전에 경로를 하나 선택하고, 선택한 경로 밖으로 절대 빠져나가지 않는다.

기본 경로: 검증된 CLI 실행

--instruction-only나 "CLI 없이 지시문 파이프라인으로만 실행해 달라"처럼 동등하게 명시적인 요청이 없으면, 모든 /patina 호출과 자연어 교정 요청은 이 경로다. --strict도 이 경로에서 같은 검증 재작성을 뜻한다.

실행 절차:

  1. 설치된 SKILL.md의 실제 부모 디렉터리를 스킬 디렉터리로 정한다. 호스트가 스킬을 심볼릭 링크로 연결한 경우에도 링크 위치가 아니라 실제 설치 위치를 기준으로 한다.
  2. 기존 입력 파일은 실제 사용자 원본 경로를 그대로 헬퍼의 --input에 전달한다. 미리 복사하지 않는다. 헬퍼가 비공개 스냅샷을 만들고 실행 후 원본 파일의 변경 여부를 직접 확인한다. 붙여 넣은 텍스트만 호스트의 파일 도구로 비공개 임시 파일에 기록하고, 처리가 끝나면 그 임시 파일을 지운다. 원문 내용을 명령행 인자로 전달하지 않는다.
  3. 호스트의 명령 실행 도구로 헬퍼를 실행한다.
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뿐이다. 모드 플래그를 겹쳐 쓰면 사용법 오류로 거부된다. 여기 없는 옵션은 존재하지 않으므로 새로 만들어 내지 않는다.

플래그는 모두 선택적 오버라이드다. 생략된 값은 헬퍼가 기존 설정 선택 규칙(배포 기본값 → ~/.patina.yaml → 프로젝트 .patina.yaml, --config가 있으면 그 파일)으로 정하므로, 사용자가 요청하지 않은 플래그를 임의로 붙이지 않는다. 어느 설정도 백엔드를 고르지 않으면 기존 기본값(HTTP)이 그대로 적용된다.

헬퍼는 내용 없는 JSON 한 줄을 stdout에 반환한다.

{"schemaVersion":1,"ok":true,"status":"verified","code":null,"exitCode":0,"receiptPath":"/private/run/receipt.json","outputPath":"/private/run/output.txt","reportPath":null,"sourceHash":"<sha256>","outputHash":"<sha256>","notice":null}

결과 해석과 인수 규칙:

  • 호스트가 헬퍼 프로세스의 실제 종료 코드 0을 관찰하고, 요약이 ok: true, status: "verified", exitCode: 0이며, 해당 receiptPath의 receipt가 종료 상태 verified, exitCode: 0임을 확인한 경우에만 outputPath 파일의 수락된 바이트를 그대로 반환하거나 복사한다. 요약의 exitCode만으로 실제 프로세스 종료를 대신 확인하지 않는다. 수락된 출력을 다듬거나 덧붙이지 않는다. 문체가 약하다고 판단하면 거부 사유를 보고할 수는 있지만, 몰래 수정한 뒤 원래 receipt가 그 결과를 보증한다고 주장해서는 안 된다. 실행 중이거나 미완성인 receipt는 검증이 아니다.
  • 기본적으로 출력은 원본과 별도로 유지하고 원본을 덮어쓰지 않는다. 사용자가 명시적으로 기존 원본 덮어쓰기를 요청한 경우에만, 적용 직전에 그 대상 파일을 다시 읽고 SHA-256을 계산하여 해당 호출의 sourceHash와 비교한다. 일치하지 않거나 다시 읽을 수 없으면 변경된 입력으로 거부하고 덮어쓰지 않는다. 일치할 때만 수락된 출력 바이트를 그대로 적용한다.
  • audit/score/diff는 보고서 모드다. 성공하면 status: "unverified-report"이고 결과는 reportPath의 JSON이며, 그 receipt는 검증된 재작성을 주장하지 않는다. 보고서를 재작성 결과처럼 제시하지 않는다.
  • 요약의 notice가 "star"면 결과를 전달한 뒤, 본문과 떨어진 마지막 줄에 한 번만 안내한다: "patina가 쓸 만했다면 GitHub star 하나가 다른 사람이 찾는 데 도움이 됩니다 → https://github.com/devswha/patina". 사용자의 대화 언어로 옮겨 쓴다. 헬퍼는 검증된 재작성 누적 3회째와 20회째에만, 통틀어 최대 두 번 이 값을 넣는다. 이 줄은 호스트의 말이지 수락된 출력이 아니므로 outputPath의 바이트나 사용자가 요청한 파일에는 넣지 않는다. notice가 null이면 star를 언급하지 않는다.
  • 실패(ok: false)면 원문은 보존된 채다. 종료 코드와 안정 code를 보고하고 멈춘다. exit 1은 설정·런타임·백엔드·저장소 실패, 2는 인자·설정·입력 오류, 4는 검증 거부, 130은 취소다. 실패한 요청을 아래 지시문 파이프라인이나 자체 재작성으로 대체하지 않는다.

Read the full file on GitHub · 787 lines

Files

What ships with it

60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 29d ago Changed · -6 lines b6bc77058640
  2. 1mo ago Changed · +1 lines 7b2491693e6c
  3. 1mo ago Changed 3431639d4aa9
  4. 1mo ago Changed fe3294d0dd8e
  5. 1mo ago Changed ba736ee9c6c0
  6. 1mo ago Changed · +56 lines d34bd210809b
  7. 1mo ago Changed 9c6ba8a2b01e
  8. 1mo ago Changed · +5 lines 6fdfc921f988
  9. 1mo ago Changed 7198116aaa02
  10. 1mo ago First seen · 731 lines · 38 tokens per session scan A ec7e2951bd5d

Subscribe to this mod's changes

patina is a skill published in the GitHub repository devswha/patina (379 stars, last pushed 26d ago), licensed MIT. It adds 38 tokens to every session and 14,988 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

humanizer

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague…

NulightJens/humanizer-stack · 111 tokens

structural-humanizer

Remove the discourse-level (structural) signs of AI writing that survive surface editing: stated lessons and moral-of-the-story closers, tidy single-track arcs, embodied-emotion performance ("chest tightened"), vague allusions instead of named references, unbroken linear structure, and shape convergence across pieces.…

NulightJens/humanizer-stack · 188 tokens

humanize-korean

A Korean-language editing skill that makes AI-written text sound more natural while preserving its meaning, facts, numbers, names, quotations, and genre. It focuses on patterns such as translation-like wording, repetitive structure, and overly mechanical rhythm.

epoko77-ai/im-not-ai · 177 tokens

humanize-scan

A Korean-language checker that measures signs commonly associated with AI-written prose and shows sample edits. It is a quick scan, not a full rewrite.

epoko77-ai/im-not-ai · 174 tokens

commit-ko

A Korean commit-message editor that removes stiff, translated-sounding wording while preserving the message's meaning, scope, and type. A commit message is the short record attached to a change in Git.

epoko77-ai/im-not-ai · 183 tokens

humanize-redo

A second editing pass for Korean text produced by the humanize-korean workflow. It can revisit remaining issues in selected categories or paragraphs, with adjustable editing strictness.

epoko77-ai/im-not-ai · 75 tokens