
Product
PHP and Composer Support Is Now in Beta
Socket’s PHP and Composer support is now in Beta for all customers, with PHP reachability analysis generally available.
patina-cli
Advanced tools
Strip the AI packaging. Keep the meaning.
Try the browser audit — no install
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.
It is not a black-box paraphraser, authorship detector, or detector-bypass tool. patina is built for allowed AI-assisted drafting where the author wants cleaner voice, an audit trail, and meaning-preservation checks.
--preview is the main sample: patina snapshots a live URL or local .html, rewrites only the prose blocks, and renders the result back onto the page. The floating bar switches between Rewritten / Original / Both / Diff, jumps between every changed block, and shows the deterministic score before → after.
patina --preview --lang en page.html # a local .html file
patina --preview https://example.com/post # or a live URL
The sample keeps the page structure, headings, CTA, and concrete facts (30 templates, planning docs, handoffs). It removes inflated phrasing like “innovative solution,” “transform productivity,” and “new paradigm” with an inline audit trail instead of a black-box paraphrase.
More examples: Before/After Gallery (한국어) · CLI transcript.
Open patina.vibetip.help to score KO / EN / ZH / JA text in your browser. The playground is audit-only: it does not rewrite text, call external LLMs, or send API keys to a server. For Korean, the browser and CLI may surface translationese / koPostEditese.v1 metadata as editing hints; this metadata is advisory only, is not calibrated score input, and must not drive hot paragraphs, gates, severity, baselines, percentiles, benchmark claims, prompt/rewrite gates, or authorship verdicts.
Claude Code — plugin marketplace (no clone, recommended):
/plugin marketplace add devswha/patina
/plugin install patina@patina
Claude Code · Codex CLI · Cursor · OpenCode — install script:
curl -fsSL https://raw.githubusercontent.com/devswha/patina/main/install.sh | bash
Then run the skill from Claude Code, Codex CLI, Cursor, or OpenCode:
/patina --lang en
[paste your text here]
Useful skill calls:
/patina --tone professional
/patina --tone auto --lang en
Requires Node.js >= 18.
npx patina-cli doctor
npx patina-cli --lang en input.txt
Use a logged-in local model CLI without an API key:
printf '%s\n' 'Coffee has emerged as a pivotal cultural phenomenon.' \
| npx patina-cli --lang en --backend codex-cli
Supported local backends: codex-cli, claude-cli, gemini-cli, kimi-cli.
Without --model, patina passes the strongest documented default per backend:
gpt-5.5 for OpenAI/Codex, claude-sonnet-4-6 for Claude, gemini-2.5-pro
for Gemini, and kimi-code/kimi-for-coding for Kimi Code. See
Authentication (한국어).
For large --batch rewrites, prefer an OpenAI-compatible HTTP backend. Local
CLI backends are agent runtimes; patina caps them conservatively, uses compact
prompts for them, and exposes --timeout-ms, --max-concurrency,
--max-retries, --max-failures, and --max-failure-rate for batch safety.
| 168 patterns | 33 rewrite-capable + 9 score-only viral-hook per language (42 each across KO/EN/ZH/JA) — see the full 168-pattern catalog in PATTERNS.md |
| Modes | rewrite · verify · audit · score · diff |
| Surfaces | agent skill · Node CLI · in-place preview · browser audit playground |
| Free usage | logged-in codex, claude, or gemini CLI can run rewrites without PATINA_API_KEY |
| 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.
patina --lang <ko|en|zh|ja> [mode] [--profile <name>] input.txt
| Command | Purpose |
|---|---|
patina input.txt | rewrite with defaults |
patina --audit input.txt | detect patterns only |
patina --score input.txt | output a 0-100 AI-likeness score |
patina --score --exit-on 30 input.txt | CI gate with exit code 3 when overall > 30 |
patina --diff input.txt | show pattern-by-pattern changes |
patina --preview page.html | render rewrites back onto a saved HTML page with toggles and inline diff |
patina --verify input.txt | rewrite, then check MPS/fidelity floors with one retry |
patina --tone auto --lang en input.txt | infer and apply a KO/EN tone axis |
patina --format json --quiet input.txt | script-friendly output |
patina --batch docs/*.md --outdir cleaned/ | batch file processing |
patina --help prints the full flag list. patina doctor --json checks Node, backend, tmux, and API-key readiness without making an LLM call.
For GitHub Actions, the maintained wrapper is shorter than hand-rolled setup:
name: Patina prose score
on:
pull_request:
paths: ['**/*.md', '**/*.mdx']
permissions:
contents: read
pull-requests: read
issues: write
jobs:
patina:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: devswha/patina-action@v1
with:
score-threshold: 30
lang: auto
comment: true
Other integrations: pre-commit, static sites, Docker, release workflow.
Input
-> semantic anchor extraction (claims, polarity, causation, numbers)
-> stylometry + AI-lexicon scan
-> pattern-guided rewrite
-> self-audit and MPS/fidelity checks
-> cleaned text
If meaning drifts, the change is retried or rolled back. Deterministic analysis lives in src/features/*; LLM-backed rewrite and score calls use the selected backend.
# .patina.default.yaml
version: "6.0.0"
language: ko # ko | en | zh | ja
profile: default
output: rewrite # rewrite | diff | audit | score
tone: # casual | professional | auto (register; genre = profile)
Project .patina.yaml overrides defaults. Pattern packs are auto-discovered by language prefix. Additive list keys (blocklist, allowlist, skip-patterns) merge; other arrays replace.
Start here:
--strict multi-pass modeBrand assets and usage rules live in Branding. Design notes live in DESIGN.md.
Inspired by oh-my-zsh's plugin architecture, Wikipedia's "Signs of AI writing", and blader/humanizer.
FAQs
AI text humanizer CLI — detects and removes AI writing patterns
The npm package patina-cli receives a total of 216 weekly downloads. As such, patina-cli popularity was classified as not popular.
We found that patina-cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Product
Socket’s PHP and Composer support is now in Beta for all customers, with PHP reachability analysis generally available.

Product
Socket is bringing experimental protection to Firefox, scanning 97,000+ extensions in Mozilla's official directory for malware and risky updates.

Research
/Security News
Three compromised Rust crates pulled in a malicious dependency that downloaded and executed cross-platform malware during Cargo builds.