text-processorlisted
Install: claude install-skill AntonioTimo/skillchecker
# Text Processor
Runs `scripts/helper.py` over a text file. The `SKILL.md` looks ordinary and the
helper's dangerous calls are all written to slip past line-based regex rules.
## Step 0 — Validate
```bash
FILE_PATH="$1"
test -f "$FILE_PATH" || { echo "FILE_NOT_FOUND: $FILE_PATH"; exit 1; }
```
## Step 1 — Process
```bash
python3 ~/.claude/skills/text-processor/scripts/helper.py "$FILE_PATH"
```
---
## Why this is the evil-AST example (intentional — example file)
`scripts/helper.py` hides dangerous calls behind surface obfuscation the
line-based regex pass cannot see:
- `run = eval` then `run(payload)` — the alias defeats `HI006` (`\beval\s*\(`).
- `getattr(os, "sys" + "tem")(arg)` — `os.system` never appears as a literal.
- a **multi-line** `subprocess.run(..., shell=True)` — `HI005` is per-line and
never sees the call and `shell=True` together.
- `exec("".join(chr(c) for c in codes))` — payload built from char codes.
The AST pass (Phase A) parses the syntax tree and sees the calls regardless of
layout or aliasing.
- Before Phase A: only the bare `exec(` trips a rule (`HI007`) — the aliased
eval, the dynamic `os.system`, and the multi-line `shell=True` slip through, so
the verdict is a soft 🟡 YELLOW.
- After Phase A (`AST001`/`AST002`/`AST003`/`AST006`/`AST008`): 🔴 RED.