[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"readme:watermarks-remover":3},"\u003Cpre>\u003Ccode>_ _ _ ____ ___ ____ ____ _  _ ____ ____ _  _ ____    ____ ____ _  _ ____ _  _ ____ ____\n| | | |__|  |  |___ |__\u002F |\\\u002F| |__| |__\u002F |_\u002F  [__  __ |__\u002F |___ |\\\u002F| |  | |  | |___ |__\u002F\n|_|_| |  |  |  |___ |  \\ |  | |  | |  \\ | \\_ ___]    |  \\ |___ |  | |__|  \\\u002F  |___ |  \\\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch1>watermarks-remover\u003C\u002Fh1>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fguillaumemeyer\u002Fwatermarks-remover\u002Factions\u002Fworkflows\u002Fci.yml\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fguillaumemeyer\u002Fwatermarks-remover\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg\" alt=\"CI\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fguillaumemeyer\u002Fwatermarks-remover\u002Freleases\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fguillaumemeyer\u002Fwatermarks-remover\" alt=\"Release\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fguillaumemeyer\u002Fwatermarks-remover\u002Fstargazers\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fguillaumemeyer\u002Fwatermarks-remover\" alt=\"Stars\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fguillaumemeyer\u002Fwatermarks-remover\u002Fforks\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Fguillaumemeyer\u002Fwatermarks-remover\" alt=\"Forks\" \u002F>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Agent skill + stdlib Python service to strip \u003Cstrong>multi-vendor AI provenance marks\u003C\u002Fstrong> from text and files — for privacy and hygiene on content \u003Cstrong>you own\u003C\u002Fstrong>. The skill is a thin client: it drives the machinery over HTTP, so the agent host needs no Python.\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Layer\u003C\u002Fth>\n\u003Cth>Target\u003C\u002Fth>\n\u003Cth>How\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Cstrong>A\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Invisible Unicode, exotic spaces, bidi, tag chars\u003C\u002Ftd>\n\u003Ctd>Deterministic Python scripts\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>B\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Statistical (token-sampling) text watermarks\u003C\u002Ftd>\n\u003Ctd>Agent rewrite + optional \u003Ccode>rewrite_text.py\u003C\u002Fcode> hook\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>Files\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>C2PA \u002F EXIF \u002F XMP \u002F doc props\u003C\u002Ftd>\n\u003Ctd>PNG, JPEG, WebP, AVIF, HEIC, BMP, GIF, TIFF, SVG, PDF, DOCX, XLSX, PPTX, EPUB, ODT, HTML, Markdown, MP4\u002FMOV\u002FM4A\u002FM4V, WAV, MP3, FLAC\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>Vendors \u002F ecosystems (class-level): \u003Cstrong>Claude\u003C\u002Fstrong>, \u003Cstrong>Gemini \u002F SynthID-Text\u003C\u002Fstrong>, \u003Cstrong>OpenAI\u003C\u002Fstrong> provenance surfaces, \u003Cstrong>open-LLM\u003C\u002Fstrong> Kirchenbauer-style (green-list) and keyed-Gumbel \u002F EXP (Aaronson) marks.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Latest release:\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fguillaumemeyer\u002Fwatermarks-remover\u002Freleases\u002Ftag\u002Fv0.5.0\" rel=\"nofollow ugc noopener\">v0.5.0\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Skill path: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fguillaumemeyer\u002Fwatermarks-remover\u002Fblob\u002FHEAD\u002Fskills\u002Fremove-ai-marks\u002F\" rel=\"nofollow ugc noopener\">\u003Ccode>skills\u002Fremove-ai-marks\u002F\u003C\u002Fcode>\u003C\u002Fa>\u003Cbr \u002F>Service path: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fguillaumemeyer\u002Fwatermarks-remover\u002Fblob\u002FHEAD\u002Fservice\u002F\" rel=\"nofollow ugc noopener\">\u003Ccode>service\u002F\u003C\u002Fcode>\u003C\u002Fa>\u003Cbr \u002F>(migration: formerly \u003Ccode>remove-claude-marks\u003C\u002Fcode>; slash alias \u003Ccode>\u002Fremove-claude-marks\u003C\u002Fcode> still documented)\u003C\u002Fp>\n\u003Ch2>Install (agent skill)\u003C\u002Fh2>\n\u003Cp>The skill ships \u003Cstrong>no code\u003C\u002Fstrong> — it calls the service over HTTP. Install the skill (markdown only) and start the service, then set \u003Ccode>WATERMARKS_SERVICE_URL\u003C\u002Fcode> if it is not \u003Ccode>http:\u002F\u002F127.0.0.1:8765\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>In Claude Code, the fastest route is the bundled\n\u003Ca href=\"#claude-code-plugin-marketplace\" rel=\"nofollow ugc noopener\">plugin marketplace\u003C\u002Fa> — no clone, and it updates\nin place. Everywhere else, one installer covers every supported host\n(Python 3.10+ stdlib, no dependencies):\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">python3 install_skill.py --skill remove-ai-marks --target claude-code\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Host\u003C\u002Fth>\n\u003Cth>Target\u003C\u002Fth>\n\u003Cth>Lands in\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Claude Code (personal)\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>--target claude-code\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>~\u002F.claude\u002Fskills\u002F&lt;skill&gt;\u003C\u002Fcode> (honors \u003Ccode>CLAUDE_CONFIG_DIR\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Claude Code (project)\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>--target claude-project --project-dir PATH\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>PATH\u002F.claude\u002Fskills\u002F&lt;skill&gt;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Cowork, claude.ai, cloud sessions, routines\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>--target cowork\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>dist\u002F&lt;skill&gt;.zip\u003C\u002Fcode> to upload under \u003Cstrong>Customize → Skills\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Cursor\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>--target cursor\u003C\u002Fcode> (default)\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>~\u002F.cursor\u002Fskills\u002F&lt;skill&gt;\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>Shipped skills: \u003Ccode>remove-ai-marks\u003C\u002Fcode> (full, service-backed) and\n\u003Ccode>clean-user-facing-text\u003C\u002Fcode> (text only, self-contained). \u003Ccode>--list\u003C\u002Fcode> prints them.\nExisting installations are preserved unless you pass \u003Ccode>--force\u003C\u002Fcode>; replacement is\nstaged first and the previous install is kept as a uniquely named backup.\n\u003Ccode>--link\u003C\u002Fcode> symlinks this checkout instead of copying, so edits are picked up\nlive. On Windows, use \u003Ccode>py install_skill.py ...\u003C\u002Fcode>; the \u003Ccode>install-skill.sh\u003C\u002Fcode> wrapper\nis provided for macOS\u002FLinux shells.\u003C\u002Fp>\n\u003Cp>Before writing anything, the installer validates the skill against the\n\u003Ca href=\"https:\u002F\u002Fagentskills.io\" rel=\"nofollow ugc noopener\">Agent Skills\u003C\u002Fa> packaging rules that claude.ai uploads\nand the Skills API enforce: spec-only frontmatter (\u003Ccode>name\u003C\u002Fcode>, \u003Ccode>description\u003C\u002Fcode>,\n\u003Ccode>license\u003C\u002Fcode>, \u003Ccode>compatibility\u003C\u002Fcode>, \u003Ccode>metadata\u003C\u002Fcode>, \u003Ccode>allowed-tools\u003C\u002Fcode>), a lowercase hyphenated\n\u003Ccode>name\u003C\u002Fcode> of at most 64 characters matching t\u003C\u002Fp>\n",1787530086879]