From soundcheck
Detects token smuggling and Unicode injection in code passing user input to LLMs. Recommends NFKC normalization, stripping bidirectional overrides, zero-width characters, and homoglyph handling for secure prompts.
npx claudepluginhub thejefflarson/soundcheck --plugin soundcheckThis skill uses the workspace's default tool permissions.
Detects user input passed to LLMs without Unicode normalization. Attackers embed RTL
Detects prompt injection vulnerabilities in LLM code constructing prompts from user input, system prompts, RAG pipelines, or external data. Suggests fixes with trust tiers, delimiters, input screening, and output validation.
Detects prompt injection attacks in LLM inputs using regex patterns, heuristic scoring, and DeBERTa classification. Scans for direct/indirect injections before model forwarding.
Detects prompt injection attacks in LLM inputs using regex patterns, heuristic scoring, and DeBERTa classification. Scans user inputs for chatbots, RAG pipelines, and AI security before reaching the model.
Share bugs, ideas, or general feedback.
Detects user input passed to LLMs without Unicode normalization. Attackers embed RTL override characters, zero-width joiners, or homoglyphs to manipulate prompt structure, bypass keyword filters, or make malicious instructions appear legitimate.
f"Summarize this review: {user_review}" — review may contain \u202e (RTL override) that reorders displayed instruction text"раypal.com" (Cyrillic 'р') passes a blocklist that checks for "paypal.com"\u200b, \u200c) hidden in user input that split tokens and evade content filtersFlag the vulnerable code and explain the risk. Then suggest a fix that establishes these properties:
\u202a–\u202e), zero-width
space/joiner (\u200b–\u200d), word joiner (\u2060), and BOM (\ufeff)
don't survive into the prompt. These are the tokens attackers use to hide
instructions or split keywords."paypal.com" but the comparison runs on pre-normalized text
lets раypal.com pass.Anchor — shape, not implementation:
def sanitize(text):
text = unicode_normalize(text, "NFKC") # fold homoglyphs
text = strip(text, BIDI_AND_INVISIBLE_RANGES) # drop zero-width, RTL
return text
safe = sanitize(user_input) # before prompt / filter