> strip suspicious invisible Unicode, then rewrite prose while keeping facts, meaning, and the writer's voice. Use when the user asks to clean, humanize, polish, or finalize articles, manuscripts, reports, documentation, emails, product copy, UI text, Markdown, or HTML prose, or when a project rule explicitly requires this workflow. Don't use for code-only tasks or undisclosed authorship evasion; leave code, commands, identifiers, paths, APIs, formulas, citations, required disclosures, and verbatim quotations unchanged.
npx skills add https://github.com/ShadowAqueduct/watermark-remover --skill clean-user-facing-text
Final hygiene pass on prose the user owns or is authorized to process. Unicode cleanup is deterministic. Statistical-watermark reduction is best-effort. Never claim a rewrite proves human authorship or is undetectable. Keep required academic, legal, platform, and regulatory disclosures.
For practical guidance on preserving a writer's voice and removing formulaic prose, read references/writing-in-your-voice.md whenever the user asks to retain or adjust voice.
Resolve SCRIPTS to this skill's scripts/ directory.
Use the available Python 3 launcher for the platform. Replace PYTHON below
with python3 on most macOS/Linux systems, py on Windows, or another verified
Python 3 command.
Inspect first when editing an existing file:
PYTHON "$SCRIPTS/inspect_text.py" --json INPUT
PYTHON "$SCRIPTS/clean_text.py" INPUT -o OUTPUT --stats --no-normalize-spaces
PYTHON "$SCRIPTS/inspect_text.py" --json OUTPUT
Use - for stdin. Prefer a new *.cleaned.* output unless the user explicitly requests in-place editing.
Use --no-normalize-spaces by default so NBSP, narrow no-break spaces, figure spaces, and CJK ideographic spaces retain their layout semantics. Normalize spaces only when the user requests it.
Do not use --aggressive-homoglyphs, --nfkc, or --strip-emoji-glue unless the user requests aggressive normalization and accepts possible changes to multilingual text, emoji, directionality, or typography.
The scripts support plain text, source text, Markdown, and HTML source as text. For mixed Markdown or HTML, inspect hit positions first. If a hit falls inside protected code, attributes, or another non-prose span, do not run whole-file cleanup; clean only the prose segments or leave that hit unchanged. Do not pass binary containers such as PDF, DOCX, images, or archives.
For a chat-only response that is not written to a file, perform the rewrite workflow directly. Do not claim that the chat response received a deterministic post-send Unicode filter.
When prose and code are mixed, rewrite prose only. Never rename variables, alter string literals, reformat code, or change executable output as part of this skill. If a Markdown or HTML file contains executable snippets, preserve those spans byte-for-byte whenever practical.
When the user asks for an audit, distinguish:
For technical background, read references/watermark-notes.md. For misuse or disclosure questions, read references/responsible-use.md.
Take shadowaqueduct/clean-user-facing-text from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.