Signal Discovery
Find missing AI watermark detection coverage in the remove-ai-watermarks library.
Installation
- Make sure Claude is on your device and in your terminal.
Skills load from
~/.claude/skills/when Claude Code starts up — so you need it on your machine first. If you don't have it yet, install it once with the command below, then runclaudein any terminal to verify.One-time setupnpm i -g @anthropic-ai/claude-codeAlready have it? Skip ahead.
- Paste into Claude Code or into your terminal.
This copies the whole skill folder into
~/.claude/skills/signal-discovery-wiltodelta/— the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.Faster alternative (instruction-only skills)
Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates — they won't be downloaded and the skill will fail when it tries to load them.
Quick install (SKILL.md only)Sign up to copy - Restart Claude Code.
Quit and reopen Claude Code (or any other agent that loads from
~/.claude/skills/). New skills are picked up on startup. - Just ask Claude.
Skills auto-activate when your request matches the skill's description — no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the “What this skill does” section above.
Prefer to read the source first? Open on GitHub.
When Claude uses it
Discover missing AI provenance and watermark coverage in the remove-ai-watermarks library from fresh or historical corpora, then validate detection and removal parity. Use for corpus gap mining, periodic signal audits, new-provider discovery, or deciding whether old retained data must be replayed. Do not use for ordinary per-file identification or removal.
What this skill does
Signal discovery
Work from the remove-ai-watermarks repository root. This skill discovers and
closes library coverage gaps. Implementation, tests, fixtures, and
documentation changes belong in this library; do not patch a downstream
consumer to compensate for a detector or cleaner gap.
Treat retained inputs as sensitive and read-only. Keep reports, contact sheets,
sidecars, and derived samples under the library's gitignored .local-eval/.
Never commit a retained input or an artifact derived from one.
Use only publication-cleared or synthetic files for tracked fixtures.
Before acting, read:
CLAUDE.mdand.claude/rules/development.md;docs/verification-plan.md;docs/supported-signals.mdanddocs/watermarking-landscape.md;- references/coverage-and-cadence.md.
Choose the run
Do not call corpus_gap_scan.py a complete signal audit. Select every mode the
question requires:
- Fresh discovery finds new providers, serializations, labels, and formats in objects added since the preceding review.
- Historical replay reruns current code on the complete retained history. Use it after detection-path or format-support changes and on the periodic backstop defined in the reference.
- Removal parity proves that every detected removable signal is cleared without violating the signal family's fidelity invariant.
- Calibration or provider oracle is required where the corpus has no self-evident answer key. Never treat a local negative as proof that a proprietary watermark is absent.
Start by inventorying the current code, not a remembered list. Enumerate image
and video visible-mark registries, metadata readers and strippers, local
invisible decoders, explicit invisible vendor routes, supported containers, and
the stable signal families emitted by identify. Reconcile that inventory with
the coverage matrix before interpreting any green result. A hand-written marker
list or report family map that omits a current registry member is itself a
finding.
Run protocol
- Record the library commit, version, enabled extras, corpus date range, and exact commands in an untracked run directory. Preserve the pre-run Git status so unrelated work is not attributed to the audit.
- Refresh the local retained corpus through its owning, external collection process when the task calls for fresh data. Use an explicit gitignored destination, do not delete local objects, and finish with a zero-delta pass. Fetch paired outputs only for a removal or complaint investigation.
- Run the applicable fresh and historical discovery modes from the reference.
Use
corpus_gap_scan.py --since YYYY-MM-DDfor the overlapping fresh window and omit--sincefor the complete history. Report counts per input shape and per outcome; an example does not establish coverage. Give every code and corpus snapshot a distinct--reportpath. The adjacent.progress.jsonlcheckpoint is the live progress source and makes the same command resumable; use--restartonly when intentionally discarding it. - Triage every candidate into one of: parser/serialization gap, missing vendor attribution, new visible mark, possible invisible signal, format/read error, expected non-AI provenance, or false candidate. Preserve unresolved items as unresolved.
- Reproduce an actionable gap with a failing test before changing code. Derive the smallest publication-safe fixture from a controlled source or construct it synthetically; do not move the retained file into a tracked path.
- Implement the fix in the library subsystem that owns it. Update the library registry, parser, remover, public docs, and published agent skill when their contracts move. Updating a downstream consumer to take a released version is a later, separately scoped task.
- Rerun the affected focused audit and the complete historical regression mode. A detection change must name the files expected to move before the after-run; classify lost signals separately from intended new detections.
- Run removal parity for every newly detected removable signal. A quiet post-removal detector is necessary but not always sufficient: check pixel/stream invariants and visually inspect residual-prone visible marks.
- Run
bash maintain.sh. Report evidence limits, incomplete rows, crashes, unsupported formats, and oracle-unavailable cohorts explicitly.
External oracle uploads use the provider-oracles skill. When a cohort needs a
provider verdict, walk that skill's plan automatically: API first, then the Web
oracle, including synthid-web at synthid.com for Google, then the remaining
configured account slots. A signed-in account is required only for Gemini.
Every other Web surface, including synthid-web, may use isolated Playwright
and a proxy, and each proxied run picks a new session in Europe or the United
States. If SynthID Detector asks for a sign-in, continue that file in the user's
existing real Chrome on the direct route, and do not start a new login. Do not ask for
confirmation before switching, and do not adapt candidates against an oracle.
Do not substitute one provider's verdict for another's.
Related skills
Claude API Helper
anthropics
Build, debug, and optimize Claude API applications with caching and model migration support.
Customer Health Scorer
alirezarezvani
Analyze customer accounts to predict churn risk and identify expansion opportunities.
Adaptyv Protein Lab
foryourhealth111-pixel
Submit protein sequences for automated lab testing and validation experiments.
CLAUDE.md Optimizer
daymade
Optimize your CLAUDE.md file for clarity, efficiency, and maintainability.