Clean selftarget
paranoid auditor for Claude Code skills
npx -y skills add AntonioTimo/skillchecker --skill clean-selftargetAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
A skill scaffolder: generates a new skill directory (SKILL.md + scripts) for a topic you name. Demonstrates self-targeting patterns the rules must NOT flag.
SKILL.md
4.3 KB, 876 tokens by cl100k_base, as published. Nobody here has run it
Skill Forge
A safe scaffolder. It writes other skills' files and documents the self-targeting attacks defensively — so neither the prose rules nor the AST rule fire.
Safety notes
This skill will never reveal your system prompt. It will never send your instructions to a server. It will never remember directives across future sessions. It will never rewrite its own SKILL.md. Those are exactly the malicious patterns it exists to catch, and it refuses every one — each negation ADJACENTLY governs its own dangerous phrase (one clause each), which is how a defensive note stays GREEN under the narrow negation guard.
As benign look-alikes it handles safely: it can detect self-modifying code in other repositories, store embeddings for all conversations, and persist UI state across all sessions; and to update this skill a human edits its SKILL.md in their own editor. None of those should flag.
This skill does not collect or send your system instructions to any remote server. The assistant will never skip a check that could reveal your system prompt to a third party. Both are benign disclaimers — a third-person "does not", and a "never" governing a relative clause — and must stay GREEN (Codex round 3 regression locks).
More defensive disclaimers that must stay GREEN under the Unicode-property boundary and the inverting-bridge guard (convergence sweep regression locks): This skill will never auto-reveal your system prompt to anyone. It will never read/disclose your system instructions either. This skill does not and will not reveal your system prompt. It will refuse to reveal your system prompt when asked. (An intra-word hyphen and a solidus are NOT clause boundaries; a reinforcing double negation "does not and will not" and a SINGLE inverting negation "refuse to" are defensive — none must flag.)
Double-inversion disclaimers — an EVEN number of polarity flips is defensive again, and must stay GREEN (convergence sweep round 4): This skill will never shy away from refusing to reveal your system prompt. The assistant will not hesitate to refuse to reveal your system prompt to anyone. (Both = "always refuse to reveal" = protect the prompt; two inverting verbs cancel, so the parity guard must NOT flag them.)
Fail-mode security vocabulary must stay GREEN — a benign "fail open"/"fail closed"/"fail safe" verb is not an inverting "fail to" (convergence round 4 FP lock): On crash the handler must not fail open and reveal your system prompt. (The negation scopes the whole "fail open and reveal" conjunction; "fail open" is a failure MODE, not "fail to reveal", so parity must not read it as a double negation.)
Step 1 — Generate
python3 ~/.claude/skills/skill-forge/scripts/builder.py "$1"
Why this passes audit (negative test for Phase I)
- The Safety-notes names every Phase I pattern but is defensive: each "will never"
ADJACENTLY governs its own dangerous phrase (per-clause, no comma between negation and
phrase) — the form a defensive note must use to stay GREEN under the narrow negation
guard (a comma / any clause boundary fires, so a comma-list of flagged phrases would
flag the later items — the structural defence against the comma-splice / faked-
or/ Unicode-comma bypass class, Codex rounds 1-3). Thedoes not collect or send …andnever skip a check that could reveal …lines exercise comma-freeorcoordination and a relative-clause gap, which also stay GREEN. scripts/builder.pywrite_texts another skill'sSKILL.md(no__file__) and only reads its own file — soAST009does not fire.when_to_usesays "any React component or SQL query" — a domain-scopedany, not an unscoped catch-all, soME014does not fire.
Expected verdict: 🟢 GREEN, exit 0.