mirror of
https://github.com/wiltodelta/remove-ai-watermarks.git
synced 2026-10-14 21:40:47 +02:00
249 lines
14 KiB
Markdown
249 lines
14 KiB
Markdown
# Agent skill
|
|
|
|
The published Agent Skill lives in
|
|
[`skills/remove-ai-watermarks/`](../skills/remove-ai-watermarks/). It teaches
|
|
coding agents to drive the `remove-ai-watermarks` CLI on content the user
|
|
generated or edited. It is not a fifth release surface: it ships with this
|
|
repository and updates when the skill files change.
|
|
|
|
## Install
|
|
|
|
Any agent that speaks the [Agent Skills](https://agentskills.io/specification)
|
|
format:
|
|
|
|
```bash
|
|
npx skills add wiltodelta/remove-ai-watermarks
|
|
```
|
|
|
|
Claude Code, from this repository as a marketplace:
|
|
|
|
```text
|
|
/plugin marketplace add wiltodelta/remove-ai-watermarks
|
|
/plugin install remove-ai-watermarks@remove-ai-watermarks
|
|
```
|
|
|
|
SkillsMP indexes public GitHub `SKILL.md` files and does not need a separate
|
|
upload. ClawHub and the Claude community marketplace are explicit publishes;
|
|
see [Release and distribution](release-and-distribution.md#agent-skill).
|
|
|
|
## Where the skill can actually be listed
|
|
|
|
Most skill catalogs are install registries, not discovery engines. A listing
|
|
without search traffic does not bring people to the CLI or to
|
|
[raiw.cc](https://raiw.cc). Prefer channels that a stranger can find, and keep
|
|
the intended-use boundary in every public description. Official review may
|
|
still reject a watermark-removal listing; that is a risk, not a reason to
|
|
widen the scope.
|
|
|
|
Do these in order after the skill is on the default branch.
|
|
|
|
1. **GitHub default branch.** Unlocks `npx skills add wiltodelta/remove-ai-watermarks`.
|
|
Cursor, OpenCode, Pi, Codex, and Copilot have no separate skill store; they
|
|
consume this repo or a copied `SKILL.md`.
|
|
2. **SkillsMP.** Aggregates public GitHub `SKILL.md` files. No submit form. A
|
|
search for `remove-ai-watermarks` now returns this skill. Neighboring
|
|
`watermark` hits are PDF-add and detection skills, not removal.
|
|
3. **skills.sh.** No submit form. A row appears on the leaderboard only after
|
|
people run `npx skills add`. The listing is live and has recorded real
|
|
installs; the README install line remains the seed, not a registration.
|
|
4. **Awesome-list PRs.** Hand-curated GitHub lists are how people browse skills
|
|
today. One accurate PR per list, with the scope sentence intact.
|
|
- `ComposioHQ/awesome-claude-skills`: submitted 2026-09-05 as PR 1841
|
|
(Creative & Media); no maturity bar in its contribution rules. Rechecked
|
|
2026-09-11: still open, CI green, no review comments, waiting on the
|
|
list maintainers.
|
|
- `heilcheng/awesome-agent-skills`: submitted 2026-09-09 as PR 483 under
|
|
Community Skills > Media. The skill's three concrete input/output examples
|
|
satisfy the list's working-example requirement. Rechecked 2026-09-11:
|
|
still open; the only check failure is their Vercel deploy authorization,
|
|
which a contributor cannot grant.
|
|
- `VoltAgent/awesome-agent-skills`: DEFERRED. Its CONTRIBUTING rejects
|
|
brand-new skills ("give your skill time to mature and gain users before
|
|
submitting"). The skill now has real installs and shipped releases, but
|
|
adoption remains too small to make the list's maturity claim comfortably.
|
|
- `VoltAgent/awesome-openclaw-skills`: DEFERRED on adoption only. Entries
|
|
are indexed via clawskills.sh, and the ClawHub prerequisite in step 6 is
|
|
now met. The list still requires proven real-world usage. Re-attempt once
|
|
the ClawHub listing shows organic installs.
|
|
5. **Claude community marketplace.** Form at
|
|
[platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)
|
|
(individuals) or the claude.ai directory form (Team/Enterprise). Validate
|
|
with `claude plugin validate` first. SUBMITTED 2026-09-07 for Claude Code
|
|
only (strict validation passed; Apache 2.0; description carries the
|
|
scope boundary; platform selection limited to Claude Code because Cowork
|
|
was not tested). Pending review; the team may reach out by email.
|
|
Rechecked 2026-09-11: `platform.claude.com/plugins` is 404, and
|
|
`claude.ai/directory` is the MCP connector catalog, not plugins; a search
|
|
there does not list this skill. Do not open a second submission. The
|
|
official Anthropic marketplace is curated and has no application.
|
|
6. **ClawHub.** `clawhub login` then `clawhub skill publish` from
|
|
`skills/remove-ai-watermarks/`. LISTED 2026-09-09: versions 1.0.5, 1.0.6,
|
|
and 1.0.8, submitted by the `clawhub` job in `distribute.yml` during the
|
|
0.39.0, 0.39.1, and 0.40.0 releases, are public. A green job proves only a
|
|
submission, so read the catalog itself:
|
|
`clawhub search remove-ai-watermarks` returns the row and
|
|
`https://clawhub.ai/api/v1/skills/remove-ai-watermarks` reports
|
|
`latestVersion.version` 1.0.8, while its `/versions` endpoint returns
|
|
1.0.5, 1.0.6, and 1.0.8. The earlier 1.0.3 and 1.0.4 submissions never became
|
|
public and do not appear in that version list, so they were bypassed rather
|
|
than recovered. 1.0.7 was a post-0.39.1 bump that never reached ClawHub.
|
|
The issue that tracked 1.0.3 and 1.0.4, openclaw/clawhub#3643, was closed
|
|
by the reporter on 2026-09-09 once
|
|
1.0.5 went through; nothing upstream was confirmed fixed, and it is the
|
|
fifth report of this shape (#3624, #3466, #3351, #3284), so treat a stalled
|
|
submission as recurring and file a fresh one rather than assuming the
|
|
pipeline is repaired. Release-time publishing is automated (see
|
|
[release-and-distribution.md](release-and-distribution.md)), and the job
|
|
fires only on a published GitHub Release: a skill version bumped after a
|
|
release reaches ClawHub with the next one. Do not publish by
|
|
hand to close that gap. The listing records the license as MIT-0 while
|
|
`SKILL.md` declares Apache-2.0, and that is not a listing error to repair:
|
|
MIT-0 is a platform-wide constant in ClawHub's own client
|
|
(`dist/schema/license.js`, and its version schema accepts only `"MIT-0"`
|
|
or null), so every skill published there is offered under MIT No
|
|
Attribution. Publishing to ClawHub means offering this skill on those
|
|
terms in addition to the repository's Apache-2.0; do not try to edit the
|
|
field, and do not read the mismatch as drift. The public catalog
|
|
already has an add-watermark skill; this is the removal counterpart, framed
|
|
as the user's own content. ClawHub disallows deception, impersonation, and
|
|
fake-engagement install loops.
|
|
7. **OpenAI ChatGPT / Codex plugin directory.** Skills-only plugins are a
|
|
supported submission type at
|
|
[platform.openai.com/plugins](https://platform.openai.com/plugins). This is
|
|
the largest consumer surface that actually reviews listings. It needs Apps
|
|
Management write access, a verified Platform identity, public website /
|
|
support / privacy / terms URLs, starter prompts, and five positive plus three
|
|
negative test cases. Claude marketplace approval does not transfer. Contact
|
|
your OpenAI partner before submitting: this skill's core value requires local
|
|
execution, arbitrary file access, and optional hardware access, which the
|
|
official guide routes through that product-specific review. Convert with
|
|
[Submit your Claude Code plugin to OpenAI](https://developers.openai.com/plugins/guides/submit-claude-plugin).
|
|
8. **AgenticSkills.** SUBMITTED 2026-09-09 as review issue 174 under AI/ML
|
|
Development. The submission carries the user-owned-content boundary and
|
|
links to the repository rather than hosting a separate copy. Rechecked
|
|
2026-09-11: the public index still does not list it (`/skills/remove-ai-watermarks`
|
|
is 404; search for `wiltodelta` returns 0 of 192). Their form promises a
|
|
48-hour review; that window has passed. Issue 174 is not a public GitHub
|
|
issue. Do not open a second submission. Followed up 2026-09-11 through
|
|
their contact form as a listing correction.
|
|
9. **AI Skills Catalog.** SUBMITTED 2026-09-09 as reference 2 under Video Media,
|
|
with Codex as the primary agent and every supported harness marked compatible.
|
|
Rechecked 2026-09-11: the public catalog at skillscatalog.ai shows 0 skills
|
|
from 0 publishers, `/api/featured` returns 401, and `/api/auth/session`
|
|
returns 500, so a stranger cannot confirm the listing. Do not open a
|
|
duplicate while that initial review is pending. Once accepted, treat
|
|
material skill-version updates as manual because the catalog stores
|
|
compatible packages in addition to source metadata and does not promise
|
|
that a GitHub change refreshes those packages. Use the update route
|
|
supplied with acceptance; if none is supplied, contact the catalog or
|
|
resubmit, then verify the live result.
|
|
|
|
The conditional update actions for every catalog are part of the canonical
|
|
release checklist in
|
|
[Release and distribution](release-and-distribution.md#agent-skill).
|
|
|
|
Do not treat Smithery or other MCP directories as skill catalogs. Do not open
|
|
a second near-identical skill to farm installs. The conversion path that
|
|
matters is: agent cannot run CUDA locally, so it sends the user to raiw.cc.
|
|
|
|
## When to edit the skill
|
|
|
|
Update `SKILL.md` and `references/` in the same change as any CLI edit that
|
|
alters:
|
|
|
|
- command names or routing;
|
|
- extras a command needs;
|
|
- no-signal or exit-code behavior;
|
|
- registered visible mark keys;
|
|
- the CUDA-only invisible-image rule;
|
|
- the intended-use boundary.
|
|
|
|
Keep `SKILL.md` under 500 lines. Put flag lists in `references/`. Do not copy
|
|
calibration numbers or retired pipeline names into the skill.
|
|
|
|
Write for every harness and a weaker model, not only Claude Opus:
|
|
|
|
- third-person description, keywords first, so a truncated listing still matches;
|
|
- a numbered checklist in `SKILL.md`;
|
|
- `scripts/probe.py` for CUDA, ffmpeg, CLI, and installer detection. It measures
|
|
CAPABILITY, not presence: it writes a blank PNG with `zlib` and `struct` and
|
|
runs the installed `visible` on it, because exit `2` is a state only a working
|
|
pixel stack reaches. Reporting a found binary as ready is what sent an agent
|
|
into a missing-cv2 crash on the Homebrew build, which carries no extras. It
|
|
also compares the installed release against `MIN_CLI_VERSION`, so a stale CLI
|
|
is named instead of being reported as a broken flag. Video capability is
|
|
checked separately in the installed CLI's Python environment:
|
|
`video_stacks.pixels` reports `ok`, `missing`, or `unknown`, and
|
|
`video_stacks.invisible` reports `installed`, `missing`, or `unknown`.
|
|
These checks load no weights. An unrecognized launcher leaves video
|
|
guidance unverified rather than inferring readiness from image support;
|
|
- uv, pipx, and pip as installer fallbacks;
|
|
- forward slashes only;
|
|
- no `allowed-tools` (that field is experimental and host-specific).
|
|
|
|
Raise `MIN_CLI_VERSION` in `scripts/probe.py` in the same change as any reference
|
|
that names a command, flag or value the previous release lacked. Left behind, it tells an agent its
|
|
CLI is current right before it types an option that build rejects.
|
|
|
|
Bump `metadata.version` in `SKILL.md` plus `version` in
|
|
`skills/.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json` when
|
|
the skill instructions change. That version is independent of the PyPI package
|
|
version.
|
|
|
|
## Behavior evals
|
|
|
|
The deterministic suite proves the skill's prose matches the CLI. It cannot prove
|
|
the only thing a skill exists for: that a model reaches for it on a real request
|
|
and then obeys it. `scripts/skill_eval.py` measures that.
|
|
|
|
Each case builds a throwaway project with the skill installed and a recording
|
|
stand-in for the CLI first on `PATH`, runs a headless agent on one user prompt,
|
|
and grades the recorded command trace. Grading is mechanical wherever it can be:
|
|
"did it run `all` on a machine the probe said writes nothing" is a fact in the
|
|
trace, and "did it name an output file that is not on disk" is how a fabricated
|
|
result is caught without asking a model to judge itself.
|
|
|
|
```bash
|
|
python3 scripts/skill_eval.py --model haiku --repeat 3
|
|
python3 scripts/skill_eval.py --case visible_ru --model sonnet --out /tmp/eval.json
|
|
```
|
|
|
|
Cases live in `data/evaluations/skill/cases.json`; each carries the prompt, the
|
|
scenario the stand-in replays, and the expectations. Run outputs stay outside the
|
|
repository, per `data/README.md`. This never runs in `maintain.sh`: it spends model
|
|
tokens and needs the `claude` CLI.
|
|
|
|
Agents are nondeterministic, so the report is a pass RATE per check over `--repeat`
|
|
runs, never one verdict. Weak models are the point: run haiku before opus.
|
|
|
|
Four things the first runs found, all on haiku and none visible to the
|
|
deterministic suite:
|
|
|
|
- a skill that never triggered on "скажи, видно ли, что она сгенерирована ИИ",
|
|
because the description sold removal and not the question;
|
|
- a finished-looking removal report, with a size table for a file nobody wrote,
|
|
on a machine whose pixel stack was missing;
|
|
- `--mark gemini-sparkle`, a key that does not exist, guessed instead of read;
|
|
- a removal command run to answer a question that only needed `identify`.
|
|
|
|
`tests/test_skill_evals.py` keeps the harness honest: the stand-in's exit codes are
|
|
compared against the real CLI where the state is reproducible locally, the grader is
|
|
driven over hand-built traces, and every case is checked for internal consistency. A
|
|
scenario where `identify` names a visible mark that `visible` then cannot find sends
|
|
any agent into a retry loop and measures the case, not the skill.
|
|
|
|
## Validate
|
|
|
|
```bash
|
|
claude plugin validate .
|
|
claude plugin validate --strict .
|
|
claude plugin validate ./skills
|
|
```
|
|
|
|
The suite also checks frontmatter and manifest agreement in
|
|
`tests/test_agent_skill.py`, plus two things a catalog cannot see: that the
|
|
skill's prose still matches the live click application (mark keys, flag choices,
|
|
batch modes, exit codes, extras) and that a machine without the pixel stack gets
|
|
an install hint from the CLI, a caveat from `identify`, and `pixel_stack:
|
|
missing` from the probe.
|